Next focus: PROCESS
Jonathan M Davis
jmdavisProg at gmx.com
Thu Dec 13 01:07:53 PST 2012
On Wednesday, December 12, 2012 19:04:17 Joseph Rushton Wakeling wrote:
> 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.
Agreed.
> 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?
That makes a _lot_ more sense than the unstable => testing => stable model.
I like the idea of having an LTS release at some interval (probably 1 year)
where that branch has bug fix releases more or less monthly. We then have a dev
release cycle where we put out a version of the master branch every 2 or 3
months or so, where it includes whatever new features we want to include but
haven't been merged into the LTS branch yet. Then with the next major LTS
release, we merge in all of the new stuff from the master branch so that it's
essentially up to date with master (possibly modulo some newer features or
other major changes if they weren't deemed ready yet). So, we then end up with
the LTS/stable branch having a versioning scheme something like
2.061.1, 2.061.2, 2.061.3, 2.061.4 ... 2.062.1, 2.062.2, ...
and the master/dev branch has a versioning scheme like
2.062.dev1, 2.062.dev2, 2.062.dev3, 2.062, 2.063.dev1, ...
The releases on the master/dev branch which aren't marked with dev are then
the new major LTS release, which the LTS/stable branch bases its next years
worth of minor releases off of.
The exact way to name the versions probably needs some work, but the basic
model sounds fairly straightforward and clean to me. We then have longer term
releases for those who want stability where they still get bug fixes fairly
frequently (possibly more frequently than now, since there won't be new
features being added, causing more risk for releasing), and we continue to
have dev releases more or less as we have been for those that want new
features faster.
As for what that means for github and branching, I'd expect us to continue
more or less as we have been for master except that newer features and other
major changes would start out on feature branches so that they can be properly
sorted out before being merged into master, and we'd actually branch when
doing betas for releases and do the releases from those branches rather than
master. Then the folks mananging the stable branch would merge in bug fixes as
we go along, doing their minor releases whenever they feel it's appropriate.
As for the standard library and its releases, I wouldn't really expect them to
be decoupled from the compiler's releases but rather that they would continue
more or less as they have been. I think that it's too often the case that
changes in them need to be made at the same time for it to really work to
decouple them at this point.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list