Hitchhikers Guide to Participating in Open Source - Long Version


Published on

Hitchhikers Guide to Participating in Open Source talk prepared for PyCon 2014.

This is the extended version that was cropped down to make the final talk.

Published in: Software, Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Hitchhikers Guide to Participating in Open Source - Long Version

  2. 2. @elequ github.com/elena Elena Williams Django Web Developer Django News Podcast Canberra Python UG Perth Django UG DjangoCon AU International Person of Mystery No time!
  3. 3. ANDREW TRIDGELL rsync "TRIDGE" Author of and Thank you!
  4. 4. COMP8440 ANU Australian National University COMP8440 YOUTUBE Lectures
  6. 6. LIBRE GRATUIT "FREE" SOFTWARE #englishfail
  7. 7. friː/ Able to act or be done as one wishes; not under the control of another“ ”
  8. 8. "INVENTED" IN A BOARDROOM IN 1998 Term "Free" implicitly threatening to them. "OPEN SOURCE" Public, "open" source, such as a newspaper/phone book
  10. 10. Copy or Transmit Display or Perform Sell Change! (Remix/make Derivative works) COPY "RIGHTS" Assumed to apply automatically.
  11. 11. "TO EVERY COW ITS CALF TO EVERY BOOK ITS COPY" Jurisdictions similar, enforcement varies.
  12. 12. fixed in any tangible medium “ ” creator of a creative expression “ ” Jurisdictions: rules same, enforcement varies. 17 USC §102 Frank Siler "Copyright and You" PyCon 2013
  13. 13. COPYRIGHT EXCEPTIONS Stifled! Repressed!
  15. 15. In the beginning there was the command line. BEGINNING OF SOFTWARE > _
  16. 16. 1969: ANTITRUST "THE UNBUNDLING" First major proprietary software.
  17. 17. RICHARD STALLMAN "large volumes bug free code": GCC, emacs
  18. 18. Richard Stallman FATHER OF FREE SOFTWARE Freak genius, MIT AI labs
  19. 19. FOSSLicensing isa Hack on Copyright Copyleft doesn't exist without Copyright. "PROMISE" NOT TO SUE
  20. 20. Offsets Copy"rights" as"Freedoms (and other stuff) 63 Recognised Licenses GPL and LGPL; Apache License; BSD; MIT License; Mozilla Public License 2.0; OPEN SOFTWARE INITIATIVE +28 rejected licenses.
  21. 21. If you're not sure: Assume your work is Derived Inherit the original license. or Don't copy/use the software. DERIVED WORKS
  22. 22. Do you understand the difference? FREE SOFTWARE V. OPEN SOURCE
  23. 23. kernel source "open" .. but don't copy, change, derive, resell, etc
  24. 24. Wait: AmI theCopyright Holder? At what point could you re-license Windows? Your own script?: Yes! A framework specific plugin?: .. maybe DERIVED WORKS "COMP8440: FOSS and the Law"
  25. 25. 15% of all repositories had license files (ie: 85% arenotFOSS) GITHUB PROJECTS WITH LICENSES "all the fruits in the forest are poisonous"
  26. 26. Mustreturn changes. Muststay open. Only price of admission for business. Also called "viral" licensing. Never has the little guy lost. COPY LEFT
  27. 27. .. depends on the project. What Licensedo I pick? THIS WAS MEANT TO BE FUN ... Very complicated.
  28. 28. Would you remember to consider everything? LimitationofLiability Disclaim Warranty (or you can still be sued) USE AN OSI LICENSE Carl will be talking which licence to choose after me.
  29. 29. Copyright (C) Andrew Tridgell 1992. “Permission to use, copy and distribute this software is given to anyone who wants to, for NON-PROFIT only. You may not charge for this software or any derivatives of it without first contacting the Author. ” Don't write your own: "COMP8440: Licensing" (3min) 18 years later.
  30. 30. Open source to open source, corporation to corporation. If you do open source, you’re my hero and I support you. If you’re a corporation, let’s talk business MODERN CASE STUDY “ ”The term "exploited" is being used a bit lately.
  31. 31. 54%GPLv2/LGPLv2 and GPLv3/LGPLv3 13%Apache License 2.0 11%MIT License 8%BSD 2.0 License (3 and 2-clause) 6%Artistic (Perl) License <8%rest
  32. 32. Feel strongly about being exploited by the man (pick copyleft: eg GPL). Believing the community will conquer all (pick permissive: MIT, BSD, etc). I am so not a lawyer.
  33. 33. Every last major tech company is FOSS now. QuestionCopyright.org "SOCIAL WASTE TRANSACTION COST" quote Daniel B. Ravicher (famous lawyer)
  34. 34. Don't have to enforce. Breach? Ask politely . If you have a good license can ask FOSS lawyer for help. (probably unintended) USING YOUR LICENSE With GPL never has the little guy lost (groklaw).
  35. 35. Outside the Scope of this Talk: Changing your License Copyright Assignment/("Contributor Agreements") Re-licensing (issuing a license specifically) Multi-licensing USING YOUR LICENSE
  36. 36. Software Freedom Law Centre Software Freedom Conservancy Free Software Foundation (FSF) Electronic Frontier Foundation (EFF) Creative Commons, QuestionCopyright, GrokLaw MODERN HEROES We need more technical lawyers.
  37. 37. //WHY CONTRIBUTE?
  38. 38. YOU!
  40. 40. Pretty much anything anyone ever does is for this, our brains are wired this way. Recognition TO FEEL A SENSE OF CONNECTION Meet like-minded people.
  41. 41. "SKILLUP" HOW TO BE THE "BEST" Trythings don't do "during theday" PursuePerfection BEST SCHOOL Do cool things with people better than you.
  42. 42. Exposurefor Your Projects/Work Exposurefor You Employerswant: Proof of your Capability BEST CV Want jobs?
  43. 43. "Make the world a better place." Moral values Democracy/Meritocracy But not everyone! ETHICS AND ALTRUISM Not cool to talk about in old-skool projects.
  44. 44. Studying? Bored with work? Do something fun and productive. CONSTRUCTIVE PROCRASTINATION Some of the best FOSS projects in history.
  45. 45. Compelling and challenging Chaotic, Anarchic and Opinionated Serendipitous: Don't know where it will go. We'd do it anyway.(probably) FUN
  47. 47. How big is the project? How technical and serious is the project? What is its scope? KINDS OF PROJECTS Can't independently derive this stuff.
  48. 48. How old is the project? Where in its lifecycle is it? ~ New project ~ Active progression ~ Mature, maintenance phase ~ Dead KINDS OF PROJECTS
  49. 49. How many people are involved? What clear roles are defined? ~ BDFL/s ~ Release Manager ~ Core Developers ~ Governance Structure/Software Foundation KINDS OF PROJECTS
  50. 50. Cathedral v. Bazaar Recent research: ~ Foundation ~ Community driven ~ Monarchy KINDS OF PROJECTS
  51. 51. 2% ~335K projects (maybe) 1500 active WE ARE PYTHON
  52. 52. For thePurposeof Contribution 2 TYPES OF PROJECT WE ARE PYTHON
  53. 53. MEDIAN: 1 CONTRIBUTOR "When Free Software Isn't Better" Benjamin Mako Hill
  54. 54. Very tiny number of famous projects need: highly skilled, specific help. Vast majority of projects need: all the help in the world. VERY BIG AND VERY SMALL
  55. 55. HAVE A BASIC IDEA OF THE PROJECT BEFORE DIVING IN. For your own sake. Can have diametrically opposing experiences.
  56. 56. TREAD CAREFULLY Some projects have very high expectations. SOME PROJECTS ARE FUNNY Linux kernel I'm looking at you.
  57. 57. Start where you are Use what you've got Do what you can “ ” Alex "Skud" Bayley
  58. 58. //WHERE DO I FIND PROJECTS? I'm ready.
  59. 59. https://open .org https://github.com/explore http://sourceforge.net/p/forge/helpwanted/ http://teachingopensource.org/ https://opensource.com/ (redhat) http://community.ubuntu.com/contribute/ http://contribute.jquery.org/ hatch
  60. 60. DOMAIN KNOWLEDGE Just because ...
  61. 61. What's your interest? What's your strength? What skill do you currently want to work on? What problem to you want to solve? What do you do in your spare time? weird form of teamwork Personal need/"Scratching your own itch"
  62. 62. HAVE A GOOD INTERNAL SENSE OF WHEN YOU'RE USING FREE SOFTWARE LEARN TO LOOK (which I trust everyone here does ...)
  63. 63. LearntoLook for waysyoucan help. If you have the right attitude interesting problems will find you. THINK LIKE A CONTRIBUTOR “Lesson #4 The Cathedral and the Bazaar Go beyond being a Passive User
  64. 64. Details, details, details Isolate, replicate and report bugs properly. Read and understand documentation THINK LIKE A CONTRIBUTOR (spelling, cruft, etc). When you find bugs: (for clarity and coherence). Remember: You're contributing effort, it takes energy.
  65. 65. START SMALL This is not the last time I'm going to say this.
  66. 66. #1 Seek/Find/Reach out notice itch find code (eyeball community) #2 Do your thing fork, clone poke around code (grep, code, etc) commit, push (to your version) #3 Send back your work pull-request (comment/email)
  67. 67. #1 NoticeItch, Find Source Seek/Find/Reach out. #2 Work on your Contribution #3 Returnyour Contributions Notify project, get feedback.
  68. 68. For your firstcommit: Punch your weight Play to your strengths Have realistic expectations Talk to the project! MY FIRST CONTRIBUTION First time: Like dinner parties and marathons don't attempt something you've never done before.
  70. 70. Well known projects have: serious, dedicated, committed, professional people working on them. These people have taken serious time and effort.
  71. 71. "Ecosystem" around big projects ~ Work up ranks (hard work over long time). ~ Make plugins. ~ Be a good "Cultural fit". CONCEPT OF "CORE" Trustworthy committers are a very limited resource
  72. 72. Learn the "style" of the existing project. (Phrasing, structure, etc) If in doubt: copy Don’t make up a new style: ask! There will probably be rules. Follow them (eg, PEP) PROJECT STYLE Step where they step.
  73. 73. CONFERENCE SPRINTS! Tools/projects you use. Projects people you know are working on. Projects within your "domain". "Learn to look" redux FINDING PROJECTS After the closing address in about 3 hours.
  74. 74. //AS A CODER
  75. 75. Spend most your time: Reading Code Fixing Testing Maintaining Documenting AS A CODER It's not all about the uber-ego commits.
  76. 76. Code Review Ticket Triage Help out on the Users list/IRC (fielding questions) AS A CODER
  77. 77. The software development methodologies adopted are not the same as those found in closed source development projects. “ ”
  78. 78. (Stable/Working) >(your Ego) Expect to get Rejection but playful, friendly, caring rejection. Aspiring to Concensus-Based Perfection (rather than minimum viable product) HOW FOSS IS DIFFERENT Particularly in famous projects: free ⊄ ideal
  79. 79. In FOSSif you'regoing to: FailFast! Hot white fear, nobody wants to look stupid. Do document your failures. Don't fail on the same thing repeatedly. Don't assign blame. FAILURE IS NECESSARY Failure is comparatively cheap for us.
  80. 80. Learn to take"feedback" (iecriticism) Accepting criticism is actually a skill. YOU ARE NOT YOUR CODE. Development is a continuum. HOW FOSS IS DIFFERENT Giving good constructive criticism is a really hard skill.
  81. 81. My patch is amazing accept it now. ✗ Who is this guy? Do you think this patch is OK? ✓ OMG, God wrote this patch. BE OVERLY MODEST "completely and self-deprecatingly truthful"
  82. 82. SmallProjects Can Turn on a Dimefor Your Idea Envisioning and implementing is expensive for small projects. SOME PROJECTS ARE FLEXIBLE (Big/Famous Projects are Not) Maybe it is about the uber-ego commits.
  83. 83. DROP YOUR EGO It's just not cool here. HOW FOSS IS DIFFERENT
  84. 84. YouareHerebyChoice Engage Socially You are statistically more likely to stay involved with the project for longer. HOW FOSS IS DIFFERENT IRC, Email, Sprints, User Groups, Conference
  86. 86. Ask your employer! Give back donate some of your time to the projects you use at work. Openly License your internal packages/projects. THINGS YOU CAN DO Some of these kinds of projects can be successful.
  87. 87. 3.3M Peopleon ohloh ⅔M projects 18.5M programmers 11M professionals 7.5M "hobbiests" IDC, 2014 survey
  88. 88. //AS A NON-CODER
  89. 89. 50%-50% FOSS needs non-Coders. FOSS needs to involve non-Coders effectively. NON-CODERS MSF, EWB, Pro-Bono Lawyers
  90. 90. Code Review (learning) Every project needs: Designers, Content makers, Writers Translations! Many kinds of unusual task! AS A NON-CODER All these things take tremendous talent and effort.
  91. 91. BeModest and beOK with Yourself Be confident you can do something they can't. Beware of the gaping holes in their knowledge outside code and be gentle about this. AS A NON-CODER Programmers aren't very smart, they will mirror: if you're comfortable they will be.
  92. 92. UsetheToolsYour FriendsareUsing Use tools that are easy to install (be kind to yourself). IF YOU ARE NOT A CODER (the best support!)
  93. 93. LEARN TO USE GITHUB Be comfortable with how to make contributions and everything else will follow. IF YOU ARE NOT A CODER This is the 2014 advice.
  94. 94. USE A GIT GUI
  95. 95. Programming is easy Software is hard Only onepersoncould work on a project atonce. VERSION CONTROL SYSTEMS Like "Shared document" but terminator style.
  96. 96. SCCS (1972) RCS (1982) CVS (1986/9) SVN (2000) ~60% FOSS 2008 Most Free Software ever developed. CENTRALIZED All these systems are open source.
  97. 97. Whereisthe"Master"Repository kept? Centralised: One cardinal version Distributed: Every one has own version DIFFERENCE: MASTER Need to connect to make changes (can be slow). Changes are distributed.
  98. 98. Should youFork? Centralized: "Forking" is BAD Distributed: "Forking" is the first thing you do. DIFFERENCE: FORKING Discouraged (can be an act of aggression).
  99. 99. DVCSwarsearly 2000s Bazaar, Mercurial, DARCS, Monotone, Git DISTRIBUTED
  100. 100. diff/patch Universal language of software change. VERSION CONTROL Larry Wall
  101. 101. CONCENTRATE Version Control (particularly git) has a reputation for being complicated.
  102. 102. sourceforgecompared togithub Is git perfect? (probably not) VCS MAY CHANGE AGAIN So recently as 2007(!) lauding sourceforge.
  103. 103. If this is all too much: SAY THANKS! Send an email, tweet, etc or in person! Open source developers are people too.
  104. 104. //HOW TO PROJECT OWNER Don't ask me. Ask Carl, he's talking about this next.
  106. 106. For the love of humanity ... EnsureIt’sPossibleto Run/Install! INSTALLATION AND DEPENDENCIES Fortunately we all use virtual environments.
  107. 107. Wearepython. FIRST TIME?: USE COOKIECUTTER
  108. 108. "Advertising" helps. Maintenance and care helps. Enough code to convince potential co-developers. FIRST TIME?: DON'T EXPECT CONTRIBUTORS "plausible promise"
  109. 109. Phrase your problem in a way that's easily accessible to the person with the right skills. Offer Recognition GETTING OTHER PEOPLE TO HELP
  110. 110. Thisisoneof the mainmotivations for peopleto contribute. They're not doing it for the money, after all. GIVE RECOGNITION!
  111. 111. Likegetting a puppy. It'sa responsibility and it getsbigger. AS A PROJECT OWNER It takes work to get work done.
  112. 112. Recogniseit takeswork to getworkdone. Automate all the things. AS A PROJECT OWNER
  113. 113. Don't Automatically Reject/Revert Don't let people find out through an automated system. Drop a quick note, there's usually a reason. Humans hate rejection, chips away at your soul.
  114. 114. Bike-shedding How much domain experience/knowledge required? "Putting your thumb print on it."
  115. 115. 1957 argument that organizations give disproportionate weight to trivial issues. Time spent in discussion will be in inverse proportion to the complexity. PARKINSON'S LAW OF TRIVIALITY “ ”Resist the urge to weigh in, unless asked personally.
  116. 116. Like-Attracts-Like Firstly: Do No harm Good Judgement Politeness, Respect, Patience CHOOSE YOUR CULTURE Like a motley family, where people can come and go.
  117. 117. Your role may tend to be: Firefighter Anti-bikeshedder AS A PROJECT OWNER
  118. 118. PeopleTend NottoAnswer theQuestion They'reAsked Hard to see your project with new eyes. Get other people to do this!
  119. 119. Be Optimistic (not stupid, hopeful but realistic) Be Patient, Fair & Tolerant Have decent Judgement and "Taste" Traits of a good Leader?: perhaps: Strength & Resourcefulness BE A GOOD LEADER Hard to tell who will make a good leader.
  120. 120. "Pull Request Zero" Have a non-code person who answers pull requests. AS A PROJECT OWNER No feedback makes people think you don't want them.
  121. 121. Never Know Who'sWatching You probably have quality sleepers/lurkers. You will never see contribution from people you (or your community's) behavior turns away. ALWAYS BE CORDIAL
  122. 122. .. or you will burnout. Writea list highlight thethingsyoulove. Give everything else away! LET GO!
  123. 123. According to the research: Average involvement is between: 3 months and 2 years. PeopleChange! EMBRACE YOUR CHURN ... and they should!
  124. 124. Occasionally ignore everything (except security). ProjectLeaderChurn isalso a Thing BURN OUT: TAKE BREAKS
  125. 125. Most of our toolstakeYEARSto learn! Learn our Basic Tools We expend most of our effort/lives with them. The all take practice it's easy to stagnate. MASTER YOUR TOOLS Programmers are often self-taught/from other fields.
  126. 126. Text Editor Pick a good one, learn to use it well. MASTER YOUR TOOLS Programmers are often self-taught/from other fields.
  127. 127. Version Control (git, hg, svn, etc) Learn basic commands solidly. Get comfortable with major operations ( reverting, resolving conflicts, merging, branching, etc). MASTER YOUR TOOLS Programmers are often self-taught/from other fields.
  128. 128. Issuetracker Learn to Write a Good Bug Report: ~ Be Descriptive ~ Do the Homework "Design decision needed"/"close"v."feedback" MASTER YOUR TOOLS Special hell for people who just copy/paste traceback.
  129. 129. Command Line(CLI) Learn to use it well (go beyond ` cd`). Regular Expressions ( regex). grepand find MASTER YOUR TOOLS aliasing, wildcarding, command substitution, piping, variables/control structures, iteration, etc
  130. 130. Mailing Lists/IRC/IM When/Which to use? Who to ask about different matter. General channels v. channels-with-a-purpose. Language expectations. Is there a code of conduct? MASTER YOUR TOOLS
  131. 131. Learn to WRITE Effectively Communicate Have a working knowledge of popular markups ( ReST, markdown, etc). MASTER YOUR TOOLS (clearly)
  133. 133. //ON PARTICIPATION For those to whom this is obvious: I'm not talking to you. thxk.
  134. 134. ... and are solved by. Communicate! Communicate! 95% human problems are caused by ... COMMUNICATE! Shallow and often.
  135. 135. StateIt Upfront StateasSimply asPossible brief, short, to the point, concise, succint summary, pithy, crisp, incisive ASK/EXPLAIN: BE TERSE “ ”No fluffy language, no big explanation. Be cordial but just get to the core of it.
  136. 136. Do What YouSay You'reGoing to Do If you can’t: Communicate! FOSS people are spectacularly understanding. DON'T SPEAK UP, if you're not "already there". SET EXPECTATIONS 18%
  137. 137. Tell PeopleWhat You'reDoing For their sake. Save them from wondering. SET EXPECTATIONS
  138. 138. Don’tagonise(spareyourself pain!) Experienced people often can see/feel you struggling . ASK! (but will be polite) In short term: it may be intimidating to ask In medium term: you're learning faster They know the feel because they've been there.
  139. 139. Everyone does. Everyone is about most things. The "best" leverage On feeling stupid: (and are usually very humble). SAYING: I DON’T KNOW Nobel Prize 1996 "Buckminsterfullerene"
  140. 140. RuleofThumb: If you'restuck for 1⁄2hour go to: IRC, mailing lists, IM, etc ASK! "Confessions of Joe Developer" @pydanny
  141. 141. Decisions are made by the people who show up. User Groups, Hackerspaces, Conferences IRC, Email Lists TURN UP “ ” Both Online and Offline
  142. 142. CONGRATULATIONS! Youarealready here. Thankyou! Shareand enjoy.
  143. 143. Don'tCriticisePeople'sLifeDecisions It's a surprisingly small community. ON EACH OTHER'S TEAM Same people come around.
  144. 144. Don'tCriticiseTechnical Fixes/Solutionsthat are CurrentlyWorking Rough concensus, running code. ON EACH OTHER'S TEAM “ ”Unless you have a patch actually delivered. Even then be nice.
  145. 145. Don'tCriticiseother FOSSProjects ... without contacting the project first. Send an email or submit a ticket. Pull up anyone else you see doing this. ON EACH OTHER'S TEAM Save it for the proprietary world.
  146. 146. All mistakes will eventually be washedcleanby timeand entropy. Communitiesarevery robust. DON’T GET DISHEARTENED Nobody cares how many times you fall down, ONE fewer than the times you get up all that matters.