43
Best Practices for Open Source Projects Presenter: Ross Turk 1

Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

Best Practices forOpen Source Projects

Presenter: Ross Turk

1

Page 2: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

Who am I?

• Ross Turk, SourceForge, Inc.– Email: [email protected]– Jabber: [email protected]

• My job: Community Manager– Go to our users, wherever they are– Talk to SourceForge.net users– Learn from them– Drive the site’s strategic direction

2

2

Page 3: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

What are we talking about?

• What is SourceForge.net?– Basic usage stats– Demographics

• Case Studies– Projects that have done things right

• Analysis– What did they do right?

• Best Practices– What should I do?

3

3

Page 4: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

What is SourceForge.net?

“The whole is more than the sum of its parts.”- Aristotle

4

Page 5: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

SourceForge.net is...

• ...the most substantial OSS repository, founded in 1999 and operated by OSTG.

• ...a provider of tools and technology. • ...a marketplace for OSS development and

consumption.

5

5

Page 6: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

SourceForge is big... really big

• SF.net website (in 03/2006):– 25 million unique visitors– 106 million page views– 250,000 searches per day – 1.55 million registered users– 142,000 registered projects

6

6

Page 7: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

SourceForge is big... really big

• SF.net hosted projects (in 3/2007):– 359 million page views (10.3 TB)– 67 million files downloaded (639.4 TB)

7

7

Page 8: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

Always growing

0

250,000

500,000

750,000

1,000,000

1,250,000

1,500,000

2000 2001 2002 2003 2004 2005 2006 2007

Registered Users

8

Page 9: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

Always growing

0

30,000

60,000

90,000

120,000

150,000

2000 2001 2002 2003 2004 2005 2006 2007

Registered Projects

9

Page 10: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

Geographic Breakdown

Other39.7%

Poland2.7%

Japan2.7%

Canada3.2%

Brazil3.5%

UK4.5%

France5.4%

Italy5.5%

Spain5.5%

Germany8.4%

United States18.9%

10

10

Page 11: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

Case Studies:Projects that havedone things right.

“If we knew what we were doing, it wouldn't be research.”

- Albert Einstein

11

Page 12: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

Done things “right”?

• Projects have done things right when:– The main objective has been achieved– Users are happy with the solution

• Other signs:– Derivatives or forks are created– The solution has wide distribution

12

12

Page 13: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

Introducing Audacity

• Purpose:– Allow users to record and edit multi-track

audio files• Audience:

– Audio hobbyists, garage bands, and anyone else who deals with audio

13

13

Page 14: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

Audacity: Development

• First released in May of 2000• Developers: 6• Releases: 21 total• Commits: 352 (past 5 months)

– 2-3 commits per day average

14

14

Page 15: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

Audacity: Consumption

0

375,000

750,000

1,125,000

1,500,000

2003 2004 2005 2006

Major Release

15

20022001

15

Page 16: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

Introducing PDFCreator

• Purpose:– Allow creation of PDFs via the print

mechanism in Windows• Audience:

– Windows users who want to create PDFs– ...but don’t need the full features of

something like Adobe Acrobat or don’t want to be limited by its license.

16

16

Page 17: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

PDFCreator: Development

• Started in July of 2002• Developers: 2• Commits: 146 (past 9 months)

– 1 commit every two days average• Releases: 9 total• Average times...

– to close a bug: 9 days– to close a patch: 15 days– to close a feature request: 11 days

17

17

Page 18: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

PDFCreator: Consumption

0

137,500

275,000

412,500

550,000

2003 2004 2005 2006

Major Release

18

18

Page 19: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

Introducing: Pidgin (was Gaim)

• Purpose:– Allow users to communicate using multiple

instant messaging protocols at the same time• Audience:

– Desktop users, people who chat (which is everybody)

19

19

Page 20: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

Pidgin: Development

• Started in November of 1998• Developers: 24 (~12 core)• Commits: 1998 (past 9 months)

– 7 commits per day average• Releases: 107 total• Average times...

– to close a bug: 29 days– to close a patch: 16 days– to close a feature request: 21 days

20

20

Page 21: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

Pidgin: Consumption

0

150,000

300,000

450,000

600,000

2002 2004 2005 200620012000 2003

Notable releases

21

21

Page 22: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

Introducing: Nagios

• Purpose:– Host and system monitoring tool

• Audience:– Systems administrators, IT management,

service quality analysts

22

22

Page 23: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

Nagios: Development

• Started in January of 1999• Developers: 1 core• Commits: 696 (past 6 months)

– 3-4 commits per day average• Releases: 35 total since May of 2002

– ~1 release every two months average

23

23

Page 24: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

Nagios: Consumption

