To semi-rolling or not to semi-rolling, that is the question...

Doug Ledford dledford at redhat.com
Thu Mar 4 20:59:16 UTC 2010


Obviously, some people want this and some don't.  It isn't appropriate
to simply hand down an edict that things will be one way or the other if
we truly consider Fedora a community run project.  It must be a
community decision.  That means, as Adam Williamson pointed out, this is
likely a decision to be made by the board, based upon what the community
wants and what's best for Fedora.

But let's be clear.  That's a *policy* decision.  One of the things that
got very confusing in the previous thread(s) was the intermixing of
policy decisions and technical issues.  For instance, Kevin's response
to my proposal was all about technical issues he saw.  Technical issues
are almost always solvable if you have a specific policy you are trying
to implement.  So one thing I think people should keep in mind is that
policy decisions should always lead to technical decisions, *not* the
other way around.  We should decide what we want ourselves to be and
what our policies are, and then that should guide our infrastructure,
our tools, our work flows, and our processes.  We should never allow
things to flow in the reverse direction.  We should never allow a
current tooling limitation to set our policy, modulo that our policy
should acknowledge and accommodate for the time necessary for tooling
changes to take place or for the limitations of our resources.

So, I'm going to reiterate my policy suggestion:

Make Fedora releases (all of them) stable in nature, not semi-rolling.
Make rawhide consumable as a semi-rolling release itself.

Reasons:

1) Most importantly, it's a means of satisfying both groups of people in
the Fedora developer community and leaving none behind.
2) It saves developers time and effort.  This is actually the least
burdensome method of satisfying both groups of people inside Fedora.
The whole 2 update stream approach increases the load on maintainers,
while this approach reduces the load on maintainers as a maintainer gets
to consider a Fedora release "done" when it goes out the door with the
exception of fixing any security or important bugs in that release.  For
many packages, this means the maintainer will actually not have anything
to do in those releases and they can concentrate solely on devel (this
is obviously not true for big and highly used packages like thunderbird,
firefox, gnome, kde, they will always have bugs and updates needed, but
many other packages, especially smaller leaf packages, may never need a
single update during a stable release lifetime).
3) It conserves resources (drastically so) on the fedora infrastructure
and mirrors and reduces bandwidth needs greatly.
4) It helps Fedora scale (from a repo resource consumption standpoint at
least, but also in terms of developer time for the packages that won't
need lots of stable updates).
5) It would be less labor intensive to implement and work flows would be
simpler than the two update stream, ala Mandriva, approach to satisfying
everyone.

Before I get into the technical implementation part of the proposal, I
want to take a moment to step back and mention something to both sides
of the camp that have been involved in this discussion so far:

We have established, beyond any doubt whatsoever, that there are users
of Fedora that expect, demand, and need a stable update stream.
Ignoring those user's needs by saying "why can't we just stay as we are"
is tantamount to blatantly ignoring their cries for change/help,
trivializing their issues, and pushing them aside as unimportant.

We have established, beyond any doubt whatsoever, that there are users
of Fedora that expect, demand, and use fedora *because* they get major
updates in the middle of a release.  Ignoring these users needs by
saying "rawhide is ==> way" without first doing what is necessary to
make rawhide usable and consumable is tantamount to blatantly ignoring
the untenable nature of your suggestion, trivializing their wants and
issues, and pushing them aside as unimportant.

So maybe we can choose to put the rhetoric that has flung around in this
discussion down, stop trivializing our fellow Fedora community member's
issues, and work together.  After all, that's what being part of a
community is all about.  If we can agree on a policy that satisfies both
groups of people, then that can inform and guide our technical
implementation discussions, keeping in mind that a failure of the first
draft of the technical implementation is not grounds to throw out the
policy, merely grounds for more work on the technical implementation ;-)

Technical implementation proposal:

1) Make rawhide consumable.
  A) Create rawhide-unstable.  Any time a known disruptive change is
     being worked on, it should be built here by the developer.   In
     addition, add rpmdiff checks to all builds from devel into
     dist-rawhide and if any of certain rpmdiff checks trip positive,
     move the package from rawhide to rawhide-unstable.  Additional
     checks can be added as AutoQA gets into full swing, and so we can
     add more ways to catch breakage and move things to rawhide-unstable
     as needed.
  B) Non disruptive changes go into rawhide directly, and on a regular
     basis we run a compose on the rawhide tree to create install
     disks/images for use.  I suggest once a week we recreate the
     images.
  C) On a regular basis, we have a flag day to move items from
     rawhide-unstable to rawhide.  I originally said as-needed in my
     first proposal, but on more reflection I would like to suggest
     we make this a regular scheduled event on a monthly basis.  In
     this way we have 6 regular rawhide-unstable==>rawhide checkpoints
     between each release cycle, and we can make the last one or two
     prior to the next fedora release do double duty as both the
     normal checkpoint and the fedora alpha/beta freeze.  This also has
     the side benefit that people working on major changes, like say
     anaconda install updates, have more points at which they can get
     their code into a consumable segment of the repo and start getting
     feedback.
  D) Anyone who likes that rawhide allows them to develop directly
     on their OS can simply enable the rawhide-unstable repo in their
     yum configs.  Like enabling updates on a regular release, it
     would inherit from rawhide and also include all the distruptive
     changes.  This makes a system with rawhide-unstable enabled
     identical to rawhide today.
  E) Without rawhide-unstable, you get a semi-rolling release that
     allows for regular checkpoints to introduce disruptive changes,
     soname bumps, etc. only on a more frequent basis than the current
     fedora release cycle.  It is hoped that by having this higher
     frequency, disruptive changes in the semi-rolling release that is
     rawhide can be handled more easily.  Kind of along the lines of
     easier to deal with by taking more, smaller bites instead of huge,
     hard to swallow bites.

2) Make Fedora releases adhere to a stable release policy.  This already
covered rather well in proposals put forth by other people.  Mike
McGrath's snapshot proposal and Matt Domsch's Slowing rate of change in
older releases proposal are the two I would pair with my proposal in
order to satisfy both groups.  I don't see any reason to rehash them here.

-- 
Doug Ledford <dledford at redhat.com>
              GPG KeyID: CFBFF194
	      http://people.redhat.com/dledford

Infiniband specific RPMs available at
	      http://people.redhat.com/dledford/Infiniband

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: OpenPGP digital signature
Url : http://lists.fedoraproject.org/pipermail/devel/attachments/20100304/106264de/attachment.bin 


More information about the devel mailing list