If we switch to adopting semantic versioning, then our version scheme won’t distinguish between “some small changes are required” and “major changes are required”, which our historic versioning scheme as done.
Specifically, it’s likely there wouldn’t be a 3.2 release, and there would be a 4.0 instead. 3.1 would move into security-fixes-only support mode about 6 months after that release.
Specifically, it’s likely there wouldn’t be a 3.2 release, and there would be a 4.0 instead. 3.1 would move into security-fixes-only support mode about 6 months after that release.Entirely out of curiosity: why would we skip 3.2? Is it because there are already a number of breaking changes, so a major version bump would be more appropriate? Or just to switch to semantic versioning now rather than delay until 3.2 is out?
Given the turbulence caused by the 3.1 "minor" release, my position is that I'd rather not history repeat itself. That release didn't sit well with developers and users alike, especially those users who had to pay their developers heaps of cash for a "minor" upgrade.
I’m in favour of switching to semantic versioning, and am definitely in favour of more frequent releases - especially point releases. It’s often a matter of months between a bug fix being merged and the next release.
More frequent releases would, presumably, mean an increased workload on the core team. I understand that the release process for the person who actually has to tag the release, update the website etc isn’t an easy one: I vaguely recall seeing a surprisingly long document detailing the process.
A script that transforms project/module code to suit the new API
--
You received this message because you are subscribed to the Google Groups "SilverStripe Core Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to silverstripe-d...@googlegroups.com.
To post to this group, send email to silverst...@googlegroups.com.
Visit this group at http://groups.google.com/group/silverstripe-dev.
For more options, visit https://groups.google.com/d/optout.
I wouldn't expect we would try and forward merge patches across the major release gap - fixes for 3 would stay in 3.
--
You received this message because you are subscribed to a topic in the Google Groups "SilverStripe Core Development" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/silverstripe-dev/J4U4Nl2qTSg/unsubscribe.
To unsubscribe from this group and all its topics, send an email to silverstripe-d...@googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "SilverStripe Core Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to silverstripe-d...@googlegroups.com.
I would prefer "semantic versioning from 3.2 onwards" rather than "semantic versioning from <date>".
That sounds good to me Sam.
--
Hi Everyone,Something that came up again in the discussion around namespacing at https://github.com/silverstripe/silverstripe-framework/issues/3548 is that SilverStripe doesn't currently follow the principles of semantic versioning (http://semver.org).While there are both historical and technical reasons for that, we’re not really tied to the current versioning semantics by anything except inertia, so it’s worth examining if we want to adopt semantic versioning as a new standard.Right now, our versioning semantics are something like this:- Point release: bug fixes and minor changes that don’t substantially affect user experience- Minor releases: only include changes that can be resolved easily by developers, e.g. through the execution of a tool or by following a few clearly-defined steps- Major releases: significant refactoring might be requiredSemantic versioning is described fully at http://semver.org, but is roughly:- Point release: bug fixes, no new features- Minor releases: new features/APIs, but no compatibility-breaking changes- Major releases: significant redacting might be requiredIf we switch to adopting semantic versioning, then our version scheme won’t distinguish between “some small changes are required” and “major changes are required”, which our historic versioning scheme as done.There will be some other effects of moving to semantic versioning:- Once a minor release is out, point releases must only contain bugfixes. All new features will need to wait for the next minor release.- There is likely to be more frequent minor releases- There is likely to be more frequent major releases- More frequent releases means existing releases will be end-of-lifed faster- It will be clearer what versions of SilverStripe a module will work withSpecifically, it’s likely there wouldn’t be a 3.2 release, and there would be a 4.0 instead. 3.1 would move into security-fixes-only support mode about 6 months after that release.In order to mitigate the effect of more frequent backward-compatibility-breaking changes, we would introduce a new open source commit policy around providing more assistance for upgrading between major versions. It might be something like this:“For any API change, one of the following must be provided, in order of preference:
A script that transforms project/module code to suit the new API
A script that identify potential areas that need to be fixedA section in the upgrade guide that explains the changes that need to be made”So, what do people think? Should we shift to using semantic versioning?
Hamish Friedlander
--
You received this message because you are subscribed to a topic in the Google Groups "SilverStripe Core Development" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/silverstripe-dev/J4U4Nl2qTSg/unsubscribe.
To unsubscribe from this group and all its topics, send an email to silverstripe-d...@googlegroups.com.