Succeeding with FOSS! Make your successful open source softwarePHP DevCon 2012 Basis SoftEXPO 2012
For whom is this?software developers and managers who are considering starting an open source project, or who have started one and are wondering what to do now.
What is inside?✓ Introducing FOSS✓ Getting started✓ Technical Infrastructure✓ Social Infrastructure✓ Managing Volunteers✓ Money!✓ Packaging, Releasing, and Daily Development✓ Licenses, Copyrights, and Patents
What is FOSS anyway!Free and Open Source SoftwareNow lets break it down
the "free software" senseWhat do you think about the term ‘Free’?
Free Vs. Open Sourceall free software is zero-cost, but not all zero- cost software is free- Able to get the source code?- Have the right to modify or redistribute it?
Development Status People always want to know how a project is doing they want to know how actively it is maintained, how often it puts out new releases, how responsive it is likely to be to bug reports, etc.
Development Status Alpha and Beta The term alpha usually means a ﬁrst release, with which users can get real work done and which has all the intended functionality, but which also has known bugs. The main purpose of alpha software is to generate feedback, so the developers know what to work on. The next stage, beta, means the software has had all the serious bugs ﬁxed, but has not yet been tested enough to certify for release.
Downloads The software should be downloadable as source code in standard formats. Give a unique version number to the release
Announcing go to http://freecode.com/, click on Submit in the top navigation bar, and ﬁll out a form announcing your new project. Post to mailing lists or newsgroups: to direct people to your projects own forums for follow- up discussion (by setting the Reply-to header).
SCM/ Version Control System combination of technologies and practices for tracking and controlling changes to a projects ﬁles, in particular to source code, documentation, and web pages If you have never used version control before, the ﬁrst thing you should do is go ﬁnd someone who has, and get them to join your project.
"We see you have expertise to makecommits in a certain domain, so go for it.""Not only are we asserting a limit on yourexpertise, were also a bit suspicious aboutyour intentions."
Version everythingAllow CommittersBrowsabilityUse branches to avoid bottlenecksCode reviewChange Log
Free Hosting! yummy There are a few sites that provide free hosting and infrastructure for open source projects: a web area, version control, a bug tracker, a download area, chat forums, regular backups, etc. you get a lot for free; what you give up, obviously, is ﬁne-grained control over the user experience.
Tools GitHub (Git)- http://github.com/ Google Code Hosting (Subversion and Mercurial ) http://code.google.com/hosting/ BitBucket (Git and Mercurial: integrates with JIRA, Jenkins, Pivotal Tracker) - https://bitbucket.org Springloops (Git, SVN) - http:// www.springloops.com/v2/
Benevolent Dictators The benevolent dictator model is exactly what it sounds like: ﬁnal decision-making authority rests with one person, who, by virtue of personality and experience, is expected to use it wisely.
Democracy "Wait, I didnt agree to that. We need to hash this out some more." "I assume we all agree that this bug needs to be ﬁxed, and that this is the way to ﬁx it." "Time to vote"
Getting the Most Out ofVolunteers Why do volunteers work on free software projects? " hey! you do this Vs. who can do this?" "Would you be willing to look at this bug?" "Follow up" Use "Praise & Criticism" Use "Automation" i.e. testing
Share Management Tasksas Well as Technical Tasks Translation Manager Documentation Manager Issue Manager FAQ Manager
Committers, who? will bring the best results for the code? "If you have 100 committers, 10 of whom make large changes on a regular basis, and the other 90 of whom just ﬁx typos and small bugs a few times a year, thats still better than having only the 10. "
CreditCredit is the primarycurrency ofthe free software world
why open sourceprojects get funded? Everybody likes a prime idea
Corporate funding of free softwaredevelopment is not a new phenomenon Sharing the burden Augmenting services Example: CollabNets support of http://subversion.tigris.org/ Undermining a competitor Example: http://www.openofﬁce.org/ Marketing - think image, think brand value Dual-licensing Example: MySQL and Sleepycat Donations (donation button, mugs, T-shirts) Example: www.wikipedia.org
Money Cant Buy YouLove Hey! Mr. Chowdhury! we dont want your so called company branding in our project
Google Summer of Code For students: http://code.google.com/soc/
Kickstarter Kickstarter is the worlds largest funding platform for creative projects. Every week, tens of thousands of amazing people pledge millions of dollars to projects from the worlds of music, ﬁlm, art, technology, design, food, publishing and other creative ﬁelds. http://www.kickstarter.com/
Packaging, Releasing, andDaily Development Release Numbering Release Branches - always use a release branch Maintaining Multiple Release Lines
Choosing a License andApplying It The "Do Anything" Licenses If youre comfortable with your projects code potentially being used in proprietary programs, then use an MIT/X-style license (http://www.opensource.org/licenses/mit-license.php) The GPL If you dont want your code to be used in proprietary programs, use the GNU General Public License (http:// www.gnu.org/licenses/gpl.html).
Applying a License toYour Software You dont need to include the actual text of the license there; just give the name of the license, and make it link to the full license text on another page. The software itself must contain the license The standard way to do this is to put the full license text in a ﬁle called COPYING (or LICENSE)
The GNU GPL says to put a noticelike this at the top of each source ﬁle Copyright (C) <year> <name of author> This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>