82
Doing Open Source (The Right Way)

Doing Open Source the Right Way

Embed Size (px)

DESCRIPTION

Have you ever used an open source project? Well of course you have, but how about contributed to one? Filed a bug report? Submitted a patch? Have you ever started your own OSS project, or taken a closed/private project public? What licenses should you use? How do you manage contributions? How do you encourage contributors and get work done? In this talk we'll go over the basics of OSS: how to get involved, how to start a project, how to manage contributions. We'll discuss project lifecycles, legal CYA tips, and how to keep projects moving. You'll see the inner workings of real OSS projects, and learn how to be a better OSS user and producer.

Citation preview

Page 1: Doing Open Source the Right Way

Doing Open Source(The Right Way)

Page 2: Doing Open Source the Right Way

Charles Oliver Nutter

@headius JRuby Guy at Red Hat

Page 3: Doing Open Source the Right Way

And you?

Developer?

Using open source?

Contributor?

Leader?

http://upload.wikimedia.org/wikipedia/en/a/ad/UnknownComic.jpg

Page 4: Doing Open Source the Right Way

Open Source

Page 5: Doing Open Source the Right Way

Open Source Software

Page 6: Doing Open Source the Right Way

Open-source software (OSS) is computer software with its source code made available with a license in which the copyright holder provides the rights to study, change and distribute the software to

anyone and for any purpose.http://en.wikipedia.org/wiki/Open-source_software

Page 7: Doing Open Source the Right Way

…study, change and distribute the software to

anyone and for any purpose.

Page 8: Doing Open Source the Right Way

Free Software

Page 9: Doing Open Source the Right Way

Free as in freedom

Page 10: Doing Open Source the Right Way

Free as in liberty

Page 11: Doing Open Source the Right Way

Free and Open Source Software

Page 12: Doing Open Source the Right Way

…computer software that can be classified as both free software and open source software…anyone is freely licensed to use, copy, study, and change the software in any way, and the source code is openly shared so that people are encouraged to voluntarily improve the design of the software.

http://en.wikipedia.org/wiki/Free_and_open-source_software

Page 13: Doing Open Source the Right Way

freely licensed

Page 14: Doing Open Source the Right Way

use, copy, study, and change the software

Page 15: Doing Open Source the Right Way

source code is openly shared

Page 16: Doing Open Source the Right Way

people are encouraged to voluntarily improve the design of the software

Page 17: Doing Open Source the Right Way

https://www.openhub.net/

Page 18: Doing Open Source the Right Way

https://www.openhub.net/p/firefox

Page 19: Doing Open Source the Right Way

https://www.openhub.net/p/firefox

Page 20: Doing Open Source the Right Way

Big Wins

Linux and the BSDs

Firefox and Chrome

PHP, Python, Ruby, Perl, Erlang, Go, Dart, …

OpenJDK and Mono

Page 21: Doing Open Source the Right Way

Web Server Share

Source Date Unix, Unix-like Windows

W3Techs February 2014 67% 33%

Security Space

November 2012 62-82% 18-38%

http://en.wikipedia.org/wiki/Usage_share_of_operating_systems#Servers_on_the_Internet

Page 22: Doing Open Source the Right Way

Unix or Unix-like?

Linux - 54.9%

BSD - 1.4%

Darwin, HP-UX, Solaris - < 0.1%

Unknown - 43.6

http://en.wikipedia.org/wiki/Usage_share_of_operating_systems#Servers_on_the_Internet

Page 23: Doing Open Source the Right Way

http://upload.wikimedia.org/wikipedia/commons/0/0d/Operating_systems_used_on_top_500_supercomputers.svg

Page 24: Doing Open Source the Right Way

http://upload.wikimedia.org/wikipedia/commons/8/86/Usage_share_of_web_browsers_%28Source_StatCounter%29.svg

Page 25: Doing Open Source the Right Way

Benefits to UserCost savings…sometimes

Visibility

Empowered to make changes

Commercial support is available

Red Hat, e.g.

Page 26: Doing Open Source the Right Way

All because of you

Page 27: Doing Open Source the Right Way

Not possible without you.

Page 28: Doing Open Source the Right Way

Finding a Project

A tool or library you already use

A technology you are interested in

A language you want to learn

A project you simply want to help

Page 29: Doing Open Source the Right Way

LiteStep

http://www.litestep.net/snapshot2.png

Page 30: Doing Open Source the Right Way

LiteStep

A project I was using myself

Development had slowed

Large, monolithic codebase

Languages and APIs I was familiar with

Page 31: Doing Open Source the Right Way

JRuby

Implementation of Ruby

Written in Java

Development had slowed

Many tasks

Beginner to advanced

Page 32: Doing Open Source the Right Way

Getting Involved

Page 33: Doing Open Source the Right Way

Meet the Community

Mailing lists and forums

Chat services like IRC or Gitter

Q/A sites like Stack Overflow

Social sites like LinkedIn or Facebook

Page 34: Doing Open Source the Right Way
Page 35: Doing Open Source the Right Way
Page 36: Doing Open Source the Right Way

A Good Contributor

1. Respects and forgives others

2. Recognizes expertise

3. Increases the pool of resources

Page 37: Doing Open Source the Right Way

JRuby Commits

49% 51%Paid Unpaid

