Contribute!

download Contribute!

If you can't read please download the document

Transcript of Contribute!

Notebook

Contribute!

Matthew Weier O'PhinneyProject Lead, Zend Framework

Who are you?

Lead an open source project?

Contributed code to an OSS project?

Written or translated documentation for an OSS project?

Answered questions on an OSS mailing list, forum, or IRC channel?

Blogged solutions or tutorials regarding an OSS project?

Why contribute?

You've identified bugs using an OSS project and want them fixed upstream

You've created a feature you think fits an OSS project's goals

An OSS project has made your life easier, and you want to contribute back

Fame, fortune, glory!

It's fun!

You need karma

OSS is a meritocracy

Contributions earn you karmaWell, good contributions...

The Golden Rule...

Communication is the key to any good OSS project

Communication Channels

Mailing lists

IRC

Forums

Twitter

Issue trackers

Wikis

Blogs

Mailing lists and forums

Ask questionsDon't be vague; the more detail the better

Don't abuse the list; try things first

Don't abuse those who take the time to help you

Answer questionsDon't denigrate those asking questions

Blog questions you answer often

BE NICE!

IRC

Freenode, Efnet, etc

Most projects have channels

Don't ask questions on channels marked for developers/contributors only

Don't paste large amounts of code in the channel; use pastebins

Don't be pushy

Twitter

Ask questionsDon't do it often

Don't expect an answer

Keep it simple

Answer questionsDon't batch responses

Don't be afraid to link to other sources

Be nice!

Issue Reporting

The secret to good reporting:Document your expected results

Document your actual results

Provide the minimum code necessary to reproduce the results you report

Issue Reporting

Always pull from the active development branch before reportingVerify the bug still exists

Check with developersVerify that the issue isn't actually by design or a misunderstanding on your part

If you reproduce case is greater than 20 statements... see if you can reproduce it in less

Creating a patch

Always create the patch from the root of the branchTypically from your checkout of trunk or the release branch you are using

Use the diff tool from the VCS system used by the projectsvn diff > /tmp/my_patch.diff

git log -p .. > /tmp/my_patch.diff

Testing a patch

Help out by testing patches uploaded by others

Typically from the branch root:patch -p0 < my_patch.diff

Write Documentation

Blog write tutorials, or blog solutions to problems you've encountered.

Wiki if the project uses a wiki for documentation, write documentation directly.

Learn Docbook many large projects use it. Just learn it.

Documentation isn't in your language? Translate it!

Other activities

Join your local user groupShare your knowledge

Learn from others

Collaborate

Bug hunts / test fest

Attend or speak at conferencesTravel and learn from others

Evangelize the projects you use

What are you waiting for?

Feedback: http://joind.in/593http://twitter.com/weierophinney