Closed pi0 closed 5 years ago
I'd suggest the following:
Having an LTS and a release schedule would help in several ways:
I'd declare every 2nd major version (2.x, 4.x, ...) as LTS with an overlapping period of 2 months (2 months after 4.x has been released, make it LTS)
We have to keep docs for each major version (every minor would be ideal but is impractical IMO).
Branches should be split by major version number (1.x, 2.x, ...). We can mark the LTS branch by adding LTS in the title somewhere.
The main branch should be the latest major version imo. (2.x at the moment)
@manniL Some points:
dev
or 2.x
branches for this moment?@pi0
You are right. Maybe half year majors are more than enough :D
I like these spec. But if making 2.x
default branch for PRs, how often we should merge it into dev
? I think dev
should remain the default for non-breaking change PRs and next
for breaking-changes and merge dev
into 2.x
for each release
You are right. Keeping dev as default would make much more sense 👍🏼
Also next
is a nice idea 🙊
I like all of these ideas, here's what I suggest based on your feedback:
Only even number will have an LTS (2.x, 4.x, ...) like Node.js. About the overlapping or LTS period, I am up for suggestions, but I think the last even release should become LTS right after the new one, and for a period of time of 6 months.
Every 6 months (or so) and I would like to announce it on a conference (like a Keynote).
Every month (3 weeks coding / merging + 1 week improving tests + coverage from the whole team, this is really important).
Every day if we need to, no special date, this what makes Nuxt great so people can have fixes quickly and not wait <3
1.x
, 2.x
, 3.x
, etc.dev
for actual development (2.x with minor and patches) is displayed on GH (but I would like to display the 2.x
readme for badges), well on CMTY we will display correct badgesnext
for the next major release (and PR with breaking changes should go there), could be nuxt-edge@next
, and I guess we should have nuxt@edge and nuxt@next instead, what are the main concerns for that @pi0?master
We will have 1.x
, 2.x
, [...] edge
and next
.
Everytime we push to dev, we need and update to the edge
docs (that will be displayed to the website with the version where it will be implemented) so then we only have to merge when releasing.
Everytime we push to next, we update the documentation too.
WE WRITE DOCS EVERYTIME WE PUSH SOMETHING, the documentation is what makes Nuxt sucessfull and we should not under-considerate it :)
@Atinux Using nuxt@edge
is dangerous because:
nuxt
package and the token may be leaked for any reason.edge
world is truly isolated. @Atinux Mostly agree with that. Some small considerations
Having a major release roughly every 6 months and an LTS version every year is fine. However, forcing people to switch to the next LTS "instantly" could be a problem (eg. bugs or security issues in the first week of the new release worst case). I'd at least suggest a grace period of 4 weeks.
We must declare feature freezes for upcoming minor releases. So we can fully focus on testing, fixing bugs and improving upcoming features.
I'd suggest that PRs in the core repo (that needs a doc change) will only be merged after a successful doc PR to make sure we have great docs :relaxed:
Some points I want to make them clear and discuss:
2.x
branch, it breaks the rule that develops on dev
. If works on dev
branch, it's impossible to cherry-pick if in current strategy2.x
or dev
?dev
or cherry-pick all commits except fix
? If merge dev
, 2.x
will contain duplicate fix
commits, otherwise dev
will never have a same commit tree as 2.x
feat
and fix
which has already covered in patch release.fix
commit is changing same file line after a feat
commit, how to handle it?@clarkdo Very good points!
For now, major release and LTS may also relate to Vue, Webpack and some other critical dependencies' release and LTS.
That's true! Vue, Webpack, Babel, Node.js, PostCSS are all dependencies our LTS has to carry with it. One more reason to keep LTS time not too long.
The LTS may also include compatibility and release version of Nuxt Community Modules(axios, auth...).
Could potentially be a problem (eg. new major auth-module
version is not necessarily bound to work with LTS)
If we published 3.x and 2.x is LTS, how to fix bugs for 2.x ? If works on 2.x branch, it breaks the rule that develops on dev. If works on dev branch, it's impossible to cherry-pick if in current strategy
I'd suggest to create a PR (target: 2.x
) and work there to backport that specific fix.
+1 on merging-after-docs as a written rule.
We've kind followed this already to some extent, but enforcing it is a good idea.
I have no major considerations after what @Atinux's comments.
I think we just need a proper yearly schedule (there are probably apps or templates for that) so everyone can track it.
The release plan will be published with v2.4
Final PR in https://github.com/nuxt/nuxt.js/pull/4853
Update
We have decided on a release plan which will take effect with
v2.4
. We try to abide to the plan as good as possible but it is thought as a rough schedule overview. There won't be an exact release date for most of the future versions.Initial content
Current release lines:
Edge:
dev
branchnuxt-edge
:39,421
Stable:
nuxt
:61,321
LTS:
1.x
/2.x
/.. branch that contains the latest changes before the next major oneConcerns:
master
branch is not actively updated nor has clear utility.BREAKING CHANGES
. We simply convertdev
purpose tonext
when the first PR with breaking change ships. This prevents faster iterations while easily accepting breaking changes. We need another branch likenext
which is kept in sync withdev
(automation possible?) and also ship breaking changes there and merge intodev
accoring to release schedules. Sub concern -> We neededge@next
then 😆