incubating open source communities [hk sfd 2009]

Post on 24-Jan-2015

1.295 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

A version of my "Incubating Open Source Communities" talk given at the Hong Kong Software Freedom Day on 19 Sept 2009 at City University. The talk provides some insights into how to attract contributors to open source projects and reviews the Apache Incubator project.

TRANSCRIPT

Incubating Open Source Communities

J Aaron Farr馮傑仁

Hong Kong Free Software DayCity University19 SEP 2009

Aaron馮傑仁

farra @ apache . org

Former DirectorApache Software

Foundation

Co-Founder

JadeTower!"

Apache Software Foundation

• US Non-Profit

• Provides legal and infrastructure support

• Completely volunteer organization

• 1000+ committers, 200+ members

• 60+ open source projects

Incubating Open Source CommunitiesCommunities

WhichWhyWhatHow

WhichCommunity

Developer

Contributor

User

Public

Involvement

At The Core

The community begins with the developers and contributors. The larger and more open the developer community, the greater chance for sustained activity and growth.

Users Developers

Contributors

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

WhichWhyWhatHow

Communities

Community > Code

Why Community

Factorof

Success

Time

Code

Community

Community First

WhichWhyWhatHow

Communities

Communitycommunity |kəˈmyoōnitē| |kəˌmjunədi| |kəˌmjuːnɪti|noun ( pl. -ties)1 a group of people living together in one place, esp. one practicing common ownership : a community of nuns.

• all the people living in a particular area or place : local communities.• a particular area or place considered together with its inhabitants : a rural community.• ( the community) the people of a district or country considered collectively, esp. in the context of social values and responsibilities; society : preparing prisoners for life back in the community.• [as adj. ] denoting a worker or resource designed to serve the people of a particular area : community health services.

2 [usu. with adj. ] a group of people having a religion, race, profession, or other particular characteristic in common : Rhode Island's Japanese community | the scientific community.

• a body of nations or states unified by common interests : [in names ] the European Community | the African Economic Community.

3 a feeling of fellowship with others, as a result of sharing common attitudes, interests, and goals : the sense of community that organized religion can provide.

• [in sing. ] a similarity or identity : writers who shared a community of interests.• joint ownership or liability : a commitment to the community of goods.

4 Ecology a group of interdependent organisms of different species growing or living together in a specified habitat : communities of insectivorous birds.

• a set of species found in the same habitat or ecosystem at the same time.

Oxford American Dictionaries

Communitycommunity |kəˈmyoōnitē| |kəˌmjunədi| |kəˌmjuːnɪti|noun ( pl. -ties)1 a group of people living together in one place, esp. one practicing common ownership : a community of nuns.

• all the people living in a particular area or place : local communities.• a particular area or place considered together with its inhabitants : a rural community.• ( the community) the people of a district or country considered collectively, esp. in the context of social values and responsibilities; society : preparing prisoners for life back in the community.• [as adj. ] denoting a worker or resource designed to serve the people of a particular area : community health services.

2 [usu. with adj. ] a group of people having a religion, race, profession, or other particular characteristic in common : Rhode Island's Japanese community | the scientific community.

• a body of nations or states unified by common interests : [in names ] the European Community | the African Economic Community.

3 a feeling of fellowship with others, as a result of sharing common attitudes, interests, and goals : the sense of community that organized religion can provide.

• [in sing. ] a similarity or identity : writers who shared a community of interests.• joint ownership or liability : a commitment to the community of goods.

4 Ecology a group of interdependent organisms of different species growing or living together in a specified habitat : communities of insectivorous birds.

• a set of species found in the same habitat or ecosystem at the same time.

group of people common ownership

sharing common attitudes, interests, and goals

values and responsibilities

Oxford American Dictionaries

Community

PeopleCustoms

OwnershipShared Goals

Community

Communicates

Community

PeopleCustoms

OwnershipShared Goals

Communication

Culture

Shared meanings used by a group to approach the

problems of life

Cathedral vs Bazaar

Cathedral

Bazaar

Community Culture

Cathedral Bazaar

WhichWhyWhatHow

Communities

道The Path To Contribution

Path to Contribution

Developer

Contributor

User

Public

Involvement

Path to Contribution

• Clear

• Consistent

• Attainable

Documentation should clearly identify the audience and set out

the process

Types of Contribution

• Documentation

• Bug Fixes

• Answers on mailing lists

• Promotion

• Money

Providing a Path

• How to Get Involved Documentation

• Low Barrier To Contribution

• Wiki Documentation Site

• Bug Tracker

• Recognize Contributors (Release Notes)

Community

PeopleCustoms

OwnershipShared Goals

Communication

People

Individuals

Not Business

Not Corporations

Not Organizations

People Customs Ownership Shared Goals Communication

People

• Meritocracy

• Clearly define:

• Roles

• Expectations

• Qualifications

People Customs Ownership Shared Goals Communication

PeopleRoles

The meritocracy enables various roles:

user | developer | committer | PMC member | ASF member

User

