-
-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
Migrate to mono-repository #7293
Comments
With regards to the new versioning we want to introduce, would that mean that there is only one version number for the mono repo, instead of individual version numbers for each repo? If so one would always have to read the changelog to find out what exactly changed and whether to upgrade or how would that work? |
The packages are independent (besides they reside in the same GitHub repository) so they can be either released separately with their own versions or together with the same version. I'd probably try to release major versions all together but let minor and patch versions to be released separately.
Yes. We can continue having some tests running inside each of the packages but we can also have a test package to do integration tests across all packages. |
I wonder how would that work branch-wise? Would there be a single |
Yes. Since they will be all in the same repository, we will have only one master branch for all packages. If we use lerna, when we use lerna deploy command, it checks the packages the suffered changes and release all of them at once. |
That sounds pretty neat. Do you think we should set up a sample repo to try this out with dummy sub-repos? Just to try this out hands on. I am doing the same currently for the new branch system and discovered some challenges that are just built into GitHub because of how it works. |
Yes. I can create a test repo and even copy all others inside so we can check how it would work. I've also worked at this repo (https://github.com/parse-community/parse-react) which uses lerna and is a monorepo with multilpe npm packages. |
The question is whether we run into other trouble when we go about release automation. I assume there would be less tools available for mono-repos, but that's just a guess. |
I think it makes sense to combine repos like S3 adapter into monorepo together with Parse Server, because these would not be used on their own and they are very dependent on Parse Server, an adapter change mostly leads to a Parse Server change as well. But I am not sure about Parse Dashboard for example, which seems more de-coupled from Parse Server. |
You may be right. We can start with the most obvious ones and then analyze the others. |
Thanks for opening this issue!
|
From the recent attempt to migrate we have learned that:
Aimed timeframe for this: during 2023, to release Parse Server 7 in 2024 from a monorepo and incorporate any needed breaking changes. |
@mtrezza NX (Commercial version of Lerna but still OSS) should allow you to use Yarn wanted at a later date. Think it's also important we consider tests across the entire codebase, we should be able to leverage the NX command Have we scoped out the packages to incorporate into the monorepo? |
We'd start with Parse Server and the JS SDK. These are two most entangled repos where we already see difficulties when a change in one repo requires a change in the other repo. I'm not convinced using a commercial product if the native npm packages cover all we need. |
Try auto instead of semantic-release due to issues with mono-repo compatibility, see parse-community/Parse-SDK-Flutter#668 (comment). |
Here some feedback: In my company we run successfully ( like 50 packages)
I know that many OSS teams use also https://github.com/changesets/changesets for better changelog |
Thanks, if you recall, as we've discussed in the past, your setup is unlikely to work for Parse Platform. We are looking for an auto-release solution that:
A lot of factors, so it will take a while to find something that actually works. In theory it often seems easy, but when putting the things together they turn out to not work so fluently. So if you like to put together a very simple test mono-repo (with empty dummy repos, no Parse repos) that demonstrates that it works, it would be a good start. |
New Feature / Enhancement Checklist
Current Limitation
We currently have several JS repositories to manage (Parse Server, Parse Dashboard, Parse JS SDK, Docs, Push Adapter, Node APN, etc), which make it harder to create/maintain features requiring changes in multiple packages. It also requires extra effort to create new releases when we need to update all the packages bottom up.
Feature / Enhancement Description
Combine all JS repositories into a single monorepository (perhaps using lerna).
Example Use Case
Alternatives / Workarounds
3rd Party References
Next.js
Apollo GraphQL Server
Parse React
The text was updated successfully, but these errors were encountered: