The Cathedral and the Bazaar: A Look at Open-Source ECE 417/617: Elements of Software Engineering Stan Birchfield Clemson University.

Slides:



Advertisements
Similar presentations
How Not To Win Friends. Never, Ever, fulfill your commitments. When asked why you missed the date, say I thought the date was later. When pressed say.
Advertisements

Software Testing. Quality is Hard to Pin Down Concise, clear definition is elusive Not easily quantifiable Many things to many people You'll know it when.
Robert Lockyer.
A Lawyer Looks at the Open Source Revolution Robert W. Gomulkiewicz Director, Intellectual Property Law & Policy Program Associate Professor of Law University.
Extreme Programming Alexander Kanavin Lappeenranta University of Technology.
Internet Online Safety How to have FUN and Stay in Control.
SOFTWARE MAINTENANCE 24 March 2013 William W. McMillan.
Open Source and the Bazaar Method. History of Software Development 1944, Harvard and IBM build first computer bundling Hardware and Software together.
OPEN DEVELOPMENT, AGILE, XP AND SCRUM © University of LiverpoolCOMP 319slide 1.
Open Source Projects Manage Themselves? Dream On! (Another take on CatB) Chuck Connell, Tufts Univ.
Applied Software Project Management Andrew Stellman & Jennifer Greenehttp:// Applied Software Project Management Introduction.
March 25, 2002R McFadyen a lightweight approach to software development. about 5 years old has been used at: Bayerische Landesbank, Credit Swiss.
IS 214 Needs Assessment and Evaluation of Information Systems Managing Usability © Copyright 2001 Kevin McBride.
Chapter 1: Key Points Program = Useful to the programmer in the garage Programming Product = Useful to anyone Programming System Component = Part of a.
Lecture 2 Teams Principles What makes a good project Project Definition Project Plan.
Extreme Programming Team Members Gowri Devi Yalamanchi Sandhya Ravi.
CS189A/172 - Winter 2008 Lecture 5: Project Management.
Computer Science 162 Section 1 CS162 Teaching Staff.
3 April Maintenance Reverse Engineering Ethics Cathedral and Bazaar.
VT-NTUG | Jim Hall Building the Bazaar Open Source Software Development.
Applied Software Project Management Andrew Stellman & Jennifer Greene Applied Software Project Management Why Software.
Software Testing. “Software and Cathedrals are much the same: First we build them, then we pray!!!” -Sam Redwine, Jr.
CS 551 People, Process, Product and Project. Tailored OO Application Software Reusable Software Vendor Software User Programs Client Personal Computer.
Applied Software Project Management 1 Introduction Dr. Mengxia Zhu Computer Science Department Southern Illinois University Carbondale.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
13-Jul-15 Effective Programming. “The new US stealth fighter, the F-22 Raptor, was deployed for the first time to Asia earlier this month. On Feb. 11,
CSE350 Software Design and Engineering University of Pennsylvania Office: 254 Moore GRW, Phone: March 19 th, 2002.
U-Mail System Design Specification Joseph Woo, Chris Hacking, Alex Benson, Elliott Conant, Alex Meng, Michael Ratanapintha April 28,
Lessons Learned: The Evolving Nature of Mobile Websites Presented for The New England Chapter of ASIS&T (NEASIS&T) by Edward Iglesias Systems Librarian,
Chapter 9 – Software Evolution and Maintenance
It’s a Beta – What do You Expect? Hal Bryan Software Test Lead Microsoft Corporation.
Open Source Software Development (Adapted from Dr. Kostadin Damevski) Sung Hee Park Department of Mathematics and Computer Science Virginia State University.
Achieving Better Reliability With Software Reliability Engineering Russel D’Souza Russel D’Souza.
1 Agile is Dumb. 2 Look at Moodle List of Essays Get in groups of 4-5 Divide and read the readings in the category “agile is dumb” – About 20 minutes.
Designing in and designing out: strategies for deterring student plagiarism through course and task design Jude Carroll, Oxford Brookes University 22 April.
The Open Source Movement Information Technology and Social Life Apr. 25, 2005.
Painless Bug Tracking Michael Tsai 2011/9/30. Reference  html 2.
ICAPRG301A Week 4Buggy Programming ICAPRG301A Apply introductory programming techniques Program Bugs US Navy Admiral Grace Hopper is often credited with.
How to Contribute to Madagascar and Why Sergey Fomel July 22, 2011 Beijing, China.
Facts and Fallacies of Software Engineering (Rob Glass) CSE301 University of Sunderland Discussed by Harry R. Erwin, PhD.
(A radical interpretation) Tomo Lennox Bow Tie computer services Why Agile Works.
Copyright (c) Cem Kaner. 1 Software Testing 1 CSE 3411 SWE 5411 Assignment #1 Replicate and Edit Bugs.
13-January-2003cse LifeCycle © 2003 University of Washington1 Lifecycle CSE 403, Winter 2003 Software Engineering
Ethics of Software Testing Thomas LaToza CS 210 Final Presentation 12 / 2 / 2002.
From Quality Control to Quality Assurance…and Beyond Alan Page Microsoft.
Jeffrey Murray Test Manager PowerPoint Microsoft Silicon Valley.
Open Source Software Architecture and Design By John Rouda.
Software Construction and Evolution - CSSE 375 Open Source 2 Shawn & Steve.
CSC 395 – Software Engineering Lecture 5: Teams -or- How to Motivate and Manage the Unwashed Masses.
CS 5150 Software Engineering Lecture 3 Software Processes 2.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 16, Methodologies Extreme Programming.
SOFTWARE ENGINEERING MCS-2 LECTURE # 4. PROTOTYPING PROCESS MODEL  A prototype is an early sample, model or release of a product built to test a concept.
Viruses For… What is a virus? A virus, affects your computer and damages its software. It can affect your computer, and some viruses can damage your.
Why you can’t always have what you want Simon Hutchinson – Reckon Product Management.
AP-1 4. Agile Processes. AP-2 Agile Processes Focus on creating a working system Different attitude on measuring progress XP Scrum.
8 February 2000Manuel Delfino / CERN IT Division / CHEP 2000 A3971 Can HEP benefit from Open Source ? Manuel Delfino* European Organization for Nuclear.
SSGRR 2001 Developing Open Source Software SSGRR 2001 Jim Hall, Founder, coordinator The FreeDOS Project.
CS 5150 Software Engineering Lecture 2 Software Processes 1.
WATERFALL DEVELOPMENT MODEL. Waterfall model is LINEAR development lifecycle. This means each phase must be completed before moving onto the next!!! WHAT.
Chapter 9 – Software Evolution 1Chapter 9 Software evolution.
Unlocking the Community Toolchest Tony Atkins UHI Millenium Institute.
The Power of YET! The power of believing that you can improve. So when you can’t do something now – it is a can’t do it ‘YET’!
EXtreme Programming and Open Source engineering paradigm A comparison
Version Control and SVN ECE 297. Why Do We Need Version Control?
Refactoring: Improving the Design of Existing Code.
Extreme programming (XP) Advanced Software Engineering Dr Nuha El-Khalili.
Methodologies By Akinola Soyinka.
Extreme Programming.
What do you need to know about XP?
Presentation transcript:

