open source intro for startups
DESCRIPTION
A general introduction to open source delivered for the Hong Kong Startup Association.TRANSCRIPT
Making Open Source WorkJ Aaron Farr
HKSUA FOR
YOU!
Me
Aaron馮傑仁
farra @ apache . org
DirectorApache Software
Foundation
Co-Founder
���� �����!"
Hong Kong
You
Free & Open Source Software
Licenses
Community
Code
Relevance
The argument has been won. It is now generally accepted that the future will involve a
blend of both proprietary and open-source software.
- "Unlocking the cloud”, The Economist, 28 May 2009
http://www.economist.com/opinion/displayStory.cfm?story_id=13740181
It’s “impossible to avoid”- Garner 2007 Study
- Open source impossible to avoid, Gartner says”, Network World
http://www.networkworld.com/news/2007/092007-open-source-unavoidable.html
By 2011, 80% of all commercial software
will contain open source code.
- Open source impossible to avoid, Gartner says”, Network World
http://www.networkworld.com/news/2007/092007-open-source-unavoidable.html
Commercial Support
Commercial Support
• IBM
• Sun
• Intel
• Apple
• HP
• Dell
• Novell
• Oracle
• Motorola
• Yahoo
•
Commercial Support
• IBM
• Sun
• Intel
• Apple
• HP
• Dell
• Novell
• Oracle
• Motorola
• Yahoo
• Microsoft
`
SourceForge
180,000+
What is Open Source?
Open Source describes a software license that
ensures certain freedoms.
• Free Distribution
• Source Code
• Integrity of Author’s Code
• No Discrimination
• Distribution of License
• Not specific to a product
• Not restrict other software
• Technology Neutral
Open Source Definition
Free Software Definition
• run the program, for any purpose
• study how the program works, and adapt it to your needs
• redistribute copies so you can help your neighbor
• improve the program, and release your improvements to the public, so that the whole community benefits
Free
自由免費
自由免費
Who’s freedom?What freedom?
Free vs Open Source
FREE SOFTWARE
• Freedom of the code
• Source code will ALWAYS be available and can never be restricted.
OPEN SOURCE
• Freedom of the developer
• Code CAN be included in proprietary works, sealing the code off
Licenses
Academic Free LicenseAdaptive Public LicenseApache Software LicenseApache License, 2.0Apple Public Source LicenseArtistic licenseArtistic license 2.0Attribution Assurance LicensesNew BSD licenseComputer Associates Trusted Open Source License 1.1Common Development and Distribution LicenseCommon Public Attribution License 1.0 (CPAL)Common Public License 1.0CUA Office Public License Version 1.0EU DataGrid Software LicenseEclipse Public LicenseEducational Community License, Version 2.0Eiffel Forum LicenseEiffel Forum License V2.0Entessa Public LicenseFair LicenseFrameworx LicenseGNU General Public License (GPL)GNU General Public License version 3.0 (GPLv3)GNU Library or "Lesser" General Public License (LGPL)GNU Library or "Lesser" General Public License version 3.0 (LGPLv3)Historical Permission Notice and DisclaimerIBM Public LicenseIntel Open Source LicenseJabber Open Source LicenseLucent Public License (Plan9)Lucent Public License Version 1.02
Microsoft Public License (Ms-PL)Microsoft Reciprocal License (Ms-RL)MIT licenseMITRE Collaborative Virtual Workspace License (CVW License)Motosoto LicenseMozilla Public License 1.0 (MPL)Mozilla Public License 1.1 (MPL)NASA Open Source Agreement 1.3Naumen Public LicenseNethack General Public LicenseNokia Open Source LicenseOCLC Research Public License 2.0Open Group Test Suite LicenseOpen Software LicensePHP LicensePython license (CNRI Python License)Python Software Foundation LicenseQt Public License (QPL)RealNetworks Public Source License V1.0Reciprocal Public LicenseRicoh Source Code Public LicenseSleepycat LicenseSun Industry Standards Source License (SISSL)Sun Public LicenseSybase Open Watcom Public License 1.0University of Illinois/NCSA Open Source LicenseVovida Software License v. 1.0W3C LicensewxWindows Library LicenseX.Net LicenseZope Public Licensezlib/libpng license
OSI ApprovedAcademic Free LicenseAdaptive Public LicenseApache Software LicenseApache License, 2.0Apple Public Source LicenseArtistic licenseArtistic license 2.0Attribution Assurance LicensesNew BSD licenseComputer Associates Trusted Open Source License 1.1Common Development and Distribution LicenseCommon Public Attribution License 1.0 (CPAL)Common Public License 1.0CUA Office Public License Version 1.0EU DataGrid Software LicenseEclipse Public LicenseEducational Community License, Version 2.0Eiffel Forum LicenseEiffel Forum License V2.0Entessa Public LicenseFair LicenseFrameworx LicenseGNU General Public License (GPL)GNU General Public License version 3.0 (GPLv3)GNU Library or "Lesser" General Public License (LGPL)GNU Library or "Lesser" General Public License version 3.0 (LGPLv3)Historical Permission Notice and DisclaimerIBM Public LicenseIntel Open Source LicenseJabber Open Source LicenseLucent Public License (Plan9)Lucent Public License Version 1.02
Microsoft Public License (Ms-PL)Microsoft Reciprocal License (Ms-RL)MIT licenseMITRE Collaborative Virtual Workspace License (CVW License)Motosoto LicenseMozilla Public License 1.0 (MPL)Mozilla Public License 1.1 (MPL)NASA Open Source Agreement 1.3Naumen Public LicenseNethack General Public LicenseNokia Open Source LicenseOCLC Research Public License 2.0Open Group Test Suite LicenseOpen Software LicensePHP LicensePython license (CNRI Python License)Python Software Foundation LicenseQt Public License (QPL)RealNetworks Public Source License V1.0Reciprocal Public LicenseRicoh Source Code Public LicenseSleepycat LicenseSun Industry Standards Source License (SISSL)Sun Public LicenseSybase Open Watcom Public License 1.0University of Illinois/NCSA Open Source LicenseVovida Software License v. 1.0W3C LicensewxWindows Library LicenseX.Net LicenseZope Public Licensezlib/libpng license
Academic Free LicenseAdaptive Public LicenseApache Software LicenseApache License, 2.0Apple Public Source LicenseArtistic licenseArtistic license 2.0Attribution Assurance LicensesNew BSD licenseComputer Associates Trusted Open Source License 1.1Common Development and Distribution LicenseCommon Public Attribution License 1.0 (CPAL)Common Public License 1.0CUA Office Public License Version 1.0EU DataGrid Software LicenseEclipse Public LicenseEducational Community License, Version 2.0Eiffel Forum LicenseEiffel Forum License V2.0Entessa Public LicenseFair LicenseFrameworx LicenseGNU General Public License (GPL)GNU General Public License version 3.0 (GPLv3)GNU Library or "Lesser" General Public License (LGPL)GNU Library or "Lesser" General Public License version 3.0 (LGPLv3)Historical Permission Notice and DisclaimerIBM Public LicenseIntel Open Source LicenseJabber Open Source LicenseLucent Public License (Plan9)Lucent Public License Version 1.02
Microsoft Public License (Ms-PL)Microsoft Reciprocal License (Ms-RL)MIT licenseMITRE Collaborative Virtual Workspace License (CVW License)Motosoto LicenseMozilla Public License 1.0 (MPL)Mozilla Public License 1.1 (MPL)NASA Open Source Agreement 1.3Naumen Public LicenseNethack General Public LicenseNokia Open Source LicenseOCLC Research Public License 2.0Open Group Test Suite LicenseOpen Software LicensePHP LicensePython license (CNRI Python License)Python Software Foundation LicenseQt Public License (QPL)RealNetworks Public Source License V1.0Reciprocal Public LicenseRicoh Source Code Public LicenseSleepycat LicenseSun Industry Standards Source License (SISSL)Sun Public LicenseSybase Open Watcom Public License 1.0University of Illinois/NCSA Open Source LicenseVovida Software License v. 1.0W3C LicensewxWindows Library LicenseX.Net LicenseZope Public Licensezlib/libpng license
OSI Approved
67
3 Kinds
Give Me CreditGive Me Code
Give Me Everything
- Dave Johnsonhttp://rollerweblogger.org/page/roller?entry=gimme_credit_gimme_fixes_gimmem
Give Me Credit
• Software “Commons”
• Derivative works can re-license
• May have some conditions
• No warranty
• Credit to original authors
• Apache License, BSD, MIT
Give Me Code
• File or derivative based conditions
• Original author may have special rights
• Differentiate between source and binary
• Larger works may be re-licensed
• LGPL, Mozilla (MPL), Eclipse (EPL/CPL)
Give Me Everything
• Copyleft
• Share and Share Alike
• Derivative works remain under original license
• GPL
License ScopeVirus Index
License Scope
AL MPL GPL
Virus Index
Can I Relicense?
AL MPL GPL
Can I Relicense?
AL MPL GPL
Can I Relicense?
AL MPL GPL
Can I Relicense?
AL MPL GPL
Can I Relicense?
AL MPL GPL
Can I Relicense?
AL MPL GPL
Can I Relicense?
AL MPL GPL
Can I Relicense?
AL MPL GPL
Can I Relicense?
AL MPL GPL
Why is that important?
Most developers don’t read licenses.
Open source developers need to be aware of the licenses
they use.
The right license depends on the code and the community.
Licenses encourage certain behaviors, discourage others.
community
Cathedral vs Bazaar
Cathedral
Cathedral
Bazaar
Bazaar
Community Culture
Cathedral Bazaar
Community Culture
Cathedral Bazaar
Who
Users Developers
Contributors
Path to Contribution
Developer
Contributor
User
Public
Involvement
Decisions in Apache
Decisions in Apache
• Email discussion
Decisions in Apache
• Email discussion
• Proposal on the wiki
Decisions in Apache
• Email discussion
• Proposal on the wiki
• More email
Decisions in Apache
• Email discussion
• Proposal on the wiki
• More email
• If necessary, vote
Decisions in Apache
• Email discussion
• Proposal on the wiki
• More email
• If necessary, vote
• Can veto a technical change
Decisions in Apache
• Email discussion
• Proposal on the wiki
• More email
• If necessary, vote
• Can veto a technical change
• Did I mention email?
Apache Voting
• Usually limited to
• Releases
• Inviting a new committer
• If you have to resort to votes often, something is wrong
Commit Bits
• When? It depends.
• In Apache, when contributor shows consistent commitment
• The ASF averages 15 new committers a month, but most of that is through new projects entering.
• Many projects only add 2 committers a year
A Note on Size
• Most developer communities are small
• Even with large developers, most of the development is usually by a small number of developers
• Apache requires minimum of 3 independent votes for a release
Apache’s Long Tail
!"#$%&'()*+,,,*-!./*0"*12*#314&5(26*&7*8%"9226&7'5*":*;!<=>+,,,*
* ?*@*?*
A325)&"75* B1"3)* ("C* -#B9(2* 62D24"#E27)* CB5* "%'B7&F26G*
B76* #%"D&625* 25527)&B4* 1B9H'%"376* :"%* 3762%5)B76&7'* "3%*
A3B7)&)B)&D2*%2534)5/**;7*)(2*72I)*529)&"7G*C2*)BH2*B*94"52%*4""H*
B)* )(2*6&5)%&13)&"7*":*62D24"#E27)G*62:29)* %2#B&%G*B76* )25)&7'*
C"%H* &7*)(2*-#B9(2*#%"J29)G*B5*C244*B5*)(2*9"62*B76*#%"9255*
:%"E*)(2*#"&7)*":*D&2C*":*935)"E2%*9"792%75/*
!" #$%&'('%'()*"+*,$-',"
;7* )(&5* 529)&"7* C2* #%2527)* %2534)5* :%"E* 52D2%B4* A3B7)&)B)&D2*
B7B4$525*":*)(2*B%9(&DB4*6B)B*:%"E*)(2*-8-!K=*#%"J29)/*0(2*
E2B53%25* C2* 62%&D2* :%"E* )(252* 6B)B* B%2* C244?53&)26* )"*
B66%255* "3%* %252B%9(* A325)&"75* L+MN* ("C2D2%G* )(2$* EB$* 12*
37:BE&4&B%* )"* EB7$* %2B62%5* 5&792* )(2$* B%2* 7")* 5":)CB%2*
E2)%&95* )(B)*B%2* &7*C&62*352G*2/'/G* LOGPM/* *Q"%*)(&5*%2B5"7G*C2*
#%"D&62* 6B)B* :%"E* 52D2%B4* 9"EE2%9&B4* #%"J29)5G* )"* '&D2* )(2*
%2B62%* 5"E2* 52752* ":* C(B)* H&765* ":* %2534)5* E&'()* 12*
2I#29)26/* *-4)("3'(*C2* #&9H26* 52D2%B4* 9"EE2%9&B4* #%"J29)5*
)(B)* B%2* %2B5"7B14$* 94"52* )"* -8-!K=G* 7"72* &5* B* #2%:29)*
EB)9(G* B76* )(2* %2B62%* 5("346* 7")* &7:2%* )(B)* )(2* DB%&B)&"7*
12)C227* )(252* 9"EE2%9&B4* #%"J29)5* B76* -8-!K=* &5* 632*
27)&%24$* )"* 6&::2%27925* 12)C227* 9"EE2%9&B4* B76* R<<*
62D24"#E27)*#%"925525/*
;)*&5*&E#"%)B7)*)"*7")2*)(B)*)(2*52%D2%*&5*625&'726*5"*)(B)*72C*
:379)&"7B4&)$* 7226* 7")* 12* 6&5)%&13)26* B4"7'* C&)(* )(2* 9"%2*
52%D2%/* * 0(2%2* B%2* C244* "D2%* S,,* :2B)3%2?:&4426* E"63425*
6&5)%&13)26* 1$* )(&%6* #B%)&25G* B76* )(35* 7")* &7943626* &7* "3%*
5)36$/* *.B7$* ":* )(252* E"63425* &794362* E"%2* 4&725* ":* 9"62*
)(B7*)(2*9"%2*52%D2%/*
!./"'01"2341"56"701"%89:01";1<1=58>1?7":5>>@?37A."
!"#$ %&'$ ()*+$ ,-&,.-$ '/&0-$ 1&2-$ 3&/$ *-'$ 4,)15-$
36*107&*).70+8$ $%&'$()*+$,-&,.-$ /-,&/0-2$,/&9.-(:8$ $%&'$
()*+$,-&,.-$/-,)7/-2$2-3-10:8$
0(2* #B%)&9&#B)&"7* &7* -#B9(2* 62D24"#E27)* "D2%B44* CB5* A3&)2*
C&62G*C&)(*B4E"5)*O,,*&76&D&63B45*9"7)%&13)&7'*9"62*)(B)*CB5*
&79"%#"%B)26*&7)"*B*9"E#B%B)&D24$*5EB44*#%"639)/**;7*"%62%*)"*
522*("C*EB7$*#2"#42*9"7)%&13)26*72C*:379)&"7B4&)$*B76*("C*
EB7$* C2%2* &7D"4D26* &7* %2#B&%&7'* 62:29)5G* C2* 6&5)&7'3&5(26*
12)C227* 9(B7'25* )(B)* C2%2* EB62* B5* B* %2534)* ":* B* #%"142E*
%2#"%)* T8U* 9(B7'25V* B76* )("52* )(B)* C2%2* 7")* T7"7?8U*
9(B7'25V/* *W2*:"376* )(B)*SX+*#2"#42*9"7)%&13)26* )"*YZ@*8U*
9(B7'25G* C(&42* +OZ* #2"#42* 9"7)%&13)26* )"* Y,Z+* 7"7?8U*
9(B7'25/**
W2* 2IBE&726* )(2* [\]^[* )"* 62)2%E&72* )(2* 73E12%* ":*
#2"#42*C("*531E&))26*#%"142E*%2#"%)5/**0(2*#%"142E*%2#"%)5*
9"E2* :%"E* B* E39(* C&62%* '%"3#* ":* #B%)&9&#B7)5/* ;7* :B9)G*
B%"376* _,Y,* 6&::2%27)* #2"#42* 531E&))26* _ZP@* #%"142E*
%2#"%)5/* O@X* &76&D&63B45* 531E&))26* @ZS* %2#"%)5* )(B)*
53152A327)4$* 9B3526* B* 9(B7'2* )"* )(2* -#B9(2* 9"62* "%*
6"93E27)B)&"7/*+Y@O*&76&D&63B45*531E&))26*__XO*%2#"%)5*)(B)*
6&6*7")*%2534)*&7*B*9(B7'2/**
!.B" C5D" D92" D5EF" ;327E3G@71;" D3703?" 701" ;1<1=58>1?7"
:5>>@?37AH"
!;#$<-/-$ 05-:-$ 36*107&*:$ 1)//7-2$ &60$ 9+$ 27:07*10$ =/&6,:$ &3$
,-&,.->$7?-?>$272$,-&,.-$,/7()/7.+$)::6(-$)$:7*=.-$/&.-8$$@72$
.)/=-$ *6(9-/:$ &3$ ,-&,.-$ ,)/0717,)0-$ :&(-'5)0$ -A6)..+$ 7*$
05-:-$)107B707-:>$&/$272$)$:()..$*6(9-/$&3$,-&,.-$2&$(&:0$&3$
05-$'&/C8*
Q&%5)G*C2*2IBE&72*#B%)&9&#B)&"7*&7*'272%B)&7'*9"62/**Q&'3%2*S*
#4")5* )(2* 93E34B)&D2* #%"#"%)&"7* ":* 9"62* 9(B7'25* TD2%)&9B4*
BI&5V* D2%535* )(2* )"#* `* 9"7)%&13)"%5* )"* )(2* 9"62* 1B52*
T("%&F"7)B4*BI&5V/*
Number of individuals
1 5 10 15 50 100 388
0.0
0.2
0.4
0.6
0.8
1.0
Fraction of MRs
Fraction of Delta
Fraction of Lines Added
Fraction of Lines Deleted
*
Q&'3%2*S/**D5-$16(6.)07B-$27:0/79607&*$&3$1&*0/79607&*:$0&$05-$
1&2-$9):-?*
0(2* 9"7)%&13)"%5* B%2* "%62%26* 1$* )(2* 73E12%* ":* .U5* :%"E*
4B%'25)* )"* 5EB4425)/* 0(2* 5"4&6* 4&72* &7* Q&'3%2* S* 5("C5* )(2*
93E34B)&D2* #%"#"%)&"7* ":* 9(B7'25* B'B&75)* )(2* 73E12%* ":*
9"7)%&13)"%5/* 0(2* 6"))26* B76* 6B5(26* 4&725* 5("C* )(2*
93E34B)&D2* #%"#"%)&"7* ":* B6626* B76* 6242)26* 4&725* B76* )(2*
#%"#"%)&"7* ":* 624)B* TB7*.U* '272%B)25* "72* 624)B* :"%* 2B9(* ":*
)(2*:&425*&)*9(B7'25V/*0(252*E2B53%25*9B#)3%2*DB%&"35*B5#29)5*
":*9"62*9"7)%&13)&"7/*
Q&'3%2*S* 5("C5* )(B)* )(2* )"#*S@*62D24"#2%5*9"7)%&13)26*E"%2*
)(B7* X_a* ":* )(2*.U5* B76* 624)B5G* XXa* ":* B6626* 4&725* B76*
ZSa* ":* 6242)26* 4&725/* b2%$* 4&))42* 9"62* B76G* #%253EB14$G*
9"%%25#"76&7'4$*5EB44*2::"%)*&5*5#27)*1$*7"7?9"%2*62D24"#2%5*
T:"%* 5&E#4&9&)$G* &7* )(&5* 529)&"7*C2* %2:2%* )"*B44* )(2*62D24"#2%5*
"3)5&62*)(2*)"#*S@*'%"3#*B5*7"7?9"%2V/*0(2*.U5*6"72*1$*9"%2*
62D24"#2%5* B%2* 5315)B7)&B44$* 4B%'2%* )(B7* )("52* 6"72* 1$* )(2*
7"7?9"%2*'%"3#/*0(&5*6&::2%2792*&5*5)B)&5)&9B44$*5&'7&:&9B7)N*)(2*
6&5)%&13)&"7* ":* .U* :%B9)&"7* &5* 5&'7&:&9B7)4$* T#* c* ,/,SV*
6&::2%27)* :%"E* )(2* 6&5)%&13)&"7* ":* B6626* 4&725* 35&7'*
d"4E"'"%"D?<E&%7"D*)25)/**
`2I)G*C2*4""H26*52#B%B)24$*B)*8U*9(B7'25*"74$/*0(2%2*CB5*B*
4B%'2*T#?DB432*c*,/,SV*6&::2%2792*12)C227*6&5)%&13)&"75*":*8U*
B76* 7"7?8U* 9"7)%&13)&"75/* 8U* 9"7)%&13)&"75* B%2* 5("C7* &7*
Q&'3%2*+/*0(2*59B425*B76*62D24"#2%*"%62%*B%2* )(2*5BE2*B5* &7*
Feilding, Herbleb & Mockus, 2000
http://opensource.mit.edu/papers/mockusapache.pdf
Linux 2.6.20
50% of the changes where made by2.5% of the developers
Who Wrote 2.6.20?http://lwn.net/Articles/222773/
by corbet
What Does That Mean?
It means a huge number of contributors (741) who made thousands of small contributions
Community > Code
Why Community
Factorof
Success
Time
Why Community
Factorof
Success
Time
Code
Why Community
Factorof
Success
Time
Code
Community
code
Code Characteristics
• Directly useful to developers (itch)
• Common standards
• Composable
• Consistent
• Improvable
Composability
The Architecture of Participation: Does Code Architecture Mitigate Free Riding in the
Open Source Development ModelBaldwin and Clark, 2005
http://www.people.hbs.edu/cbaldwin/DR2/BaldwinArchPartAll.pdf
... codebases that are more modular or have more option value increase developers’ incentives to join and to remain involved in an open source development effort; and decrease the amount of free-riding in equilibrium.
release earlyrelease often
tools
Tools shape the code and the community.
The Secret Sauce
Secret Sauce
• Website or Wiki
• Source Code Repository
• Bug Tracker
• Mailing List
Secret Sauce
“Every successful open source project I know uses [these tools]. Every closed source project I know, doesn't. ... People wonder how open source projects manage to create high-quality products without managers or accountability. The answer: we're accountable to our infrastructure.
- Ted Hustedhttp://jroller.com/TedHusted/entry/prim
Source Code Repository
• Controls access to source code
• Keeps track of all changes
• Allows for branching and merging of changes
• Allows multiple people to work on the same code at the same time
Source Code Repository
• CVS
• Subversion (svn)
• Git
• Bazaar (bzr)
• Mercurial
Source Code Repository
SVNCVS
GitBzr
Mercurial
Source Code Repository
Centralization
SVNCVS
GitBzr
Mercurial
Subversion
Remote Repository
Local Repositories
Subversion
Subversion
‣ svn co https://svn.apache.org/repos/asf/felix/trunk felix
Subversion
‣ svn co https://svn.apache.org/repos/asf/felix/trunk felix
‣ emacs
Subversion
‣ svn co https://svn.apache.org/repos/asf/felix/trunk felix
‣ emacs
‣ svn status
Subversion
‣ svn co https://svn.apache.org/repos/asf/felix/trunk felix
‣ emacs
‣ svn status
‣ svn commit -m “fixed test cases”
The Secret Sauce is Free
code.google.comsourceforge.net
github.comtrac
Making Open Source Work
Making Open Source Work
• Using open source tools
• Including or extended open source code
• Contributing to open source project
• Releasing your own open source code
Using Open Source Tools
• Best tools available
• Lowest cost
• Community support
• Widely popular
• Examples: IDEs, Editors, OS, Servers, ...
Include Open Source
• Reuse common code
• Add proprietary features
• Use Apache or LGPL license
Contributing
• Lower cost than forking
• Get community feedback and support
• Gain recognition and good will
Release Open Source
• Grow or control market share
• Collaborate with partners or competitors
• Lower total cost of ownership
• Create your own community
• Get feedback/help from contributors
Open Source Business
Open Source Business• Infrastucture
Open Source Business• Infrastucture
• Sell support and services
• Red Hat, Spring Source, consultants
Open Source Business• Infrastucture
• Sell support and services
• Red Hat, Spring Source, consultants
• Embrace and extend
• IBM
Open Source Business• Infrastucture
• Sell support and services
• Red Hat, Spring Source, consultants
• Embrace and extend
• IBM
• GPL monopoly
• MySQL, Sun, Alfresco, Sugar CRM
Learning More
STARTUP SCHOOLJULY 18
startupschool.hksua.com.hk
Hong Kong barcampSeptember 2009
http://barcamp.org/BarCampHongKong
Thank you
Resources
• www.cubiclemuses.com
• Cathedral and the Bazaar by ESR• www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/
• Producing Open Source Software by Karl Fogel
• www.producingoss.com