|
|
Log in / Subscribe / Register

A proposal for an always-releasable Debian

From:  Lars Wirzenius <liw-AT-liw.fi>
To:  debian-devel-AT-lists.debian.org
Subject:  Debian development and release: always releasable (essay)
Date:  Thu, 9 May 2013 20:49:51 +0100
Message-ID:  <20130509194951.GK2878@havelock.liw.fi>
Archive‑link:  Article

This is from Russ Allbery and myself.  See http://wiki.debian.org/Debate
for context, and http://wiki.debian.org/AlwaysReleasableTesting for
the canonical version of this essay. We hope that the readers will take
their time to read this, reflect on it, and then maybe write their own
essay and add it to http://wiki.debian.org/JessieReleaseProcess .
Comments on the wiki or by e-mail are, of course, always welcome.

 - - -

The wheezy freeze has been much too long. At ten months, it's four
months longer than what we've gotten used to in several previous
releases. Had we managed to keep the freeze at six months, it would
still have been too long. I believe there is something wrong in how
we develop Debian, and how we do releases, and that by fixing them,
we can have much shorter releases, with an increase in their quality.

Freezes are long in part because we need to do so much work during
them. Most importantly, we need to fix so many release critical bugs
(RC bugs), that a short freeze is not possible, without drastically
lowering the quality of Debian.

A long freeze is highly frustrating to everyone. It's a very stressful
period for the release team, obviously, but since the freeze affects
all development, even those of our developers who do not care about
the release feel its effects in their development. Our users would
like fresh upstream versions, but that rarely happens in unstable,
and because the freeze is so long, when the release actually happens,
much software seems a bit stale. Upstreams, who would like to get
their software into the hands of users as soon as possible, including
via Debian, are also frustrated.

We should aim for a short freeze, perhaps as short as two weeks,
and certainly not longer than two months. This would remove the
frustration, and fix the other problems related to a long freeze.
However, to achieve a short freeze, we need to change how develop
Debian.

The fundamental change is to start keeping our "testing" branch
as close to releasable as possible, at all times. For individual
projects, this corresponds to keeping the master or trunk branch
in version control ready to be released. Practitioners of agile
development models, for example, do this quite successfully, by
applying continuous integration, automatic testing, and by having
a development culture that if there's a severe bug in master,
fixing that gets highest priority.

We can do similar things in Debian, and if we do, I believe that we
can keep testing in a releaseable state almost all of the development
cycle between two releases. The minimum necessary changes to achieve
this, in my opinion, are:

* An attitude change: we decide that releases are important, and that
  they're the job of the entire project, not just the release team.
* Keep testing free of RC bugs.
* We should use automatic testing much more extensively, to find
  problems as early as possible.
* We should limit the number of packages we strongly care about for
  a release.

Releases are important
----------------------

Releases are important to many, perhaps most, of our users. Hackers
and hardcore powerusers don't necessarily care about them, of course,
but most others do. A released version of Debian implies that the
operating system works: there's a working installer, for example.
It also implies that all the packages are expected to work together:
there's no transitions going on, for example, that might break
dependencies or reverse dependencies.

A release is important to many users because it means that if they
have to re-install, they will get back the same system they used to
have. Or they can install another computer that will behave the same
way as the first one. This reproducibility is also why enterprises
like them: they can confidently assume that if they install fifty
thousand machines, they'll all be the same. Without this kind of
uniformity, system administration costs, and end-user support costs,
become unmanageable.

But releases are also important for us, as a project. They're an
excellent point to stop and say, "we have achieved this, and it is
good". It's a reason for others to have a look at Debian and see that
it is good. This generates a good feeling, which gives us more
motivation to work on Debian.

It's true that we can't expect every Debian developer to care about
making a release. That's OK. We just need the minority who don't care
to not get in the way of the release.

Keep testing free of RC bugs
----------------------------

The RC bug count for the testing branch should be kept low all the
time. Right after a release, by definition, testing is free of RC
bugs. With the current development model, right after the release we
open the floodgates, and large number of new packages and versions
enter testing. The bug count sky-rockets, but we don't care a lot
about that until the next freeze gets closer.  This means testing
is not anywhere near in a releasable condition during most of the
development cycle.

We should, instead, make sure testing is kept free of RC bugs as much
as possible. There are a variety of things we can do about it:

* Remove RC buggy packages sooner rather than later. An RC buggy
  package should be removed at soon as possible: when the bug
  is identified, allow a bit of time for the bug to be verified
  (was it actually an RC bug?), but after that, remove the package
  from testing, preferably automatically.  If the package has
  reverse dependencies, remove those as well. This keeps testing
  releasable. The removed package can and will re-enter testing once
  it gets fixed.

  To reduce the sting of optional packages missing the release, we
  should consider whether we're willing to introduce new packages
  in stable point releases.  Obviously, only packages that have
  no new dependencies could be introduced that way, so things that
  require newer versions of the packages already in stable would not
  be eligible.  But it means that if a package was in the previous
  stable but missed the current stable due to unresolved issues at
  the time of the releease, we could still get it back in and it
  wouldn't have to wait another year or two.

  We would need some staging area to ensure that the stable build
  of the package was actually tested.  Backports could be used for
  that purpose.

