Scale14x Patterns and Practices for Open Source Project Success

37
Patterns and Practices for Open Source Project Success stephen r. walli @stephenrwalli [email protected]

Transcript of Scale14x Patterns and Practices for Open Source Project Success

Patterns  and  Practices  for  Open  Source  Project  Success

stephen r.  walli@stephenrwalli

[email protected]

Freeloaders  are  Necessary

stephen r.  walli@stephenrwalli

[email protected]

WTFOSS*

stephen r.  walli@stephenrwalli

[email protected]

*  Hat  tip  to  @codepope

Community

We’ve  shared  software  since  we’ve  written  softwareWriting  good  software  is  hard  work

Princeton

USENIX

SHARE

DECUS

MIT  Athena

Free  Software  FountationBerkeley  CSRG

Apache

Linux

EclipseFountation

ASF

2  Stories

Orders

of

magnitude

ROTOR500K  LoC500K  Lines-­‐of-­‐Test  HarnessRan  on  Windows,  Mac  OS  X,  FreeBSDOne  script  to  set  environmentOne  command  to  build  everythingOne  command  to  test  it  allMinimal  documentation

24  hours  later  …24  hours  later  again  …  

Committer(s)+

Code

Developers

Committers+

Code

Developers

Committers+

Code

Developers

Users

Committers+

Code

Developers

Users

Committers+

Code

How  do  you  increase  your  user  base?(How  do  you  make  it  easy  to  install/configure/use  the  software?)

How  do  you  encourage  developers?(How  do  you  make  it  easy  to  build/test/experiment?)

How  do  you  make  it  easy  to  contribute?(What  do  you  communicate  to  your  community)

How  do  you  increase  your  user  base?(How  do  you  make  it  easy  to  install/configure/use  the  software?)

How  do  you  increase  your  user  base?(How  do  you  make  it  easy  to  install/configure/use  the  software?)

Project  E

xes  

publish

ed

Project  Install  

Automated

Software  Construction  ActivitiesProject  

BugTracking

How  do  you  increase  your  user  base?(How  do  you  make  it  easy  to  install/configure/use  the  software?)

Project  E

xes  

publish

ed

Project  Install  

AutomatedSoftware  Construction  Activities

Project  

License

FAQs,  Ho

wto

Community  Development  Activities  

Project  

BugTracking

Forums,  Em

ail

IANAL

A  small  (2  minute)  diversion  on  licensing  ….• Software  is  protected  by  copyright  law  • Whoever  wrote  the  software,  owns  the  copyright• People  often  give  up  copyright  ownership  in  employment  agreements• There  are  a  few  well  [understood|accepted]  licenses:  pick  one• These  licenses  define  the  most  successful  collaborations  in  history• If  you  care  about  making  money:  educate  yourself*  &  hire  a  lawyer• If  you  [care|worry]  about  patents:  hire  a  lawyer• If  you  publish  your  project  on  Github: create  the  *%$ing LICENSE  file

Writers|Artists|Engineers|Architectsdo  it.  So  should  you.

*Van  Lindberg's Intellectual  Property  and  Open  Source

How  do  you  encourage  developers?(How  do  you  make  it  easy  to  build/test/experiment?)

How  do  you  encourage  developers?(How  do  you  make  it  easy  to  build/test/experiment?)

Project  B

uild  

Automated  I

Complete  Src

publish

ed

Project  Test  

Automated  I

Software  Construction  Activities

How  do  you  encourage  developers?(How  do  you  make  it  easy  to  build/test/experiment?)

Project  B

uild  

Automated  I

Complete  Src

publish

ed

Project  Test  

Automated  I

Software  Construction  Activities

Mission

Statem

ent

Comms

Platform

Contrib

utoion

Guidelines

Community  Development  Activities  

Code  of  

Conduct

A  small  diversion  on  software  engineering  …

