Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Collaborating on Open Source - SeleniumConf Tokyo

Collaborating on Open Source - SeleniumConf Tokyo

​There are several reasons you might want to contribute to open source software. For me, it was that I wanted to learn in a more useful way than doing programming challenges. So I looked into how I could contribute to open source projects that I use myself. After contributing for almost two years, I notice that I have learned a lot from my contributions (which has been useful at work), as well as have made friends and have become part of a community. In this talk I will share my experience with contributing to Cucumber, including an early mistake (merging something that wasn’t ready yet) and fixing it with the support of core contributors, and still feeling welcome! You’ll learn how how to find your project and contributions to start with, how to connect with the community to make sure your contributions are useful and the many types of contributions you can make. Contributing to open source is a way of paying back to the community. In addition, it is a way for you to learn, collaborate and become part of a community. Getting (constructive) feedback on a pull request and collaborating to make things even better is a great feeling!

Marit van Dijk

April 19, 2019
Tweet

More Decks by Marit van Dijk

Other Decks in Programming

Transcript

  1. @MaritvanDijk77
    github.com/mlvandijk
    medium.com/@mlvandijk
    Collaborating on
    Open Source Software

    View Slide

  2. About me
    •Technical Test Engineer at bol.com (NL)
    •Core contributor to Cucumber
    @MaritvanDijk77

    View Slide

  3. Open source software
    •Who uses open source?
    •Who contributes?
    •Who doesn’t contribute (yet)?
    @MaritvanDijk77

    View Slide

  4. Goal of this talk
    Get one (or more!) of you to do their first
    open source Pull Request (PR)
    @MaritvanDijk77

    View Slide

  5. How I got started
    •Work on a “real” project
    (vs coding challenges):
    •Learn new things
    •Do something useful
    @MaritvanDijk77

    View Slide

  6. Reasons to contribute
    •Learning
    •Give back / Feel useful
    •“Scratch an itch” (fix something you need)
    •Build CV / Portfolio
    •Network
    •Other?
    @MaritvanDijk77

    View Slide

  7. Why Cucumber?
    •Started: I liked using it
    •Stayed: The community
    @MaritvanDijk77

    View Slide

  8. What to contribute: Code
    •Fix bugs
    •Add new features
    @MaritvanDijk77

    View Slide

  9. What to contribute: Code
    •Fix bugs
    •Add new features // TODO
    @MaritvanDijk77

    View Slide

  10. What to contribute: Code
    •Fix bugs
    •Add new features
    •Refactor
    @MaritvanDijk77

    View Slide

  11. What to contribute: Code
    •Fix bugs
    •Add new features
    •Refactor
    •Add unit tests
    @MaritvanDijk77

    View Slide

  12. What to contribute: Code
    •Fix bugs
    •Add new features
    •Refactor
    •Add unit tests
    •Upgrade dependencies
    (Protip: Use tools to scan - https://snyk.io/)
    @MaritvanDijk77

    View Slide

  13. What to contribute: Code
    •Fix bugs
    •Add new features
    •Refactor
    •Add unit tests
    •Upgrade dependencies
    •Review PR’s
    @MaritvanDijk77

    View Slide

  14. What to contribute: Not code
    @MaritvanDijk77

    View Slide

  15. What to contribute: Not code
    •Help the community
    •Documentation
    •Issues
    •Testing
    •Other: Design, Product owner, etc.
    •Ask!
    @MaritvanDijk77

    View Slide

  16. Help the community
    •Answer questions
    •Slack
    •Gitter
    •Mailing list
    •IRC
    •Protip: Consider adding that info to the
    documentation!
    @MaritvanDijk77

    View Slide

  17. Documentation
    •Fix typos
    •Fix dead links
    •Provide feedback
    •Edit for clarity
    •Add missing info
    •Review PR’s
    @MaritvanDijk77

    View Slide

  18. Documentation
    •Fix typos
    •Fix dead links
    •Provide feedback
    •Edit for clarity
    •Add missing info
    •Review PR’s
    @MaritvanDijk77

    View Slide

  19. Documentation
    •Fix typos
    •Fix dead links
    •Provide feedback
    •Edit for clarity
    •Add missing info
    •Review PR’s
    @MaritvanDijk77

    View Slide

  20. Documentation
    •Fix typos
    •Fix dead links
    •Provide feedback
    •Edit for clarity
    •Add missing info
    •Review PR’s
    @MaritvanDijk77

    View Slide

  21. Documentation
    •Fix typos
    •Fix dead links
    •Provide feedback
    •Edit for clarity
    •Add missing info
    •Review PR’s
    @MaritvanDijk77

    View Slide

  22. Documentation
    •Fix typos
    •Fix dead links
    •Provide feedback
    •Edit for clarity
    •Add missing info
    •Review PR’s
    @MaritvanDijk77

    View Slide

  23. Issues
    •Report issues
    • Ask if not sure
    • Check for duplicates
    • Provide relevant information: use template (or add one!)
    • Create an MCVE (https://stackoverflow.com/help/mcve)
    •Reproduce and add info (or tests!)
    •Triage & label issues
    @MaritvanDijk77

    View Slide

  24. Testing
    •Test a bugfix
    •Test a new feature
    •Test a new release
    •”Test” documentation / tutorials
    @MaritvanDijk77

    View Slide

  25. What to contribute: Not time
    @MaritvanDijk77

    View Slide

  26. What to contribute: Not time
    @MaritvanDijk77

    View Slide

  27. What to contribute: Not time
    •Most projects run on volunteers
    •You (or your employer) can donate money
    •https://opencollective.com/
    •https://sfconservancy.org/
    •https://www.patreon.com/
    •https://tidelift.com/
    •Etc.
    @MaritvanDijk77

    View Slide

  28. Reasons not to contribute
    •It’s scary!
    •Feelings of inadequacy
    •Poor feedback / communication
    •Bad actors
    •Limitations: legal, time, etc.
    @MaritvanDijk77

    View Slide

  29. How to get started
    •Find a project
    •Check how to contribute to that project
    •Pick a task
    •Set up your environment (if needed)
    •Collaborate!
    @MaritvanDijk77

    View Slide

  30. Get started: Find a project
    •A project you use:
    •You care
    •You’re already familiar!
    @MaritvanDijk77

    View Slide

  31. Get started: Find a project
    •Websites:
    •https://github.com/collections/choosing-projects
    •https://hacktoberfest.digitalocean.com/ (oktober)
    •https://www.codetriage.com/
    •https://up-for-grabs.net/#/
    •https://www.firsttimersonly.com/
    •https://opensource.guide/
    •http://yourfirstpr.github.io/
    @MaritvanDijk77

    View Slide

  32. Get started: Find a project
    •Focus on welcoming communities
    •Observe interactions (support,
    feedback, onboarding)
    @MaritvanDijk77

    View Slide

  33. Get started: How
    •README
    •CONTRIBUTING (a.k.a. HACKING)
    •LICENCE (a.k.a. COPYING)
    •Code of Conduct
    •Styleguides
    •Ask!
    @MaritvanDijk77

    View Slide

  34. Get started: What
    •Solve your own problem J
    •Check for “Good first issue” or similar
    •Ask!
    @MaritvanDijk77

    View Slide

  35. Get started: Environment
    •Setup your environment
    •Git / version control
    •Programming environment (JDK, …)
    •Package manager (Maven, npm, …)
    •Fork & clone the project
    •See if you can build the project
    •If not: ask (protip: and add that info to docs!)
    @MaritvanDijk77

    View Slide

  36. Get started: Your first PR
    •Work on your contribution
    •Submit your contribution
    •Receive feedback & iterate
    •Contribution accepted!
    •Ask / communicate
    https://guides.github.com/introduction/flow/
    https://lab.github.com/courses
    @MaritvanDijk77

    View Slide

  37. Contribution accepted!
    @MaritvanDijk77

    View Slide

  38. TL;DR
    •Contributing to open source doesn’t have
    to take a lot of time or programming skill
    •If you want to contribute, but don’t know
    how – ask the community!
    •Please go and create your (first) PR
    @MaritvanDijk77

    View Slide

  39. @MaritvanDijk77
    github.com/mlvandijk
    medium.com/@mlvandijk
    Collaborating on
    Open Source Software

    View Slide