Thursday, January 20, 2011

The Open-Source Bazaar

For class this week we read an article called The Cathedral and the Bazaar, by Eric Steven Raymond.  I found this article very interesting and informative about the difference between the open-source and closed-source models of development. Comparing them to a chaotic bazaar and the creation of a cathedral was very insightful and helped me understand their differences in a very real way.  Cathedrals took hundreds of years to construct, required a small circle of management who made all of the design decisions, and those design decisions were made at the beginning of the project.  The result is a beautiful work of art that inspires awe and draws your eyes to heaven, but these results come centuries after the inception of the concept.  An open street bazaar, on the other hand, comes together completely, quickly, efficiently, and with such variety that you can find whatever you seek from some vendor.

I see a lot of similarities in his analogy.  A cathedral is a safe place, a place of sanctuary, structure, organization.  There is something comforting about that structure, the fortress.  In reading this article I can see why I tend to be drawn more to closed-source than open-source development.  I am not someone who generally likes chaos; instead I thrive with boundaries and guidelines.  While that is my personal tendency, I am growing increasingly aware of the benefits of open-source development.

Raymond's writing style is very engaging, almost convincing me that open-source just might be the answer to software development!  I really enjoyed following his journey as he experimented with the principles he saw modeled by Linus Torvalds in his work with Linux.  The way he pulled out lessons for programming throughout the text was also helpful, yet somehow discouraging to me.

As I continue my education in computer science I find more that I enjoy in the challenge and I am finding my strengths, but I am also finding that my interests are extremely narrow.  If the key to writing good software really lies in the interest level of the developers, then I fear for my future career.  My true interest is in databases, specifically in improving the database tools available to non-profits, which is not a big market. 

On the other hand, if the nature of great programmers is to be "too lazy to fail" then I just might be okay.  I don't like redoing work that has already been done perfectly well.  Why re-invent the wheel?  I remember struggling with that frustration during some of my assignments in earlier classes, even as I realized the value of figuring out how to implement data structures or sorting algorithms myself.  In those cases, I knew from the beginning that if I could create and implement that code myself that I would have a  much better understanding of the material than if I simply used whatever someone else created.  However, in major software projects that are so much more involved and complex, I would much prefer to let someone else do the ground work, give me something to start from.

Maybe after another semester of working with open-source projects I will feel more prepared for the 'real' world.  I believe that I am, but it's those feelings that get in the way.  I guess at least for now it's time to step out of the safety of the cathedral and go shopping in the bazaar...                                      

No comments:

Post a Comment