LWN.net Logo

OLS: Shuttleworth on free software development

By Jake Edge
July 30, 2008

In the third keynote given at this year's Ottawa Linux Symposium (OLS), Mark Shuttleworth spoke about "The Joy of Synchronicity". In his speech, he discussed his idea of synchronizing releases between major distributions but he also advocated time-based, rather than feature-based, releases for free software in general. He believes that a release has value in and of itself; by doing them on a regular schedule, a project will get into a kind of cadence that is useful for both developers, testers, and users.

Before starting, Shuttleworth was subjected to the traditional introduction by the previous year's keynote speaker—James Bottomley, in this case. Bottomley looked at Shuttleworth's postings to newsgroups over the years, noting three year-long valleys in the graph where there were no postings. It turns out these corresponded to events in Shuttleworth's life. The first is when he received a substantial amount for selling Thawte to Verisign: "when someone is being productive on the mailing list, never give them half a billion dollars," Bottomley said. For the second, he has a pretty good excuse as he was not on planet earth; the last corresponds to starting Ubuntu.

In a nod to Bottomley and the other kernel hackers, Shuttleworth mentioned that he had been working on his slides up until close to the start of his speech, while doing some unrelated things in the background—like updating his system. That picked up a new kernel as well and he did a suspend to RAM when he was done; only later in the cab ride to the Congress Centre did he think: "maybe that was a mistake". It turned out to work just fine, which is a testament to both the kernel and to distribution update mechanisms.

The alliterative theme of the speech was that free software development should be guided by "cadence, collaboration, and customers". The cadence is a regular schedule for releases, similar to what GNOME—who pioneered this technique, according to Shuttleworth—and the Linux kernel do. This gets a project into a rhythm that makes it more predictable, which enables all interested people to schedule themselves around it. He compared this to various development methodologies such as "Agile" and "Lean".

Industries are governed by rules, so if you want to change an industry, you "have to find which rules are only in our heads". Cross-project collaboration is one of those rules. "Nowhere is it written that projects can't collaborate." It is harder to do that if each distribution is working with different versions of the various base-level tools: the kernel, X.org, GNOME/KDE, OpenOffice.org, Mozilla, and so on.

Shuttleworth contends that it is releases, rather than features, that bring attention to Linux. In answer to critics who believe that distributions should compete with each other, he says that is just "an opportunity to create friction." Free software companies don't compete on versions, but rather on philosophies and what things they focus on. He likens it to food courts or automobile sales malls where there are many choices in one location which serves to increase the sales of all.

For major transitions, Shuttleworth is a fan of establishing meta-cycles, the idea that every N releases is a major release, which may result in breaking some backwards compatibility or introducing completely new functionality, along the lines of KDE 4 or GNOME 3.0. As an example, he used a six month release cycle where every fourth or sixth was a major release. For a distribution, that might be a long-term support release, rather than a major change.

One of the key requirements that Shuttleworth sees is the need to "keep the trunk pristine", by doing integration on the trunk and feature development on branches. Along with this is the need for more and better tests. While not necessarily believing in test-driven development, he certainly leans that way. In any case, all the tests should pass before committing to the trunk.

Many projects do not yet have an extensive test suite, but this needs to change. He quoted a Chinese proverb that "the best time to plant a tree is 20 years ago, the second best time is today". He mentioned that he is working on a robot that controls the trunk of a development tree. Developers will request it to merge from a branch, so the robot merges the branch and runs all the tests. If the tests pass, it commits, otherwise it gets kicked back to the developer.

He sees distributions as "an effective conduit of upstream to users," to that end he believes that agreeing on versions of vital infrastructure can only help. Bugs that users find will be more likely to be fixed; those versions will also get better testing which will help developers. It is a conversation that free software should be having because it is a "very exciting idea" that won't work for every project but should be attempted and experimented with.

In answer to criticism about Ubuntu not contributing as much as other distributions would in his proposed synchronized release, Shuttleworth was adamant that it was not true. He hates to see the antagonism and vitriol between distributions. "We have much bigger fish to fry and they are probably not here today."

If all of the distributions were to standardize on a particular version of some project for their next release, what happens if that project falls behind? There are risks associated with that, Shuttleworth admits, but if it were happening, more resources would be available to help the project catch up. In the worst case, perhaps falling back to the previous version would have to happen. "Being tightly coupled has risks."

This is clearly an idea that Shuttleworth feels strongly about, not necessarily that it be adopted fully, but that it be discussed and considered. Certainly some of his ideas have a great deal of merit. We will have to wait and see whether the grander vision will ever be implemented.


(Log in to post comments)

OLS: Shuttleworth on free software development

Posted Jul 31, 2008 1:54 UTC (Thu) by ebiederm (subscriber, #35028) [Link]

I have to respectfully disagree with much of Mark's vision.  I do agree that short predictable
release cycles are good.  Release cycles should be short enough that if something misses a
release window waiting until the next window is not a major problem.  Allowing code to be
released when it is ready and not generating pressure to release something before it is ready.

Arguments that say we should do X now because another project is going to use the release we
are preparing are completely inappropriate.  If code can not stand on it's own merits it
should not stand.

Much of what Mark has described is process oriented and ignores the developer who makes code
changes only because they have an itch.  If you don't make room for itch scratching developers
you loose much of the vibrancy and vitality you otherwise would have had.

I find the idea of multiple distributions coordinating intentionally on a single release of a
product with the knowledge of the community of that product suspicions.  This seems to say to
the software development projects out there: We are the gate between you and users tremble
before us.

However I slice it I can not see a project caring when a meta project will use them as a good
thing.  It just feels like an excuse to be slopping either because you don't expect your
software to get used or because of extra pressure to include changes because your software
will get used.

Meta projects that have frequent regular releases of what ever is ready when they are building
a release do seem to be a good thing, as that removes the pressure from caring from other
projects.  You know if you release something even if it doesn't get used now it will get used
soon enough that it doesn't matter.


OLS: Shuttleworth on free software development

Posted Jul 31, 2008 9:21 UTC (Thu) by jamesh (guest, #1159) [Link]

The whole point of keeping a pristine trunk and doing development on branches is that you keep
the trunk in a state where it could theoretically be released at any time.  Of course, this
does not remove the need for QA before doing a release.

As feature work is being done on branches, it does not affect the trunk until it is complete
and merged.  If it is not ready for a release, then it doesn't get merged til after the
release (and this isn't such a bad thing because you know when that next release will occur).

OLS: Shuttleworth on free software development

Posted Jul 31, 2008 10:08 UTC (Thu) by NAR (subscriber, #1313) [Link]

I might be wrong, but I guess nowadays most users do not download software from e.g.
sourceforge and use it - they get the software from the distribution. In other words: if e.g.
X.org releases a new version of X today, users will only start to use it when the next Fedora,
Ubuntu or SuSE is released with the new X. Also, if the current Fedora, Ubuntu or SuSE
includes three different versions of X, the maintainance load on the X developers is three
times bigger because they get bugs from three different releases (of course, the bugs may be
the same, but they still need to test the fixes). So I think it makes sense to harmonize
releases.

OLS: Shuttleworth on free software development

Posted Jul 31, 2008 22:08 UTC (Thu) by giraffedata (subscriber, #1954) [Link]

if the current Fedora, Ubuntu or SuSE includes three different versions of X, the maintainance load on the X developers is three times bigger because they get bugs from three different releases

Don't they just largely ignore reports against releases other than current? I mean, a developer tries to apply a bug report to the current release, but if it isn't easy, he tells the reporter to reproduce it in current code. And if the developer creates a fix, he tests it and releases it in the current release. Any support for older releases shipped by packagers has to come from those packagers.

Now, where a project actually maintains 3 release streams (i.e. there is a current 1.x, a current 2.x, and a current 3.x), it's probably because it's in the project's best interest to have users of all three at once -- the 1.x is more stable than the 3.x, so you want people to use 1.x if they can and reduce the total bug handling burden.

OLS: Shuttleworth on free software development

Posted Aug 1, 2008 7:14 UTC (Fri) by NAR (subscriber, #1313) [Link]

Don't they just largely ignore reports against releases other than current?

Probably, and that's pretty sad.

Any support for older releases shipped by packagers has to come from those packagers.

But I wonder that how many package maintainers are up to this task, especially with bigger software like OpenOffice...

OLS: Shuttleworth on free software development

Posted Aug 1, 2008 15:59 UTC (Fri) by giraffedata (subscriber, #1954) [Link]

Any support for older releases shipped by packagers has to come from those packagers.
But I wonder that how many package maintainers are up to this task, especially with bigger software like OpenOffice...

Well, it's not the task you may be imagining. It's very little of debugging and writing code. Rather, it's tracking the fixes in the current release and backporting ones you need, and reproducing problems against the current release and reporting those upstream. So it's more of a user task than a developer task.

I think I may see Shuttleworth's point now. If upstream is going to stop maintaining Release N and start maintaining Release N+1, it's nice for downstream if it happens at the same time that downstream stops maintaining its package that includes Release N and starts maintaining one that includes N+1. That way, nobody has to maintain Release N.

If and only if all the upstream projects switch at the same time, it's possible for all the downstreams to pick that time to switch as well.

OLS: Shuttleworth on free software development

Posted Aug 7, 2008 18:48 UTC (Thu) by renox (subscriber, #23785) [Link]

In theory you're right, in practice .. things may be different!
To fix an issue in zebra, I had to find myself the patch in quagga (a fork of zebra) and tell
the distribution (that we pay quite a lot for support) to integrate it.

Maybe other distribs are better, I don't know, but let's just say that I wasn't impressed by
this one.

OLS: Shuttleworth on free software development

Posted Jul 31, 2008 3:21 UTC (Thu) by bronson (subscriber, #4806) [Link]

> Shuttleworth contends that it is releases, rather than features, that bring attention to
Linux.

Well, as the Gnome project is starting to demonstrate, releases without features don't
generate much attention either.  If Conduit, Soylent, or some other nifty project doesn't land
soon, Gnome releases could become downright dry.

Unit testing a GUI app doesn't test enough to be useful.  Functional testing would be good
("can the Pidgin executable connect to a mock Jabber server and send and receive messages?")
but GUI testing tools are still awfully immature (whatever happened to Dogtail)?  Good testing
is hard, and GUIs make it much harder.  Can Shuttleworth point to procedures to reliably and
maintainably test a GUI app?  AFAIK, this doesn't exist yet.

OLS: Shuttleworth on free software development

Posted Jul 31, 2008 6:18 UTC (Thu) by dlang (✭ supporter ✭, #313) [Link]

the 'robot trunk maintainer' is a bad idea becouse a robot cannot have any taste. it can tell
if the update breaks code that someone thought to write a test for. it has no way to tell if
the update does insane things (embedding a flight simulator in a spreadsheet program for
example), let alone the much more common 'is this the right thing to do' thinking that the
best trunk maintainers do.

OLS: Shuttleworth on free software development

Posted Jul 31, 2008 8:54 UTC (Thu) by james_w (subscriber, #51167) [Link]

Hi,

Firstly, the robot Mark speaks of already exists, it is called the Patch
Queue Manager, or PQM. There is a load of work being done on it right
now to make it much better though.

Secondly, I work on a project that uses PQM, and I like it. It is no
substitute for code review, where taste is exercised, but it does mean
that you can have confidence in your trunk.

Yes, you can get this with a human gatekeeper, but with thorough code
review the merging in to trunk can be done by a machine, so why not let
it?

(No, PQM can't resolve merge conflicts, so you have to provide a branch that
will merge cleanly, usually by merging trunk first)

OLS: Shuttleworth on free software development

Posted Aug 1, 2008 5:37 UTC (Fri) by njs (guest, #40338) [Link]

It's not a replacement for the maintainer, it's a replacement for your vcs's 'commit' command.
No vcs that I'm familiar with has a commit command that will stop you from merging silly code
to trunk either.

OLS: Shuttleworth on free software development

Posted Aug 1, 2008 6:08 UTC (Fri) by dlang (✭ supporter ✭, #313) [Link]

with all the good choices of VCS out there, why would you choose to use one that required a
replacement for it's commit command instead of just using one that doesn't require such a
replacment?

OLS: Shuttleworth on free software development

Posted Aug 1, 2008 6:27 UTC (Fri) by njs (guest, #40338) [Link]

Because none of those VCSes have the functionality you want, i.e., to aid the desired workflow
of all development on branches, clean merges to trunk, trunk always passes testsuite...?

OLS: Shuttleworth on free software development

Posted Jul 31, 2008 8:25 UTC (Thu) by AlexHudson (subscriber, #41828) [Link]

Shuttleworth's comments on releasing seem to basically be "do it like Ubuntu": release every
six months, LTS every once in a while. I can understand him wanting project to release on
synchonised schedule in order to make it into Ubuntu releases, but the other points of his I'm
not sure about.

His point about friction is relatively good, but I think he misses that making certain
projects release on a time-basis that doesn't suit that project (= its developers) is going to
be a cause of friction too. Being able to set your own rhythm is often very important.

At the end of the day, there just isn't enough agreement on many things to make it workable.
People don't agree on a single VCS, let alone agile methods, and each project has its own
tools, culture and rules. 

OLS: Shuttleworth on free software development

Posted Aug 1, 2008 6:12 UTC (Fri) by dlang (✭ supporter ✭, #313) [Link]

quote:
Shuttleworth's comments on releasing seem to basically be "do it like Ubuntu"

well, if he thought that there was a better way of doing things and his own distro didn't do
it that way wouldn't it be a bit odd?

OLS: Shuttleworth on free software development

Posted Aug 7, 2008 6:17 UTC (Thu) by ketilmalde (guest, #18719) [Link]

> Shuttleworth's comments on releasing seem to basically be "do it like 
> Ubuntu": release every six months, LTS every once in a while

He offered to change the release cycle to match other distributors, if those otherse can agree
on one.

http://lwn.net/Articles/282035/ (mid-page quotation)

Suspend to RAM...

Posted Jul 31, 2008 9:17 UTC (Thu) by rsidd (subscriber, #2582) [Link]

"[Updating] picked up a new kernel as well and he did a suspend to RAM when he was done; only later in the cab ride to the Congress Centre did he think: "maybe that was a mistake"

Why would that be a mistake? His new kernel has been installed on the disk but does not interfere with the old kernel in any way.

Now, if he had done a "suspend to disk" and successfully resumed, that would have been interesting...

Suspend to RAM...

Posted Jul 31, 2008 11:39 UTC (Thu) by sladen (subscriber, #27402) [Link]

In $distro_in_question, PMI already checks for a new default kernel.
$ grep kernel /usr/sbin/pmi
  [ -f /var/run/do-not-hibernate ] && echo "Default kernel has been upgraded" >&2 && exit 1
The improvement would be to twiddle the boot-loader and force loading of the older kernel; or have the initramfs code try to kexec the correct (older) kernel for the hibernated image—should the matching kernel is still around.

Suspend to RAM...

Posted Jul 31, 2008 14:54 UTC (Thu) by pjones (subscriber, #31722) [Link]

The improvement would be to twiddle the boot-loader and force loading of the older kernel

Fedora already does this; has since January 2006.

Suspend to RAM...

Posted Aug 1, 2008 6:15 UTC (Fri) by dlang (✭ supporter ✭, #313) [Link]

I read this that he did a significant upgrade, including a new kernel, then did a
suspend-to-ram and got in the taxi, then had the worry that the resume may not work (he had
never tested it with this laptop/kernel combination). it sounds as if it did, but it is the
type of thing that is definantly bleeding-edge to do.

OLS: Shuttleworth on free software development

Posted Aug 1, 2008 0:23 UTC (Fri) by vomlehn (subscriber, #45588) [Link]

What Shuttleworth said was interesting, but I think he missed the point. Time-based releases
are indeed quite valuable. The kernel offers a pretty good demonstration of this, though it is
not as rigid in its schedule as Shuttleworth might be looking for. I don't buy that there is
value in coordinating releases across distros, however. Release timing is influenced by the
needs of consumers and Ubuntu's consumers are not the same as those for Red Hat Enterprise
Linux.

Furthermore, many embedded developers are de facto mini-distros. Our schedules are driven by
things like the Christmas buying season, or the need to release at a particular trade show. We
just could not care less about any server- or desktop-oriented distro release schedule.

OLS: Shuttleworth on free software development

Posted Aug 7, 2008 5:39 UTC (Thu) by dkite (guest, #4577) [Link]

What is the benefit, other than some imagined 'one wave' sort of release
feeling?

Will short release schedules attract developers? Will they allow developers
to work at their optimum? Will the software produced be better, faster, more
bug free, secure?

Or is it some way of regimenting a rather disparate group of people whose
motivations, availability, goals are as different as there are individuals?
Will it drive volunteer developers away from projects?

Releases are a serious source of friction within a project. However you
define friction. What is the problem that is solved by more of it?

Personally I avoided getting a career in software development because the
industry had the tendency to eat people with the demands of meeting
ridiculous release schedules. Now we can not only eat people, but not have to
pay them too?

Derek

OLS: Shuttleworth on free software development

Posted Aug 7, 2008 17:54 UTC (Thu) by cventers (guest, #31465) [Link]

The one kind of collaboration I'd like to see is in package management 
(gasp!)

At the very least, it would be nice if we could all standardize on an XML 
format for describing packages. It would be nice for all of the 
distributors to take a pristine, upstream package, modify it in their way, 
and automatically come up with whatever their package manager needs by 
making a few tweaks to the upstream XML, including a ref back to the 
origin package.

It would be a big job, but LSB might be able to do it...

OLS: Shuttleworth on free software development

Posted Aug 11, 2008 4:47 UTC (Mon) by vonbrand (subscriber, #4458) [Link]

To do that (and have the "package descriptions" be of any use), everybody would have to agree on exactly what to package how (where the line between "runtime", "development", "documentation" lies), on versions of basic libraries and such stuff, and last but very definitely not least on where to place configuration files and how to manage them.

Won't happen in our lifetime. Or, if it does happen, I sure hope to have found something with some life in it by then on which to hack...

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