-
Notifications
You must be signed in to change notification settings - Fork 45
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Move existing programming model into separate npm package #568
Comments
Is there a reason why we'd want to split across multiple git repos and not have a monorepo that contains the worker and the libraries around it? I feel like having them split across multiple repos will make the contributor experience a lot more difficult, as you'll be required to clone multiple repos and then use It would also make it possible to have consistency in shared dependencies, ensure consistent style guides, etc. |
Interesting question - thanks for bringing it up. I had not considered a monorepo very much, but I still think separate repos is the way to go. Here are my reasons:
|
I can see that, from a MS-engineering side, having a consistent repo structure across all the supported languages makes sense, so if you're moving between teams you don't have to learn new patterns each time. I personally have had times where I'm trying to understand something and had to have multiple versions of VS and VS Code running just to try and debug things (and it can be confusing to find all the repos), so I was more looking to float the idea to tackle something I've seen as an external looking in.
Yes, I do see the branching/versioning being a pain point when there are multiple "active" versions (like v3 and v4 both being supported right now), and that would (possibly) only expand in complexity with multiple library package versions being actively supported.
This might be the best case for a monorepo, where we have a base package like (the following are made up names of course)
Yes, hopefully splitting the worker from the consumer package will make it simpler, especially if you want to work on the consumer package is isolation - I've just been burnt by |
I propose we split the worker up into two pieces, one that ships as-is with the host and one that ships as a separate node module (from here on out, I will reference these as the "core" and "programming model" packages respectively). This specific issue is to track moving the existing programming model out of the worker and into a separate package. The first iteration of this package should exactly replicate what the worker does today. The second iteration should be an improved programming model as tracked by #480.
When I say "programming model", this includes anything that makes our user's lives easier like parsing/converting/handling data from the host. Another way to think about it is if there is currently a type for something in our types package (
Context
,HttpRequest
, etc.), the underlying code for that should probably be in the programming model package. The only thing left in the worker will likely be setting up and managing the gRPC channel used to communicate with the hostThe Split
Benefits
The text was updated successfully, but these errors were encountered: