Let's start with my understanding of open source software. From reading the two pieces on the web (one of which was the text of the video we'd already watched), I'm taking open source software to mean software that is open to updates and editing from others. Not necessarily the general public, but neither is it only limited to people in the specific company that is releasing the software. Since I have no other background on open source software to speak of, I was no doubt easily influenced by the two pieces I was exposed to, both of which came out very strongly in support of open source software. As a result, from what they've presented, I'm inclined to agree with them that open source software is, in general, a good thing, and more advantageous than not to closed projects.
Benefits of open source would be that the program is available sooner and updated sooner. Users may have to deal with bugs at first, but these bugs are (relatively) quickly taken care of and the program is able to evolve significantly faster than it would otherwise. The principle of "two heads are better than one" aptly applies here.
Limitations would be that open source would understandably still not literally be completely open. I think he mentioned in the cathedral piece that you're still only working with the most talented 5% of programmers. Also, you can't start out a program as an open source project. You have to actually develop something yourself first, which then evolves into open source when you release it for comments, criticisms, and testing. Something else I was concerned about that wasn't directly addressed (at least i don't think it was) was how likely it would be for a program that was open source to be copied by someone else. Would you be protected before you opened it up to others? Because that's the only reason i can think of for why a company would choose to stick with closed projects. To try to make it perfect as perfect as possible and release it before anyone else gets the idea and mimics it.
Significant Benefits The most significant benefits of the open source method seem to be: 1. More designers means a bigger pool of people debugging and working on the project, which will offer a diversity of views and problem-solving strategies and make efficient use of the internet.
2. The users feel a sense of community with the software they will eventually be using (and with other users), and feel that they have an impact on the software design, making them more loyal to the program produced. (i.e.: Christopher Alexander)
3. Quality: The loyalty which is produced means that forthcoming ideas may be better and more specific to the needs of the community because they have a stake in the design, being users, and are not disinterested in the program they contribute to.
4. Speed: the open-source method, because it incorporates the cooperation of a larger group of design assistants eventually turns out a better product faster than a small isolated team of designers. "Given a bit of encouragement, your users will diagnose problems, suggest fixes, and help improve the code far more quickly than you could unaided." (Eric Raymond)
5. Frequent releases means that problems are less damaging and that programs will be more evolved than those developed in the strictures of a master plan because of their frequent revision (and the number of people looking at it each time it is released).
The most significant problems of the open-source method seem to be:
1. Source code is available to hackers who may use the information later for negative purposes.
2. Software projects must be initiated by someone who knows what they are doing and has the communication skills to manage the information they will receive about the program. The project leader must be highly skilled at knowing what is a good contribution and what is not, and failures in this one person or team, even with the potential benefits, could yield a flawed program in the same way it might happen using the Cathedral method.
3. Who gets the rewards? The financial considerations that go along with having one organizer and many design contributors are complicated. Although Eric Raymond points out the financial savings of the bazaar method, it seems that for certain software programs, it would be difficult to determine how the financial rewards would be distributed. And if the design contributors are not getting any monetary gain, are they really going to be interested enough in accuracy, and other factors critical to software/language design.
It seems like one of the most significant advantages of open-source software is the resource pool from which it draws. Unlike conventional management, open-source development can draw from unlimited numbers of programmers from all across the globe. And since these programmers are self-selected volunteers, you get people who are actually interested in solving various problems, as opposed to those who are solving them out of necessity, as in conventional development. This process also seems to give users some sense of ownership, giving them what I would imagine would be a greater sense of satisfaction, as well as some vested interest in seeing the software developed successfully.
Open-source development, in its adherence to releasing early and often, also seems like a big advantage. In releasing early and often, through this notion of the Delphi effect, it seems you would indeed increase efficiency by having a larger pool of people debugging and improving software. This type of early release would also allow more adaptability and flexibility to technological and economic changes that might otherwise be difficult in conventional development.
The basic issue with open-source seems to be one of stability, which manifests itself in a number of ways. One of the biggest problems with open-source seems to be that there is no 'final product' so to speak, as the software is continuously being improved and modified. This may not be suitable or desireable for many users.
And then there is the question of whether you can successfully develop the basic design into a coherent and stable operating system, though Linux is a hugely promising example. Also, as there are not the kinds of incentive structures and institutional controls as in conventional management, there is no guarantee that there will be sustained effort, or that a project will be carried through (though it is duely noted that 60-75% of conventional software projects do not get completed or are rejected by their intended users). Finally, if the developer loses interest in the project, the project dies.
Open sources states (http://www.opensource.org/intro.html):
"The basic idea behind open source is very simple. When programmers on the Internet can read, redistribute, and modify the source for a piece of software, it evolves. People improve it, people adapt it, people fix bugs. And this can happen at a speed that, if one is used to the slow pace of conventional software development, seems astonishing.
We in the open-source community have learned that this rapid evolutionary process produces better software than the traditional closed model, in which only a very few programmers can see source and everybody else must blindly use an opaque block of bits."
and "The open-source model also means increased security; because code is in the public view it will be exposed to extreme scrutiny, with problems being found and fixed instead of being kept secret until the wrong person discovers them. And last but not least, it's a way that the little guys can get together and have a good chance at beating a monopoly (http://www.opensource.org/for-suits.html)."
Another advantage, is the tests that software is continuously undergoing. The software is applied in the field, changed, and again applied in the field. This is less likely to result in bugs in the final product of the software.
Possible disadvantages are if a bad starting system develops in a niche and other, better alternatives would have filled the niche, had the bad original system not been developed and attracted all the hackers. In theory, the best system will still be developed, yet, the best system would be developed faster with a more advanced starting point.
Another, is the issue of ownership. If the product was ever to be sold, should those who helped development it receive a portion of the profits? Are those who developed it in violation of copyright or patent laws if the use an older version of the product that resembles the current?
Finally, another disadvantage is, if the leader of an open source environment is stupid and make poor selections of what to include in the program, the product will fail.
I am not an expert on open source software at all, but it seems to me that the there are some big pros and big cons. The big pros would be the fact that the software can by modified and improved upon in an evolving process. This would allow software to become much more powerful and efficient. However, the downside to open source software would be that anyone could potentially alter the software, meaning that although most people would be making improvements to the software, some people would be corrupting and degrading the software as well. It would be a challege to keep those people from being able to have equal access. Another potential difficulty in open source software is keeping the user up-to-date. The user would have to know how to use and apply the improvements the programmers were constantly making to the software, in order to maximize efficiency and productivity of the user.
I see many good and potentially bad things about open source software. First, I think it's very good that programs like Linux are being opened up so that others can see what's going on behind the scenes. It's a great way for just-learning programmers (I guess I'm included in that number now) to get a feel for what professionals do with their programs. It is also an easy way for an experienced programmer who finds a bug in this software to tell the original programmer of the software what exactly is wrong, and even fix it for themselves on their own system. However, despite the obvious possibilities that these programs will be copied without being cited properly and in even more illegal ways, there are further flaws. The one flaw I find most disturbing, though, is that a particularly good operating system or word processing program might have its source code become the template for all other. Programmers might become lazy and copy each other over and over again and never actually come up with anything genuinely innovative because they don't think it's worth their time or effort or just are too lazy to write proper code themselves. We should continue to have "real" programmers and not just "editing" programmers who change little things about software and little else.
I think that while the Delphi effect can definitely be a benefit to an open source project, it could also signal the downfall for a project that doesn't start out with a strong base or that can't deal with the changes and challenges made to it. If a kernel isn't strong enough, the rigorous testing it goes under by an open source community could find so many bugs as to destroy the program. Of course, that probably just means that the project wasn't good enough to succeed in the first place. However, I think that plenty of software gets released that hasn't gone through that kind of testing and thus the weaknesses of it haven't been exposed until it gets use by a more general (and larger) audience. Conversely, I think the benefit of open source is in the bazaar effect itself. As was stated, a "deep" bug won't seem so deep to someone, and if that someone has the chance to contribute to the project, the project can only get better. Open source software also provides an alternative to pre-packaged, giant company produced software. Something that the users designed will probably be something that the users would want to use.
Disclaimer Often, these pages were created "on the fly" with little, if any, proofreading. Any or all of the information on the pages may be incorrect. Please contact me if you notice errors.
This page may be found at http://www.math.grin.edu/~rebelsky/Courses/CS105/2000S/Questions/question.17.html
Source text last modified Wed Feb 16 08:15:56 2000.
This page generated on Tue Feb 29 08:55:23 2000 by Siteweaver. Validate this page's HTML.
Contact our webmaster at firstname.lastname@example.org