What every successful open source project needs

83
What Every Successful Open Source Project Needs

Transcript of What every successful open source project needs

@spf13Chief Operator @ Docker Former Chief Developer Advocate @ MongoDB,

Author of Hugo, spf13-vim, Cobra, Afero, Viper & more

Mainframe Era : 60s & 70s

• Computer companies sold hardware

• Software was free

• Software was colloborative

• IBM dominates

The Software Era: 80s - 90s

• Software as a business emerged

• Software companies sold “bits”

• Software was private and proprietary

• Microsoft dominates

The Internet Era: 00s

• Internet changes everything

• Open source movement gains traction (Linux, Apache, MySQL, PHP)

• Tech selling ads, bits, hardware & services

• Google Dominates

The Free Source Era: 10s

• Technology companies sell Hardware & Services

• Software is becoming free ($$) (Windows 10, OS X, Android, IOS)

• Game companies still sell bits

• Virtually all software companies are now participating in open source

Open Source Companies• Google (Android,

Chrome, Docker, Linux)

• Apple (Webkit, LLVM)

• Facebook (Cassandra, HipHop, Hive, PHP)

• IBM (Linux, Eclipse, Docker)

• Yahoo (Hadoop, Linux, YUI)

• Oracle (Linux, MySQL, Java)

• Microsoft (Linux, .net, Docker)

• Intel (Linux)

Hugo Static Site Generator in Go

(200+ already existed, but none in Go)

Cobra & Viper CLI commander & Configuration management

spf13-vim My Personal Vim Configuration…

now 100+ contributors

MongoDB & DockerChanging the way software is built and run

Users will have questions

• Need to establish a place for them to ask questions

• Public is ideal:

• Others can respond

• Others benefit from the response

Forums & mailing lists

• Google groups ok, but hard to search

• Stack Overflow will happen, but not focused

• Forums work best, Discourse is pretty good

• IRC also works well, but realtime and without integrated search.

README• Your single most important file

• First thing everyone sees

• Most projects don’t spend enough time on a readme

• Where you convey your purpose & values

A Good README

Vision, concrete examples, installation instructions, etc

You need users• No matter how good a project is, it

can’t succeed without users

• Unless you tell the world about your project, people will not come

• Unnatural behavior for most engineers

To: Newsgroups: comp.os.inix Subject: What would you like to see most in minix?Summary: small poll for my new operating system Message-ID: <mailto: [email protected]

Hello everybody out there using minix — I’m doing a (free) operating system (just a hobby, won’t be big and professional like gnu) for 386 (486) AT clones. This has been brewing since april, and is starting to get ready. I’d like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things).

I’ve currently ported bash (1.08) and gcc (1.40), and things seem to work. This implies that I’ll get something practical within a few months, and I’d like to know what features most people would want. Any suggestions are welcome, but I won’t promise I’ll implement them :-).

Linus (mailto: [email protected])

PS. Yes — it’s free of any minix code, and it has a multi-threaded fs. It is NOT protable (uses 386 task switching etc), and it probably never will support anything other than AT-harddisks, as that’s all I have :-(.

Why Contribute• It feels good to give back

• Good way to make friends

• Great way to make connections

• Gain exposure / personal branding

Best Software Education

I’m not a developer

• Projects need much more than code

• Like saying “I’m not an actor, so I can’t work at a movie studio”

Prepare• Learn the tools of the trade

• Git & Github

• Read the Documentation

• Familiarize yourself with IRC, forums, & the correct channels

Take Iniative• Don’t be afraid to try

• Open source loves self starters

• Open source authors are usually very approachable and open to ideas

• Communicate and collaborate as much as possible

Ask• What can I help with?

• I would like to help with X, but would benefit from some guidance, can someone guide me?

• If I contributed Y, would that help?

Most projects have very few contributors

• You must give if you want to get

• Contributors are an investment in the future of the project

• Contributors pay back many times what you put in

Make it Easy to Contribute

• Use an “open” open source license (Apache 2.0, MIT, BSD)

• Provide contribution guidelines

• Provide contribution instructions & tutorials

Treat Contributors Well

• Happier developers will contribute more

• The more welcome people feel the more they will help your project

Be Responsive• Respond to Pull Requests in a

timely manner

• Provide and contribute to a channel where people can ask questions

• Respond to issues quickly

Invite Contributors

• Overcommunicate that contributions are welcome

• Ask people to contribute

• Ask. Ask. Ask. Invite. Invite. Invite.

Empower Contributors• When someone shows initative and

history of good contributions make them a committer

• Resist tempation to control

• If you aren’t able to be responsive, appoint more committers

Teach • Don’t ever say no.

• Teach contributors how it can become a yes

• Newly empowered contributors contagiously help others

Docker’s Birthday Open-source-a-thon18 Cities + Online. Mentorship by Go & Docker. Save Whales.

http://docker.party