MMM vs. OSS

Posted 13 Nov 2000 at 19:07 UTC by billgr Share This

In the past, there has been some talk here about Brooks' classic The Mythical Man Month and its implications for Open Source development. I would appreciate seeing what people here think of the question of the compatibility of Open Source project management with Brooks' suggestions.

To focus things, Raymond in The Cathedral and the Bazaar points out some ways in which OSS development culture follows Brooks' outline, but there are others where it does not. For example, according to Brooks, opening development up wide should result in basically an infinite time-to-completion for a project, since all effort gets sucked up in inter-developer training and communication. Furthermore, since debugging is not parallelizable (per Brooks), the extra "help" just creates more bugs.

Raymond's response is that Brooks is wrong. Debugging is parallelizable. Bugs are shallow for large groups of developers.

Microsoft chimes in to remark that the reason OSS has worked is that anarchy is OK at producing copies of systems which are already fully architected. The "taillights are easy to follow" principle.

Others have remonstrated that OSS projects aren't really bazaars, but autocratic cathedrals run by the elect, and so are perfectly understandable.

Obviously there are more points of view. What are they and which is right?

A couple of ideas as fodder:

  • C vs. Assembler. Brooks' book references dramatic gains in productivity by using high-level languages. Perhaps these gains similarly decrease the coefficient of the combinatorial loss of productivity caused by adding more developers to a project, thus pulling the Linux kernel project, etc. within bounds.

  • Self-organization of "surgical teams." Perhaps the result, sociologically, of strong, productive programmers in charge of big OSS projects has been the de facto creation of the "surgical teams" Brooks' mentions. (For those who haven't read MMM, in a fabulous mixed metaphor Brooks describes the optimal programming situation as a "surgical team" where a highly productive lead programmer is assisted by team members like "copilot," testing, toolkit developer, sysadmin, and so forth.)

A summary of MMM
Review on Slashdot


Open Development, posted 13 Nov 2000 at 20:49 UTC by stefan » (Master)

I have to say that I'm still not convinced that there is such a thing as Open Source project management. (OS) projects are as diverse as anything, and there can't be any specific approach to manage them all.
ESR is certainly right in some (rather trivial) points such as peer review and even parallel debugging. But that has nothing to do with project management. The special management approach has to vary widely, dependent of the nature of the project. How much architecture/design is involved, how well known is the problem domain, etc. Brooks' Mythical Man Month has certainly to be read in its historical context, but I can't find much value in the oh-so-popular Cathedral and Bazaar.

Off the top of my head..., posted 13 Nov 2000 at 21:32 UTC by rillian » (Master)

For example, according to Brooks, opening development up wide should result in basically an infinite time-to-completion for a project, since all effort gets sucked up in inter-developer training and communication.

I think this one is easily explained by the different organizational structures. When a commercial development team hires someone, there's an expectation on both sides now that they're "inside the wall" that someone must be supported and involved and given work to do. Else, why did you hire them? The lower chemical potential of open development means those doing the work are more-or-less free to ignore the training of new contributors, who must learn on their own. With no schedule, or a recognizance of the value of an educational budget, this is no problem.

Microsoft chimes in to remark that the reason OSS has worked is that anarchy is OK at producing copies of systems which are already fully architected. The "taillights are easy to follow" principle.

The advantage of "chasing taillights" is you don't have to do much work to achieve a shared vision among the contributors. It's that vision that is hardest to pass on. I understand taking advantage of this is one of the reasons behind GNOME's emulation of Microsoft products. But the effect applies just as well to designs just over the horizon. How often have you read a new project description and said "Yes, I see what they want to do"?

Others have remonstrated that OSS projects aren't really bazaars, but autocratic cathedrals run by the elect, and so are perfectly understandable.

It is true that one effective model is to have circles of contributors, where new contributors are "trained" by a circle of more experienced developers, who in turn defer to core members. But the term "autocratic cathedral" poorly captures the complexity of the situation. This model is only autocratic in that--for reasons of resource efficiency, lack of distinct vision and respect for their technical competence--everyone follows the decisions made by the core members. And one is free to move between these roles as time and interest permit. In other words, not autocratic at all.