* When a package is too important to be removed from testing (e.g., gcc
  or bash), if it gets an RC bug, all developers should be encouraged
  to help fix it. This can be done in various ways, from the fun (a
  BSP aimed at that one bug only, perhaps) to the dictatorial (prevent
  all uploads to unstable unless they fix an RC bug in testing).

* When the RC bug count in testing grows above a particular threshold,
  have a bug-fix-only mini-freeze: stop the migration of packages to
  testing, except for packages that fix RC bugs. Ideally, we would
  automate as much of this as possible rather than making the release
  team do it manually. When the RC bug count drops back below the
  threshold, we re-open testing. This provides a constant feedback
  cycle where, if we're not managing RC bugs properly, testing stays
  frozen more and more and provides more pressure to manage RC bugs
  properly.

Not having RC bugs in testing is a necessary (though not sufficient)
condition for releasing. We have to keep the count as close to zero
all the time in order to keep the freeze short.

Reference installations
-----------------------

Debian is now much too big to give the same importance for every
package, as far as the release is concerned. In reality, we don't:
the release team has a much lower threshold for removing nethack than
it has for bash. We can release without nethack, but not without the
default shell.

We should codify this, and make it  what counts as necessary package
to be included in the release, and what does not. I propose a set of
"reference installations" of Debian, for various purposes.  We have
the related concept of "task" already, in the installer:

* ssh server
* mail server
* LAMP server
* desktop system
* print server
* etc

We should have an explicit list of such reference installations
and declare them as crucial for the release: if they work, we can
release, and if they don't, we can't. Each reference installation
should have a clearly defined purpose, and therefore a clearly
defined list of packages that must be included.

A package that is not included in one or more of the reference
installations is a package we want to include in the release, but we
will not delay the release for its sake. We should have a low threshold
for removing such a package from testing: it could perhaps even be
removed automatically one week after an RC bug is filed against it
(assuming the bug affects the version in testing).

This creates two classes of citizenship for packages. This is
unavoidable, and is actually already the case.  It is not a criticism
of the packages, or their maintainers, if they're not included in a
reference installation. Nethack just isn't as important at bash.

The only difference between packages included in reference
installations and those not included is that packages in reference
installations have a higher threshold to be removed from testing.
(If a reference installation does not meet quality criteria,
the release team has the option of dropping it.)

The set of reference installations requires careful thought and
broad consensus. They are the packages we, as a project, especially
wish to support. Each reference installation should also be
possible to verified for quality: there should be an automatic
test suite of sufficient coverage and quality that it makes sense
to let it be crucial for the release.

Use automatic testing extensively
---------------------------------

We have some automatic testing tools specifically for Debian: lintian,
piuparts, adequate, autopkgtest, and probably more. We should use
these much more extensively, and let them guide the migration of
packages into testing.

Automatic testing will catch some classes of bugs much faster, and
perhaps more reliably, than relying on bug reports. We need both.
The job of automatic testing is not to prove the absence of bugs,
but to establish a trusted lower limit for quality: it shows us that
certain things work and will notify us if we ever break them. This
gives us, the developers, more confidence that the changes we make are
not too destructive, and notifies us if they are. Most importantly,
automatic testing will find bugs faster, which then makes it easier
to fix them, and reduces their impact.

Imagine a continuous integration system for Debian: for every new
package upload to unstable, it builds and tests all the reference
installations.  If all builds succeed, and all tests pass, the package
can be moved into testing at once. When you, a developer, upload a
new package, you get notified about test results, and testing migration,
within minutes.

The number of packages in Debian, and the amount of churn in unstable,
makes this not quite possible to achieve without massive amounts of
hardware. However, we can get close: instead of testing each package
separately, we can test together all the packages that have been
uploaded to unstable since the previous run, and mostly this will be
a fairly small number of packages.

Ideally we will run the tests for each release architecture, but it
may be enough to run them on amd64 only. We'll need to experiment with
this.

Automatic tests do not need to have very much coverage in order to
be quite useful. Even very simplistic tests, like the ones piuparts
does, find quite a lot of problems. If we create a framework to run
the tests which makes it easy to add more tests, we will in time
accumulate a large test battery. Look at lintian: it has a staggering
number of tests now, but they've been written over a period of more
than a decade. Ideally, we can benefit from such tests that have
already been written for other distributions, and share ours with
them.

Tests for running reference installation might include the following:

* Basic networking setup works: System responds to ping from the outside.
* Mail server responds appropriate on the SMTP, submission, IMAPS, and POPS
  ports.
* LAMP server responds on the HTTP and HTTPS ports.
* A desktop system that automatically logs in a test user has the right
  processes running, and can start some common applications.
* In each case, it's possible to log in remotely with ssh and run
  "sudo apt-get install hello".