0

15,000

30,000

45,000

60,000

2002 2004 2005 20062003

Major releases

24

24

Page 25: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

Introducing: phpMyAdmin

• Purpose:– Web-based management of MySQL servers

• Audience:– Database administrators, developers using

MySQL, system administrators, ISPs, education

25

25

Page 26: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

phpMyAdmin: Development

• Started in 1998• Developers: 8• Commits: 383 (past 9 months)

– 1-2 commits per day average• Releases: 130• Average times...

– to close a bug: 47 days– to close a patch: 70 days– to close a feature request: 49 days

26

26

Page 27: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

phpMyAdmin: Consumption

0

87,500

175,000

262,500

350,000

2003 2004 2005 2006

Major Release

2002

27

27

Page 28: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

Introducing: Gallery

• Purpose:– Web-based photo management

• Audience:– People who want to share pictures

28

28

Page 29: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

Gallery: Development

• Started in July of 2002• Developers: 22• Commits: 2163 (past 9 months)

– 7-8 commits per day average• Releases: 101 total

– Almost 2 per month average• Average times...

– to close a bug: 30 days– to close a patch: 11 days– to close a feature request: 51 days

29

29

Page 30: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

Gallery: Consumption

0

50,000

100,000

150,000

200,000

2003 2004 2005 2006

Major Release

20022001

30

30

Page 31: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

Analysis:What did they do right?

31

Page 32: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

They have a good “problem”

• Every project is trying to solve a problem.– “Every good work of software starts by

scratching a developer's personal itch.” - ESR

• Every solution has an audience.– Who wants it to be solved?

• Every solution has an impact.– How often is it used?– How important is it to the user?

32

32

Page 33: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

Understanding the “problem”

Audience

Impact

Firefox

Pidgin

Ross’s projectthat nobodyuses

phpMyAdminGallery

PDFCreator

33

Nagios

Audacity

33

Page 34: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

Their barrier to entry is low

• Easy installation processes– Gallery has a good web-based installer– phpMyAdmin just gets untarred :)– Audacity / PDFCreator have native installers

• Cross-platform support– Audacity works on Linux, OS X, Windows– Gallery and phpMyAdmin run anywhere– Pidgin works on Linux and Windows

• Adium for OS X leverages libpurple

34

34

Page 35: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

Their software works

• Extensive refactoring has improved quality– Pidgin: separation of libpurple– Gallery: complete rewrite for 2.0– Gallery: automated test framework– Audacity: separation of mezzo (in the works)

• Because consumption is high:– New versions are verified quickly– Bugs are reported in larger numbers

35

35

Page 36: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

“Jagged binding surfaces”

• Most of these projects are hackable– Pidgin: Write against libpurple, write plugins– Gallery: Can write themes and plugins– Nagios: Can call external macros to do

almost anything– Audacity: Can write new effect plugins– Gallery, phpMyAdmin, Audacity, Nagios, and

Pidgin have wikis

36

36

Page 37: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

They leverage standards

• These projects support tech standards that are accepted and proven.– PDFCreator: Leverages the popular PDF

standard and GhostScript– Gallery: Supports WebDAV, RSS, and too

many more to list– Audacity: Supports most audio formats,

AudioUnit and VST plugins – Pidgin: Supports common IM protocols

• This increases the potential audience

37

37

Page 38: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

Best Practices:What should I do?

“Success is simply a matter of luck. Ask any failure.” - Earl Nightingale

38

Page 39: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

Understand the barriers

39

Potential users

Casual Users

Contributors

Should I bother submitting this defect?Should I bother asking for this feature?

Should I bother downloading this?Should I bother installing this?

Should I bother fixing this defect myself?

Involved Users

39

Page 40: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

Solve a good problem

• Create something you care about– Someone else probably will too.

• Serve a good purpose– Solve a new problem– Solve an existing problem better

• Have a clear, basic objective

40

40

Page 41: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

Use the community

• Keep your barrier to entry low– Make it easy to install

• More users means more potential for participation– Keep it easy to provide feedback

• Follow up with outside contributors– Close out bugs, accept patches, and

implement features quickly• Accept criticism gracefully• Be willing to give up some control• Have “groupies”

41

41

Page 42: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

Design for flexible use

• Have an extensible design– Create “jagged binding surfaces” for

contributers• Adopt designs and processes that allow

you to make a quality product– Automated testing– Logic separation

• Leverage existing standards if they apply

42

42

Page 43: Best Practices for Open Source Projects · 2007-07-09 · Nagios: Development • Started in January of 1999 • Developers: 1 core • Commits: 696 (past 6 months) – 3-4 commits

Questions / Comments?

Ross Turk[[email protected]]

43