1. Succeeding with FOSS!
Make your successful open source software
PHP DevCon 2012 Basis SoftEXPO 2012
2. 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.
3. What is inside?
✓ Introducing FOSS
✓ Getting started
✓ Technical Infrastructure
✓ Social Infrastructure
✓ Managing Volunteers
✓ Money!
✓ Packaging, Releasing, and Daily Development
✓ Licenses, Copyrights, and Patents
4. What is FOSS anyway!
Free and Open Source Software
Now lets break it down
7. Free Vs. Open Source
all 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?
15. Choose a Good Name
Relevant to project
Easy to remember
16. Have a clear mission
statement
The next thing people will look for is a quick
description, a mission statement
Should be on the front page, preferably right
under the project's name
21. 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.
22. Development Status
Alpha and Beta
The term alpha usually means a first 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 fixed, but has not yet been
tested enough to certify for release.
23.
24. Downloads
The software should be downloadable as
source code in standard formats.
Give a unique version number to the release
28. Announcing
go to http://freecode.com/, click on Submit in
the top navigation bar, and fill out a form
announcing your new project.
Post to mailing lists or newsgroups: to direct
people to your project's own forums for follow-
up discussion (by setting the Reply-to header).
31. Website
Pick *.org as official home
Centralized information from the project out
to the public
Bind together the other tools (the version
control system, bug tracker)
34. SCM/ Version Control System
combination of technologies and practices for
tracking and controlling changes to a project's
files, in particular to source code,
documentation, and web pages
If you have never used version control before,
the first thing you should do is go find someone
who has, and get them to join your project.
35. "We see you have expertise to make
commits in a certain domain, so go for it."
"Not only are we asserting a limit on your
expertise, we're also a bit suspicious about
your intentions."
44. 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 fine-grained control over the user experience.
45. 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/
47. forkability
the ability of anyone to take a copy of the
source code and use it to start a competing
project,
Good or Bad?
if fewer than half of the developers are in favor?
49. Benevolent Dictators
The benevolent dictator model is exactly
what it sounds like: final decision-making
authority rests with one person, who, by
virtue of personality and experience, is
expected to use it wisely.
50. Democracy
"Wait, I didn't agree to that. We need to hash
this out some more."
"I assume we all agree that this bug needs to
be fixed, and that this is the way to fix it."
"Time to vote"
54. Getting the Most Out of
Volunteers
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
55. Share Management Tasks
as Well as Technical Tasks
Translation Manager
Documentation Manager
Issue Manager
FAQ Manager
56. 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 fix typos and small bugs a few
times a year, that's still better than having only
the 10. "
60. Corporate funding of free software
development is not a new phenomenon
Sharing the burden
Augmenting services
Example: CollabNet's support of http://subversion.tigris.org/
Undermining a competitor
Example: http://www.openoffice.org/
Marketing - think image, think brand value
Dual-licensing
Example: MySQL and Sleepycat
Donations (donation button, mugs, T-shirts)
Example: www.wikipedia.org
61. Money Can't Buy You
Love
Hey! Mr. Chowdhury! we dont want your so
called company branding in our project
63. Kickstarter
Kickstarter is the world's 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, film, art, technology, design,
food, publishing and other creative fields.
http://www.kickstarter.com/
64. Packaging, Releasing, and
Daily Development
Release Numbering
Release Branches - always use a release branch
Maintaining Multiple Release Lines
67. Choosing a License and
Applying It
The "Do Anything" Licenses
If you're comfortable with your project's 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 don't want your code to be used in proprietary
programs, use the GNU General Public License (http://
www.gnu.org/licenses/gpl.html).
68. Applying a License to
Your Software
You don't 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 file called COPYING (or LICENSE)
69. The GNU GPL says to put a notice
like this at the top of each source file
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/>