-
-
Notifications
You must be signed in to change notification settings - Fork 8.5k
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
[2.0] RFC: Road to 2.0 #6113
Comments
cc @zpao |
About SemVer
I recommend that this project follows the Conventional Commits specification 1. The big idea is that the PR title should always reflect the kind of change that's in the PR, for example a breaking change looks like this:
So the "deterministic way" is for a human to figure out: "What kind of change am I making in this PR?, and then using the proper prefix like I recommend you write down in a document what kind of changes are considered breaking, and which are considered patches/features. This way contributors can figure out themselves what kind of PR title/commit message they need to use. Over on the Renovate bot repository we "squash merge" PRs into our Optional: automating releases with
|
Our getting started docs should cover most of the necessary details. If you find gaps, feel free to open a discussion under our main repository or suggest a docs improvement by opening a PR. |
@HonkingGoose you are too fast here, we are not looking to automate any process (yet) and it's not really the point of this issue. What we want for v2 is to be able to tell for sure if a change is a breaking change or not. The hard part is not to add a
This is what we try to define here. To be able to tell for sure what is breaking and what is not, we have to make some code changes so that it becomes clearer. All PRs are already squashed for a long time and commit messages are chosen carefully by core team members. If we write this doc, it's for us, and not external contributors: because it's already hard for the core team to be sure something is to be considered as a breaking change |
Oh okay, I thought it would be nice to mention I'll stop commenting on this issue now, and let you get on with things. 😉 |
Interesting read: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html Tom Preston-Werner (SemVer/GitHob creator) explains why Redwood v2.0 will be released 1 month after v1.0 (v1 was a WIP for a long time, quite similar to Docusaurus v2). The ersioning strategy vision looks quite similar to what I'd like to set up for Docusaurus.
Some interesting things to consider:
|
Let's use TypeScript's versioning system😄 |
We're several minor versions past 2.0 now. Thanks everyone! |
This is a living draft: we will keep it up-to-date.
It's possible that what you read now changes significantly over time.
The road to 2.0
A meta-issue to prepare ourselves for the official 2.0 release.
GitHub milestone including related issues to track: https://github.com/facebook/docusaurus/milestone/15
Current state of 2.0.beta
Remaining problems:
docusaurus swizzle
is confusing, does not offer the best DX, and does not nudge users to adopt site customization best practicesRespecting SemVer
Once 2.0 is released, we really want to respect Semantic Versioning.
A breaking change should lead us to increase the major version number.
This also means that we shouldn't be afraid to release new major versions of Docusaurus quite soon.
For example, we could end up releasing Docusaurus 5 in 2022, this is what many other frameworks do (Next.js 12, Electron 16, Expo 44...).
A major version should not be synonymous with a total rewrite of Docusaurus like it was the case for v1 -> v2.
Respecting SemVer is important for multiple reasons:
Adopting SemVer now is complicated:
Goal for 2.0
The goal is not to make all possible customizations use-cases possible through a public API, but only to make it clear what the public API is. We will try to allow the most common customizations to be made through a public API, but not in an exhaustive way, and swizzling unsafe private APIs will remain possible for non-covered use-cases.
Tasks for 2.0
Tasks will be added the 2.0 milestone: https://github.com/facebook/docusaurus/milestone/15
We will inspect our site showcase sites to analyze the most common customization patterns and see how to make them more straightforward.
If your site is not in the Docusaurus showcase, please submit it 🙏
Or at least report your customization use-cases in the dedicated issue: #5468
After 2.0 release
At this point:
There are a lot of important issues and features that we plan to address, that will come after 2.0, in upcoming major versions.
See for example the 3.0 milestone (draft): https://github.com/facebook/docusaurus/milestone/16
Note: this does not mean that these important features are delayed, it is just that we want 2.0 to land asap.
I believe releasing a new major version per trimester is a good release cadence, but we'll figure this out.
Git organization
We'll start working on a 3.0 branch, but keep fixing bugs and implement small improvements in 2.0.
We will have 2 live git branches:
main
for 2.x (mostly bugfixes)next
for 3.0 (work-in-progress)Both branches will publish canary releases to make it easy to test newly merged features and provide feedback from early adopters.
We'll regularly merge 2.0 in 3.0.
Occasionally, we may backport important fixes/features from 3.0 to 2.0
Once 3.0 is released (or at least when it's ready and in RC phase), we'll merge
next
inmain
To avoid bumping the major version too regularly, we'll throttle/batch the planned breaking changes for the next major release
That's all, feel free to provide any feedback here or in any of the milestone issues: https://github.com/facebook/docusaurus/milestone/15
The text was updated successfully, but these errors were encountered: