The Cathedral and the Bazaar

Similar documents
Refactoring. Why? When? What?

What is Linux? Bob Tanner time.com> Real Time Enterprises, Inc Eden Prairie, MN

Open Source Development

History of Unix, Linux and the Open Source

CS 153 Design of Operating Systems

Engaging Academia in ONAP Perspective of a Faculty Member at SMU Ali Shah PhD Adjunct Professor

Free & Open Source Software: The Academic Future

Intro to FOSS. What is FOSS?

Kernel maintainership: an oral tradition

Introduction to the Emacs Editor

A Survivor's Guide to Contributing to the Linux Kernel

Foundations of Software Engineering. Lecture 24: Open Source Claire Le Goues

A Guide to the Linux Kernel Development Process. Jonathan Corbet LWN.net

The Joel Test: 12 Steps to Better Code.

Russell Doty Red Hat

HKG18-TR01: Open Source Philosophy. Daniel Lezcano

9 th CA 2E/CA Plex Worldwide Developer Conference 1

Software metrics for open source systems. Niklas Kurkisuo, Emil Sommarstöm, 25697

Understanding the Open Source Development Model. » The Linux Foundation. November 2011

CS61A Notes Week 6: Scheme1, Data Directed Programming You Are Scheme and don t let anyone tell you otherwise

Game keystrokes or Calculates how fast and moves a cartoon Joystick movements how far to move a cartoon figure on screen figure on screen

Ruby Debugger for Ruby 1.9

Systems Software. Recitation 1: Intro & Revision Control. Quite different from 213. Our Philosophy. Partly-free lunch

Understanding Software Engineering

THOMAS LATOZA SWE 621 FALL 2018 DESIGN ECOSYSTEMS

Go! Production Suite On the move editing not a problem with Go!

Economies of Scale in Hacking Dave Aitel Immunity

UNIT OBJECTIVE. Understand what system testing entails Learn techniques for measuring system quality

CODE MAROON TEST SEPT. 30, 2011 SURVEY RESULTS

Edmodo for Teachers Guide (Taken directly from Edmodo s site.)

Promoting Component Architectures in a Dysfunctional Organization

6.001 Notes: Section 17.5

CS450: Structure of Higher Level Languages Spring 2018 Assignment 7 Due: Wednesday, April 18, 2018

Yammer Product Manager Homework: LinkedІn Endorsements

Reliable programming

Ideas Gallery - Sai Kishore MV (Kishu)

Taxonomy for Open Source Software Development

Website Design and Development CSCI 311

1. I NEED TO HAVE MULTIPLE VERSIONS OF VISUAL STUDIO INSTALLED IF I M MAINTAINING APPLICATIONS THAT RUN ON MORE THAN ONE VERSION OF THE.

There are two tools with which you should be familiar: the program su, and more importantly, sudo. Here we see how to use them.

The Design and Implementation of Gnu Compiler Collection

Evolving Software. CMSC 433 Programming Language Technologies and Paradigms Spring Example. Some Motivations for This Refactoring

Assignment 3 Functions, Graphics, and Decomposition

[ 8 marks ] Demonstration of Programming Concepts

Case Study: Building a High Quality Video Pipeline Using GStreamer and V4Linux on an i.mx6

COPYRIGHTED MATERIAL. What Is Linux? Linux History. Linux as an Operating System. Linux as Free Software. Commercial Applications for Linux

Administrivia. Programming Language Fall Example. Evolving Software. Project 3 coming out Midterm October 28. Refactoring October 14, 2004

The Anatomy of A FOSS Project

Joopal and Drumla. Sam Moffatt, Joomla! September 13, 2009

Software as a Service (SaaS), Service-Oriented Architecture (SOA), and Cloud Computing

How Rust is Tilde s Competitive Advantage

Welcome to Python! If you re the type of person who wants to know

Vulnerability Disclosure Policy. v.1.1

The PostgreSQL Open Source Development Process

Programming: Computer Programming For Beginners: Learn The Basics Of Java, SQL & C Edition (Coding, C Programming, Java Programming, SQL

Exercises: Instructions and Advice

Chapter 2 Web Development Overview

Service Lifecycle and Versioning SOA 2/2559

Functional Programming Lecture 13: FP in the Real World

Other useful tools. Eugeniy E. Mikhailov. Lecture 11. The College of William & Mary. Eugeniy Mikhailov (W&M) Practical Computing Lecture 11 1 / 9

Testing. Topics. Types of Testing. Types of Testing

3D printing Is it Good Enough for Scale Model Boat Builders?

Read & Download (PDF Kindle) Data Structures And Other Objects Using C++ (4th Edition)

Start of Lecture on January 22, 2014

CSC D84 Assignment 2 Game Trees and Mini-Max

How do you find a resume template on word. How do you find a resume template on word.zip

Your Data Demands More NETAPP ENABLES YOU TO LEVERAGE YOUR DATA & COMPUTE FROM ANYWHERE

Git Workbook. Self-Study Guide to Git. Lorna Mitchell. This book is for sale at

EXECUTIVE OVERVIEW. Upgrading to Magento 2

A Beginner s Guide to Successful Marketing

CHAPTER 1. Objects, UML, and Java

9/17/12! Ion Stoica CS162 UCB Fall 2012!

How To Get Your Word Document. Ready For Your Editor

Virtual Platform Checklist for Adobe Connect 9

CREATING A COMMON SOFTWARE VERBS IMPLEMENTATION

Software Engineering Lifecycles. Controlling Complexity

Educational Fusion. Implementing a Production Quality User Interface With JFC

Kernel driver maintenance : Upstream vs. Industry

Tutorial 1 Answers. Question 1

Design for Usability To Practice User-Centered Systems Design Klicka här för att ändra format

Java SE 11 Certification Questions Answered

Guide to a Perfect Event Communication Plan - Professional event management

How To Use My Alternative High

Kotlin for Android Developers

CSE 374 Programming Concepts & Tools

REPORT MICROSOFT PATTERNS AND PRACTICES

Chapter 7 Design and Implementation

ANDROID PRIVACY & SECURITY GUIDE ANDROID DEVICE SETTINGS

Quantum, a Data Storage Solutions Leader, Delivers Responsive HTML5-Based Documentation Centers Using MadCap Flare

Chapter 9. Software Testing

Disclaimer. This talk vastly over-simplifies things. See notes for full details and resources.

The Pluralistic Usability Walk-Through Method S. Riihiaho Helsinki University of Technology P.O. Box 5400, FIN HUT

OMG Workshop MDA. Tool Chains for MDA? Let's consider leaving our tool chains behind us.

CS 326: Operating Systems. Lecture 1

OPEN THE HOTLINE CLIENT

MARKETING VOL. 4. TITLE: Tips For Designing A Perfect Marketing Message. Author: Iris Carter-Collins

QOS Quality Of Service

Spotfire and Tableau Positioning. Summary

A Design Case Designing with patients and medical professionals

CIS*1500 Introduction to Programming

Transcription:

The Cathedral and the Bazaar This text (including older revisions of it) Described a set of customs among Free Software developers Those customs turned out to be a quite effective development methology Gave the ideological foundation for the Open Source movement Involved in the release of Netscape as free software

I believed that the most important software (operating systems and really large tools like the Emacs programming editor) needed to be built like cathedrals, carefully crafted by individual wizards or small bands of mages working in splendid isolation, with no beta to be released before its time.

Linus Torvalds s style of developmentrelease early and often, delegate everything you can, be open to the point of promiscuitycame as a surprise. No quiet, reverent cathedral-building hererather, the Linux community seemed to resemble a great babbling bazaar of differing agendas and approaches (aptly symbolized by the Linux archive sites, who d take submissions from anyone) out of which a coherent and stable system could seemingly emerge only by a succession of miracles. Linus Torvalds s style of developmentrelease early and often, delegate everything you can, be open to the point of promiscuitycame as a surprise.

1. Every good work of software starts by scratching a developer s personal itch.

2. Good programmers know what to write. Great ones know what to rewrite (and reuse).

constructive laziness

3. Plan to throw one away; you will, anyhow. (Fred Brooks, The Mythical Man- Month, Chapter 11)

4. If you have the right attitude, interesting problems will find you.

5. When you lose interest in a program, your last duty to it is to hand it off to a competent successor.

6. Treating your users as co-developers is your least-hassle route to rapid code improvement and effective debugging. In fact, I think Linus s cleverest and most consequential hack was not the construction of the Linux kernel itself, but rather his invention of the Linux development model.

Example that predates Linux: GNU Emacs Lisp library and Lisp code archives.

7. Release early. Release often. And listen to your customers.

8. Given a large enough beta-tester and co-developer base, almost every problem will be characterized quickly and the fix obvious to someone.

Given enough eyeballs, all bugs are shallow. Linus s law Debugging is parallelizable

Delphi effect The average of many experts are generally more accurate than the estimate of one expert Economy: I, Pencil (Leonard Read, 1958) Wisdom of the crowds

Open-source development breaks this bind, making it far easier for tester and developer to develop a shared representation grounded in the actual source code and to communicate effectively about it.

core developer

Brook s Law: Adding more programmers to a late project makes it later.

Brooks s Law predicts that the complexity and communication costs of a project rise with the square of the number of developers, while work done only rises linearly.

on open-source projects, the halo developers work on what are in effect separable parallel subtasks and interact with each other very little; code changes and bug reports stream through the core group, and only within that small core group do we pay the full Brooksian overhead.

For simple and easily reproducible bugs, then, the accent will be on the semi rather than the random; debugging skill and intimacy with the code and its architecture will matter a lot. But for complex bugs, the accent will be on the random. Under these circumstances many people running traces will be much more effective than a few people running traces sequentiallyeven if the few have a much higher average skill level.

9. Smart data structures and dumb code works a lot better than the other way around.

10. If you treat your beta-testers as if they re your most valuable resource, they will respond by becoming your most valuable resource.

I released early and often (almost never less often than every ten days; during periods of intense development, once a day). I grew my beta list by adding to it everyone who contacted me about fetchmail. I sent chatty announcements to the beta list whenever I released, encouraging people to participate. And I listened to my beta-testers, polling them about design decisions and stroking them whenever they sent in patches and feedback.