Page 38: Doing Open Source the Right Way

Things to Contribute

Help field questions on lists, forums, IRC

Improve documentation

Present at a conf or user group

File bugs or submit fixes

Page 39: Doing Open Source the Right Way

A Good Bug Reporter

Clearly states expectation vs reality

Provides code or steps to reproduce

Volunteers relevant env details

Responds to updates and comments

Page 40: Doing Open Source the Right Way
Page 41: Doing Open Source the Right Way
Page 42: Doing Open Source the Right Way
Page 43: Doing Open Source the Right Way

Going Deeper

Bug triage

Help guide other bug reporters

Observe fixes for other bugs

Attempt your own fix!

Page 44: Doing Open Source the Right Way

Fear Itself

Afraid I’m not good enough

Afraid I don’t know the best solution

Afraid to make things worse

Afraid I’ll be mocked or insulted

Page 45: Doing Open Source the Right Way

My JRuby Contributions

Several rewrites of interpreter

JIT compiler to JVM bytecode

Native I/O and process subsystem

Ruby/Java integration layer

Page 46: Doing Open Source the Right Way

I did not know how to do these things.

Page 47: Doing Open Source the Right Way

Bug Fix Types

Behavior

Performance

Documentation

Quality

http://upload.wikimedia.org/wikipedia/commons/9/9b/Insect_antennae_comparison.jpg

Page 48: Doing Open Source the Right Way

Crafting a FixGet a local copy of the code

Make your changes

Confirm they fix the original issue

Confirm they do not fail tests

Submit fix as a patch or pull request

Page 49: Doing Open Source the Right Way

A Good PatchFixes the original problem

Limits changes to the actual fix

Matches coding style

Maintains documentation truths

Includes a regression test

Page 50: Doing Open Source the Right Way
Page 51: Doing Open Source the Right Way
Page 52: Doing Open Source the Right Way

More Tips

Ask for help

Accept that patch review takes time

Not all patches are accepted

Be willing to iterate

Page 53: Doing Open Source the Right Way

Into the CoreRunning a Project

http://upload.wikimedia.org/wikipedia/commons/0/07/Earth_poster.svg

Page 54: Doing Open Source the Right Way

Becoming a Committer

Proven track record of fixes

Respectful member of community

Sustained interest

Domain expertise

Page 55: Doing Open Source the Right Way

Profile: mkristian

Maven integration expert

Consistently submitting patches

Maintaining related libraries

Active user

Page 56: Doing Open Source the Right Way

Open Commit BitAlternative path to core

One accepted patch and you’re in

Rapidly adds new core members

Rewards early participation

Debateable benefits over time

Page 57: Doing Open Source the Right Way

Core members are dev, manager, evangelist,

and QA rolled into one.

Page 58: Doing Open Source the Right Way

A Good Core Contributor

Respectfully handles bugs and patches

Discusses changes where necessary

Does not violate others’ fixes

Remains humble

Page 59: Doing Open Source the Right Way

Assume you are wrong.

Page 60: Doing Open Source the Right Way
Page 61: Doing Open Source the Right Way

Not all bugs are in code.

Page 62: Doing Open Source the Right Way

User experience matters.

Page 63: Doing Open Source the Right Way

Starting a Project

Missing tool or library

Code others find useful

Community needed

An itch to scratch

http://upload.wikimedia.org/wikipedia/commons/1/13/Michelangelo%2C_Creation_of_Adam_06.jpg

Page 64: Doing Open Source the Right Way

Licensing

http://upload.wikimedia.org/wikipedia/commons/2/29/Software_Categories.png

Page 65: Doing Open Source the Right Way

I am not a lawyer.

Page 66: Doing Open Source the Right Way

Criteria

Sharing of source

Assignment of rights

Attribution

Lifecycle of alterations

Page 67: Doing Open Source the Right Way

http://choosealicense.com/

Page 68: Doing Open Source the Right Way

Contributor Agreement?Requires users to “sign” an agreement

Permission to release changes

Copyright assignment

Permission to change licensing

Public assertion is often enough

Page 69: Doing Open Source the Right Way

Relicensing?Changing software license requires permission of all contributors

Get it right the first time or you’ll be chasing people around

Some licenses have upgrade clause

CPL to EPL, e.g.

Page 70: Doing Open Source the Right Way

Get It Out ThereUse services familiar to community

Include license from day 0

Include README, build scripts, examples

Tell others in the community

…but don’t expect a flood of users

Page 71: Doing Open Source the Right Way
Page 72: Doing Open Source the Right Way
Page 73: Doing Open Source the Right Way

Release the Hounds!

Page 74: Doing Open Source the Right Way
Page 75: Doing Open Source the Right Way
Page 76: Doing Open Source the Right Way

A Good Community Member

Has a thick skin

Expects to learn from everyone

Remembers that these are real people

Page 77: Doing Open Source the Right Way

Encouraging Contribution

Ask for help

Be honest

Be responsive

Empathize

Page 78: Doing Open Source the Right Way

Final Words

Page 79: Doing Open Source the Right Way

The world runs on OSS.

Page 80: Doing Open Source the Right Way

OSS would not exist without your help.

Page 81: Doing Open Source the Right Way

You are the most important

contributor.

Page 82: Doing Open Source the Right Way

Thank you!Charles Oliver Nutter

@headius