Save 37% off PRO during our Black Friday Sale! »

Being a Good OSS Contributor

Being a Good OSS Contributor

Presented 2013-05-17 at php[tek]:

Presented November 2, 2012 at True North PHP:

Presented September 28, 2012 at Symfony Live: San Francisco:


Jeremy Mikola

May 17, 2012


  1. Jeremy Mikola Symfony Live San Francisco September, 28, 2012 Being

    a Good OSS Contributor
  2. Jeremy Mikola @jmikola Currently Previously

  3. Who's using open-source software?

  4. Who has ever... • Posted on the mailing list or

    forum • Collaborated in IRC • Answered a question on Stack Overflow • Written a technical blog post • Opened an issue on GitHub • Attended a hack day event • Submitted a pull request • Published a bundle
  5. There is no shortage of opportunity.

  6. OSS projects need... Documentation Support Evangelism Development

  7. Evangelism

  8. How do we... Discover open-source projects? Elect to use them?

    Become motivated to contribute?
  9. We do not have an infinite supply of Lukas Smiths.

  10. Share Your Experience • For current and prospective users ◦

    Blog posts ◦ Case studies • For project members ◦ Answering RFC's ◦ Weighing new features or changes ◦ Highlighting what works and doesn't
  11. Feedback Guides Decision Making* Praise → Reinforcement Criticism → Reevaluation

    *Except when it doesn't
  12. Don't Omit Criticism Positive feedback loops are dangerous. The best

    criticism is constructive. Good decisions require objectivity.
  13. Be an advocate, not a fanboy.

  14. Growing the Community • As individuals ◦ Attend conferences ◦

    Host local meetups ◦ Make friends! • As companies ◦ Sponsor the above
  15. None
  16. Documentation

  17. How do we... Get up and running? Learn how to

    use a project? Get acquainted with a new API?
  18. We do not have an infinite supply of Ryan Weavers.

  19. Myth: Rock stars only write code... ...and this guy writes

    the documentation.
  20. None
  21. Documentation comes in all forms. • Code • API docs

    • Test cases • README • The Book™ • Cookbooks and tutorials • Starter apps and distributions
  22. But most users need these: • Code • API docs

    • Test cases • README • The Book™ • Cookbooks and tutorials • Starter apps and distributions
  23. Ingredients for great documentation: Consistent writing style. Users make the

    best authors. Evolves as the code changes.
  24. Wrong documentation is dangerous.

  25. Writing proficiency is essential.

  26. Before You Commit • Follow conventions ◦ Formatting ◦ Structure

    ◦ Writing style • Test your changes ◦ Content: grammar, spelling, links ◦ Syntax: reStructuredText, Markdown, HTML ◦ Build: Sphinx, Docbook
  27. Translation opportunities.

  28. Support

  29. Users expect things to work. Some users ask questions. Good

    users file bug reports. Awesome users submit patches.
  30. We do not have an infinite supply of Christophe Coevoets.

  31. None
  32. Support is... Often a thankless job. Necessary for growth. Never

  33. The Relentless Flow of Questions • Why is the user

    asking this? • Refer to existing content if possible ◦ Previous discussions ◦ Relevant documentation • Good exchanges deserve visibility
  34. Bug Reports • Encourage users to report actual issues ◦

    Handle security vulnerabilities responsibly • Triaging saves time ◦ Identify duplicate and invalid reports ◦ Cross-reference related or upstream issues • Fill in the gaps ◦ Collect background information ◦ Create failing test cases ◦ Document workarounds
  35. Code Reviews • Ensure the test suite passes ◦ Is

    the current test coverage sufficient? ◦ Avoid arguments with travisbot • Object calisthenics* • Coding standards and conventions ◦ ◦ *Helpful principles, but don't go overboard
  36. None
  37. Teach others to do what you're doing.

  38. Support is a big part of it.

  39. None
  40. Development

  41. We do not have an infinite supply of Fabien Potenciers.

  42. None
  43. Taking the First Step How many OSS projects started because

    of a tangible need for some basic functionality? How many core developers got their start by fixing a small bug?
  44. Reconnaissance Start with bug fixes or small tasks. Collect feedback

    prior to major contributions. Join developer chats and roadmap discussions.
  45. Over two years ago!

  46. Be a humble contributor. Who are you implementing this for?

    Review your own work before you expect someone else to. Don't turn code reviews into religious debates.
  47. There are no small contributors, just small changesets.

  48. None
  49. None
  50. None
  51. None
  52. Don't create borders where there are none*. *CLA's may be

    a valid excuse
  53. None
  54. Collaboration leads to wonderful things.

  55. Don't stop building.

  56. None
  57. Thanks!

  58. Photo Credits • • • •

    • • •