$30 off During Our Annual Pro Sale. View Details »

Open Source Survival Guide

Open Source Survival Guide

Collaboration is the key for successful software development. It works best when code can be understood and contributed to by many. Sometimes we think the unwritten rules for successful online collaboration are obvious, but experience has shown again and again that it is not. So let's discuss these rules and write them down so we have them. We will discuss how to make successful code contributions to the projects we all rely on, and offer some strategies for encouraging contributions on our own projects.

blowmage

March 31, 2016
Tweet

More Decks by blowmage

Other Decks in Programming

Transcript

  1. OPEN SOURCE
    SURVIVAL GUIDE
    @blowmage Presents…

    View Slide

  2. View Slide

  3. View Slide

  4. View Slide

  5. :mlpbeer:

    View Slide

  6. AND NOW FOR SOMETHING
    COMPLETELY DIFFERENT

    View Slide

  7. 18 MONTHS

    View Slide

  8. FULL TIME

    View Slide

  9. OPEN SOURCE

    View Slide

  10. AMA

    View Slide

  11. OPEN SOURCE SURVIVAL GUIDE
    HOW DID YOU GET THAT GIG?
    Inquisitive Ruby on Ales Attendee
    I HAVE GOOD FRIENDS WHO HELP ME.
    Mike Moore, Super Lucky

    View Slide

  12. OPEN SOURCE SURVIVAL GUIDE
    WHY IS YOUR BEARD SO MAGNIFICENT?
    Salt of the Earth Ruby on Ales Attendee
    I USE BEARD OIL AND COMB IT OFTEN.
    Mike Moore, Beard of Destiny

    View Slide

  13. 3 TYPES OF
    OPEN SOURCE USERS

    View Slide

  14. OPEN SOURCE SURVIVAL GUIDE
    3 TYPES OF OPEN SOURCE USERS
    Maintainers
    Collaborators
    Consumers

    View Slide

  15. DREYFUS MODEL OF
    SKILL ACQUISITION

    View Slide

  16. Mastery
    Expertise
    Proficiency
    Competence
    Novice
    OPEN SOURCE SURVIVAL GUIDE
    DREYFUS MODEL OF SKILL ACQUISITION

    View Slide

  17. OPEN SOURCE SURVIVAL GUIDE
    LEVEL 1: NOVICE
    Rigid adherence to taught rules or plans
    No exercise of "discretionary judgment"

    View Slide

  18. OPEN SOURCE SURVIVAL GUIDE
    LEVEL 2: COMPETENCE
    Limited "situational perception"
    All aspects of work treated separately with equal
    importance

    View Slide

  19. OPEN SOURCE SURVIVAL GUIDE
    LEVEL 3: PROFICIENCY
    “Coping with crowdedness" (multiple activities,
    accumulation of information)
    Some perception of actions in relation to goals
    Deliberate planning
    Formulates routines

    View Slide

  20. OPEN SOURCE SURVIVAL GUIDE
    LEVEL 4: EXPERTISE
    Holistic view of situation
    Prioritizes importance of aspects
    "Perceives deviations from the normal pattern"
    Employs maxims for guidance, with meanings that adapt to
    the situation at hand

    View Slide

  21. OPEN SOURCE SURVIVAL GUIDE
    LEVEL 5: MASTERY
    Transcends reliance on rules, guidelines, and maxims
    "Intuitive grasp of situations based on deep, tacit
    understanding"
    Has "vision of what is possible"
    Uses "analytical approaches" in new situations or in case of
    problems

    View Slide

  22. PRAGMATIC THINKING
    AND LEARNING
    BY ANDY HUNT

    View Slide

  23. AMA

    View Slide

  24. OPEN SOURCE SURVIVAL GUIDE
    3 TYPES OF OPEN SOURCE USERS
    Maintainers
    Collaborators
    Consumers

    View Slide

  25. DOCUMENTATION

    View Slide

  26. THE ABSENCE OF A PROGRESSIVE,
    SMOOTH LEARNING RESOURCE THAT
    HAS NO SUDDEN JUMPS IN COMPLEXITY.
    Chris Smith
    OPEN SOURCE SURVIVAL GUIDE

    View Slide

  27. IF THE DOCUMENTATION IS BAD OR
    PARTIALLY COMPLETE IT CAN BE TOUGH
    TO UNDERSTAND OR IMPLEMENT.
    Joshua Richardson
    OPEN SOURCE SURVIVAL GUIDE

    View Slide

  28. I KEEP HEARING I SHOULD START WITH
    SUPPLEMENTING THE DOCUMENTATION,
    BUT HOW DOES THIS EVEN WORK?
    Barrett Clark
    OPEN SOURCE SURVIVAL GUIDE

    View Slide

  29. YOU FIND THE RIGHT SOLUTION BUT IT
    ISNT DOCUMENTED WELL ENOUGH TO
    UNDERSTAND.
    Todd Resudek
    OPEN SOURCE SURVIVAL GUIDE

    View Slide

  30. SOMETIMES THE DOCUMENTATION
    ASSUMES A CERTAIN LEVEL OF
    KNOWLEDGE. I WOULD LIKE TO SEE MORE
    HOW-TOS AND STEP-BY-STEP EXAMPLES.
    Tad Thorley
    OPEN SOURCE SURVIVAL GUIDE

    View Slide

  31. LACK OF SUPPORT AND
    DOCUMENTATION.
    Jon Jensen
    OPEN SOURCE SURVIVAL GUIDE

    View Slide

  32. FINDING DOCUMENTATION NOT WRITTEN
    BY EXPERTS WHO ASSUME CONTEXT
    THEY DON'T HAVE.
    Sarah Mei
    OPEN SOURCE SURVIVAL GUIDE

    View Slide

  33. PEOPLE WHO ARE BIG NAMES IN OPEN
    SOURCE AND WHO YOU LOOKED UP TO
    TREATING YOU LIKE CRAP.
    Hsing-Hui Hsu
    OPEN SOURCE SURVIVAL GUIDE

    View Slide

  34. OPEN SOURCE SURVIVAL GUIDE
    DOCUMENTATION
    Finding Documentation
    GitHub Page
    RubyDocs.info
    Reading Source Code

    View Slide

  35. OPEN SOURCE SURVIVAL GUIDE
    TYPES OF DOCUMENTATION
    Code Documentation
    Method descriptions
    Method arguments
    Method example code

    View Slide

  36. OPEN SOURCE SURVIVAL GUIDE
    TYPES OF DOCUMENTATION
    Library Guides
    README
    Tutorials, step-by-step instructions
    Screencasts
    Books

    View Slide

  37. OPEN SOURCE SURVIVAL GUIDE
    README
    What the library does and does not
    Simple code example
    How to install the library
    Where to find code documentation
    Where to find guide documentation

    View Slide

  38. THIS IS HARD

    View Slide

  39. EMPATH

    View Slide

  40. OPPORTUNITY

    View Slide

  41. AMA

    View Slide

  42. OPEN SOURCE SURVIVAL GUIDE
    3 TYPES OF OPEN SOURCE USERS
    Maintainers
    Collaborators
    Consumers

    View Slide

  43. CONTRIBUTING

    View Slide

  44. OPEN SOURCE SURVIVAL GUIDE
    TYPES OF CONTRIBUTIONS
    Code
    Documentation
    Organization
    Software
    User Groups
    Conferences

    View Slide

  45. OPEN SOURCE SURVIVAL GUIDE
    TYPES OF CONTRIBUTIONS
    Code - Maintainers, Collaborators
    Documentation - Maintainers, Collaborators, Consumers
    Organization - Maintainers, Collaborators, Consumers
    Software
    User Groups
    Conferences

    View Slide

  46. OPEN SOURCE SURVIVAL GUIDE
    ENCOURAGING FIRST-TIME CONTRIBUTIONS
    CONTRIBUTING
    Setting up developer environment
    Contacting Maintainers (IRC, Gittter, Mailing List, etc.)
    Running Tests
    Code Conventions

    View Slide

  47. OPEN SOURCE SURVIVAL GUIDE
    AUTOMATING CONTRIBUTIONS
    Rubocop
    Automated Build (Travis-CI, Circle CI, etc.)
    First-time Issue Labels (easy, first time, help wanted, etc.)
    Vagrant

    View Slide

  48. AMA

    View Slide

  49. OPEN SOURCE SURVIVAL GUIDE
    3 TYPES OF OPEN SOURCE USERS
    Maintainers
    Collaborators
    Consumers

    View Slide

  50. SURVIVING

    View Slide

  51. USER GROUPS

    View Slide

  52. I FOUNDED AND ORGANIZE A MEETUP
    SPECIFICALLY DESIGNED TO CREATE A
    WELCOMING ENVIRONMENT.
    Hsing-Hui Hsu
    OPEN SOURCE SURVIVAL GUIDE

    View Slide

  53. OPEN SOURCE SURVIVAL GUIDE
    SURVIVING WITH HELP FROM USER GROUPS
    Simply be active in a User Group!
    Find a Beginner-friendly User Group
    Start a Beginner-friendly User Group
    Help Organize a User Group
    “My First Pull Request” Night

    View Slide

  54. I DON'T KNOW THAT YOU CAN LEARN A LOT ABOUT
    THIS BEFOREHAND. A LOT OF OPEN SOURCE
    KNOWLEDGE COMES FROM JUST CONTRIBUTING.
    YOU WILL MAKE MISTAKES. YOU WILL GET
    FRUSTRATED. IT IS NOT EASY...
    Eileen Uchitelle
    OPEN SOURCE SURVIVAL GUIDE

    View Slide

  55. BUT, IF YOU REMEMBER THAT EVERYONE IS HUMAN
    AND TREAT THEM AS SUCH, APOLOGIZE WHEN
    NECESSARY, AND WRITE GOOD EXPLANATIONS
    (AND COMMIT MESSAGES!) YOU WILL LEARN SO
    MUCH FROM CONTRIBUTING TO OSS.
    Eileen Uchitelle
    OPEN SOURCE SURVIVAL GUIDE

    View Slide

  56. COMMUNICATION

    View Slide

  57. LEARNING TO COMMUNICATE "REMOTELY". WE'RE
    SO USED TO WORKING RIGHT WITH THE PEOPLE
    WHO WROTE THE PREVIOUS CODE IN OUR APPS IT
    CAN BE HARD TO ADJUST YOUR WRITING
    STRUCTURE AND TONE…
    Eileen Uchitelle
    OPEN SOURCE SURVIVAL GUIDE

    View Slide

  58. FOR COMMUNICATING WITH SOMEONE A) YOU
    DON'T KNOW AND B) THROUGH TEXT.
    ADDITIONALLY, EMOTIONAL INTELLIGENCE IS VERY
    IMPORTANT TO COMMUNICATING EFFECTIVELY…
    Eileen Uchitelle
    OPEN SOURCE SURVIVAL GUIDE

    View Slide

  59. DON'T BLAME OR HARASS MAINTAINERS
    FOR PROBLEMS, INSTEAD HELP THEM
    FIX IT.
    Eileen Uchitelle
    OPEN SOURCE SURVIVAL GUIDE

    View Slide

  60. “THE BOX”

    View Slide

  61. LEADERSHIP AND
    SELF-DECEPTION
    THE ABRIDGER INSTITUTE

    View Slide

  62. SELF-DECEPTION

    View Slide

  63. “EXPERIENCING OTHER PEOPLE OR
    CIRCUMSTANCES AS HAVING MORE POWER
    OVER OUR OWN HAPPINESS THAN WE DO.”

    View Slide

  64. I'M SORRY YOU FEEL THAT WAY.
    Mike Moore, Professional Idiot
    OPEN SOURCE SURVIVAL GUIDE

    View Slide

  65. STORY TIME

    View Slide

  66. JUSTIFICATION IS THE ADULT
    VERSION OF BLAMING OTHERS

    View Slide

  67. OBJECTS

    View Slide

  68. View Slide

  69. WHEN SOMEONE WE HAVE BEEN BLAMING BECOMES
    REAL TO US, WE CHANGE. WE BECOME A PERSON WHO
    SEES ANOTHER PERSON AS REAL. WE CHANGE FROM
    BEING ACCUSING, GUARDED, AND SELF-ABSORBED TO
    BEING OPEN, SELF-FORGETFUL, AND WELCOMING.
    Terry Warner
    OPEN SOURCE SURVIVAL GUIDE

    View Slide

  70. TIME MACHINE

    View Slide

  71. THE RECONSIDERATION
    EXERCISE

    View Slide

  72. View Slide

  73. COOPERATIVE GAME

    View Slide

  74. AMA

    View Slide

  75. View Slide

  76. View Slide

  77. View Slide

  78. View Slide

  79. View Slide

  80. View Slide

  81. View Slide

  82. THANK YOU!

    View Slide