Perhaps (to further mix metaphors) this is a surgical team, drawing their new members from recent graduates of a custom-tailored university degree program, crossed with the social freedom one has in starting/joining a minor shared-interest club in a large city. I don't think there's much interest to be found in calling that "traditional top-down design" and understood.

On a more philosophical note, stephan's point about historical context is a valuable one, and applies just as well to the The Cathedral and the Bazaar. We shouldn't expect to find directly applicable rules in seminal works of this sort. Initial theories often have limited scope or are found to be wrong on some (even many) details. But the central idea still has value, and is either incorporated in later theories, or develops into a sophisticated field in its own right, sharing only the name and central premise of the original. (Darwin is a good example here.) We should keep this in mind and not be surprised when bold claims don't apply to our situation.

As a great friend used to say, "I think we can complicate this a bit." :-)

Re: Off the top of my head..., posted 13 Nov 2000 at 23:16 UTC by stefan » (Master)

Initial theories often have limited scope or are found to be wrong on some (even many) details.

I don't find anything in the Cathedral and Bazaar justifying the term theory. It's all either common sense or just plain wrong. To formulate it a bit more moderately, the whole OSS culture is certainly a very new and exciting (even for an observer) environment, which couldn't be addressed by Brooks. There definitely is a lot of stuff to be researched. But this is less obvious than ESR seems to suggest, and the effect is IMO not so much on the management level, but more of a philosophical nature (the nature of work, it's distinction from job, and general politico-economic issues, as touched by this excellent article by Eben Moglen (who plays, by the way, an importent role in the FSF).

Inter-developer doesn't exist., posted 14 Nov 2000 at 00:03 UTC by jlbec » (Master)

I've always found The Mythical Man Month to be accurate. Most of the time an OSS (in the ESR sense) project doesn't fall in line, it is a misjugement of conditions.

Take the example of wide development. rillian points out the difference in structure between a software team and the world of developers. In a normal software team, the people joining have to be trained. The experienced folk have to find time to help them, train them, make them understand the objective, and then provide them with work to do. This is what slows the project down. The actual code contributed by the new members (at a later date) is the start of the help they promise.

In an OSS project, there is none of this. The new member is not on the radar screen until they have a quality bit of code to contribute. By then, they have learned the project, bought into the design goal, and are fully up to speed. If they weren't, the code they emailed wouldn't be worth consideration. So all of that ramp-up time is gone. The current project workers spend about 10 minutes evaluating the code, 5 more mailing a "thanks", and then get back to their own tasks.

Debugging is parallelizable. Bug fixing is not. In a software team, the new folks and the old folks all find bugs, and then patch the tree. It's no surprise that they sometimes trample each other. In an OSS project, when J. Random Hacker sends a bugfix patch, JRH cannot patch it directly. That bugfix hits a normal project maintainer, who surely has the knowledge to integrate it fully. This provides less conflict. In addition, there is no requirement that JRH's patch be included. The maintainers might like that bug (calling it a feature) or may completely reimplement the fix to fit better. In a software team environment, there are egos to watch here.

The "chasing taillights" bit is simple FUD. A lot of OSS/Free Software is definitely based on existing software. But a lot of new ideas are happening. Other Unices wouldn't be looking to OSS/Free Software for some of these developments if they were simply a reimplementation of the wheel. And since Micro$quash is well known for its innovation, I suspect we should take such comments with a grain (or hillside) of salt.

Re: MMM vs. OSS, posted 14 Nov 2000 at 00:03 UTC by jhasler » (Journeyer)

Brooks assumes that duplication of effort must be avoided. This assumption is not valid for OSS.

OSS is not new, but distributed development is, posted 14 Nov 2000 at 02:32 UTC by rread » (Journeyer)

