O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
Doing Open Source 
(The Right Way)
Charles 
Oliver 
Nutter 
@headius 
JRuby Guy at Red Hat
And you? 
Developer? 
Using open source? 
Contributor? 
Leader? 
http://upload.wikimedia.org/wikipedia/en/a/ad/UnknownComi...
Open Source
Open Source 
Software
Open-source software (OSS) is computer software 
with its source code made available with a license 
in which the copyrigh...
…study, change and 
distribute the software to 
anyone and for any purpose.
Free Software
Free as in freedom
Free as in liberty
Free and Open Source 
Software
…computer software that can be classified as both 
free software and open source software…anyone 
is freely licensed to us...
freely licensed
use, copy, study, and 
change the software
source code is openly 
shared
people are encouraged to 
voluntarily improve the 
design of the software
https://www.openhub.net/
https://www.openhub.net/p/firefox
https://www.openhub.net/p/firefox
Big Wins 
Linux and the BSDs 
Firefox and Chrome 
PHP, Python, Ruby, Perl, Erlang, Go, Dart, … 
OpenJDK and Mono
Web Server Share 
Source Date Unix, Unix-like 
Windows 
W3Techs February 
2014 67% 33% 
Security 
Space 
November 
2012 62...
Unix or Unix-like? 
Linux - 54.9% 
BSD - 1.4% 
Darwin, HP-UX, Solaris - < 0.1% 
Unknown - 43.6 
http://en.wikipedia.org/wi...
http://upload.wikimedia.org/wikipedia/commons/0/0d/ 
Operating_systems_used_on_top_500_supercomputers.svg
http://upload.wikimedia.org/wikipedia/commons/8/86/Usage_share_of_web_browsers_ 
%28Source_StatCounter%29.svg
Benefits to User 
Cost savings…sometimes 
Visibility 
Empowered to make changes 
Commercial support is available 
Red Hat,...
All because of you
Not possible 
without you.
Finding a Project 
A tool or library you already use 
A technology you are interested in 
A language you want to learn 
A ...
LiteStep 
http://www.litestep.net/snapshot2.png
LiteStep 
A project I was using myself 
Development had slowed 
Large, monolithic codebase 
Languages and APIs I was famil...
JRuby 
Implementation of Ruby 
Written in Java 
Development had slowed 
Many tasks 
Beginner to advanced
Getting Involved
Meet the Community 
Mailing lists and forums 
Chat services like IRC or Gitter 
Q/A sites like Stack Overflow 
Social site...
A Good Contributor 
1. Respects and forgives others 
2. Recognizes expertise 
3. Increases the pool of resources
JRuby Commits 
49% 51% 
Paid Unpaid
Things to Contribute 
Help field questions on lists, forums, IRC 
Improve documentation 
Present at a conf or user group 
...
A Good Bug Reporter 
Clearly states expectation vs reality 
Provides code or steps to reproduce 
Volunteers relevant env d...
Going Deeper 
Bug triage 
Help guide other bug reporters 
Observe fixes for other bugs 
Attempt your own fix!
Fear Itself 
Afraid I’m not good enough 
Afraid I don’t know the best solution 
Afraid to make things worse 
Afraid I’ll b...
My JRuby Contributions 
Several rewrites of interpreter 
JIT compiler to JVM bytecode 
Native I/O and process subsystem 
R...
I did not know how 
to do these things.
Bug Fix Types 
Behavior 
Performance 
Documentation 
Quality 
http://upload.wikimedia.org/wikipedia/commons/9/9b/Insect_an...
Crafting a Fix 
Get a local copy of the code 
Make your changes 
Confirm they fix the original issue 
Confirm they do not ...
A Good Patch 
Fixes the original problem 
Limits changes to the actual fix 
Matches coding style 
Maintains documentation ...
More Tips 
Ask for help 
Accept that patch review takes time 
Not all patches are accepted 
Be willing to iterate
Into the Core 
Running a Project 
http://upload.wikimedia.org/wikipedia/commons/0/07/Earth_poster.svg
Becoming a Committer 
Proven track record of fixes 
Respectful member of community 
Sustained interest 
Domain expertise
Profile: mkristian 
Maven integration expert 
Consistently submitting patches 
Maintaining related libraries 
Active user
Open Commit Bit 
Alternative path to core 
One accepted patch and you’re in 
Rapidly adds new core members 
Rewards early ...
Core members are dev, 
manager, evangelist, 
and QA rolled into one.
A Good Core Contributor 
Respectfully handles bugs and patches 
Discusses changes where necessary 
Does not violate others...
Assume you are 
wrong.
Not all bugs are in 
code.
User experience 
matters.
Starting a Project 
Missing tool or library 
Code others find useful 
Community needed 
An itch to scratch 
http://upload....
Licensing 
http://upload.wikimedia.org/wikipedia/commons/2/29/Software_Categories.png
I am not a lawyer.
Criteria 
Sharing of source 
Assignment of rights 
Attribution 
Lifecycle of alterations
http://choosealicense.com/
Contributor Agreement? 
Requires users to “sign” an agreement 
Permission to release changes 
Copyright assignment 
Permis...
Relicensing? 
Changing software license requires 
permission of all contributors 
Get it right the first time or you’ll be...
Get It Out There 
Use services familiar to community 
Include license from day 0 
Include README, build scripts, examples ...
Release the Hounds!
A Good Community 
Member 
Has a thick skin 
Expects to learn from everyone 
Remembers that these are real people
Encouraging 
Contribution 
Ask for help 
Be honest 
Be responsive 
Empathize
Final Words
The world runs on 
OSS.
OSS would not exist 
without your help.
You are the most 
important 
contributor.
Thank you! 
Charles Oliver Nutter 
@headius
Doing Open Source the Right Way
Doing Open Source the Right Way
Doing Open Source the Right Way
Doing Open Source the Right Way
Doing Open Source the Right Way
Doing Open Source the Right Way
Doing Open Source the Right Way
Doing Open Source the Right Way
Doing Open Source the Right Way
Doing Open Source the Right Way
Doing Open Source the Right Way
Doing Open Source the Right Way
Próximos SlideShares
Carregando em…5
×

