What every successful open source project needs
-
Upload
steven-francia -
Category
Technology
-
view
7.410 -
download
2
Transcript of What every successful open source project needs
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
• Redhat $13B
• Cloudera $3B
• MongoDB $1.6B
• Docker $.5B
• Hortonworks $1B
• Wordpress $1B
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)
Open Source is taking over
the world
Successful Open
Source Projects
Need
Purpose
Values
Communication
Users
Contributors
Leadership
Today we are
focusing on
Purpose
Communication
Users
Contributors
Successful Open Source Projects Need
Purpose
Why Start a Project ?
To scratch an itch
Missing tool or library
You wrote something others find
useful
You’ve thought of a
better way to do something
Successful Open Source Projects Need
Communication
What is Communication
• What you say
• What you write
• What you do
• What you build
Great Communication
= Great writing
Great Writing• Requires time
• Requires editing
• Requires effort
• Requires practice
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
Challenging Communication
One day at MongoDB a
couple years ago we received a
nasty bug report...
Best way to read, leave
only the facts
Only respond to the facts
Now it’s a definitive example
on how to respond to trolls
Successful Open Source Projects Need
Users
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 :-(.
Focus on the User
• Success depends on a good user experience
• Contributions come from happy users
User Experience
• Starts with installation
• What are the first 10 minutes like?
• What could turn a user away?
Good User Experience
Requires Listening
Successful Open Source Projects Need
Contributors
Contributors are the
lifeblood of Open Source
Why Contribute ?
Why Contribute• It feels good to give back
• Good way to make friends
• Great way to make connections
• Gain exposure / personal branding
Why Contribute• Establish actual real life experience
• Better than a resume
• Demonstrates that you can do more than code
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”
Join the mailing list/
forums
Answer a question on
the mailing list
Review the documentation
Write some documentation
Write a tutorial
Screencast a feature
File a Bug Report
Review tickets
Try to reproduce
bugs and add information
Contribute logos, icons & designs
How to Contribute
Instead of “This is Wrong”...
“How can I help?”
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?
No matter how slow you go, you
will always lap those on the
sidelines
How to Get Contributors
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.
It’s Dangerous to Go Alone
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
We live in an open source
world
Without contributions open source
would not exist
You are the most
important contributor
Thank You !Questions ?
Icons made by Freepik are licensed by CC BY 3.0
@spf13