Replies: 7 comments 4 replies
-
Great write-up Matt, I agree with your proposal for the semver style releases. Being able to specify My only thought is to the fate of LTS releases. Should they be done away with entirely? My thought is that the last minor release before the next major release be retroactively designated LTS and continue to receive fixes for 6 months following the major release. For example:
Such an LTS process should provide enough of a layover period for sites and package maintainers to switch to and/or support 3.x. |
Beta Was this translation helpful? Give feedback.
-
👍 for Semantic Versioning. I'm not a fan of features bumping the major version; although it can feel anticlimatic to do a lot of work to make a feature backwards compatible, it's good to know existing tooling should work fine with the newest editor experience. I do appreciate the desire to be able to celebrate achievements with a shiny new version number, though, so here's my wild proposal: Releases with editor-centric features get names, something more than a sequence of numbers to excite people when they see it in the editor interface. As always, thank you all very much for all your work, whatever number you put on it! |
Beta Was this translation helpful? Give feedback.
-
@gasman thanks for the great input. I'm also absolutely in for the semantic versioning. I just updated a quite old wagtail system today and needed to go through all the 2.1x releases to find out if I need to do something. Even tough it went super smoothly I didn't even had a rough idea of how long this would take. I also like the idea to make a new major release if there is a significant visible change in the editor. This would help a lot to update the editors if an update was introduced that relevant for them. As well I see a good chance in more testing contribution if the community member could see what kind of new release this is. Sorry I can't contribute much beside saying this is going in the right direction :) |
Beta Was this translation helpful? Give feedback.
-
I love the proposal, as we’re already making a lot of efforts to avoid breaking changes I’m sure following semantic versioning will be a natural evolution. There are two things I’m wondering about:
|
Beta Was this translation helpful? Give feedback.
-
As someone who generally prefers to follow LTS releases, something similar to Django's release pattern would be ideal - but still keeping Wagtail's current support lifespan given the number of releases in a year. Having a 3.0 which drops compatibility shims, 3.3 as an LTS, then 4.0 dropping compatibility again would be an ideal flow for me. It's predictable, and something which helps when it comes to sites you want to continue running - but don't want to invest a huge amount of time in. Whilst I'm saying this, I wouldn't worry too much if minor version bumps (3.0 to 3.1, 3.1 to 3.2) includes some incompatible changes - as long as there's instructions on how to upgrade through these versions, which is pretty much always the case anyway. Even with semantic versioning you need to test every release, there's no guarantee that code which appears to be compatible with multiple versions doesn't end up causing an annoying regression. |
Beta Was this translation helpful? Give feedback.
-
Another take is to adopt semantic versioning but align with the calendar year, similar to Black. This kind of boxes us into (major breaking changes once a year), but it may also provide a nice framework for how we plan releases, core updates and features. Anything super new can be behind experimental flags for testing/refinement until it goes out in the next major release. We may need to revisit the deprecation policy though, when features are dropped we currently have two releases of 'warnings' before the code is actually removed. A year would look roughly like
|
Beta Was this translation helpful? Give feedback.
-
Thanks all for the feedback. A few assorted thoughts in response, including what this is going to mean for upcoming releases... It's worth recognising that Wagtail, as a project with a significant user-facing component, is in a different place to a purely developer-centric library when it comes to what's considered a breaking change. If the user interface changes to the point that an organisation has to update their training materials - or, simply, users have to adjust to new conventions - then that's a disruptive change just as much as changing an API in the code would be, and the version numbering should reflect that. Secondly, I think it's important to note that semantic versioning isn't going to be a foolproof indicator of how 'safe' it is to upgrade, particularly for add-on packages. It's fairly common for packages to make use of undocumented Wagtail internals, knowingly or not - hopefully this will become less of an issue over time as we expand the scope of "Wagtail as a platform" and offer more formal extension APIs for the kind of things that packages want to do, but it won't go away entirely. An example would be the As for what this means for the immediate future: the current roadmap for the page editor redevelopment project is that the May 2022 release will have the major visual refresh, with the August 2022 release having the data model changes (which I envisage being somewhat larger than the 2.15 telepath update) to support things like auto-saving. Given the above thoughts on versioning, this will put us in the slightly odd situation of releasing Wagtail 3.0 and 4.0 in close succession. As I see it, though, embracing that oddness is part of the deal of adopting SemVer :-) - setting version numbers according to the engineering considerations, rather than basing it on marketing or the psychological factor of "we've just completed a big feature, let's bump the version number to celebrate". And really, the alternatives seem equally weird - such as releasing a 2.17 that looks radically different, followed by a 3.0 with no obvious visual differences... As it happens, there are some other notable breaking changes poised to drop within the next couple of months, such as the core module reorganisation and removing the hallo.js editor, so a 3.0 release in May will be justified either way. On the subject of LTS releases - my feeling is that they should continue to happen once a year regardless of where that might land in the numbering sequence, since the whole point of LTS is to provide a predictable timeline for support, whereas SemVer will make the timings of major version bumps inherently unpredictable. I might have second thoughts about that when we start putting it into practice, though - it may turn out that aligning them makes logical sense (e.g. making an LTS for the last version before we drop Django 3.2 support). |
Beta Was this translation helpful? Give feedback.
-
Hi all,
I'd like to share some thoughts and seek your input about how Wagtail should deal with version numbering in future.
As you may know, we make a new feature release of Wagtail every three months. I think this strikes a good balance between getting new features into users' hands without a massive wait, and not tying up too much of our time with release management and testing (plus not making it a massive chore for users to keep up with upgrades). Sticking to this schedule means that some releases inevitably end up being bigger than others, since the resources we can allocate to Wagtail development vary from month to month, and we make a point of not holding up a release to get "that one killer feature" included. In any case, we currently always bump the minor version, e.g. 2.14 -> 2.15.
We don't follow semantic versioning - we regularly make breaking changes in these minor releases (and, hopefully, give enough guidance in the release notes that this isn't a massive burden on developers). Wagtail development is fast-moving enough that if we were to commit to only making backwards-incompatible changes on major releases, we'd either be hampered when doing important development like workflows and the telepath StreamField rebuild, or we'd be on something like version 15 instead of 2.15 by now.
While this arrangement does seem to work quite nicely for us, we've recently been feeling a few negative effects for the Wagtail ecosystem and community:
With that in mind, I'm wondering if it's time to make greater use of the major version number. Exactly how it would work is up for discussion (so let's have that discussion here!) but I'm imagining something like this...
One slightly odd consequence of this is that we might not know whether the forthcoming release is (say) 3.3 or 4.0 until quite late in the day... if a major feature is close to completion but may or may not make our three-month deadline, we won't bump the version to 4.0 until it lands in the main branch. As a result, in the days leading up to the release candidate we might think we're on course for releasing 3.3, but then the major feature lands and the release suddenly becomes 4.0 instead. But maybe that's not a bad thing!
Interested to hear everyone's thoughts - does the current release cycle work out well for you and your organisation? Would it help for us to adopt something closer to SemVer? Or would the unpredictability make things worse?
Beta Was this translation helpful? Give feedback.
All reactions