user is someone that uses our software. They contribute to the Apache projects by providing feedback to developers in the form of bug reports and feature suggestions. Users participate in the Apache community by helping other users on mailing lists and user support forums. The passive users are also known as lurkers.

Developer

developer is a user who contributes to a project in the form of code or documentation. They take extra steps to participate in a project, are active on the developer mailing list, participate in discussions, provide patches, documentation, suggestions, and criticism. Developers are also known as contributors.

Committer

committer is a developer that was given write access to the code repository and has a signed Contributor License Agreement (CLA) on file. They have an apache.org mail address....

People Customs Ownership Shared Goals Communication

People

The Apache Software Foundation Individual Contributor License Agreement ("Agreement") V2.0

http://www.apache.org/licenses/

Thank you for your interest in The Apache Software Foundation (the"Foundation"). In order to clarify the intellectual property licensegranted with Contributions from any person or entity, the Foundationmust have a Contributor License Agreement ("CLA") on file that hasbeen signed by each Contributor, indicating agreement to the licenseterms below. This license is for your protection as a Contributor aswell as the protection of the Foundation and its users; it does notchange your rights to use your own Contributions for any otherpurpose. If you have not already done so, please complete and send anoriginal signed Agreement to The Apache Software Foundation, 1901Munsey Drive, Forest Hill, MD 21050-2747, U.S.A. If necessary, you maysend it by facsimile to the Foundation at +1-410-803-2258. Please readthis document carefully before signing and keep a copy for yourrecords.

Apache CLA

People Customs Ownership Shared Goals Communication

Customs

Oral Traditions

Rules of Participation

Decision Making Processes

People Customs Ownership Shared Goals Communication

Customs

• Clearly define project practices

• Bug submission process

• Release process

• Voting process

• Coding Standards

• Mailing List Etiquette

People Customs Ownership Shared Goals Communication

FAQ

People Customs Ownership Shared Goals Communication

Ownership

Open Source License

Access Permissions

Responsibilities

People Customs Ownership Shared Goals Communication

Ownership

• Prominently display the license

• Openly identify business interests

• Non-locking source control

• No Author Tags

• Avoid Dictatorships or “one man shows”

People Customs Ownership Shared Goals Communication

Shared Goals

Group Identity

Clear Purpose

What We’re Not

People Customs Ownership Shared Goals Communication

SubversionWhy does this project exist?To take over the CVS user base. Specifically, we're writing a new version control system that is very similar to CVS, but fixes many things that are broken. See our front page.

People Customs Ownership Shared Goals Communication

Society → Community

The difference between a society and a community is

a “unity of wills”

Community and Society: Gemeinschaft und Gesellschaft, Ferdinand Tönnies

People Customs Ownership Shared Goals Communication

Communication

Open

Consistent

Archived

People Customs Ownership Shared Goals Communication

Communication

• Website (with documentation)

• Mailing Lists

• Issue Tracking

• Source Repository

• Instant Message / Chat

People Customs Ownership Shared Goals Communication

WhichWhyWhatHow

Communities

Code

Communities

Code

• Directly useful to developers (itch)

• Builds

• 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

Community

PeopleCustoms

OwnershipShared Goals

Communication

Provide A Pathway To Contribution

Apache Incubator

Non-Apache Project↓

Incubator↓

Apache Project

Apache Incubator

• Legal

Ensure donations and projects are in accordance with legal standards

• Community

Develop communities that adhere to ASF guiding principles

GraduatedAbdera

ActiveMQApolloBeehiveCayenneCouchDBCXFDerbyDirectoryFelixFtpServerGeronimoHarmonyHermes

httpd-CLIiBATISIvyJackrabbitJaxMeJDOjUDDILenyalog4cxxlog4netMerlinDevelopermod_ftpMuse

MyFacesNutchOdeOFBizOpenEJBOpenJPAPigPlutoQpidRollerSanselanServiceMixSolrSling

SpamAssassinstdcxxSynapseTapestryTikaTobagoTrinidadTuscanyWebWork 2WicketWodenXMLBeans

IncubatingAce

BlueskyCassandraChemistryClickDroidsEmpire-dbEtchESMEHama

ImperiusJSPWikiKatoLog4phpLucene.NetOlioOpen-WebBeansPDFBoxPhotArk

PivotRATRCFRiverShindigShiroSocialSiteStonehengeTashiThrift

TrafficServerUIMAVCLVXQueryWookieWinkWSRP4J

Roles

• Incubator PMC (IPMC)

• Podling

• Podling PMC (PPMC)

• Champion

• Sponsor

• Mentor

• Committers

Incubation Process

• Question

• Search

• Commit

• Committed

• Establish

• Join

• Clear

• Learn

• Adjust

• Grow

• Report

• Perform

• Leave

Incubation

Over 50 projects have graduated from the Apache Incubator. The average time is 14 months, but varies from 2 to 28 months.

During that time, the average project adds 2 - 3 committers.

Question Search Commit Committed Establish Join Clear Learn Adjust Grow Report Perform Leave

Is the Incubator For Us?

incubator.apache.org

Thank You謝謝J Aaron Farr

farra@apache.orgwww.cubiclemuses.com

top related