The Cathedral and the Bazaar: A Look at Open-Source ECE 417/617: Elements of Software Engineering Stan Birchfield Clemson University

Two ways to develop Software Cathedral Well-organized, full- time development team Followed by corporate teams Bazaar Loosely-organized, volunteer “hackers” [Eric Raymond, “The cathedral and the bazaar”, 1999] Can it work?

Fetchmail story Need: access mail from stand-alone computer that’s not always on-line Can’t simply forward POP3 server available, need POP3 client Obvious feature missing from existing clients: replying to from stand- alone computer (need to tack on end of address)

Initial motivation “Every good work of software starts by scratching a developer’s personal itch” “Necessity is the mother of invention”

Don’t reinvent the wheel “Good programmers know what to write. Great ones know what to rewrite (and reuse).” 9 existing programs were close Selected ‘fetchpop’ first Linus Torvalds started, not from scratch, but with Minix

Never fear refactoring “Plan to throw one away; you will, anyhow.” – Brooks ‘popclient’ by Carl Harris was more cleanly written, but lacked some key, difficult-to-implement features Stay or switch?

Be kind and share “When you lose interest in a program, your last duty is to hand it off to a competent successor.” Carl Harris handed ‘popclient’ code to Eric Raymond

Users as developers “Treating your users as co-developers is your least-hassle route to rapid code improvement and effective debugging” Power was underestimated until Linux “I’m basically a very lazy person who likes to get credit for things other people actually do” – Linus Torvalds

Release early, release often Cathedral: –Release often  buggy code  alienate users Bazaar: –Release often  motivate developers  maximize development time

Linus’ Law Linus’ Law: “Given enough eyeballs, all bugs are shallow.” “Given a large enough beta-tester and co-developer base, almost every problem will be characterized quickly and the fix obvious to someone.” “Debugging is parallelizable.” Cathedral: bugs are tricky, insidious, deep; takes months of scrutiny by dedicated few to develop confidence that they’re all found; inevitable disappointment when bugs appear in final release Bazaar: bugs appear quickly with thousands of co-developers; less to lose when bugs appear “Delphi effect” – averaged opinion of a mass of observers (equally expert or ignorant) is more reliable than opinion of random observer [sociologists] Release early and often minimizes theoretical loss of efficiency due to duplication of effort by debuggers

Importance of data structures Which is more important, clean code or clean data structures? “Smart data structures and dumb code works a lot better than the other way around.” “Show me your [code] and conceal your [data structures], and I shall continue to be mystified. Show me your [data structures], and I won’t usually need your [code]; it’ll be obvious.” – Brooks

Imitating Linux How did Raymonds imitate Linux? –Releasing early and often –Grew beta list by adding everyone who contacted him – ed beta list, encouraging people to participate –Listened to beta testers, polling them about design decisions and encouraging them when they sent patches and feedback Received bug reports, fixes, thoughtful criticism, feature suggestions,... “If you treat your beta-testers as if they’re your most valuable resource, they will respond by becoming your most valuable resource.”

Strive for simplicity ‘fetchmail’ was more complicated than it needed to be Late in the project, Raymond threw away a bulk of the code Result? Simpler manual, simpler setup, simpler configuration No lost functionality “Perfection (in design) is achieved not when there is nothing more to add, but rather when there is nothing more to take away.” – Antoine de Saint-Exupery When code is getting better and simpler, you know you’re right