[Nix-dev] Stable NixOS releases

Vladimír Čunát vcunat at gmail.com
Wed May 15 21:35:26 CEST 2013


Hi.
Yes, I do agree we need at least one more "user profile" that is more 
stable than master. I took my time to think about this for two days; 
here is the result which sketches how it could look like:

- "master" branch
     * immediately gets all updates not likely to break a lot of things 
(like after one testing run)
     * huge or dangerous updates are first in experimental branches 
(e.g. stdenv-updates)

- "stable-YY.MM" branch
     * gets every *important* bugfix-only/maintenance update after 1--2 
weeks of testing (using it)
     * RC is created every ~3--4 months by taking ~2 weeks old master + 
all bugfix-only/maintenance updates since then
     * release after a few weeks (so major changes are > 1 month in use)
     * only one is maintained at a time (so it lives ~3 months)
     * after EOL it still receives security updates for another ~3 months
       (could  be longer for some of them, we'll see)


Reasons:

- Why create many-month longterm: security-only updates are quite 
infrequent, important for longterm releases, and it's usually very easy 
to integrate them (just change version+hash). They should almost 
certainly create no new problems and committing to multiple branches 
will usually be just a cherry-pick.

- current stable-* should make a good balance for most users:
     * relatively new features (lag 0.5--4 months behind master)
     * immediate security fixes
     * quick but tested *important* bugfixes (after 1--2 weeks)
     * not a high disk-space bloat like when rolling on master (bigger 
rebuilds only every ~2 months on average)
     * some time after EOL there are still security updates at least, so 
the users aren't too much pressed to switch at the precise moment

- Master should be the place where *most development occurs*. We want 
all "relatively safe" updates here immediately, so we can more easily 
find unexpected/hidden problems. However, keeping a whole system on 
master isn't for everyone, as it is e.g. quite HDD-space-intensive: for 
libs like gtk+, systemd, qt4,... maintenance update with full rebuild 
can take a gigabyte of space... and we do a similar thing almost every 
week in master.


Update workflow:

- Security-only fix: (check it builds,) immediately apply to master, 
cherry-pick to the current and the last EOLed stable-*.

- *Important* bugfix-only/maintenance updates: (check it builds,) 
immediately apply to master to test it. After 1--2 weeks cherry-pick to 
the current stable-* (such updates also IMHO almost never depend on 
changing other packages).

- For the workflow it might be very useful to agree on some code-words 
in commit messages, so we can easily/automatically recognize e.g. 
(important) bugfixes (useful when creating RC).


Notes:

- All above is probably only suitable to the two x86*-linux 
architectures. IMHO the others are currently getting so little testing 
that we can't really say anything about stability.

- Non-default versions of packages will probably live in a more free mode.

- Channels should again lag behind the corresponding branches (waiting 
until hydra rebuilds the version).

- I assumed that the changes committed to master are *used* by 
someone... which doesn't always hold for libraries: there are many cases 
when updating a thing breaks others and we don't find out for a long 
time. I don't know how to solve such problems... we could make libraries 
lag longer or something, enable more automatic tests, but we'll probably 
not completely avoid this.


On 05/14/2013 06:44 PM, Eelco Dolstra wrote:
 >> How to do it? I'd prefer not use github pages - while it would work
 >> I'd like to introduce branch specific info files - such as
 >>
 >> ./BRANCH_INFO.txt
 >>
 >> to which a summary of the important changes could be written.
 >
 >   I'd suggest putting the release notes in the NixOS manual or maybe 
on a wiki page.

I believe that keeping the list of major changes inside git tree is 
better. We could use this practice everywhere, even in master, so e.g. 
by "git log CHANGES" one would see important commits, etc.


On 05/14/2013 05:33 PM, Eelco Dolstra wrote:
 > But the risk with this approach is that people will be tempted to 
squeeze in
 > wildly destabilizing changes at the last moment:-)   I don't think 
this needs a
 > lot of bureaucracy or rules though, just some good sense not to (say) 
merge a
 > major GCC update into master just before the release is about to be 
branched.
 >
 > Also, having release goals (as in "these are the features we'd like 
to have in
 > this release") seems like a good way to focus development (and to get 
people to
 > volunteer to work on those features).

Yes, +1 for release goals and slightly "vague" rules for what can be 
included.


On 05/14/2013 03:54 PM, Marc Weber wrote:> Excerpts from phreedom's 
message of Tue May 14 15:44:24 +0200 2013:
 >> It isn't only about production. I'm sure that we managed to scare 
away some
 >> newbie users with a temporarily broken master branch.
 > I don't understand why, because nixos is the *only* distribution you can
 > just use older revision and continue. So it should even make those newbe
 > users use nixos with even more joy.
 >
 > The problem is there are many packages - and there will be more - we
 > will not have a chance to test all of them (eg games) - so we should
 > define what we want to call breakage.
 > Eg breaking ati/nvidia proprietary drivers is bader than breaking a
 > particular game (for work).
 >
 > There will always be "new users" who find bugs .. So maybe the better
 > way is to emphasize that using nixos its a smaller problem compared to
 > other distros.

I believe the worst problem for newbies is that the initial setup of 
NixOS is very complicated (in comparison to major distros), and also the 
whole nix approach is very different (IMHO many people also don't 
understand the great surplus that nix brings). Probably those who are on 
IRC a lot can tell better ;-)

 > We simply don't have the man power to retest all packages over and
 > over again. We have to focus on the most widely used ones.
 > Its sad, but the truth.

True, noone has. We should use automatic tests as much as possible.
(The more extensive ones separately from building, I suppose.)


Vlada


-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 3251 bytes
Desc: S/MIME Cryptographic Signature
Url : http://lists.science.uu.nl/pipermail/nix-dev/attachments/20130515/61498b9d/attachment.bin 


More information about the nix-dev mailing list