Open Source Development Ely Levy Yair Yarom
Outline (I) Background Free Software definitions The 4 freedoms Open Source Definition (OSD) Licenses General BSD, MIT, GPL, LGPL Patents and Standards
Outline (II) Project Management Working Together Recruiting Volunteers Why does open source work? Universities Programmers Governments Companies
Outline (III) Advantages and Disadvantages Examples Mozilla Apache Demo Source forge Freshmeat
Background (I) hacker communities '60-'70 '74 First Unix system at Berkeley. '84 Richard M. Stallman starts GNU '85 The beginning of FSF '89 Net/1 first open source BSD '91 Net/2 now the utilities were BSD licensed as well. '91 Linus Torvalds starts working on Linux
Background (II) '92 USL vs BSDi lawsuit Injection to stop distributing NET/2 Slowing development for 2 years In the end only 3 lines of code were removed Encourage people to try out Linux By then some big open source projects exists e.g. Xorg, Perl etc. '97 Eric Steven Raymond wrote his The Cathedral and the Bazaar
Background (III) The gnu project tools and compiler Linux kernel OSTG (Sourceforge, slashdot, freshmeat) Companies Linux distributions (Redhat, Novell, Suse,...) Hardware companies (Intel, Cisco, Sony,...) Others (IBM, Sun, Mysql and many more...) Non Companies BSD distributions Apache, gnome, kde, mozilla, samba,...
Free Software Free as in free speech not as in free beer Freedoms (as defined by the FSF): 0) Run the program, for any purpose 1) Study how it works, adapt to your needs 2) Redistribute copies to help your neighbor 3) Improve and Release to the public
Open Source Initiative (I) Open Source Definition: Free Redistribution Source Code Derived Work Integrity of The Author's Source Code No Discrimination Against Persons or Groups
Open Source Initiative (II) No Discrimination Against Fields of Endeavor Distribution of License License Must Not Be Specific to a Product License Must Not Restrict Other Software License Must Be Technology Neutral
Licenses OSI gives license approval for open source licenses. There are many open source licenses There are over 50 licenses in osi's site at the moment Some of them are not compatible with each other Causes confusion We'll go over the main three types.
Licenses - BSD/MIT Very simple licenses Allows you to do whatever you want with the code Beside, of course, claiming it as your own. Had an advertising clause which was removed later on There are few similar licenses like X11, and freebsd, but they mostly say the same
Licenses - GPL GNU General Public License Copyleft license Redistributes can't add additional restrictions Preserve freedom Not allowed to distributed changes without the source code. All derivative work must be GPL-ed e.g Linking/Inheriting/Plugins
Licenses - LGPL GNU Lesser General Public License Came to solve the linking problem against GPL-ed dynamic libraries (specifically glibc) You are allowed to link against LGPL library no matter what license you use as long as it allows reverse engineering of the program This applies also to Plugins and modules Same as GPL (compatible)
Licenses - GPL/LGPL Disadvantages: Considered complicated I'm a programmer Jim, not a lawyer Hard to integrate with other licenses Lots of loose ends Lacking clear handling of software patents Bad international support Web services loop hole GPLv3 will solve some of those
Patents and Standards Software patents are many Hard to be avoided Some licenses deal with that Not all countries have the same patent laws Open standards are very important Allow better integration between systems You are not depended on one platform Companies use them to prevent open source implementation
Project Management Treat users well Potential co-developers Help in locating and fixing of bugs Listen and incorporate their (great) ideas Perfection (in design) is achieved not when there is nothing more to add, but rather when there is nothing more to take away." Release Early, Release Often Increase the feedback from your users
Working Together Useful tools Version Control (CVS, SVN, Arch,...) Bug Tracking (Bugzilla,...) API documentation (Doxygen,...) Sharing information (Wiki) Contact (Forums, Mailing lists,...) Using CMS (Content management system)
Working Together - VCS Version control system A lot of people working on the same code Accessible Repository Access control and permission locks Working on the same files Saves history (change log, tracking bugs) Working on local copies Branches, easy merging. Reverting changes Use diff to make patches
Working Together BTS Bug Tracking system Allows users to easily report bugs Reduce duplicate bug reports Allows coders to track bugs status Discussing the bug Attaching patches for testing Save bug tracking history Extra features Voting on bugs Hiding security bugs until disclosed
Working Together API docs Share API between developers Especially important with libraries Programmers doesn't like writing documentation We want automatic tool Object oriented Interaction between classes UML Good but Complicated
Working Together Sharing info Mailing list Good way to communicate between developers (CVS Watch,archive) Wiki Everyone can edit Writing documentation for the project Useful also for tutorial and FAQs Communicating with users Forums Has history, easier to use than mailing list
Working Together - CMS Content management system We need to set up so many things One system provides them all Easy to manage Allows global login to all sections Unified look and feel Various companies offer hosting for new projects
Recruiting Volunteers (I) Project vision Keep it short If people don t know where the project is going they won t know how to help it get there Tasks and jobs Goals and subgoals (know where to go, and have an idea how to get there) Helpful description: why, where, when, who, what, how
Recruiting Volunteers (II) Attracting others to join in Think about their perspective Contributing to the community Need experience Want their name to appear in the project Describe jobs according to the volunteers perspective Bounties Clear and cheaper than hiring Getting new people interested
Why does open source work? (I) Universities write open source Show that your algorithm work Gain community help for complicated but interesting projects (i.e BSD) Easier to attract and get companies donation Good advertisement Programmers gain experience They contribute to project they like Easy to show to your new employer
Why does open source work? (II) Governments Do you trust another country with your critical info? Keep jobs in country, feed the economy Easier to localize to fit your own country You can check and see how secure the software is Created from tax payer money why shouldn't they be able to see the code? Public eye (Electronic voting,...)
Why does open source work? (III) Open source companies You can be paid for optimization (reiserfs, mysql) Selling solutions for other companies (IBM) Packing and QA Configuring the system Offering bug fixes/features for 3 rd party software Providing support for end users (Novell, redhat, ubuntu) Web services (google, zimbra)
Why does open source work? (IV) Hardware companies help with driver development Not many companies do that because of NDA Easy to port open source systems to new platforms (i.e cell) Sell cheaper hardware Save on licensing Save on development Done by many companies in the embedded market (Cisco, Nortel, Sony,...)
Open Source Advantages (I) Community work User participate in bug report and features More developers can join in Code reuse Base yourself on an existing project Existing libraries You are not depended on one company Companies goes bankrupt 3 rd party supporters can see the code
Open Source Advantages (II) Highly customizable Get your home programmer to customize the software to your needs You can port it to your favorite platform Multinational support Users help out in translating the program 3 rd party code patches Security (Sometimes)
Open Source Pitfalls I would RTFM if there was a FM to FR It's more fun to program than to write docs Who wants to work on my project? Setting a developer/user community Getting support for the project Code reuse abuse Hey, it's my project... More than just programmers Graphic designers, Usability teams...
Mozilla Browser Wars '98 Netscape communicator free, and open source Big boost to the open source community Didn't want Microsoft Internet Explorer to set the future internet standards
Mozilla.org Overseen by the mozilla foundation. Supervisors, organizers, maintainers Not the coders Stop the source from branching to thousands of different descendants Module owners Benevolent Dictator Many projects Firefox, Thunderbird, Bugzilla,...
Apache (I) Apache Foundation Non profit corporation Started as the Apache Group '95 Organizational, legal, and financial support Apache projects HTTP server Ant Jakarta (Tomcat) Beehive
Apache (II) Membership Show commitment to the project Need to be approved by the majority of existing ASF members All members owns the apache codes
Demo Project - SourceForge SourceForge (sourceforge.net) Provides tools for managing projects CMS CVS Bug report Mailing list Forums etc. over 1,000,000 users over 100,000 projects
Demo Project - FreshMeat Freshmeat (freshmeat.net) Largest index of UNIX (and XP) software including themes, palm OS software, etc. Comment board Articles Technical support Statistics
Demo Project How to Write a project (optional) Find a license (open source) Create a sourceforge account register the project upload the source Create a freshmeat account register the project
SourceForge Open Account Opening account Main page create account Read some legal stuff (Terms of use, private policy) Confirm by email Complete registration First login true identity
SourceForge Register Project Registering project UNIX name Must be Open source (OSD) Legal stuff Categorization license audience development status topic programming language operating system user interface translations database
SourceForge Register Project Registration (cont.) Short public project description Long project description for the reviewers Public project name confirmation wait for up to 2 business days
Freshmeat Simpler registration Fill the form Submit the project Fill another (longer) form