KEMBAR78
Succeeding with FOSS! | PDF
Succeeding with FOSS!
         Make your successful open source software




PHP 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 Software


Now lets break it down
the "free software" sense

What do you think about the term ‘Free’?
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?
“free as in freedom” – Stallman
Got Some Freaking Ideas!!!




 How to get started?
Getting Started
Hell yeah! Getting started
The hardest part about launching a free
software project is transforming a private
vision into a public one
How?
Choose a Good Name
 Relevant to project
 Easy to remember
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
Is that free?
State That the Project is
Free

 Like GIT did…
Features and Requirements List
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 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.
Downloads

 The software should be downloadable as
 source code in standard formats.


 Give a unique version number to the release
Communications Channels

 Forums, mailing lists, chat rooms, and IRC
 channels
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).
Announcing
Technical issues
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)
Mailing Lists
 Reply-to: discuss@lists.example.org
Tools
 Mailman — http://www.list.org/
 PHPList - http://www.phplist.com/
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.
"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."
Version everything
Allow Committers
Browsability
Use branches to avoid bottlenecks
Code review
Change Log
Version Control Means You Can Relax
Tools

GIT (Distributed) - http://www.git-scm.org


Subversion (Centralized) - http://subversion.tigris.org/
Bug Tracker

 The tracker must be connected to a mailing
 list
Tools
 Redmine — http://www.redmine.org/
 Bugzilla — http://www.bugzilla.org/
 Flyspray — http://www.flyspray.org/
 Trac — http://trac.edgewall.com/
RSS Feeds
 Spread your updates
Wikis
 A wiki is a web site that allows any visitor to
 edit or extend its content;


 "wiki" (from a Hawaiian word meaning
 "quick" or "super-fast")
Tools
 MediaWiki - http://www.mediawiki.org
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.
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/
Get your codes into
social & political issues
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?
Benevolent Dictators
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.
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"
Democracy
Angel Volunteers
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
Share Management Tasks
as 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 fix typos and small bugs a few
 times a year, that's still better than having only
 the 10. "
Credit

Credit is the primary
currency of
the free software world
Money! earnings or
spendings
why open source
projects get funded?
 Everybody likes a prime idea
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
Money Can't Buy You
Love
 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 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/
Packaging, Releasing, and
Daily Development
 Release Numbering
 Release Branches - always use a release branch
 Maintaining Multiple Release Lines
Licenses, Copyrights,
and Patents
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).
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)
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/>
Dual Licensing Schemes


Patents
Who am i?
 m a hossain tonu




 http://mahtonu.wordpress.com
 @mahtonu
Writing a Book
coming this march
i dont have any licensing issues with these
slides, cool!


Thanks :)


questions?
Reference




Producing Open Source Software - Karl Fogel
http://www.producingoss.com/

Succeeding with FOSS!

  • 1.
    Succeeding with FOSS! Make your successful open source software PHP DevCon 2012 Basis SoftEXPO 2012
  • 2.
    For whom isthis? 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 FOSSanyway! Free and Open Source Software Now lets break it down
  • 6.
    the "free software"sense What do you think about the term ‘Free’?
  • 7.
    Free Vs. OpenSource 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?
  • 8.
    “free as infreedom” – Stallman
  • 10.
    Got Some FreakingIdeas!!! How to get started?
  • 11.
  • 12.
  • 13.
    The hardest partabout launching a free software project is transforming a private vision into a public one
  • 14.
  • 15.
    Choose a GoodName Relevant to project Easy to remember
  • 16.
    Have a clearmission 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
  • 17.
  • 19.
    State That theProject is Free Like GIT did…
  • 20.
  • 21.
    Development Status Peoplealways 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 Alphaand 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.
  • 24.
    Downloads The softwareshould be downloadable as source code in standard formats. Give a unique version number to the release
  • 27.
    Communications Channels Forums,mailing lists, chat rooms, and IRC channels
  • 28.
    Announcing go tohttp://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).
  • 29.
  • 30.
  • 31.
    Website Pick *.orgas official home Centralized information from the project out to the public Bind together the other tools (the version control system, bug tracker)
  • 32.
    Mailing Lists Reply-to:discuss@lists.example.org
  • 33.
  • 34.
    SCM/ Version ControlSystem 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 youhave 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."
  • 36.
    Version everything Allow Committers Browsability Usebranches to avoid bottlenecks Code review Change Log
  • 37.
    Version Control MeansYou Can Relax
  • 38.
    Tools GIT (Distributed) -http://www.git-scm.org Subversion (Centralized) - http://subversion.tigris.org/
  • 39.
    Bug Tracker Thetracker must be connected to a mailing list
  • 40.
    Tools Redmine — http://www.redmine.org/ Bugzilla — http://www.bugzilla.org/ Flyspray — http://www.flyspray.org/ Trac — http://trac.edgewall.com/
  • 41.
    RSS Feeds Spreadyour updates
  • 42.
    Wikis A wikiis a web site that allows any visitor to edit or extend its content; "wiki" (from a Hawaiian word meaning "quick" or "super-fast")
  • 43.
    Tools MediaWiki -http://www.mediawiki.org
  • 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/
  • 46.
    Get your codesinto social & political issues
  • 47.
    forkability the abilityof 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?
  • 48.
  • 49.
    Benevolent Dictators Thebenevolent 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, Ididn'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"
  • 51.
  • 52.
  • 54.
    Getting the MostOut 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 asWell as Technical Tasks Translation Manager Documentation Manager Issue Manager FAQ Manager
  • 56.
    Committers, who? willbring 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. "
  • 57.
    Credit Credit is theprimary currency of the free software world
  • 58.
  • 59.
    why open source projectsget funded? Everybody likes a prime idea
  • 60.
    Corporate funding offree 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 BuyYou Love Hey! Mr. Chowdhury! we dont want your so called company branding in our project
  • 62.
    Google Summer ofCode For students: http://code.google.com/soc/
  • 63.
    Kickstarter Kickstarter isthe 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 DailyDevelopment Release Numbering Release Branches - always use a release branch Maintaining Multiple Release Lines
  • 66.
  • 67.
    Choosing a Licenseand 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 Licenseto 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 GPLsays 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/>
  • 70.
  • 71.
    Who am i? m a hossain tonu http://mahtonu.wordpress.com @mahtonu
  • 72.
  • 73.
    i dont haveany licensing issues with these slides, cool! Thanks :) questions?
  • 74.
    Reference Producing Open SourceSoftware - Karl Fogel http://www.producingoss.com/