
On 12/28/2010 9:48 PM, Dave Abrahams wrote:
At Tue, 28 Dec 2010 09:02:04 -0500, Edward Diener wrote:
Software design is almost always an individual conception and no amount of community involvement is going to change that. Of course a developer can be influenced by the comments of others about the particulars of a software library. But I can never believe that a community of people can effectively design a software library no matter what proof you may want to try to bring from other environments like Linux and other open source projects.
Good designs can be the product a small community. I designed the Boost.Iterator library with two other people. I believe that there are at least five people who could be considered designers of the Spirit library, probably more. In that case there's one visionary leader, but IIUC, design work is actively solicited and used.
I do not disagree that more than one person can design a library. But whoever does so needs to understand the ideas and implementations involved to a great degree. I still believe that the smallest number of people who can work at a really good design to accomplish a programming task in a reasonable amount of time, the better, and I still believe that 1 is the ideal number. I do recognize that a large library of functionality may require more than 1 largely based on the wealth of functionality desired. But usually, with a small group of designers, as you point out their is one leader whose impetus is the reason for the existence of the library, and this ensures that the basic design ideas are adhered to without others pulling in different directions. I do realize that a design can be flawed in some ways, or can be improved in some ways, which the original designer may not foresee, and therefore it is advantageous to hear from others in a software community. But I adhere to the belief that design by commmittee or design by community produces mediocre and badly usable software the great majority of the time. I feel the same way about any creative endeavor in life.