Michlmayr says that FOSS projects have two characteristics that make them unique in software development. First, their members are geographically dispersed, which delays communication. Second, many members are volunteers, and, although highly motivated, may not always be available at crucial times. These features have some advantages -- for example, members' dispersal means that all communication is recorded -- and are certainly preferable to centralized, paid workers who lack motivation. However, "taken together," Michlmayr says, "these aspects can make coordination and release management quite difficult."
In particular, these characteristics often result in a lack of planning. "Quite a few large and complex projects adhere to a 'release when it's ready' policy, but this strategy is disastrous in large projects where there is always something to be done," Michlmayr says. "It can lead to delays, out-of-date software, and frustration, and it also means that users and vendors cannot plan, because nobody knows when the software will actually be released." In the draft of his thesis currently online, Michlmayr singles out Debian as a prime example of these problems.
Left unsolved, these problems can lead to "loss of credibility and fewer contributors," Michlmayr says. "Why would volunteers want to contribute to a project when it takes years for their contributions to be shipped to actual users? Loss of credibility is particularly problematic because it's a vicious circle. If you repeatedly face delays, nobody will believe that the project can actually release on time, and further delays are inevitable."
The solution to this situation, Michlmayr says, are regularly scheduled releases. He concedes that converting to a schedule requires "considerable work," but he points to GNOME as proof that it can be done. In fact, he considers it a necessity when a project begins to have trouble with its release strategy.
"Many problems with release management occur because processes that worked well when the project was small are not suited to a large project," Michlmayr says. "In a small project, it's possible to say, 'release when it's ready.' In a large project, such an unorganized approach will lead to significant problems."
The advantages of time-based releases
According to Michlmayr, a move to time-based releases benefits everyone involved. For large organizations using the software produced by the project, time-based releases provide the predictability they need for their own business and infrastructure planning. Similarly, commercial distributors can plan their marketing, while individual users can have increased confidence in the project.
However, the largest benefits of time-based releases are for the project's own development community. Over time, Michlmayr sees regular releases as increasing the discipline in the community, allowing its members to coordinate their efforts more efficiently. Regular releases also allow better planning in both the short and the long term. In addition, as part of the cycle, user feedback becomes more timely and can be incorporated into planning with less effort.
By contrast, Michlmayr says that "so far, no clear disadvantage has been found" for regular releases. He notes that it is uncertain "whether you can make major changes while still following a time-based release strategy," adding that GNOME has debated this question in talking about how to develop GNOME 3.0. He says that "this question cannot fully be answered yet," and suggests that "it's possible for features to be developed on a branch over more than one release interval," which would make major changes compatible with a regular release strategy.
Knowing when to move to time-based releases
As with addiction treatment, the first step in moving to time-based releases is to acknowledge that your current strategy doesn't work, Michlmayr says. He gives four criteria for knowing when the solution might be appropriate:
Once a project has decided to move to regular releases, it needs to choose an appropriate release interval and to develop detailed schedules, policies, and infrastructure.
For Michlmayr, a particularly important part of the transition is the appointment of an effective release manager. He defines such a manager as someone with both management skills and the ability to build communities, develop a strong vision of where the project is heading, and to stay on target and refuse requests when necessary.
He also emphasizes that release managers must "actually perform hands-on management. Some projects believe that simply publishing a release date or schedule is enough and that project participants will automatically do their work. In reality, it's important to constantly remind people of the schedule and of looming deadlines."
Applying the findings
Michlmayr declined to suggest a detailed set of best practices for release management in FOSS projects. "That would be a whole Ph.D. (or three) on its own," he says.
However, Michlmayr did say that his research was not only potentially useful for FOSS projects, but for any volunteer effort.
"With the Internet, there will be more collaborative, volunteer projects in the future," he says. "The insights we've now gained with free software can be applied to these projects. My research on release management in free software projects can be seen as a way to approach the question as to how products can be released by projects with little control over their contributors."
Bruce Byfield is a computer journalist who writes regularly for NewsForge, Linux.com, and IT Manager's Journal.
Note: Comments are owned by the poster. We are not responsible for their content.
I can tell you that if I accept the ones for X and Kernel, my system will not boot. But I can accept the others.
My other experience has been with RPM / YUM failing because of a faulty update to some component. I have learned that these two critical softwares use shared libraries, and one of the non-mainstream applications updated one or more of these, and that update caused the YUM failure.
Automated testing did not have find this problem, as neither YUM or RPM was modified, I will not conjecture why.
So, automated testing or no automated testing, as the number of applications / modules increases, the testing time / schedule should also increase, particularly if we want to maintain quality.
Any loss in quality/reliablity is wonderful ammunition to the two major competitors.
I am very much in favor of moving to a 9-12 month release schedule. To accomodate the must have individuals, the test versions could be "forked" so that they may enjoy their daily updates.
Here is my argument as to why we should slow down.
Two years ago there were about 6000 modules in linux, with around 4000 being critical. The cartesian product of 4k by 4k is what we should have as critical tests to confirm correctness of execution. In these tests, when a bug is found, partial retesting is required. Suppose there were really 4k*4k or 16k tests to assure that release.
Today (two years later), with enhancments to X, to the kernel, virtual operating system execution, to the applications, and growth in number of new applications (modules), we have over 8,0000 modules of which 6000 are easily installed (a count I derived from my own linux desktop system).
Drawing on the same logic, we should have 6k*6k or 36k tests to perform to assure a clean distribution.
The qualitive ratio of module counts from two years ago to today is 36/16, or more than double the number or required tests to maintain the same quality.
But we do not have double the number of test people, and we have not increased the time between releases. Nor have we automated the testing procedures.
My take on this is that I have definitely experienced a very much larger number of bugs in the maintenance updates now,from what I experienced two years ago. In fact, I would say that the number of bugs has gone up by the square of the number of bugs reported two years ago, or more than the ratio of 36/16.
My conclusion is that we require a kind of Moores law for deciding when to schedule/time a new release.
As the number of modules increases, so must the testing times increase exponentially.
My experience over 40 years in IT/development leads me to recommend fixed releases, but not necessarily on a periodic (example 6 monthly) schedule, but rather that they be based on the number of program changes that occur in a 3 month period following the previous release.
Leslie Satenstein
From October to today, my favourite linux distribution has listed over 325 bug fix patches. There should only be not more than 2 per week or 20.
[..] the time based release strategy can be considered as an important means of quality improvement in FOSS projects.
[..] a pure modular structure - that is one lacking of hierarchy, such as a market - embeds flexibility, but it lacks coherence, the ability to coevolve after adapting to change.(cfr. Langlois Richard “Do firm plan?” 1995)
Eclipse
Posted by: Anonymous Coward on March 28, 2007 03:26 AM#