These are trivial, even simplistic tests. However, if they pass, we know
that at least the basic, fundamental things in the system are not horribly
broken: networking, system administration, and the software that is meant
to start in that reference installation. Furthermore, we know that the
debian-installer works. That's a good foundation for further hacking.

Holger Levsen is already doing at least some of this on
<http://jenkins.debian.net/>, and he's happy to get help to improve
that service further.

Conclusion
----------

We believe, based on our experience as software developers, that
adopting these suggestions will make the jessie release cycle and
release process smoother, and increase the quality of the end result.

Lars Wirzenius
Russ Allbery

-- 
http://www.cafepress.com/trunktees -- geeky funny T-shirts
http://gtdfh.branchable.com/ -- GTD for hackers





to post comments

A proposal for an always-releasable Debian

Posted May 10, 2013 15:12 UTC (Fri) by pharm (guest, #22305) [Link] (2 responses)

As a Debian user, I would love it if this happened.

A proposal for an always-releasable Debian

Posted May 10, 2013 17:36 UTC (Fri) by shmerl (guest, #65921) [Link] (1 responses)

+1 to that.

Many are waiting for Debian testing to become a really rolling distro without such huge stalls like this last freeze. This proposal if implemented will achieve just that, and in addition will make testing more robust!

Not your garden variety Google+ +1

Posted May 10, 2013 22:51 UTC (Fri) by man_ls (guest, #15091) [Link]

I am willing to spend my monthly allowance of +1's on this thread. Debian is 99% perfect and this proposal provides the remaining 1%.

A proposal for an always-releasable Debian

Posted May 10, 2013 16:13 UTC (Fri) by hadrons123 (guest, #72126) [Link]

Russ Allberry and Lars Wirzenius must be genius!
Proposal looks too good on paper. If debian could achieve or capable of this feat, Debian would beat the shit out of all the sucker distros(ubuntu/mint). I already have high regards about debian. I hope Debian implements these features.

A proposal for an always-releasable Debian

Posted May 10, 2013 16:33 UTC (Fri) by JoeBuck (subscriber, #2330) [Link] (20 responses)

It is very difficult to manage transitions for large systems of packages, like KDE and Gnome, with the current setup. While a transition is in progress, things are broken for an extended period of time. How do they plan to address that?

A proposal for an always-releasable Debian

Posted May 10, 2013 17:35 UTC (Fri) by Cyberax (✭ supporter ✭, #52523) [Link]

By trying everything on the unstable branch?

A proposal for an always-releasable Debian

Posted May 10, 2013 17:46 UTC (Fri) by bluss (guest, #47454) [Link]

Look back at the past 10 months of freeze, how many of those were influenced by big transitions? I don't think it was much.

A proposal for an always-releasable Debian

Posted May 10, 2013 18:22 UTC (Fri) by lenov (guest, #15428) [Link]

Xorg-edgers manages to do it for Ubuntu. While Ubuntu-X provides individual packages that can be installed to upgrade a system without breaking anything, Xorg-edgers provide bleeding edge new packages that are meant to be installed as a whole, replacing everything so that nothing breaks (and edgers is sometimes the only way to fix quickly severe bugs in X, such as the disabling intel bug present in Quantal, that caused X to crash when one clicked in a canvas). This of course requires a very well compartimentalised system, but Debian has that already.

A proposal for an always-releasable Debian

Posted May 11, 2013 1:25 UTC (Sat) by zlynx (guest, #2285) [Link] (16 responses)

What Gnome and KDE need to do is stagger the version releases of applications and base libraries. That would help tremendously.

There's no reason to build the applications on the newest library versions. Gnome 3.8 apps should build against Gnome 3.6 libraries. Then later on release the 3.8 libraries which would, of course, be completely compatible with the 3.6 and 3.8 applications.

That would remove the need to immediately recompile everything in the universe against the new frameworks.

This is just like how in the Windows world most apps are currently built against WinXP SP 2 and not Windows 8.

A proposal for an always-releasable Debian

Posted May 11, 2013 11:30 UTC (Sat) by krake (guest, #55996) [Link]

You could already do it the other way around, i.e. update the libraries to 3.8 while keeping the 3.6 apps and the later on upgrading the apps.

This would have the additional benefit that application developers could develop against packaged libraries and would not have to build the whole stack themselves.

A proposal for an always-releasable Debian

Posted May 12, 2013 17:48 UTC (Sun) by rgmoore (✭ supporter ✭, #75) [Link] (1 responses)

There's no reason to build the applications on the newest library versions.

Of course there is: to take advantage of the new features available in the latest version of the library. Not every program needs to take advantage of every new feature, and programmers should be careful to update version requirements only when their program actually needs the newest version of the library, but the need for new versions is real. The whole point of making a new release of the library is to add new features, and the point of adding those features is so that programs can use them. It's essential for new features to be used while they're under development so any interface problems can be fixed before release. Otherwise, you'll be stuck with an untested and likely flawed released version, and any interface problems that are discovered when people start using it will be unfixable because of the need to preserve backward compatibility.

A proposal for an always-releasable Debian

Posted May 12, 2013 21:42 UTC (Sun) by dlang (guest, #313) [Link]

It's also not unusual for there to be performance improvements in newer libraries (which may in fact be new features that don't require application changes to benefit from)

A proposal for an always-releasable Debian

Posted May 13, 2013 0:16 UTC (Mon) by drag (guest, #31333) [Link] (4 responses)

> What Gnome and KDE need to do is stagger the version releases of applications and base libraries. That would help tremendously.

What they need to do is make sure that when they release libraries the libraries are not going to break anything compiled against the older libraries.

Then it won't matter. People should be able to release a upgrade to a library (that is intended as part of a public API) without rebuilding any other packages against that library and releasing those also.

That way you ultimately end up with a API policy similar to the Linux kernels were Gnome and KDE can change whatever they like internally as long as they make sure that nothing external that depends on their software is affected.

A proposal for an always-releasable Debian

Posted May 13, 2013 8:30 UTC (Mon) by ovitters (guest, #27950) [Link] (3 responses)

We've been doing that for 10+ years?

A proposal for an always-releasable Debian

Posted May 13, 2013 11:00 UTC (Mon) by nix (subscriber, #2304) [Link]

... and so has everyone else with half a brain releasing shared libraries on Linux.

The problems come when one of the libraries far downstream does, eventually, break its ABI, forcing a cascade of recompilation, or when something you receive has been built against a newer library than you currently have forcing a cascade of updates. Backward-compatibility isn't enough to help there.

A proposal for an always-releasable Debian

Posted May 14, 2013 6:37 UTC (Tue) by muntyan (guest, #58894) [Link] (1 responses)

What about this one: http://www.murrayc.com/permalink/2013/05/07/gtkmm-3-8/?ut...
Hopefully it's not going to become common.

A proposal for an always-releasable Debian

Posted May 14, 2013 14:37 UTC (Tue) by ovitters (guest, #27950) [Link]

Good example (unfortunately). Do not see a reply from Matthias (gtk+ maintainer). Loads of replies, but not much why it cannot be avoided. Seems weird.

I do know that sometimes misuse of the API/ABI and library changes can result in breakage. That is not considered too much of a problem (kernel is way stricter in this). This case, I don't have any clue.

A proposal for an always-releasable Debian

Posted May 13, 2013 8:33 UTC (Mon) by ovitters (guest, #27950) [Link] (7 responses)

Libraries are not suddenly bug-free. They get bug free by usage.

You can use GNOME 3.6 applications against newer libraries (GNOME 3.8). However, you lose the benefit of the QA that we do as well as other distributions.

Note that we do not built any libraries, distributions do. So your Windows comparison is totally different case.

A proposal for an always-releasable Debian

Posted May 13, 2013 9:25 UTC (Mon) by zlynx (guest, #2285) [Link] (6 responses)

Sure you can use older apps but no one upstream will listen to your bug reports. You're lucky if they don't try to make you install and test development (GNOME 3.9)

A proposal for an always-releasable Debian

Posted May 13, 2013 9:49 UTC (Mon) by ovitters (guest, #27950) [Link] (5 responses)

That's just due to lack of manpower.

We want to offer a live image with the latest code so people can test their bug against the latest development version. This is still not ready though (is a lot of effort to make this always available without requiring too much manpower to maintain it).

A proposal for an always-releasable Debian

Posted May 13, 2013 11:30 UTC (Mon) by renox (guest, #23785) [Link] (4 responses)

>That's just due to lack of manpower.

Totally false, it's that the "manpower" prefers to do new things instead of maintaining old versions.

A proposal for an always-releasable Debian

Posted May 13, 2013 11:39 UTC (Mon) by ovitters (guest, #27950) [Link] (2 responses)

Pretty cool you want to force people to maintain old versions, but we rather leave it to people who want to maintain old version. As you have no ability for force anyone to do anything, in practice it is what I already stated: lack of manpower. And actually some maintainers do maintain old versions, just not across entire GNOME.

Saying "totally false": Read up on the "No obligation" bit in https://bugzilla.mozilla.org/page.cgi?id=etiquette.html to get an idea on how things work in practice.

A proposal for an always-releasable Debian

Posted May 14, 2013 13:43 UTC (Tue) by raven667 (guest, #5198) [Link] (1 responses)

What I don't get is how the Linux kernel can be so far ahead when it comes to development practices and how long it takes for userspace projects and distros to pick up their habits. The kernel has been maintained in an always-releasable state for a decade now with regular releases every quarter, including stable releases of longer-term maintained versions. The kernel has a fixed ABI to userspace that is ruthlessly maintained. The kernel also has plenty of contributions from amateurs and hobbists who provide labor on their own terms that co-exist with a large number of professional paid developers. As far as "No Obligation" goes, if you want to have your code be a part of the "Linux" kernel then you have a mighty obligation to not break the build, not break the ABI, no break peoples systems and adhere to coding standards, or your code is not going to be accepted and Linus is not going to put his name on it. How is this different for maintaining standards for Debian or GNOME?

A proposal for an always-releasable Debian

Posted May 14, 2013 21:14 UTC (Tue) by jmorris42 (guest, #2203) [Link]

Pretty simple explanation. But if LWN had moderation I'd be getting a -5 troll mod for what I'm fixin' to say....

The kernel devs are professionals. They develop software that is used in the real world in massive installations ranging from Google, supercomputing clusters and pretty much every friggin' smartphone without fruit on it. Most televisions, cable boxes, BluRay players, NAS boxes, etc. depend on that codebase working. If they screw up the people who pay them will not be happy. There would be consequences.

The GNOMEs are pretty much the opposite in every way that matters. The other desktop efforts aren't much better. Because they don't have to be. GNOME released a product that pretty much everyone and their dog hated and other than a lot of heat on Internet forums did it really make a difference to anyone's bottom line? Did it either bring about or prevent 'The Year of Linux on the Desktop!"? No.

Until there are consequences nothing will improve. And as long as it is kids playing with their pet projects there won't be consequences because there won't be enough users to matter. Do I have the answer to how to break that loop? No.

A proposal for an always-releasable Debian

Posted May 13, 2013 13:05 UTC (Mon) by mpr22 (subscriber, #60784) [Link]

People who don't care about maintenance of old versions generally do a terrible job of it. The way to get effective maintenance of old versions is for the people who want it to band together and either do it themselves, or offer some reward (not necessarily tangible) to get someone else to also care and do it for them. "Strangers will be less rude about you on the Internet" is not a particularly inspiring reward.

A proposal for an always-releasable Debian

Posted May 10, 2013 17:17 UTC (Fri) by sstsalazar (guest, #90864) [Link] (10 responses)

Although everyone would love to have that, I doubt that everything would be applicable in a sane and efficient way in short time.I agree that some refactoring would probably make the development of Debian 8 or 10 more pleasant to the users,though.

Maybe, I dare say, it would be interesting to rethink how complex systems like DEs are organized. Most of the annoyances users have are caused by Mozilla's,Xorg`s, KDE's, Gnome's, LibreOffice's and etc products, mostly because, sometimes even in Sid, their packages are affected by a huge lag when we consider mainstream.

A platform like lauchpad/ppa, which would allow one to smoothly add repositories with newer packages, would not only be interesting, but would be game-changing for some users. Allowing the end-users to get some love in those cold winter nights that the freezes carries with them would, probably, please all sides and help to gather even more users back to Debian.

A proposal for an always-releasable Debian

Posted May 10, 2013 17:56 UTC (Fri) by Richard_J_Neill (subscriber, #23093) [Link] (1 responses)

It's worth pointing out that older versions of packages are frequently just as buggy as the newer ones, just for a different set of bugs. One might hope that "stable" means "the package is perfect up to this level of feature", but it usually just means "the set of bugs and features won't change".

The kernel is perhaps the only exception to this rule, in that bugfixes are aggressively backported.

I'd like to see a rolling release for leaf packages (KDE, Firefox, LibreOffice) with perhaps a 1-week delay in testing for the "developers" of the distro, a 2-week delay for the technically-able users [those who report bugs], and a 4-week delay for the non-technical users. But simultaneously, big changes (eg Gnome2->3, or Sysvinit->Systemd) should not be deployed till they are ready.

A proposal for an always-releasable Debian

Posted May 10, 2013 18:14 UTC (Fri) by droundy (guest, #4559) [Link]

Having the bug fixed is a *huge* win for users. It means that I don't have to worry about, "If I apt-get upgrade, maybe something I rely on will stop working." By definition, bugs that are already there aren't stopping me from getting my work done.

I'll agree that it'd be nice to see more bugs fixed, but I'm much more keen on avoiding new bugs being introduced. e.g. it was really annoying when ubuntu unity stopped working with the trackpad on my wife's laptop. It still works in gnome, xfce, etc. But having to switch desktop environments in order to restore previous functionality is a royal pain. Instead she just carries a mouse around everywhere.

A proposal for an always-releasable Debian

Posted May 11, 2013 14:39 UTC (Sat) by robert_s (subscriber, #42402) [Link] (7 responses)

> A platform like lauchpad/ppa, which would allow one to smoothly add repositories with newer packages

Like http://backports.debian.org/ ?

A proposal for an always-releasable Debian

Posted May 12, 2013 1:48 UTC (Sun) by dlang (guest, #313) [Link] (6 responses)

close, the problem is that with backports you either enable ALL backports, or you load and update each package manually

With PPA, each package is it's own repository, so you enable the package you want and don't think about it again.

A proposal for an always-releasable Debian

Posted May 16, 2013 3:55 UTC (Thu) by jmorris42 (guest, #2203) [Link] (5 responses)

Not seeing the difference. Once you take a backport it will continue to update that package automatically. How is that different from the extra step of installing an entirely new repo that automatically updates.

A proposal for an always-releasable Debian

Posted May 16, 2013 5:52 UTC (Thu) by dlang (guest, #313) [Link] (4 responses)

It's very possible that I don't know the correct way to take a backport.

the information at http://backports.debian.org seems to say that the way to do this is to add backports to your sources.list file, which will pull in every package in backports (which is almost as bad as moving to testing)

The only other way I've installed a package from testing or backports was to go to packages.debian.org, search for the package, and then download and install the .deb manually, which doesn't get updated after that.

What do I not know?

A proposal for an always-releasable Debian

Posted May 16, 2013 7:02 UTC (Thu) by rhertzog (subscriber, #4671) [Link] (3 responses)

From http://backports.debian.org/Instructions/ :

----
All backports are deactivated by default (i.e. the packages are pinned to 100 by using ButAutomaticUpgrades: yes in the Release files. If you want to install something from backports run:

apt-get -t squeeze-backports install "package"
----

So you're wrong.

A proposal for an always-releasable Debian

Posted May 16, 2013 9:57 UTC (Thu) by dlang (guest, #313) [Link] (2 responses)

Thanks for the correction and additional info.

I didn't know that apt/deb even had the ability to have a repo with packages in it that are newer than what you have installed without auto-upgrading to them. the only place I had run across that was in source distros like Gentoo.

It's always good to learn new things.

A proposal for an always-releasable Debian

Posted May 19, 2013 21:04 UTC (Sun) by jospoortvliet (guest, #33164) [Link]

note that this is also how openSUSE handles stuff since years. Go to software.opensuse.org/packages and the software you find will (with One-click-install) enable a repo. The average openSUSE user has like 10 repos or more with extra or newer software. Heck, one of these obs repos makes openSUSE a rolling-release distro: tumbleweed. Yep, all that because we got zypper and OBS which, frankly, kick the ass of any other distro's infrastructure.

A proposal for an always-releasable Debian

Posted May 19, 2013 21:35 UTC (Sun) by rahulsundaram (subscriber, #21946) [Link]

umm. This is very much possible in a number of RPM based distros including Fedora, openSUSE etc.

A proposal for an always-releasable Debian

Posted May 10, 2013 17:44 UTC (Fri) by Richard_J_Neill (subscriber, #23093) [Link] (1 responses)

There is a *huge* potential win for bug-fixing here.

At the moment, most expert users can't meaningfully contribute to bug fixing across the ecosystem. This is demoralising, wasteful of resources, and reduces the quality of the system as a whole.

Either:
- we waste our time spotting/diagnosing/reporting bugs in our current system, only to discover that it is already fixed upstream (and we just can't have the fix for 6 months)
- or we report a genuinely new bug, and it gets fixed upstream, but it takes a year before the fixed package makes it into a release that we can use.

We need a system such that the lifecycle of a bug is short, ideally a week rather than at least a year. To give an example, I might install the current stable release of Ubuntu Raring. If I find a bug, it should get fixed upstream, fixed for me, and fixed for all other users of the same distribution within a week.
Currently, it takes at least till the next release-cycle, which means hundreds of other people suffer the problem, and the bug-reporter isn't rewarded for his time with a fix.

A proposal for an always-releasable Debian

Posted May 12, 2013 9:36 UTC (Sun) by k3ninho (subscriber, #50375) [Link]

Can I speak about this in conventional software development terms? Lars has said that the waterfall has to stop. At the moment the full release process is a complex system integrator taking tools for independent teams who work to their own time schedules. What matters is the packagers being able to accurately estimate the time it will take to update to and test a new upstream revision of their package - which feeds in to allow the release team to predict better when the release comes out. More importantly, it allows people to ask for help when they're suddenly swamped with a busy other life, or simply have taken on too much.

Change the conversation so that package teams tell the release team that (i) they're updating to upstream version X+1; (ii) they expect it will take so many weeks to migrate, so many weeks to build and so many weeks to test; (iii) add an estimate for the time taken to get feedback from Debian users once it's in the archive, which you could easily use popcon data and size of the change to estimate how quickly the obscure bug gets noticed and filed.

Within that, cutting down the bug filed -> fix applied -> fix tested time is essential, and having a framework to replicate an end-user's issue, as well as to verify it's not regressed in the future, would be a hge step forward. I'd suggest that second in importance is improving the information about how long it takes to update to the latest upstream packages.

(I've just noticed Conway's law lurking in the corner: "organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations", not completely sure how it applies to the design and release system in Debian.)

K3n.

A proposal for an always-releasable Debian

Posted May 11, 2013 3:10 UTC (Sat) by yarikoptic (guest, #36795) [Link] (1 responses)

Sounds good in general and automated testing is long overdue. But I must disagree with having "two classes of citizenship for packages". Placing any strict boundary would divide not only the package space but also the community. Even though some packages are already "more important" than the others (as judged already by e.g. popcon statistics, i.e. we already have the mechanism), separating them into two distinct bins would make an ugly crack in the beauty of Debian -- Debian is a "universal" operating system and open for contributions for any field of endeavor, and thus every package at least potentially is as important as any other.
Labeling the majority of packages "second class" would just be of a mistreatment for their maintainers IMHO without any obvious advantage (once again -- we already can weight importance of any particular package and not just with binary scales of "1st class"/"2nd class").

Reference installations would further widen the crack and I do not think that "broad consensus" would be achieved if such installations would mandate the "citizenship" of packages. Why would I bother packaging anything if upon occurrence of RC bug my package could be easily kicked out from the perspective release? To overcome this problem in my case I would demand having a "neuroscience" reference installation... and guess what people would end up doing if their reference installation proposals would not be accepted? expect even more Debian-derivatives.

So -- would we need reference installations and more testing -- YES. Should they be restricted to a very limited set -- NO.
Should they mandate package "citizenship" -- NO.
IMHO we better concentrate on further strengthening of QA (e.g. more of build time and as-installed testing suggested here). With improving on those ends we would reduce amount of RC bugs without sacrificing what makes Debian beautiful and making anything/anyone a 2nd-class.

A proposal for an always-releasable Debian

Posted May 11, 2013 4:59 UTC (Sat) by dlang (guest, #313) [Link]

having to argue for every bug for every package over if it's important enough to be a Release Critical bug that should delay a release or not is exactly why the freeze ends up being 10 months.

People really don't like to argue like that.

Dividing things into "mandatory" and "optional" for a release and promising to fix RC critical bugs in the mandatory category, but not in the optional category make sense, and is what happens today, it's just that the categories are not defined clearly, so people really don't have any idea where they stand.

I agree that the filing of a RC bug against a package should not cause it to be removed from testing.

But it should be enough so that if the bug is not addressed (either fixed or converted into some form of NOTABUG) within some time frame (I'm thinking 30 days or so) the package and anything that requires it should get publicly flagged as something that would be dropped from the release if a release were to happen at that point.

If a package in the "mandatory" group does not address a bug in a reasonable timeframe (probably something like 90 days or so), then it should be moved from the "mandatory" group to the "optional" group, as long as there is some other plausible option available (you won't remove gcc, but you could remove MySQL and replace it with one of the other forks)

It really should not be that hard for a project to avoid triggering either of these rules. If the project has been in a prior release, avoid or fix regressions and you should not have a problem.

Making 'change the world' changes to large groups of packages is a problem, but such changes are a problem anyway and should be avoided (just like kernel development, try to do incremental changes, maintaining compatibility and get to your destination gradually, or at least with an easy fallback option)

There is a category of RC bugs that are an exception to the above, and those are the "political" bugs where the rules change, with all packages required to change to follow the new rules. I would say that the "mandatory" packages should be changed _before_ any such new rules go into effect, and the "optional" packages should be encouraged, but not required to follow such rules wherever possible.

Yes, rules like this could hurt "mytinyapp", but as the post says, a bug in bash really should delay a release, but a bug in Nethack should either be tolerated, or if it really is Release Critical, Nethack should be dropped from the repository until it gets fixed. If nobody cares enough to fix it for a long time, so be it.

Here is the point that does not work:

Posted May 11, 2013 6:49 UTC (Sat) by dakas (guest, #88146) [Link] (4 responses)

"Keep testing free of RC bugs": while this sounds good (and a whole section of the proposal is dedicated to papering over the inherent logical gap), it is only workable if bugs are usually introduced knowingly.

They aren't. The whole point of "testing", as its name implies, is to provide a platform for discovering bugs.

With this proposal, packages are supposed to flicker in and out of existence in "testing" based on discovered RC bugs. Which means that the RC count will tend to be low: one can't discover a bug when the package is not available.

It also means that if your work relies on a particular package, you will have little choice but refuse to be part of "testing" coverage: you can't risk your package disappearing completely from your setup because it has RC critical bugs.

Of course, there are bugs where it makes no difference whether you have no version of the package as opposed to a bugged one, like when a program segfaults on every single use. But that's the exception rather than the rule.

Here is the point that does not work:

Posted May 11, 2013 7:26 UTC (Sat) by dlang (guest, #313) [Link] (1 responses)

I agree with you if the packages disappear quickly (in days), but if packagers can't fix a critical bug within a month or so, why isn't it a reasonable option?

Remember, reverting to the prior (presumably working) version is an option.

This doesn't require that you never introduce bugs, it just means that when you do, you either fix them or revert the repository back to the prior version until you do get it fixed.

why should all the other testers and developers have to suffer forever with a critical bug in your package?

If the bug really isn't critical, then make your case and get the bug downgraded.

Here is the point that does not work:

Posted May 14, 2013 22:39 UTC (Tue) by jmorris42 (guest, #2203) [Link]

Agreed. I see it more as a threat. That if you want version X in testing you had better be prepared to fix any problems that turn up in it lest it be tossed back out again along with anything that relied on your assertion that it was ready. The threat of reverting a bunch of dependencies should create the urgency needed to get somebody interested enough to fix most problems.

The goal really should be zero discovered RC bugs existing longer than a month. Yes the point of testing is to find the bugs but if people spent half the time making sure what they did last year actually worked instead of the next new shiny thing the world would be a lot better place. Any policy change that creates social pressure in that direction is a good thing.

We long since achieved a point where we can have a basic desktop or server that is feature complete enough to be useful. The problem is the eternal churn, where things keep breaking. Packages that used to work are discarded because they won't build and nobody cares enough about backward compat to make it worth the outsized effort to fix. Because if we don't follow Microsoft's lead off the Windows 8 cliff and remake everything into a tablet we won't have 'The Year of Linux on the Desktop.' Or something.

Yes progress is still worthwhile, everything that can be invented hasn't been invented. But we should be at a point where we can afford to tell people trying to push yet another rewrite of a core component that no, we aren't interested until it can actually replace the perfectly good software we have now.

Here is the point that does not work:

Posted May 30, 2013 4:34 UTC (Thu) by fest3er (guest, #60379) [Link] (1 responses)

The desire is to keep Testing always releasable; it's a worthy goal. Unfortunately, when updated packages are introduced, they can cause Testing to become 'not releasable'.

Seems to me Linux development has something that Debian Testing needs. I should think a staging area would make it quite a bit easier to add updated packages and to remove them if they cause problems. It would allow Testing to receive long-term stability testing, as it were, from those needing versions more recent that the latest official release. It would allow others to include some subset of the staging packages to test the near-term effects of those packages on Testing.

In short, I'm suggesting a process that provides smoother control of packages that are brought into Testing. Call it a settling bin if you wish. But 'Staging' works, too and, IIRC, can be found in parts of the Toy Story plot line(s). :)

Here is the point that does not work:

Posted May 30, 2013 8:46 UTC (Thu) by micka (subscriber, #38720) [Link]

Isn't that called "unstable" ?

A proposal for an always-releasable Debian

Posted May 11, 2013 8:39 UTC (Sat) by malor (guest, #2973) [Link]

I'm just a Debian user, not a developer, but if my opinion is at all relevant, that sounds freaking awesome.

I'm not sure the project has the person-power to make that happen, without making other sacrifices. But this system really doesn't work that well, and it never has, in the entire fifteen years of the project. It seems to me that continuing to do that same basic thing is more inertia than anything. Every cycle, everyone grumbles about how bad that cycle just was, and every cycle, it gets worse. The system works, but it really kinda sucks, and a major overhaul seems very much in order.

So I think the sacrifices necessary to make this happen might be a very wise investment indeed. I'd be perfectly happy with a number of developers working on this instead of other stuff, and then a substantial chunk of them working on actually implementing it, once the design is hammered out. Yes, this means things will slow down, but slowing down for a year or two, in order to speed way the heck on a permanent basis, seems like a complete no-brainer, at least from the outside.

Now's the time to be doing this; if it doesn't start really soon, it'll be at least two more years of Debian being always behind the other distros. Debian's stability is legendary, I love it to death, and I use it everywhere, but it's stability at the cost of being a little obsolete all the time. The approach that Lars and Russ are proposing seems like a good way of preserving Debian's inherent robustness, the promise that "this software works!" Debian keeps that promise probably better than any other distro, except possibly RHEL, but I suspect this system would let it keep that promise while avoiding freezes almost completely.

This is a goal worthy of significant time investment, even if it hurts Debian during that time. I think the project would benefit so much in the long run that the short-term pain would be utterly worthwhile. And now's the time to do it.

Oh, and then one more thought: it seems to me that this might even get pulled into the Social Contract. I'm not too up on the wording, so just take this as a very rough idea, but adding something like "Consistent with our other goals and ideals, the purpose of the Debian Project is to make stable releases, so that non-developers can have easy access to the fruits of our collective labors." Something vaguely like that, anyway.

Maybe that isn't actually a goal of Debian, but as one of those end-users, and one who's been using it since '98 or '99 or so, it's always felt like it was. If there's real disagreement in the ranks about releases being the goal, then a big argument about "Why the heck are we doing this, anyway?" might be in order.

If the Debian community doesn't actually care much about releases, you guys are sure putting yourselves through hell to make them.

A "wave on the pond" release schema

Posted May 13, 2013 18:21 UTC (Mon) by dionicio (guest, #90938) [Link] (2 responses)

I propose a "wave on the pond"
release schema...

an "spiral" schema, to be precise ... ;)

A "wave on the pond" release schema

Posted May 13, 2013 18:27 UTC (Mon) by dionicio (guest, #90938) [Link]

Packages unable to keep up with every wave
could ride every second or third wave :) :)

A "wave on the pond" release schema

Posted May 13, 2013 18:28 UTC (Mon) by dionicio (guest, #90938) [Link]

"big" waves could be named "long term releases"


Copyright © 2013, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds