[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
|
|
Subscribe / Log in / New account

FreeBSD and release engineering

February 1, 2012

This article was contributed by Nathan Willis

On January 16, John Kozubik posted to the FreeBSD-hackers list and expressed his disappointment in some of the recent trends in the project. Namely, an increasingly-slow release cycle, too many overlapping "production" releases, and an estrangement between the core developers and end users when it comes to support issues like bug fixes. The list has since debated Kozubik's assessment of the situation in a heroically long thread, but while the majority agree that FreeBSD would benefit from refocusing its energies and polishing its processes, it has not yet developed a concrete plan of action.

Too many series, not enough releases

Kozubik himself is not a FreeBSD developer; he manages enterprise production environments (including rsync.net) that run almost 1,000 FreeBSD machines. As he explained in his initial message, he was disappointed to hear that the next point release of the OS, 8.3, has been pushed back to March 2012 — more than a year after 8.2. Such a long stretch between minor releases makes maintaining a stable server farm difficult, but paradoxically FreeBSD has also complicated the lives of its end users by simultaneously pushing out multiple "production releases" with different major numbers — at present including versions 7.4, 8.2, and 9.0.

Once a new "major" version is in development, he said, important patches to the previous major version start to languish, as developers lose interest in donating their time to the old code and to less-than-exciting maintenance tasks. As a result, enterprise users face a difficult choice: either go without new features and fixes in the "old" production release, or risk the instability of the "new" production release. He worries that FreeBSD may be "becoming an operating system by, and for, FreeBSD developers" — to the ultimate alienation of users.

Kozubik then outlined five underlying causes that contribute to the alienation problem, and proposes three fixes. First, there is a "widening gap of understanding" between the developers and end users, caused by developers frequently jumping between bleeding-edge snapshots of the code, rather than running the releases tagged as stable for production use. The disconnect makes discussing maintenance issues difficult. Second, maintaining multiple "production releases" simultaneously dilutes developer focus, which keeps the releases from ever truly maturing. Third, the simultaneous production releases drive away potential paid investment from enterprise customers, because they view each FreeBSD release with uncertainty.

Fourth, the slow pace of minor releases means that important fixes often sit unreleased long after they have been verified by maintainers. That not only hurts end users (by depriving them of regression fixes and security updates), but downstream projects as well. Finally, when the slow pace of minor releases is coupled with the multiple-major-releases problem, new code and fixes increasingly get bumped from the "old production" release to the "new production release," solely because the new release is what developers are interested in working on. This traps enterprise users in "the same bad choice again: make major investments in testing and people and processes every two years, or just limp along with old, buggy drivers and no support." Kozubik called this "the culture of 'that's fixed in CURRENT' or 'we built those changes into (insert next major release)'."

He suggested that the project take three steps to ameliorate the trouble. First, intentionally consider the processes and costs incurred by large FreeBSD deployments. "Think about the logistics of major upgrades and the difficulty of running snapshot releases, etc. Remember - if it's not fixed in the production release, it's NOT FIXED. Serious (large) end users have very little use for CURRENT." Second, the project should focus on just one production release at a time, and commit to a definite support schedule (Kozubik suggests five years as a production release, followed by five years as a "legacy" release). Third, in concert with the predictable major release schedule, the project should commit to doing smaller, more frequent minor updates, around three times per year.

Dissecting the problem

A majority of the people who joined in the discussion agreed that something like what Kozubik proposed would be beneficial. Opinion varied, however, on what the underlying causes are, and whether or not they can be fixed in the short term. Rich Healey observed that there are very few paid FreeBSD developers, and while volunteers have little motivation to undertake the unexciting maintenance tasks, the paid developers that exist are often contracted to implement specific new features.

Warner Losh said that no corporate sponsor has been pushing the project to keep the release process on schedule since the demise of Walnut Creek. Julian Elischer responded by suggesting that interested high-volume customers and downstream vendors could pool their resources and pay a developer to work specifically on release management — a suggestion that was met with approval.

FreeBSD release engineer Robert Watson described the dilemma as a release engineering problem — with several causes — that he and the other release team members could address. Historically, he said, the FreeBSD base and ports collection were on a single, tightly-coupled release cycle — which often resulted in ports getting very little attention. In the early days, he added, the project used CVS version control, which made branching very expensive. Last but not least, the project has come to rely on a single "head release engineer" to steer all of the release schedules, which results in bottlenecks and slipping release dates. The CVS problem has been addressed by moving to Subversion, he said, and there is growing support for de-coupling the base and ports releases, but the project still needs to fix the single-release-engineer issue. Watson suggested mentoring-in new release managers from the developer community, each of whom would take responsibility for one minor release.

On the other hand, Igor Mozolevsky argued that the FreeBSD Problem Report (PR) patch system is broken, because it effectively requires end users to undertake a nagging campaign to even get a patch examined by a developer. That drives away users and is clearly sub-optimal for the project. Not everyone agreed with that assessment, although Matthew Fuller cited an example of a manpage fix collecting dust for three years.

Adam Vande More speculated that a bounty system would motivate quicker PR merges — but Matt Olander from iXsystems pointed out that he has set one up already. Watson again suggested changes that the project could make to its existing processes, starting with replacing the GNATS issue-tracker that no one seems to like, and adopting a more formal policy for trawling PRs and triaging bug reports.

Pushback

Not everyone was on board with Kozubik's reading of the situation, however. Ivan Voras disagreed completely, saying that "the situation is actually quite good", and that "nobody would mind" if there were no more stable releases at all. "The 'releases' are for many people simply a periodical annoyance due to freezes," he said. Kozubik replied that "I could not have illustrated my point better, RE: FreeBSD becoming an OS by, and for, FreeBSD developers", and explained that most businesses will simply not use software that is not "officially" released.

Andriy Gapon defended the concept of a "by the developers, for the developers" mindset as the equivalent to being a community project. Projects that exist "for the users," he argued, tend to exist for commercial purposes, and be backed by profit-driven corporations. FreeBSD is more akin to the Debian project, he said, which is very much a "for the developers" effort, but still quite successful.

Adrian Chadd took issue with the question being raised at all, saying:

If you care this much to comment on it, please consider caring enough to step up and assist. Or, pay a company like iXsystems for FreeBSD support and get them to do this for you. Otherwise you're just re-iterating the same stuff I'm sure all the developers know but are just out of manpower/time/money/resources to do anything about.

But Doug Barton quickly responded "let's do away with the whole, 'If you step up to help, your help will be accepted with open arms' myth. That's only true if the project leadership agrees with your goals." The FreeBSD project needs to do some serious thinking about things like the role of "committer" and the meaning of "release," he said, including the difference between major and minor releases, all of which are terms with no formal definition. "We also need to take a step back and ask if throwing more person-hours at the problem is the right solution, or if redesigning the system to better meet the needs of the users *as a first step* is the right answer."

Engineering release-engineering

Barton suggested defining minor "point releases" as updates only to the FreeBSD base, not the ports collection or documentation. "The other thing I think has been missing (as several have pointed out in this thread already) is any sort of planning for what should be in the next release," he added. The current release schedule is a hold-over from the trouble-filled days the project experienced in the FreeBSD 5.x era, he said, but "the pendulum has swung *way* too far in the wrong direction, such that we are now afraid to put *any* kind of plan in place for fear that it will cause the release schedule to slip."

Watson concurred, adding that ""here's been an over-swing caused by the diagnosis 'it's like herding cats' into 'cats can't be herded, so why try?'" — and asking list members if they could come up with a tentative release schedule.

The debate continues, without a consensus yet on a release schedule. For his part, Kozubik favored immediately declaring FreeBSD 7.z end-of-life, marking 8.x as "legacy," and tagging 9.x as the only production release. Not everyone agrees with Kozubik's five-production-years-plus-five-legacy-years timetable; though there is support for a five-year total support life, and most developers seem to think that making minor releases every four months is doable.

Such a schedule would be roughly in line with what the commercial Linux distributors offer, and as Freddie Cash observed, the maintenance of a production release alongside a legacy release is similar to the process used by Debian. The big question remains whether the project will be able to hash out all of the details in time to commit to a concrete release schedule for 9.x itself — or whether the new release process will have to wait for FreeBSD 10.0.


Index entries for this article
GuestArticlesWillis, Nathan


to post comments

FreeBSD and release engineering

Posted Feb 2, 2012 11:56 UTC (Thu) by Seegras (guest, #20463) [Link] (1 responses)

Yes, there is a Problem. We're already thinking of switching to OpenBSD because of that.

FreeBSD is not comparable to Debian or even the Linux-kernel with regards to "by developers, for developers"; because this is a question of scale.

If the driver for an e1000 nic is broken, it will get fixed in Linux, in just about every kernel that anyone might use in production. Because there are so many people working on the Kernel, that the probability is very high that it will trigger someones "I need to fix that"-reflex. Because he might work in a company which indeed still uses kernel 2.6.32.

Not so in FreeBSD. There are a lot less developers, and if these run mostly CURRENT branches, and try to maintain 4 stable releases by the way, it becomes quite clear that this won't work.

They really need to focus on ONE stable distribution with ALL the bugfixes. (I remember a bug we've filed, with patch, for 6.x, that still wasn't incorporated in 8.x ... Yes, it was a quite esoteric bug you only hit when running NFS-servers with huge amounts of users, but still...)

FreeBSD and release engineering

Posted Feb 2, 2012 14:43 UTC (Thu) by patrick_g (subscriber, #44470) [Link]

>>> We're already thinking of switching to OpenBSD because of that.

Strange because, with OpenBSD, you have only a one year support.
Extract from the FAQ : "old releases are typically supported up to two releases back. It takes resources and time to support older versions, while we might like to provide ongoing support for old releases, we would rather focus on new features."

Fixed means fixed in a production release

Posted Feb 2, 2012 15:57 UTC (Thu) by epa (subscriber, #39769) [Link] (6 responses)

Remember - if it's not fixed in the production release, it's NOT FIXED.
This is something that afflicts other free software projects too. It is disconcerting to file a bug report and have it closed because a fix has been checked in to version control, never mind that there is no released version with the fix. If the concept of a 'stable' or 'supported' release is to mean anything, it must mean that bugs are fixed there.

Perhaps unpaid free software developers do not have the time or resources to maintain a stable release and port bug fixes to it, but that is a separate issue. It would be better to simply acknowledge that and tell everyone to use the latest version all the time.

Fixed means fixed in a production release

Posted Feb 3, 2012 0:18 UTC (Fri) by cwillu (guest, #67268) [Link] (3 responses)

A bug tracker is a tool for developers to keep track of known behaviour, not a voting system, not a trouble-ticket system, and not an order-taking system.

To be completely frank, it's not meant as a place for a user to have his voice heard. (That's why "filing bugs" is listed under "things you can do to help the project", rather than under "how to get support").

[http://www.reddit.com/r/browsers/comments/no4c7/bug_90268...

Fixed means fixed in a production release

Posted Feb 3, 2012 10:20 UTC (Fri) by epa (subscriber, #39769) [Link]

A bug tracker is a tool for developers to keep track of known behaviour,
That's fine, but the released version is also code and also has bugs just as much as the HEAD. If bugs in the current stable version do not belong in the developers' bug tracker, there needs to be a separate tracker for them.

Really all I'm saying is that as well as the 'closed' status in the bug tracker there needs to be one for 'fixed in HEAD but not fixed in production releases'. Then developers who are not inclined to go round patching older versions can filter out that status; users and others who want to collaborate on fixing the current stable version can work on these bugs.

Fixed means fixed in a production release

Posted Feb 4, 2012 22:17 UTC (Sat) by giraffedata (guest, #1954) [Link] (1 responses)

A bug tracker is a tool for developers to keep track of known behaviour,

You must be talking about some particular bug trackers because many bug trackers are in fact for lots of other things.

Some bug trackers provide the important service of telling users what not to waste their time reporting because it's already been reported. Some provide the service of telling users what bugs they can eliminate by switching to another release or just waiting.

None of that is relevant here, of course, where the disappointment springs not from the way the bug tracker is used but from the statement of process made in response to the bug report: this isn't going to get fixed for you. I just wanted to dispute an overgeneralization about bug trackers.

Fixed means fixed in a production release

Posted Feb 5, 2012 10:45 UTC (Sun) by epa (subscriber, #39769) [Link]

Again, it's not really that the statement of process is a bad thing. An explicit policy that bugs are not fixed in the current release would be reasonable - but then, please drop the pretence of having a 'supported' stable release. What seems to happen is that a fix is checked in and the bug is closed, more out of habit or a desire to stop it appearing on the list of open bugs than as a conscious choice. This makes it more difficult to maintain the stable release in parallel with the latest development version, and makes it less likely that the bug will be fixed in stable, even if it is a professed goal of the project and its developers to support the stable release with fixes.

Fixed means fixed in a production release

Posted Feb 6, 2012 6:40 UTC (Mon) by k8to (guest, #15413) [Link] (1 responses)

I work specifically on maintaining release versions of a commercial software package. Unfortunately this problem afflicts me too, because are process is not as I would have it in my dreams.

I get a defect piled onto me. I dig around in the symptoms and hopefully figure out what's wrong. I add tests to show whether it works or not, and then show my proposed changes fix the problem.

Then I commit those changes and mark it fixed.

It may not ship for 2 months.

This is a point of frustration for me, but we can't release the same day -- we should do *some* general testing before we issue a publically available release. And the general testers have to work on future work as well as production point releases, as well as special one-offs. It's just not easy all around. But from my view as a developer, if I've proved I've fixed it, it's fixed. I'd much *rather* have a customer get at test build that both confirms the fix satisfies the real need and gives them a stopgap solution. But I don't get to make the call, and the customer is often not willing to run such 'experimental' changes, even if they are the changes they themselves need.

It's just a kind of icky thing about software. Tighter cycles would help, up to a point.

Fixed means fixed in a production release

Posted Feb 9, 2012 14:29 UTC (Thu) by renox (guest, #23785) [Link]

[Then I commit those changes and mark it fixed.
It may not ship for 2 months.]

Lucky you, I work in a field where there may be *years* between a fix and a new SW version containing release.
And users won't upgrade, so it makes debugging very frustrating: OK, I've spent one week of analysis to find out that the issue was corrected two years ago, please upgrade?

FreeBSD and release engineering

Posted Feb 2, 2012 18:29 UTC (Thu) by jmorris42 (guest, #2203) [Link] (1 responses)

Am I the only one who sees an unsolvable conflict between the simultanious request to stop supporting so many production versions AND demanding a five to ten year support window?

FreeBSD and release engineering

Posted Feb 2, 2012 23:26 UTC (Thu) by job (guest, #670) [Link]

I think the idea would be to release major versions less often, so in that five year span we would see only one or two of them.

FreeBSD and release engineering

Posted Feb 11, 2012 21:38 UTC (Sat) by landley (guest, #6789) [Link] (1 responses)

I collected some useful videos on http://kernel.org/doc and one of them, "release management for large free software projects", is _excellent_ and directly applicable here.

http://video.google.com/videoplay?docid=-5503858974016723264

ABSTRACT: Time based releases are made according to a specific time interval, instead of making a release when a particular functionality or set of features have been implemented. This talk argues that time based release management acts as an effective coordination mechanism in large volunteer projects and shows examples from seven projects that have moved to time based releases: Debian, GCC, GNOME, Linux, OpenOffice, Plone, and X.org.

FreeBSD and release engineering

Posted Feb 11, 2012 21:41 UTC (Sat) by landley (guest, #6789) [Link]

Oh, I wrote up another facet of the same thing in the BusyBox FAQ once upon a time:

http://busybox.net/FAQ.html#backporting

The topic's one I consider important to understand and get right, if you do open source...

Rob


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