86
Doing Open Source (The Right Way)

Open Source Software Needs You!

Embed Size (px)

Citation preview

Page 1: Open Source Software Needs You!

Doing Open Source(The Right Way)

Page 2: Open Source Software Needs You!

Charles Oliver Nutter

@headius JRuby Guy at Red Hat

Page 3: Open Source Software Needs You!

And you?

Developer?

Using open source?

Contributor?

Leader?

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

Page 4: Open Source Software Needs You!

Open Source

Page 5: Open Source Software Needs You!

Open Source Software

Page 6: Open Source Software Needs You!

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: Open Source Software Needs You!

…study, change and distribute the software to

anyone and for any purpose.

Page 8: Open Source Software Needs You!

Free Software

Page 9: Open Source Software Needs You!

Free as in freedom

Page 10: Open Source Software Needs You!

Free as in liberty

Page 11: Open Source Software Needs You!

Free and Open Source Software

Page 12: Open Source Software Needs You!

…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: Open Source Software Needs You!

freely licensed

Page 14: Open Source Software Needs You!

use, copy, study, and change the software

Page 15: Open Source Software Needs You!

source code is openly shared

Page 16: Open Source Software Needs You!

people are encouraged to voluntarily improve the design of the software

Page 17: Open Source Software Needs You!

https://www.openhub.net/

Page 18: Open Source Software Needs You!

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

Page 19: Open Source Software Needs You!

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

Page 20: Open Source Software Needs You!

Big Wins

Linux and the BSDs

Firefox and Chrome

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

OpenJDK and Mono

Page 21: Open Source Software Needs You!

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: Open Source Software Needs You!

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: Open Source Software Needs You!

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

Page 24: Open Source Software Needs You!

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

Page 25: Open Source Software Needs You!

Benefits to UserCost savings…sometimes

Visibility

Empowered to make changes

Commercial support is available

Red Hat, e.g.

Page 26: Open Source Software Needs You!

All because of you

Page 27: Open Source Software Needs You!

Not possible without you.

Page 28: Open Source Software Needs You!

Why Get Involved?

Huge learning opportunity

Great resume builder

Community and social aspects

It’s great fun!

Page 29: Open Source Software Needs You!

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 30: Open Source Software Needs You!

LiteStep

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

Page 31: Open Source Software Needs You!

LiteStep

A project I was using myself

Development had slowed

Large, monolithic codebase

Languages and APIs I was familiar with

Page 32: Open Source Software Needs You!

JRuby

Implementation of Ruby

Written in Java

Development had slowed

Many tasks

Beginner to advanced

Page 33: Open Source Software Needs You!

Getting Involved

Page 34: Open Source Software Needs You!

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 35: Open Source Software Needs You!
Page 36: Open Source Software Needs You!
Page 37: Open Source Software Needs You!

A Good Contributor

1. Respects and forgives others

2. Recognizes expertise

3. Increases the pool of resources

Page 38: Open Source Software Needs You!

JRuby Commits

49% 51%Paid Unpaid

Page 39: Open Source Software Needs You!

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 40: Open Source Software Needs You!

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 41: Open Source Software Needs You!
Page 42: Open Source Software Needs You!
Page 43: Open Source Software Needs You!
Page 44: Open Source Software Needs You!

Going Deeper

Bug triage

Help guide other bug reporters

Observe fixes for other bugs

Attempt your own fix!

Page 45: Open Source Software Needs You!

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 46: Open Source Software Needs You!

My JRuby Contributions

Several rewrites of interpreter

JIT compiler to JVM bytecode

Native I/O and process subsystem

Ruby/Java integration layer

Page 47: Open Source Software Needs You!

I did not know how to do these things.

Page 48: Open Source Software Needs You!

Bug Fix Types

Behavior

Performance

Documentation

Quality

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

Page 49: Open Source Software Needs You!

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 50: Open Source Software Needs You!

A Good PatchFixes the original problem

Limits changes to the actual fix

Matches coding style

Maintains documentation truths

Includes a regression test

Page 51: Open Source Software Needs You!
Page 52: Open Source Software Needs You!
Page 53: Open Source Software Needs You!

More Tips

Ask for help

Accept that patch review takes time

Not all patches are accepted

Be willing to iterate

Page 54: Open Source Software Needs You!

Into the CoreBecoming a Committer

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

Page 55: Open Source Software Needs You!

Becoming a Committer

Proven track record of contributions

Respectful member of community

Sustained interest

Domain expertise

Page 56: Open Source Software Needs You!

Profile: mkristian

Maven integration expert

Consistently submitting patches

Maintaining related libraries

Active user

Page 57: Open Source Software Needs You!

Open Commit Bit

Alternative path to core

One accepted patch and you’re in

Rapidly adds new core members

Rewards early participation

Page 58: Open Source Software Needs You!

Core members are dev, manager, evangelist,

and QA rolled into one.

Page 59: Open Source Software Needs You!

A Good Core ContributorRespectfully handles bugs and patches

Discusses changes where necessary

Does not violate others’ code

Keeps the project’s tests green

Remains humble

Page 60: Open Source Software Needs You!

Assume you are wrong.

Page 61: Open Source Software Needs You!
Page 62: Open Source Software Needs You!

Not all bugs are in code.

Page 63: Open Source Software Needs You!

User experience matters.

Page 64: Open Source Software Needs You!

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 65: Open Source Software Needs You!

Licensing

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

Page 66: Open Source Software Needs You!

I am not a lawyer.

Page 67: Open Source Software Needs You!

Criteria

Sharing of source

Assignment of rights

Attribution

Lifecycle of alterations

Page 68: Open Source Software Needs You!

http://choosealicense.com/

Page 69: Open Source Software Needs You!

Contributor Agreement?Requires users to “sign” an agreement

Permission to release changes

Copyright assignment

Permission to change licensing

Public assertion is often enough

Page 70: Open Source Software Needs You!

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 71: Open Source Software Needs You!

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 72: Open Source Software Needs You!

https://github.com

Page 73: Open Source Software Needs You!

https://github.com/jruby/jruby

Page 74: Open Source Software Needs You!

https://bitbucket.org/headius/jdk-panama

Page 75: Open Source Software Needs You!

https://www.codeplex.com/

Page 76: Open Source Software Needs You!

Release the Hounds!

Page 77: Open Source Software Needs You!

http://rubygems.org/

Page 78: Open Source Software Needs You!

https://vidcoder.codeplex.com/

Page 79: Open Source Software Needs You!

A Good Community Member

Has a thick skin

Expects to learn from everyone

Remembers that these are real people

Page 80: Open Source Software Needs You!

Making Time

Make it a fun hobby

Prefer jobs that support OSS

Explain the benefits to your partner

Keep projects and interest aligned

Page 81: Open Source Software Needs You!

Encouraging Contribution

Ask for help

Be honest

Be responsive

Empathize

Page 82: Open Source Software Needs You!

Final Words

Page 83: Open Source Software Needs You!

The world runs on OSS.

Page 84: Open Source Software Needs You!

OSS would not exist without your help.

Page 85: Open Source Software Needs You!

You are the most important

contributor.

Page 86: Open Source Software Needs You!

Thank you!Charles Oliver Nutter

@headius