How to start contributing to Open Source

How to start contributing to Open Source

or "how to become a (good) open source contributor in 1 hour"

Fda20bf9d9c85c4390ca7237beba45a2?s=128

Simon Baslé

April 20, 2017
Tweet

Transcript

  1. how to become an (good) open source contributor in 1

    hour
  2. - Step 1 - Start Contributing

  3. - Step 2 - ...

  4. - Step 3 - PROFIT!

  5. how to become an (good) open source contributor in 1

    hour
  6. how to become a n (good) open source contributor in

    1 hour
  7. @ simonbasle

  8. ideas and advice and NOT a perfect recipe In this

    talk:
  9. 1 Where to Start?

  10. familiarize with Git / GitHub

  11. picking a project

  12. documentation

  13. samples and tests ⚗

  14. opening issues

  15. engaging with the community

  16. actual code

  17. 2 how to do it well?

  18. the "don't be that guy" part

  19. "the good, the bad and the ugly" Dramatis Personae

  20. "the good, the bad and the ugly" Dramatis Personae

  21. Archetype ugly version of the archetype (don't be that guy)

    bad version of the archetype (try to not be that guy either) fix to the archetype (be THAT guy instead)
  22. the Diva

  23. the Diva feature X Unbelievable that feature X isn't included

    in this project. Please add it!
  24. the Diva feature X One feature that I'm greatly missing

    in this project is the ability to do X. Here is what I mean by feature X: (...).
  25. Discussion around adding feature X Hi! I'd like to discuss

    the addition of feature X and whether or not you have considered it in the past. If so, I'd like to know more about the rationale around not adding it. Here is a more detailed analysis of my use case and the need for feature X, as well at some implementation idea: (...). I'd be open to starting a PR exploring these too. the Diva
  26. the Riddler ❓

  27. the Riddler it doesn't work The other day while running

    this project I got an error.
  28. the Riddler Strange bug while running method foo While using

    this project, I tried to apply method foo and I got a strange error about an index that was out of bounds. Did I do anything wrong?
  29. the Riddler IndexOutOfBounds when applying method foo to an empty

    List Using method foo in my code, I ran into a bug where if I pass an empty List to the method, it throws an IndexOutOfBoundsException. Here is the stack trace and a reproducible test case: Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0 at java.util.Collections$EmptyList.get(Collections.java:4454) at some.library.LibUtils.foo(LibUtils.java:54) at my.project.Application.main(Application.java:59)
  30. the Artist

  31. the Artist I fixed a minor typo in LibUtils.foo javadoc

    and added the missing javadoc for foobar. Fix typo in foo javadoc, add missing foobar javadoc
  32. I fixed a minor typo in LibUtils.foo javadoc and added

    the missing javadoc for foobar. Fix typo in foo javadoc, add missing foobar javadoc the Artist
  33. the Artist I fixed a minor typo in LibUtils.foo javadoc

    and added the missing javadoc for foobar. Fix typo in foo javadoc, add missing foobar javadoc
  34. I fixed a minor typo in LibUtils.foo javadoc and added

    the missing javadoc for foobar. Fix typo in foo javadoc, add missing foobar javadoc the Artist (commit still contains a hundred line changes from spaces to tabs)
  35. the Artist I fixed a minor typo in LibUtils.foo javadoc

    and added the missing javadoc for foobar. Additionally I noticed there was no formatter setting shared in the project but it seemed to follow tab-based formatting, so I used that. Since foo javadoc formatting was off, I fixed it but limited my change to these 2 methods... Fix typo in foo javadoc, add missing foobar javadoc
  36. the Alien-Abductee

  37. the Alien-Abductee

  38. the Alien-Abductee

  39. the Alien-Abductee

  40. the Quick Trigger

  41. the Quick Trigger

  42. the Quick Trigger

  43. the Quick Trigger

  44. a few github tricks

  45. PR rights for maintainers

  46. ✏✏✏⌫✏ commit often on PR branch

  47. commit often on PR branch

  48. ✒ ...but squash & merge at the end

  49. None
  50. None
  51. ...but squash & merge ✒ at the end (maybe as

    controversial as tabs vs space) ⚠
  52. 3 as a maintainer

  53. best effort

  54. don't be afraid to (gently) say NO

  55. don't be afraid to (sternly) say NO

  56. foster a welcoming community

  57. guiding contributors

  58. don't be afraid to close issues

  59. 4 enterprise OpenSource

  60. should you open source stuff?

  61. how to convince your boss

  62. sometimes the problem is not the Boss (could it be

    the lawyers?)
  63. CLA and its usefulness ⚖

  64. reduce friction invest in tooling

  65. a few governance alternatives

  66. conclusion

  67. it's not that hard

  68. don't forget there's a human on the other side of

    the screen
  69. Thank you!

  70. Questions?

  71. credits • Whiteboard - CC0 (via WikiMedia) • Cork board

    - CC-By-NC-SA (Caitlin Bussey, via Flickr) • Tack - CC0 (via PixaBay) • Sketch of The May House in Avondale - CC-By-Sa (Evan Roshek via WikiMedia) • Joy Oil gas station blueprints - PubDom (via WikiMedia) • Pilots at work on Thai Smile Airbus A320 - CC-By (Max Alpha X-ray via WikiMedia) • Meeting Room - CC0 (via Pexels)