Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Contributors wanted - Increasing diversity in your open source project (@k88hudson)

1,301 views

Published on

My talk from JSConf 2014.

Published in: Technology
  • Be the first to comment

Contributors wanted - Increasing diversity in your open source project (@k88hudson)

  1. 1. Contributors wanted Increasing diversity in your open source project
  2. 2. @k88hudson Web engineer at Mozilla foundation
  3. 3. diversity === good
  4. 4. 1 What is diversity? ! 2 Why is diversity important to open source?
  5. 5. Identity diversity
  6. 6. blue pentagon red diamond
  7. 7. Cognitive diversity
  8. 8. area = 1.7204774 × s2 convex 108° 4 sides parallel opposite sides perimetre = 4s
  9. 9. Diversity trumps ability” “
  10. 10. Cognitive Diversity Diverse perspectives: ways of representing situations and problems Diverse interpretations: ways of categorizing or partitioning perspectives Diverse heuristics: ways of generating solutions to problems Diverse predictive models: ways of inferring cause and effect
  11. 11. Diverse groups – particularly cognitively diverse groups – outperform experienced ones
  12. 12. disjunctive tasks ! complex, multi- faceted tasks
  13. 13. git -b ! npm install all the things
  14. 14. Diversity of experience
  15. 15. Part 2 Implementation
  16. 16. Code contributors
  17. 17. Split up your code base into modules, improve docs piece by piece
  18. 18. Diversity is valuable, also hard.
  19. 19. Consider a
 code of conduct
  20. 20. Help resolve conflicts
 when/if they occur ! Help people feel safe
  21. 21. github.com/Bantik/contributor_covenant
  22. 22. Let’s broaden our definition of “contributor”
  23. 23. “The only people who matter to making great software are people who speak English and write code” ! — no one ever
  24. 24. User research
  25. 25. Does my software do what I think it does?
  26. 26. Write tests as you implement new features/ discover problem areas
  27. 27. DESIGN HOW DO YOU EXPECT USERS TO BEHAVE? RE-TEST EXPECTATIONS (fail) IMPLEMENT (pass)
  28. 28. 1. User stories/tasks
 Users should be able to easily determine which events are free and which need registration 2. Scenarios
 Say you are trying to create an event for your javascript meet up in Toronto. Where do you go to create an event? 3. Expectations
 What will happen when you click on the ‘Register’ button? What do tests look like?
  29. 29. Example: error states 1. Missing authentication 2. Requests time out 3. Missing (but expected) commands 4. Tag does not exist 5. Improper formatting of bower.json 6. Improper dependency resolution
  30. 30. Help contributors choose the right target audience for tests that will be relevant for your project. PRO TIP
  31. 31. You only need around 5 sessions to get a lot out of user testing PRO TIP
  32. 32. Results may be unexpected. (in a good way)
  33. 33. Multimedialokalisierung
  34. 34. Localization
  35. 35. Localization
  36. 36. Continuous localization • Detect Accept-Language header • Implement routing/UI/user sessions to support custom language settings • Add gettext() or other implementation to templating system • Upload strings in JSON files to continuous localization platform
  37. 37. Host: “2014.jsconf.us” Accept-Language:"en-US,en;q=0.5" GET 2014.jsconf.us Accept-language
  38. 38. GET /:locale? GET /:locale?/tools webmaker.org/en-US/tools webmaker.org/tools Routing
  39. 39. Gettext .filter('gettext', ['localize', function (localize) { return function (input) { return localize.getString(input); }; } ]); <p>{{ ‘Hello JSConf’ | gettext }}</p>
  40. 40. fr/webmaker.json
  41. 41. Transifex
  42. 42. Libraries can be localized too
  43. 43. 1057
  44. 44. Instead of thinking about your core team as mentors, ask contributors to teach you what you don’t know.
  45. 45. Determine your blind spots, make specific asks localization accessibility performance copy writing docs testing user research animated gifs
  46. 46. Remember! 1. Diverse groups – particularly cognitively diverse groups – outperform experienced ones 2. Diversity is most effective for disjunctive and complex problem solving 3. Modularize and help new code contributors feel safe 4. Identify team weaknesses, broaden definition of “contributor”
  47. 47. Making good software is
 fucking hard. Cognitive diversity is way too valuable for us not to care.
  48. 48. Thanks! @k88hudson If you want to find the book I mentioned: Page, Scott. The Difference: How the Power of Diversity Creates Better Groups, Firms, Schools, and Societies

×