Slide 1

Slide 1 text

Jeremy Mikola Symfony Live San Francisco September, 28, 2012 Being a Good OSS Contributor

Slide 2

Slide 2 text

Jeremy Mikola @jmikola Currently Previously

Slide 3

Slide 3 text

Who's using open-source software?

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

There is no shortage of opportunity.

Slide 6

Slide 6 text

OSS projects need... Documentation Support Evangelism Development

Slide 7

Slide 7 text

Evangelism

Slide 8

Slide 8 text

How do we... Discover open-source projects? Elect to use them? Become motivated to contribute?

Slide 9

Slide 9 text

We do not have an infinite supply of Lukas Smiths.

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

Feedback Guides Decision Making* Praise → Reinforcement Criticism → Reevaluation *Except when it doesn't

Slide 12

Slide 12 text

Don't Omit Criticism Positive feedback loops are dangerous. The best criticism is constructive. Good decisions require objectivity.

Slide 13

Slide 13 text

Be an advocate, not a fanboy.

Slide 14

Slide 14 text

Growing the Community ● As individuals ○ Attend conferences ○ Host local meetups ○ Make friends! ● As companies ○ Sponsor the above

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

Documentation

Slide 17

Slide 17 text

How do we... Get up and running? Learn how to use a project? Get acquainted with a new API?

Slide 18

Slide 18 text

We do not have an infinite supply of Ryan Weavers.

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

Documentation comes in all forms. ● Code ● API docs ● Test cases ● README ● The Book™ ● Cookbooks and tutorials ● Starter apps and distributions

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

Ingredients for great documentation: Consistent writing style. Users make the best authors. Evolves as the code changes.

Slide 24

Slide 24 text

Wrong documentation is dangerous.

Slide 25

Slide 25 text

Writing proficiency is essential.

Slide 26

Slide 26 text

Before You Commit ● Follow conventions ○ Formatting ○ Structure ○ Writing style ● Test your changes ○ Content: grammar, spelling, links ○ Syntax: reStructuredText, Markdown, HTML ○ Build: Sphinx, Docbook

Slide 27

Slide 27 text

Translation opportunities.

Slide 28

Slide 28 text

Support

Slide 29

Slide 29 text

Users expect things to work. Some users ask questions. Good users file bug reports. Awesome users submit patches.

Slide 30

Slide 30 text

We do not have an infinite supply of Christophe Coevoets.

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

Support is... Often a thankless job. Necessary for growth. Never finished.

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

Code Reviews ● Ensure the test suite passes ○ Is the current test coverage sufficient? ○ Avoid arguments with travisbot ● Object calisthenics* ● Coding standards and conventions ○ https://github.com/klaussilveira/phpcs-psr ○ https://github.com/fabpot/PHP-CS-Fixer *Helpful principles, but don't go overboard

Slide 36

Slide 36 text

No content

Slide 37

Slide 37 text

Teach others to do what you're doing.

Slide 38

Slide 38 text

Support is a big part of it.

Slide 39

Slide 39 text

No content

Slide 40

Slide 40 text

Development

Slide 41

Slide 41 text

We do not have an infinite supply of Fabien Potenciers.

Slide 42

Slide 42 text

No content

Slide 43

Slide 43 text

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?

Slide 44

Slide 44 text

Reconnaissance Start with bug fixes or small tasks. Collect feedback prior to major contributions. Join developer chats and roadmap discussions.

Slide 45

Slide 45 text

Over two years ago!

Slide 46

Slide 46 text

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.

Slide 47

Slide 47 text

There are no small contributors, just small changesets.

Slide 48

Slide 48 text

No content

Slide 49

Slide 49 text

No content

Slide 50

Slide 50 text

No content

Slide 51

Slide 51 text

No content

Slide 52

Slide 52 text

Don't create borders where there are none*. *CLA's may be a valid excuse

Slide 53

Slide 53 text

No content

Slide 54

Slide 54 text

Collaboration leads to wonderful things.

Slide 55

Slide 55 text

Don't stop building.

Slide 56

Slide 56 text

No content

Slide 57

Slide 57 text

Thanks! https://joind.in/7216

Slide 58

Slide 58 text

Photo Credits ● http://octodex.github.com/ ● http://www.flickr.com/photos/badwsky/4384960279/ ● http://www.flickr.com/photos/downingstreet/3406910050/ ● http://www.flickr.com/photos/epublicist/3546059144/ ● http://www.flickr.com/photos/kalexanderson/5337994571/ ● http://www.flickr.com/photos/pauldyer/4393421798/ ● http://www.flickr.com/photos/thewmatt/1864823746/