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.

User-centered open source

248 views

Published on

Open-source projects often struggle with finding contributors and getting off of the ground. Communities, such as Github and PyPi, are host to redundant projects and libraries. In the development space, how do you distinguish your project from others, get people excited to contribute to it, and ultimately create a successful open source project? The answer is to apply user-centered design techniques to the development of your project. User-centered design is usually applied to web applications and products on the front-end of a website, but these techniques can be applied to open source libraries.

In this talk, Jackie will illustrate some user-centered techniques that have been used on her own project — Mesa (https://github.com/projectmesa/mesa), along with other successful open source projects. This talk will include a survey of interviews with a focus on successful techniques, along with additional user-centered design techniques that could be leveraged to inspire increased community engagement into your project.

Published in: Software
  • Be the first to comment

  • Be the first to like this

User-centered open source

  1. 1. User-centered Open Source By Jackie Kazil For PyCon Russia, July 4, 2016
  2. 2. 2 About me… @jackiekazil
  3. 3. После четырех лет в университете, Я говорю по-русски.
  4. 4. 4
  5. 5. 5
  6. 6. What is user-centered design?
  7. 7. beta.eiti.org
  8. 8. 8 Urllib2 EX A M P LE
  9. 9. 9 Requests
  10. 10. 10 “HTTP for Humans”Not for Humans? Urllib2 vs Requests
  11. 11. Why ‘open-source’? - Open Source - Inner Source - Closed Source
  12. 12. Pick a project
  13. 13. User-centered approaches 1. Passive (signal vs noise) 2. Active (direct engagement)
  14. 14. 14 Signal vs Noise
  15. 15. MIMOSE (Micro-und Multilevel Modelling Software) [53] GAMA [28] ABLE (Agent Building and Learning Environment) [2] Jason (Jason:Interpreter for extension of AgentSpeak) [40] MAS-SOC (Multi-Agent Simulations for the SOCial Sciences) [51] Brahms [11] ECHO [22] FLAME [25] FLAME GPU [26] Construct [13] MOOSE(Multimodeling Object- Oriented Simulation Environment) [55] Jade’s sim++ SimBioSys [68] SimPack [69] DeX [20] LSD (Laboratory for Simulation Development)[45] iGen [31] FLUXY [27] MASS (Multi-Agent Simulation Suit) [5 0]Framsticks SimPlusPlus [66] Descartes[19] A3 / AAA (Agent Anytime Anywhere) [1] ADK (TryllianAgent MASS (Multi-Agent Simulation Suit) [50] Framsticks SimPlusPlus [66] Descartes[19] A3 / AAA (Agent Anytime Anywhere) [1] ADK (TryllianAgent Development Kit)[4] AOR Simulation[6] Ascape [8] BDI4Jade [9] Cougaar[15] CybelePro[17] FAMOJA(Framework for Agent-based MOdelling with JAva) [24] ICARO-T [32] JABM [34] JADE JAS-mine [38] JASA (Java Auction Simulator API) [39] jES (Java Enterprise Simulator) [42] jEcho [43] MASON [49] Moduleco [54] netLogo JIAC [64] Sugarscape [71] VSEit [74] JAMEL (Java Agent-based MacroEconomic Laboratory) [35] PS-I (Political Science-Identity)[60] Altreva Adaptive Modeler [3] oRIS [59] SimAgent (alsosim agent) [67] DigiHive Mesa [52] DALI[18] Breve SeSAm (Shell for Simulated Agent Systems) (fully integrated graphical simulation environment) [63] Cormas(Common-pool Resources and Multi-Agent Systems) [14] SDML (Strictly Declarative Modeling Language) [61] Soar StarLogo OpenStarLogo StarLogo TNG StarLogoT SEAS (System Effectiveness Analysis Simulation) [62] GPU Agents [29] GROWlab [30] AgentSheets VisualBots [73] ZEUS [76]
  16. 16. 16 Twitter data… Which library to use? bit.ly/T-API-Libs
  17. 17. 17 Twitter bit.ly/T-API-Libs
  18. 18. 1818 Github data… Which library to use? bit.ly/G-API-Libs
  19. 19. 19 Github bit.ly/G-API-Libs
  20. 20. 20 FEC API EX A M P LE
  21. 21. 21 Landing page “Getting started” Communication channels Documentation Discoverable entry points...
  22. 22. 22 Discoverable entry points... API Landing: bit.ly/fec-api Dev: bit.ly/fec-gh Channels: bit.ly/fec-channels
  23. 23. 23
  24. 24. 24 The checklist - Landing page - “Getting started” - Install instructions - Contribution guide - Responses < 24hrs - Clear git workflow - Labeled branches - License - Project comms - Project status - Project ownership - Regular commits - Tests & build results - “Other users” - Open by default
  25. 25. 25 bit.ly/OpenByDefault Flexible usage Community Involvement Cost-savings Increased security
  26. 26. 26 Github bit.ly/G-API-Libs EX A M P LE
  27. 27. 27
  28. 28. 28
  29. 29. 29 github3.py
  30. 30. 30 Build and maintain… Communicate, commit, test, & build regularly
  31. 31. 31 … or consciously commit to retirement.
  32. 32. 32 Engage!
  33. 33. Don’t make assumptions… ... back it up with data.
  34. 34. 34 Mesa, agent-based modeling EX A M P LE
  35. 35. 35 (Re)inception
  36. 36. 36 (Re)inception Stakeholders
  37. 37. 37 (Re)inception Stakeholders Users
  38. 38. 38 (Re)inception Stakeholders Users Goals
  39. 39. 39 (Re)inception Stakeholders Users Goals Non-Goals
  40. 40. 40 (Re)inception Users
  41. 41. Software engineer 41 (Re)inception Users
  42. 42. Software engineer 42 (Re)inception College Professor Users
  43. 43. Software engineer 43 (Re)inception College Professor Student Users
  44. 44. Software engineer 44 (Re)inception College Professor Student Private industry researcher Users
  45. 45. Software engineer 45 (Re)inception College Professor Student Private industry researcher Data Scientist Users
  46. 46. Create personas for users College professor Student Private industry researcher Data Scientist Software engineer Users
  47. 47. Create personas for users College professor Student Private industry researcher Data Scientist Software engineer Users
  48. 48. Where to find your users? User groups (generic) Open call outs (generic) Conferences (generic) Direct emails (specific) SPRINTS!!!! (specific) Users
  49. 49. Where to find your users? General survey with... “May we reach out to you?” Users
  50. 50. User Interviews User: College Professor
  51. 51. Talk to your users. User Interviews User: College Professor
  52. 52. Talk to your users. Know what you want to capture. User Interviews User: College Professor
  53. 53. Talk to your users. Know what you want to capture. Get your questions ready. User Interviews User: College Professor
  54. 54. Talk to your users. Know what you want to capture. Get your questions ready. Designate a note taker. User Interviews User: College Professor
  55. 55. Talk to your users. Know what you want to capture. Get your questions ready. Designate a note taker. Use electronic tools. User Interviews User: College Professor
  56. 56. Talk to your users. Know what you want to capture. Get your questions ready. Designate a note taker. Use electronic tools. Verbatim and interpretations separate. User Interviews User: College Professor
  57. 57. Talk to your users. Know what you want to capture. Get your questions ready. Designate a note taker. Use electronic tools. Verbatim and interpretations separate. Annotate along the way. User Interviews User: College Professor
  58. 58. Talk to your users. Know what you want to capture. Get your questions ready. Designate a note taker. Use electronic tools. Verbatim and interpretations separate. Annotate along the way. Don’t forget body language! User Interviews User: College Professor
  59. 59. Talk to your users. Know what you want to capture. Get your questions ready. Designate a note taker. Use electronic tools. Verbatim and interpretations separate. Annotate along the way. Don’t forget body language! Consider privacy, from start. User Interviews User: College Professor
  60. 60. Talk to your users. Know what you want to capture. Get your questions ready. Designate a note taker. Use electronic tools. Verbatim and interpretations separate. Annotate along the way. Don’t forget body language! Consider privacy, from start. User Interviews User: College Professor
  61. 61. Journey Mapping :-):-(
  62. 62. Journey Mapping Identifies Mesa :-):-(
  63. 63. Journey Mapping Tries to build a model. :-):-(
  64. 64. Journey Mapping BUILDS A MODEL!! :-):-(
  65. 65. Journey Mapping Tries to build complex custom model :-):-(
  66. 66. Journey Mapping Contributes back to Mesa to fix issues :-):-(
  67. 67. Journey Mapping :-):-(
  68. 68. Affinity Diagramming
  69. 69. How to I build a model? Tutorial has bugs Getting Started is hard Models need to be tested Unclear on how to build plug-ins What is core vs private? Sample models need more docs Affinity Diagramming
  70. 70. How to I build a model? Tutorial has bugs Getting Started is hard Models need to be tested Unclear on how to build plug-ins What is core vs private? Sample models need more docs Affinity Diagramming
  71. 71. Dot Voting How to I build a model? Tutorial has bugs Getting Started is hard Models need to be tested Unclear on how to build plug-ins What is core vs private? Sample models need more docs
  72. 72. Dot Voting How to I build a model? Tutorial has bugs Getting Started is hard Models need to be tested Unclear on how to build plug-ins What is core vs private? Sample models need more docs
  73. 73. Dot Voting How to I build a model? Tutorial has bugs Getting Started is hard Models need to be tested Unclear on how to build plug-ins What is core vs private? Sample models need more docs
  74. 74. Dot Voting How to I build a model? Tutorial has bugs Getting Started is hard Models need to be tested Unclear on how to build plug-ins What is core vs private? Sample models need more docs
  75. 75. Dot Voting How to I build a model? Tutorial has bugs Getting Started is hard Models need to be tested Unclear on how to build plug-ins What is core vs private? Sample models need more docs
  76. 76. Dot Voting How to I build a model? Tutorial has bugs Getting Started is hard Models need to be tested Unclear on how to build plug-ins What is core vs private? Sample models need more docs
  77. 77. Rapid Prototyping
  78. 78. Rapid Prototyping 3 prototypes in 3 hours - Create prototype (40 min) - Test prototype (15 min) - Take a break (5 min) - repeat 3 times
  79. 79. Rapid Prototyping START STOP RESET
  80. 80. 80 Rapid Prototyping
  81. 81. Test. Repeat.
  82. 82. If you do not have users, you are are doing it wrong.
  83. 83. More techniques… http://bit.ly/18F-Methods
  84. 84. 84 Urllib2
  85. 85. 85 Requests
  86. 86. 86 Your friend, Jackie

×