Slide 1

Slide 1 text

How to contribute to open source Jonathan Fielding @jonthanfielding

Slide 2

Slide 2 text

About me • Technical Architect at Beamly • Have worked with large brands such as Sony, British Gas and Beamly • Been contributing to open source for 13 years • Made contributions to MiniCMS, SimpleStateManager, HTML5 Boilerplate, TweetCLI, Gitissu.es, DigitalOceanCLI, Doccy

Slide 3

Slide 3 text

Why contribute • Make the web a better place • Help improve the open source code you use • Influence the direction a project takes

Slide 4

Slide 4 text

How to contribute

Slide 5

Slide 5 text

Document a feature

Slide 6

Slide 6 text

• Often, not all the features of a OS project are documented • If you find an undocumented feature, why not document it • caveat, sometimes they are undocumented for a reason

Slide 7

Slide 7 text

Write a blog post

Slide 8

Slide 8 text

• Write about a OS project • Write a tutorial or just some notes • Help promote project and help others to use it

Slide 9

Slide 9 text

Get involved in discussions

Slide 10

Slide 10 text

• Discuss use cases of an OS project • Discuss potential new features

Slide 11

Slide 11 text

Raise a bug

Slide 12

Slide 12 text

• Look on the projects bug tracker to see if anyone else has had the issue • Create a repeatable test case (perhaps using JS Bin) • Raise a ticket in the projects bug tracker

Slide 13

Slide 13 text

Fix a bug

Slide 14

Slide 14 text

• Look at bug tracker and find an issue you want to fix • Fork project so you can make your changes • Fix issue and raise a pull request to the original repository so the project owner can merge your fix into the codebase

Slide 15

Slide 15 text

Add a feature

Slide 16

Slide 16 text

• Add a new feature that is useful for OS project to have • Look at similar projects to see where this project is lacking

Slide 17

Slide 17 text

Optimise or Refactor

Slide 18

Slide 18 text

• Optimise the existing code • Refactor sections of the code

Slide 19

Slide 19 text

Finding a project to contribute to

Slide 20

Slide 20 text

Look at your favourite projects

Slide 21

Slide 21 text

jQuery • bug tracker - http://bugs.jquery.com/ • Has about 80 open tickets • Has 7 TODO items in the source

Slide 22

Slide 22 text

Twitter Bootstrap • bug tracker - https://github.com/ twbs/bootstrap/issues • Has 58 open tickets • Has 2 TODO items in the source

Slide 23

Slide 23 text

Chromium • bug tracker - https:// code.google.com/p/chromium/ issues/list • Has about 61101 open tickets

Slide 24

Slide 24 text

Find projects looking for help

Slide 25

Slide 25 text

Code Triage • Sign up to receive an open issue in your inbox every day from your favourite repos • Find projects looking for help http://www.codetriage.com/

Slide 26

Slide 26 text

Open Hatch • Matches you with open source projects that need help • Search for issues by difficulty or skill https://openhatch.org/

Slide 27

Slide 27 text

GitHub Trending • Lists the trending Github repos • Lists the trending Github developers https://github.com/trending

Slide 28

Slide 28 text

Starting your own open source project

Slide 29

Slide 29 text

What is your project going to do?

Slide 30

Slide 30 text

Who is the project for?

Slide 31

Slide 31 text

Before Starting

Slide 32

Slide 32 text

Find Contributors • Discuss your project with other developers online • Find others interested in developing this new project

Slide 33

Slide 33 text

Or choose to go it alone • Have full control of the direction of the project • May make it harder for your project to gain traction as others might not agree with how it works

Slide 34

Slide 34 text

Choose how to licence your project • Users of your project want to know how they can use it • Many will want to use it commercially • Common licences include the MIT, Apache and BSD

Slide 35

Slide 35 text

Picking a name It should be: • Unique - to avoid confusion • Let the planned features inform the name of your project • Relevant - don’t call a Ruby project jCarousel as that suggests its JavaScript

Slide 36

Slide 36 text

Project Startup

Slide 37

Slide 37 text

Creating the project • Create your project on a source control provider of choice (most projects choose GitHub) • Commit initial commit of code ensuring no passwords are in the commit (this was my first OS mistake)

Slide 38

Slide 38 text

Ensure your project has the following • License • Read me / instructions for use

Slide 39

Slide 39 text

Optional nice to haves • A website • Comprehensive documentation • A domain name for easy finding

Slide 40

Slide 40 text

Promote project • Post on Reddit • Tweet it to your followers • Write about it on your blog and as guest posts on other blogs

Slide 41

Slide 41 text

Ongoing

Slide 42

Slide 42 text

Use semantic versioning Allows users of a project understand what sort of changes a release makes • 1.0.0 - Major release • 1.1.0 - Minor release • 1.1.1 - Bug fixes

Slide 43

Slide 43 text

Engage Community • Engage the users of your OS project • Discuss improvements they would like to see

Slide 44

Slide 44 text

Fix Bugs • No code is flawless so your users will raise bugs • Fix them promptly to help your users maintain faith in the quality of your project

Slide 45

Slide 45 text

Rounding up

Slide 46

Slide 46 text

So go contribute

Slide 47

Slide 47 text

• Learn how to make your sites responsive • Learn about useful open source tools that can help you build responsive sites fast Beginning Responsive Web Design