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

Collaborating on Open Source Software

Collaborating on Open Source Software

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 maintainers, 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 different types of contributions you can make.

Contributing to open source is a way of giving 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

October 06, 2022
Tweet

More Decks by Marit van Dijk

Other Decks in Programming

Transcript

  1. Collaborating on

    Open Source Software


    Voxxed Days Cluj-Napoca – Oct 6th, 2022
    @MaritvanDijk77

    github.com/mlvandijk

    https://maritvandijk.com/

    View Slide

  2. @MaritvanDijk77

    View Slide

  3. @MaritvanDijk77

    View Slide

  4. Warning! Risk of first contributions
    @MaritvanDijk77

    View Slide

  5. Or worse...
    @MaritvanDijk77

    View Slide

  6. @MaritvanDijk77
    Why?

    View Slide

  7. @MaritvanDijk77
    Why?
    What?

    View Slide

  8. @MaritvanDijk77
    Why?
    What?
    How?

    View Slide

  9. @MaritvanDijk77

    View Slide

  10. @MaritvanDijk77
    Give back

    View Slide

  11. @MaritvanDijk77
    Learn new things

    View Slide

  12. @MaritvanDijk77
    "Scratch an itch"

    View Slide

  13. @MaritvanDijk77
    Build a portfolio

    View Slide

  14. @MaritvanDijk77
    Network

    View Slide

  15. @MaritvanDijk77

    View Slide

  16. @MaritvanDijk77
    It can be scary!

    View Slide

  17. Work Life
    @MaritvanDijk77

    View Slide

  18. @MaritvanDijk77

    View Slide

  19. @MaritvanDijk77

    View Slide

  20. My first project:
    @MaritvanDijk77

    View Slide

  21. The community
    @MaritvanDijk77

    View Slide

  22. @MaritvanDijk77
    Different ways to contribute

    View Slide

  23. @MaritvanDijk77
    Code

    View Slide

  24. @MaritvanDijk77
    Fix bugs

    View Slide

  25. Fix bugs
    @MaritvanDijk77
    Fix bugs

    View Slide

  26. Refactor
    @MaritvanDijk77

    View Slide

  27. @MaritvanDijk77
    Refactor

    View Slide

  28. @MaritvanDijk77
    Fix typos

    View Slide

  29. Fix typos
    @MaritvanDijk77

    View Slide

  30. No dependencies
    @MaritvanDijk77
    Add new features

    View Slide

  31. Add tests
    @MaritvanDijk77

    View Slide

  32. Add tests
    @MaritvanDijk77

    View Slide

  33. @MaritvanDijk77

    View Slide

  34. Upgrading dependencies
    @MaritvanDijk77

    View Slide

  35. Upgrade dependencies
    @MaritvanDijk77

    View Slide

  36. Bots
    • Dependabot


    • Renovate


    • Snyk Open Source
    @MaritvanDijk77

    View Slide

  37. @MaritvanDijk77
    Review PR’s

    View Slide

  38. @MaritvanDijk77
    Contributions
    that are not code

    View Slide

  39. Contributions that are not code
    @MaritvanDijk77
    https://pragprog.com/book/
    vbopens/forge-your-future-
    with-open-source

    View Slide

  40. Help the community
    @MaritvanDijk77

    View Slide

  41. @MaritvanDijk77
    Answer questions

    View Slide

  42. Answer questions
    @MaritvanDijk77

    View Slide

  43. @MaritvanDijk77
    Pro tip: Consider adding that info
    to the documentation!

    View Slide

  44. @MaritvanDijk77
    Documentation!

    View Slide

  45. Documentation: Add info
    @MaritvanDijk77

    View Slide

  46. Edit documentation
    @MaritvanDijk77

    View Slide

  47. Fix dead links
    @MaritvanDijk77

    View Slide

  48. @MaritvanDijk77
    Review PR’s

    View Slide

  49. @MaritvanDijk77
    Provide feedback

    View Slide

  50. Report Issues
    @MaritvanDijk77

    View Slide

  51. Report Issues
    •Ask if not sure
    @MaritvanDijk77

    View Slide

  52. Report Issues
    •Ask if not sure


    •Check for duplicates
    @MaritvanDijk77

    View Slide

  53. Report Issues
    •Ask if not sure


    •Check for duplicates


    •Provide relevant information: use template
    (or add one!)
    @MaritvanDijk77

    View Slide

  54. 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)
    @MaritvanDijk77

    View Slide

  55. @MaritvanDijk77
    Analyse Issues

    View Slide

  56. Testing
    @MaritvanDijk77

    View Slide

  57. @MaritvanDijk77

    View Slide

  58. @MaritvanDijk77
    Ask!

    View Slide

  59. Most projects run on volunteers
    @MaritvanDijk77

    View Slide

  60. @MaritvanDijk77

    View Slide

  61. @MaritvanDijk77
    •https://opencollective.com/


    •https://sfconservancy.org/


    •https://www.patreon.com/


    •https://tidelift.com/

    View Slide

  62. @MaritvanDijk77

    View Slide

  63. @MaritvanDijk77
    https://xkcd.com/2347/

    View Slide

  64. @MaritvanDijk77
    Find a project

    View Slide

  65. @MaritvanDijk77
    Find a project
    Project you use

    View Slide

  66. @MaritvanDijk77
    Find a project
    • Awesome for Beginners


    • Up For Grabs


    • Issuehub.io


    • First Timers Only


    • Good First Issues

    View Slide

  67. @MaritvanDijk77

    View Slide

  68. @MaritvanDijk77

    View Slide

  69. Check how to contribute
    • README


    • CONTRIBUTING (a.k.a. HACKING)


    • LICENSE (a.k.a. COPYING)
    @MaritvanDijk77

    View Slide

  70. Check how to contribute
    • README


    • CONTRIBUTING (a.k.a. HACKING)


    • LICENSE (a.k.a. COPYING)


    • Code of Conduct
    @MaritvanDijk77

    View Slide

  71. Check how to contribute
    • README


    • CONTRIBUTING (a.k.a. HACKING)


    • LICENSE (a.k.a. COPYING)


    • Code of Conduct


    • Style guides
    @MaritvanDijk77

    View Slide

  72. Check how to contribute
    • README


    • CONTRIBUTING (a.k.a. HACKING)


    • LICENSE (a.k.a. COPYING)


    • Code of Conduct


    • Style guides


    • Contributor License Agreement (CLA)
    @MaritvanDijk77

    View Slide

  73. Check how to contribute
    • README


    • CONTRIBUTING (a.k.a. HACKING)


    • LICENSE (a.k.a. COPYING)


    • Code of Conduct


    • Style guides


    • Contributor License Agreement (CLA)


    • Ask!
    @MaritvanDijk77

    View Slide

  74. @MaritvanDijk77
    Pick a task

    View Slide

  75. @MaritvanDijk77
    Fix your own problem

    View Slide

  76. @MaritvanDijk77
    Pick a task

    View Slide

  77. @MaritvanDijk77
    Ask!

    View Slide

  78. Set up your tools
    @MaritvanDijk77

    View Slide

  79. Get the project
    •For to your profile


    •Clone to your machine


    •Manage remotes
    @MaritvanDijk77

    View Slide

  80. Build the project
    @MaritvanDijk77

    View Slide

  81. @MaritvanDijk77
    Work on your contribution

    View Slide

  82. Submit your contribution
    @MaritvanDijk77

    View Slide

  83. @MaritvanDijk77
    Receive feedback

    View Slide

  84. @MaritvanDijk77

    View Slide

  85. Contribution accepted
    @MaritvanDijk77

    View Slide

  86. Contribution declined…
    “No is temporary, yes is forever”


    https://blog.jessfraz.com/post/the-art-of-closing/
    @MaritvanDijk77

    View Slide

  87. @MaritvanDijk77
    Align

    View Slide

  88. 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 collaborate!
    @MaritvanDijk77

    View Slide

  89. 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 collaborate!
    @MaritvanDijk77

    View Slide

  90. 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 collaborate!
    @MaritvanDijk77

    View Slide

  91. Collaborating on

    Open Source Software

    @MaritvanDijk77

    github.com/mlvandijk

    https://maritvandijk.com/
    https://maritvandijk.com/presentations/collaborating-on-open-source-software/

    View Slide