class: center, middle # CSCI 395.86 Open Source Software Development
## Highlights ### of ## _The Cathedral and The Bazaar_ ### written by Eric Raymond .big[(An Anatomical Musing about Open Source Software Development)]
.author[ Stewart Weiss
] .license[ Copyright 2020 Stewart Weiss. Unless noted otherwise all content is released under a [Creative Commons Attribution-ShareAlike 4.0 International License](https://creativecommons.org/licenses/by/4.0/). ] --- ## Cathedral? Bazaar? .big[ - Why are cathedrals and bazaars mentioned in the same breath? ] -- .big[ - What does software development have to do with cathedrals and bazaars? ] -- .big[ - What were your strongest impressions about Eric Raymond's story? ] -- .big[ - What principles did he espouse in this treatise? ] --- class: center, middle ## Principles, One by One The statements in the following slides are excerpted from Eric Raymond's [_The Cathedral and the Bazaar_](http://www.catb.org/~esr/writings/cathedral-bazaar/) essay. --- class: center, middle ## Every good work of software starts by scratching a developer's personal itch. --- class: center, middle ## Good programmers know what to write. Great ones know what to rewrite (and reuse). --- class: center, middle ## "Plan to throw one away; you will, anyhow." (Fred Brooks, The Mythical Man-Month, Chapter 11). --- class: center, middle ## If you have the right attitude, interesting problems will find you. --- class: center, middle ## When you lose interest in a program, your last duty to it is to hand it off to a competent successor. --- class: center, middle ## Treating your users as co-developers is your least-hassle route to rapid code improvement and effective debugging. --- class: center, middle ## Release early. Release often. And listen to your customers. --- class: center, middle ## Given a large enough beta-tester and co-developer base, almost every problem will be characterized quickly and the fix obvious to someone. or ## Given enough eyeballs, all bugs are shallow. --- class: middle .center[ ## Smart data structures and dumb code works a lot better than the other way around. ] --- class: center, middle ## If you treat your beta-testers as if they're your most valuable resource, they will respond by becoming your most valuable resource. --- class: center, middle ## The next best thing to having good ideas is recognizing good ideas from your users. Sometimes the latter is better. --- class: center, middle ## Often, the most striking and innovative solutions come from realizing that your concept of the problem was wrong. --- class: center, middle ## "Perfection (in design) is achieved not when there is nothing more to add, but rather when there is nothing more to take away." --- class: center, middle ## Any tool should be useful in the expected way, but a truly great tool lends itself to uses you never expected. --- class: center, middle ## When writing gateway software of any kind, take pains to disturb the data stream as little as possible - and *never* throw away information unless the recipient forces you to! --- class: center, middle ## When your language is nowhere near Turing-complete, syntactic sugar can be your friend. --- class: center, middle ## A security system is only as secure as its secret. Beware of pseudo-secrets. --- class: center, middle ## To solve an interesting problem, start by finding a problem that is interesting to you. ---