• 2  ratios  define  software  development• All  advances  in  programming  languages  and  software  engineering  is  attempting  to  beat  these  two  ratios• [Community|Product]  scale  depends  on  reliably  delivering  the  known  executable  environment  every  time  • Linus’s  Law  is  about  REVIEWS  not  BUG  FIXING

How  do  you  make  it  easy  to  contribute?(What  do  you  communicate  to  your  community)

How  do  you  make  it  easy  to  contribute?(What  do  you  communicate  to  your  community)

Project  B

uild  

Automated  II

Project  Test  

Automated  II

Basic

 Arch  

Descrip

tion

Software  Construction  Activities

How  do  you  make  it  easy  to  contribute?(What  do  you  communicate  to  your  community)

Project  B

uild  

Automated  II

Project  Test  

Automated  II

Basic

 Arch  

Descrip

tion

Software  Construction  Activities

Governance

Events

Community  Development  Activities  

Committers ContributorsCommunity

EcosystemProject

ProductsServices

Books

Training

Committers ContributorsCommunity

EcosystemProject

ProductsServices

Books

Training

CorporateContributors

How  do  you  make  it  easy  to  contribute?(What  do  you  communicate  to  your  COMMERCIAL  community)

Project  

License

Provenance  

Tracking

Repositories  

Protected

Dependencies  

Documented

Contrib

utions  

Auditted

Provenance  

Managem

ent

Committers

Indemnified

Committer  

Governance

Tradem

ark  

Managem

ent

IP  Management  Activities  

Foundations

• Henrik  Ingo’s  numbers• Foundations  provide  neutral  ownership  and  a  level  playing  field• Bright  lines  for  projects  versus  products

Ope

n  Source  Com

mun

ity  Practices

Project  E

xes  

publish

ed

Project  B

uild  

Automated  I

Project  Install  

Automated

Complete  Src

publish

ed

Project  

BugTracking

Project  B

uild  

Automated  II

Project  Test  

Automated  I

Project  Test  

Automated  II

Basic

 Arch  

Descrip

tion

Project  

License

Project  

License

Mission

Statem

ent

Code  of  

Conduct

Forums,  Em

ail

Comms

Platform

FAQs,  Ho

wto

Governance

Contrib

utoion

Guidelines

Events

Provenance  

Tracking

Repositories  

Protected

Dependencies  

Documented

Contrib

utions  

Auditted

Provenance  

Managem

ent

Committers

Indemnified

Committer  

Governance

Tradem

ark  

Managem

ent

IP  Management  Activities  

Community  Development  

Software  Construction  Maturity

Ope

n  Source  Com

mun

ity  Patterns

Project  E

xes  

publish

ed

Project  B

uild  

Automated  I

Project  Install  

Automated

Complete  Src

publish

ed

Project  

BugTracking

Project  B

uild  

Automated  II

Project  Test  

Automated  I

Project  Test  

Automated  II

Basic

 Arch  

Descrip

tion

Project  

License

Project  

License

Mission

Statem

ent

Code  of  

Conduct

Forums,  Em

ail

Comms

Platform

FAQs,  Ho

wto

Governance

Contrib

utoion

Guidelines

Events

Provenance  

Tracking

Repositories  

Protected

Dependencies  

Documented

Contrib

utions  

Auditted

Provenance  

Managem

ent

Committers

Indemnified

Committer  

Governance

Tradem

ark  

Managem

ent

IP  Management  Activities  

Community  Development  

Software  Construction  Maturity

EncourageUsers

EncourageContributorsEncourage  Developers

Encourage  Corp  Contributions

Developers

Users

Committers+

Code

Developers

Users

Committers+

Code

Books

Contractors

Products

Distributions

Consulting

Training

Support

Building  the  Ecosystem

Committers ContributorsCommunity

EcosystemProject

ProductsServices

Books

Training

CorporateContributors

Customers

Committers ContributorsCommunity

EcosystemProject

ProductsServices

Books

Training

CorporateContributors

Customers

Questions  &  Commentsstephen r walli

[email protected]@stephenrwalli

http://stephesblog.blogs.comhttp://opensource.com