Next focus: PROCESS
Joseph Rushton Wakeling
joseph.wakeling at webdrake.net
Wed Dec 12 10:04:17 PST 2012
On 12/11/2012 12:41 AM, Andrei Alexandrescu wrote:
> In turn, I'll be collecting thoughts and opinions in this thread, distilled from
> previous discussions. We should develop a few simple git scripts (such as
> git-start-new-feature or git-start-bugfix etc) supported by an equally simple
> piece of documentation describing how to start a new release, fix a bug,
> experiment with a new feature, and such.
>
> (One piece that has been brought forward is
> http://nvie.com/posts/a-successful-git-branching-model/ - something to keep in
> mind.)
>
> Please chime in with ideas and thoughts.
It seems to me that while process is clearly very important, what's maybe
necessary first is to identify what the actual results of the process are
intended to be. What should a 'stable version' of D actually mean, in practice?
What should its lifetime be? Should there be interim releases in-between
stable versions which can introduce e.g. breaking features, and should those be
treated only as beta versions or as releases in their own right? How is that
coupled (or decoupled) from releases of the library? etc.
I'd personally rather get those issues addressed out before talking about git
methods, which to be honest I suspect will be similar no matter what the release
model.
So, with that in mind, here are some thoughts/suggestions.
People have talked about Debian's unstable => testing => stable model, but
instead, why not consider something more akin to Ubuntu's LTS and interim releases?
* STABLE/Long-term support releases would be guaranteed to receive bugfixes
and have no breaking changes for 3 years.
* A new LTS release would be made every 2 years, so that there would be a
1-year overlap between the current LTS release and the previous one.
* Optionally, non-breaking new features could be included in LTS release
updates during this timeframe, subject to strict testing. Such new
feature updates should only go to the latest LTS release (so, during the
1-year overlap period, the older LTS would continue to receive bugfixes
but not have new features added). The process for including new features
should probably be more liberal for Phobos than for other parts of the D
toolchain.
* In between LTS releases, there should be regular (3- or 6-monthly?)
interim releases that have gone through testing and are considered
'stable' in a working sense. These releases _can_ make breaking changes,
subject to strict conditions, and should be more liberal about new feature
inclusion in general. The idea should be that the interim releases
converge towards the next LTS release, so the conditions for make breaking
changes and the testing of new features both become more and more
stringent the closer to the next LTS release you are.
* For preference, deprecated features to be 'removed' by simply removing
documentation and support for a feature rather than removing the feature
itself (thinking here particularly of Phobos and Walter's observations).
The time periods involved could of course be tweaked, e.g. an LTS release might
be supported for 5 years and be released every 3 or 4. There could also be an
even larger-scale cadence (10 years?) for really major redesigns.
The above reflects my personal preference that I'd rather have a language which
is willing to continue to iron out annoying idiosyncrasies or bad design
decisions -- but which can still provide a good stable base for development,
making sure that there is a good overlap period between LTS releases so that
developers have a substantial amount of time to update their codebases.
More information about the Digitalmars-d
mailing list