The culture and ideas that are now called OSS are not new, and are just as old, if not older, than the MMM. The hacker culture (as documented in Levy's "Hackers") originated as almost a direct response to IBM's cathedral style of development, where access to the machine was limited to just the select few. It was not mainstream, but free software was being successfully developed "way back" in the 70's and 80's.

The real innovation of the last 10 or so years is the use distributed development teams. OSS povides highly visible examples of successful (and not-so successful) distributed development, but I'm sure there are just as many, if not more, behind the closed doors of corporate development.

Of course, the very idea of distributed development is almost in direct opposition to the MMM. The increased overhead of communication is supposed outweigh the benefits of added developers, and the farther away the developers, the greater the overhead. It would be interesting to see some useful research into this, producing, perhaps, a metaphor a little more useful than Cathedrals & Bazaars.

I thought Eric addressed this, posted 14 Nov 2000 at 05:10 UTC by dutky » (Journeyer)

I discussed exactly this issue with Eric before CatB was officially released. In fact, this very observation was what led Eric to write the paper in the first place.

As I recall, we decided that OSS was able to avoid the N-squared communication penalty for two main reasons: 1) debugging is parallelizable, and debugging is the main task of most of the co-developers on an OSS project, and 2) the vast majority of any necessary communication happen through the source code or other, related, means (patches, CVS comments, etc.).

In fact, my comment that the debugging task can be effectively parallelized to as many people as desired stems from consideration of Brooks' law, since I was having my own troubles seeing how Linus had avoided the communication penalty. Co-developers in an OSS project are guaranteed to be motivated enough to bootstrap themselves into the code, whether it is to add new functionality or to fix existing functionality that is not working correctly. Anyone who would require other members of the team to spend communication effort on them are automatically weeded out.

Debugging is a special case, since the amount of information needed to fix any given bug is probably less than that needed to comprehend and extend the entire system (assuming that all the most serious bugs, those which are functions of large scale interactions, were weeded out by the core developers already). The real tallent required in debugging, according to Eric, is more closely related to a specific understanding of, or insight into, the kind of bug being manifested, than to a deep or broad understanding of the code-base itself.

I should even be able to dig out the specific correspondence between Eric and me on this topic, if I can find the archival CD's from three or four years ago, but I think that the above covers the gist pretty well.

Re: I thought Eric addressed this, posted 14 Nov 2000 at 15:49 UTC by stefan » (Master)

The real tallent required in debugging, according to Eric, is more closely related to a specific understanding of, or insight into, the kind of bug being manifested, than to a deep or broad understanding of the code-base itself

I can't really agree here, as this expresses a false distinction between the problem (what the code addresses) and the attempted solution (how the code adresses it). There are possibly classes of bugs that can be spotted purely by inspecting the code, i.e. by reading individual language specific statements. However, the more interesting bugs are design related, such as breaking invariants (DbC) or making a wrong commonality/variability analysis. To solve those, you do need quite a bit of understanding of the problem domain, and quite a bit of insight into the attempted solution provided by the given code.

Also, there is the broader picture. An interesting metaphor, which possibly lead to the analogy with a Cathedral, came from the observation that even though huge aristocratic buildings took multiple lifetimes to build, they often were consistent in style. This was possible because the architects were few, and they had the important ability to capture the spirit, goal, approach, style, whatever, and continue in the same direction. This requires a lot of communication and documentation, so the fewer architects are involved, the better.

Of course, the issue is not to prevent others from designing their own ideas into a given project. In fact, friction between designers leads to project forks. The importent difference to closed source projects is that OSS projects provide the ability to fork, which is good, as it empowers people. Eric seems to vehemently refuse that forks are part of the OSS culture.

Mythical Man Month, posted 16 Nov 2000 at 15:17 UTC by alan » (Master)

Folks might want to grab a copy of the versions of my talk on this very subject from ftp.linux.org.uk:/pub/linux/alan. I am generally of the opinion that what we do doesn't really invalidate the basic ideas of MMM at all, and where there are apparently differences (eg adding people to late projects) you can see why there is such a difference.

Alan

Raymond, Stallman, Troan, and others on Brooks, posted 17 Nov 2000 at 13:10 UTC by gregorsamsa » (Master)

I did an article for IBM's developerWorks Open Source Zone on Brooks' Turing Prize in which I interviewed

about Brooks' Law and how it applies to Open Source projects. Don't take my word that Brooks' Law still very much applies and that Eric has backed off and hedged his bets a little; read it yourself.

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!

X
Share this page