Doing Open Source the Right Way

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.

  • Seja o primeiro a comentar

Doing Open Source the Right Way

  1. 1. Doing Open Source (The Right Way)
  2. 2. Charles Oliver Nutter @headius JRuby Guy at Red Hat
  3. 3. And you? Developer? Using open source? Contributor? Leader? http://upload.wikimedia.org/wikipedia/en/a/ad/UnknownComic.jpg
  4. 4. Open Source
  5. 5. Open Source Software
  6. 6. 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
  7. 7. …study, change and distribute the software to anyone and for any purpose.
  8. 8. Free Software
  9. 9. Free as in freedom
  10. 10. Free as in liberty
  11. 11. Free and Open Source Software
  12. 12. …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
  13. 13. freely licensed
  14. 14. use, copy, study, and change the software
  15. 15. source code is openly shared
  16. 16. people are encouraged to voluntarily improve the design of the software
  17. 17. https://www.openhub.net/
  18. 18. https://www.openhub.net/p/firefox
  19. 19. https://www.openhub.net/p/firefox
  20. 20. Big Wins Linux and the BSDs Firefox and Chrome PHP, Python, Ruby, Perl, Erlang, Go, Dart, … OpenJDK and Mono
  21. 21. 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
  22. 22. 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
  23. 23. http://upload.wikimedia.org/wikipedia/commons/0/0d/ Operating_systems_used_on_top_500_supercomputers.svg
  24. 24. http://upload.wikimedia.org/wikipedia/commons/8/86/Usage_share_of_web_browsers_ %28Source_StatCounter%29.svg
  25. 25. Benefits to User Cost savings…sometimes Visibility Empowered to make changes Commercial support is available Red Hat, e.g.
  26. 26. All because of you
  27. 27. Not possible without you.
  28. 28. 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
  29. 29. LiteStep http://www.litestep.net/snapshot2.png
  30. 30. LiteStep A project I was using myself Development had slowed Large, monolithic codebase Languages and APIs I was familiar with
  31. 31. JRuby Implementation of Ruby Written in Java Development had slowed Many tasks Beginner to advanced
  32. 32. Getting Involved
  33. 33. 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
  34. 34. A Good Contributor 1. Respects and forgives others 2. Recognizes expertise 3. Increases the pool of resources
  35. 35. JRuby Commits 49% 51% Paid Unpaid
  36. 36. Things to Contribute Help field questions on lists, forums, IRC Improve documentation Present at a conf or user group File bugs or submit fixes
  37. 37. A Good Bug Reporter Clearly states expectation vs reality Provides code or steps to reproduce Volunteers relevant env details Responds to updates and comments
  38. 38. Going Deeper Bug triage Help guide other bug reporters Observe fixes for other bugs Attempt your own fix!
  39. 39. 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
  40. 40. My JRuby Contributions Several rewrites of interpreter JIT compiler to JVM bytecode Native I/O and process subsystem Ruby/Java integration layer
  41. 41. I did not know how to do these things.
  42. 42. Bug Fix Types Behavior Performance Documentation Quality http://upload.wikimedia.org/wikipedia/commons/9/9b/Insect_antennae_comparison.jpg
  43. 43. Crafting a Fix Get 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
  44. 44. A Good Patch Fixes the original problem Limits changes to the actual fix Matches coding style Maintains documentation truths Includes a regression test
  45. 45. More Tips Ask for help Accept that patch review takes time Not all patches are accepted Be willing to iterate
  46. 46. Into the Core Running a Project http://upload.wikimedia.org/wikipedia/commons/0/07/Earth_poster.svg
  47. 47. Becoming a Committer Proven track record of fixes Respectful member of community Sustained interest Domain expertise
  48. 48. Profile: mkristian Maven integration expert Consistently submitting patches Maintaining related libraries Active user
  49. 49. Open Commit Bit Alternative path to core One accepted patch and you’re in Rapidly adds new core members Rewards early participation Debateable benefits over time
  50. 50. Core members are dev, manager, evangelist, and QA rolled into one.
  51. 51. A Good Core Contributor Respectfully handles bugs and patches Discusses changes where necessary Does not violate others’ fixes Remains humble
  52. 52. Assume you are wrong.
  53. 53. Not all bugs are in code.
  54. 54. User experience matters.
  55. 55. 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
  56. 56. Licensing http://upload.wikimedia.org/wikipedia/commons/2/29/Software_Categories.png
  57. 57. I am not a lawyer.
  58. 58. Criteria Sharing of source Assignment of rights Attribution Lifecycle of alterations
  59. 59. http://choosealicense.com/
  60. 60. Contributor Agreement? Requires users to “sign” an agreement Permission to release changes Copyright assignment Permission to change licensing Public assertion is often enough
  61. 61. 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.
  62. 62. Get It Out There Use 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
  63. 63. Release the Hounds!
  64. 64. A Good Community Member Has a thick skin Expects to learn from everyone Remembers that these are real people
  65. 65. Encouraging Contribution Ask for help Be honest Be responsive Empathize
  66. 66. Final Words
  67. 67. The world runs on OSS.
  68. 68. OSS would not exist without your help.
  69. 69. You are the most important contributor.
  70. 70. Thank you! Charles Oliver Nutter @headius

×