Versioning of Frameworks
Kevin Ottens
ervin at kde.org
Thu May 14 11:46:20 UTC 2015
Hello,
On Tuesday 12 May 2015 09:22:12 David Faure wrote:
> On Monday 11 May 2015 15:51:20 Christian Mollekopf wrote:
> > I think there are two possibilities:
> > * "master" is the development branch and we have a separate "release"
> > branch
> > => contributors have it easier because that is perhaps more common,
> > and the people releasing need to know that they shouldn't release off
> > "master" but off "release"
> > * "master" is the release branch and we have a separate development
> > branch
>
> Neither of those is how development works in Frameworks.
>
> "master" is the development branch *and* the release branch.
>
> Most of the work on any library can be split into small enough chunks that
> can be committed incrementally, each change being stable and tested.
> Only very large refactorings (e.g. changing the underlying technology) might
> sometimes require a work branch, but that is really the exception, smaller
> refactorings can also be done incrementally.
I know I'm late to the party, but I'd just like to express my support on that.
It was a deliberate choice to have such a setup in Frameworks, and it's
important for the sake of contributions that we don't end up with different
rules per framework.
Regarding master as both the development branch and the release branch, its
aim is to push people to discover unwanted interactions early by creating
friction. It'd be senseless used alone. But, if it's combined with reviews and
automated tests (ideally TDD but we're still not there yet I'm afraid), then
it leads to introducing features in baby steps (because you want to avoid
large useless reviews) with a higher quality. It means you can release any
time[+].
At least, since we've put that in place in KDE Frameworks, the work keeps
coming in with a higher quality than before[++] and the releases are "boring".
And I mean that in a good way: the release notes are small, it's not a drama
anymore to get everyone aligned, no one tries to rush something under the
radar to make it to the next release and the generation of the release is
mostly automated. It doesn't make for a big PR splash but that's OK in my
opinion, especially for KDE Frameworks.
Also note that if you get your features by baby steps properly and use either
branch by abstraction[*] or feature toggle[**] techniques (those tend to take
the form of semi-private/experimental APIs in some of our frameworks) then the
whole versioning discussion of this thread is much less relevant as well (it's
not as scary anymore to upgrade dependencies of a framework).
Regards.
[+] http://c2.com/cgi/wiki?ReleaseEasyReleaseOften
[++] Even if I bitch and moan regularly about tests and still think it could
be better, it be dishonest to not notice there's more peer review and tests
than before.
[*] http://martinfowler.com/bliki/BranchByAbstraction.html
[**] http://martinfowler.com/bliki/FeatureToggle.html
--
Kévin Ottens, http://ervin.ipsquad.net
KDAB - proud supporter of KDE, http://www.kdab.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kde-frameworks-devel/attachments/20150514/42b44799/attachment.sig>
More information about the Kde-frameworks-devel
mailing list