willingc

Thoughts from a New Contributor

May 5th, 2014
408
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.85 KB | None | 0 0
  1. =============================================================
  2. LearningFlow - A workflow for new and developing contributors
  3. =============================================================
  4.  
  5. Want to be a new contributor?
  6. =============================
  7.  
  8. Begin by checking your readiness
  9. --------------------------------
  10. * You don't have to have mastery in all of these areas to begin contributing.
  11. * Focus on areas where you have learning to do, use the available resources.
  12. * Ask quality questions
  13.  
  14. Developer support tools
  15. #######################
  16. - command line for chosen operating system
  17. - editor
  18. - IRC
  19. - mailing lists
  20. - version control (any flavor)
  21. - issue tracker
  22.  
  23. Open Source Development project flow
  24. ####################################
  25. - New development
  26. - Sustaining development
  27. - Continuous process improvement
  28.  
  29. Contributor Mindset
  30. ###################
  31. - Dedication to learning
  32. - Flexibility
  33. - Patience
  34. - Commitment to community code of conduct (open, considerate, respectful)
  35.  
  36. Community responsibility to learner
  37. ###################################
  38. - Documentation on resources available in the Python community (i.e. OpenHatch,
  39.  User Groups, pyvideo, books, docs, etc.)
  40. - Considerate and respectful communication (on IRC and mailing lists)
  41.  
  42.  
  43. Ready to submit a first contribution?
  44. =====================================
  45. Although your expectation may be a first contribution is as simple as picking
  46. an easy issue, writing and submitting a patch, it's rarely that simple.
  47. Instead, there's a different set of readiness criteria for submitting a patch.
  48.  
  49. Developer Support Tools
  50. #######################
  51. - Issue Tracker (Python specific)
  52. - IRC (knowledge of which Python channels are best for different topics)
  53. - Mailing Lists (which Python lists are helpful to follow or read archives)
  54. - editor (set up your editor for Python code style)
  55. - version control (learn mercurial basics - checkout, commit, diff)
  56. - command line (compilation, patch creation)
  57.  
  58. CPython development project flow
  59. ################################
  60. - Python dev guide https://docs.python.org/devguide/#contributing
  61. - Python dev faq
  62.  
  63. Contributor mindset
  64. ###################
  65. - Willingness to attempt to use the existing available resources
  66. - Beginning learning layout of code base
  67. - Ask thoughtful questions
  68. - Respect other's time
  69. - Patience while learning (norms for response by core developers to questions)
  70.  
  71. Community responsibility
  72. ########################
  73. - Documentation on resources available in the Python community (i.e. OpenHatch,
  74.   User Groups, pyvideo, books, docs, etc.)
  75. - Mentoring GSOC and OPW interns
  76. - Considerate and respectful communication (on IRC and mailing lists)
  77. - Show appreciation for contribution and the contributor's effort
  78.  
  79.  
  80. Gathering experience and making further contributions
  81. =====================================================
  82. * Gain proficiency in above areas
  83. * Continue to focus on areas that you find rewarding and be a productive
  84.  contributor
  85. * Share knowledge with others in community
  86.  
  87. Developer Support Tools
  88. #######################
  89. - Refine configuration of tools to increase productivity and consistency in
  90.  personal workflow
  91.  
  92.  
  93. CPython development project flow
  94. ################################
  95. - Begin building working relationships with other contributors
  96. - Learn different aspects of the project (triage, development, documentation,
  97.  and testing)
  98.  
  99. Contributor mindset
  100. ###################
  101. - Willingness to attempt to use the existing available resources
  102. - Start developing a working knowledge of the code base beyond your expertise
  103. - Ask thoughtful questions and answer others thoughtfully
  104. - Respect others' time
  105. - Patience while learning (guidelines for norms for response to questions)
  106. - Self check and self care during times of increased stress (i.e. releases)
  107.  
  108. Community responsibility to learner
  109. ###################################
  110. - Answer others thoughtfully
  111. - Respect others' time
  112. - Self check and self care during times of increased stress (i.e. releases)
  113.  
  114.  
  115. ==================================================
  116. My personal experience making a first contribution
  117. ==================================================
  118.  
  119. Months of increased knowledge of the community
  120. ----------------------------------------------
  121. OpenHatch
  122. PyLadies
  123. Python User Group
  124. IRC logs
  125. PyCon Program Committee
  126. Poster submission to PyCon
  127. Encouragement by individuals in the community
  128.  
  129. Started considering making a contribution
  130. -----------------------------------------
  131. While helping encourage applicants to the
  132. OPW and GSOC programs on the PyLadies IRC
  133. channel, I helped guide contributors
  134. to OpenHatch documentation, core development docs,
  135. to friendly helpful developers (bitdancer, jesstess,
  136. and others)
  137.  
  138. In the weeks leading up to PyCon, I began really
  139. digging into the code development guide to try to
  140. understand the project workflow and development process.
  141.  
  142. I also used Pycharm to be able to view the source code and its
  143. structure. I write code using vim, but found Pycharm easier to
  144. get a big picture view of the code base.
  145.  
  146. At PyCon
  147. --------
  148. Met a number of people while at the sprints as I sprinted on
  149. OpenHatch. These informal interactions over lunch or in the hallway
  150. helped me see some core developers as accessible and willing to
  151. collaborate.
  152.  
  153. After PyCon
  154. -----------
  155. Lots of reading
  156. - Porting from 2 to 3 book that was given out at PyCon
  157. - Dev guide - several times
  158. - Dev FAQ
  159. - core-mentorship mailing list archives
  160.  
  161. Committed to finding a way to use the issue tracker to find a suitable issue
  162. ----------------------------------------------------------------------------
  163. The issue tracker was the largest hurdle to making a contribution.
  164. Its cumbersome user interface combined with the difficulty of easily
  165. identifying issues that could benefit from my time and effort.
  166.  
  167. I found it difficult to identify:
  168. * issues that a non-core developer could triage in some meaningful way
  169. * open documentation issues that were not already claimed by others
  170. * a way to easily tag issues to return to as promising possibilities
  171.  
  172. In general, these factors made the issue tracker unappealing and an inefficient
  173. use of my time. Ultimately, I found the documentation issue that I created a
  174. patch for on another mailing list and then I looked it up on the issue tracker.
  175.  
  176. - the search interface is clunky
  177. - the number of languishing or non-starter issues that waste a potential
  178. contributors time and add to overwhelm or frustration with the process
  179. (just as core developers, contributors value their time and are trying
  180. to help)
  181. - no easy way to tag all issues that might be suitable for the individual
  182. as the individual goes through them
  183.  
  184. A quiet first contribution
  185. --------------------------
  186. After finding the issue, the patch and submission process was very simple.
  187. I followed the instructions in the core dev guide.
  188.  
  189. I would be happy to continue contributing. That said, there are other
  190. valuable projects out there that are easier to find an issue to work on
  191. and be productive with my time.
  192.  
  193. I enjoy Python as a language. It's elegant and fun to use (configuration and
  194. setup issues aside).
  195.  
  196.  
  197. Some gems of wisdom and insights from the core-mentorship logs
  198. ==============================================================
  199. bitdancer's experience as a new contributor
  200.  
  201. A new section at the top of the devguide FAQ that covers
  202. questions of the form "I want to ask about X, what's the best forum?"
  203. would be a nice idea. I created http://bugs.python.org/issue11690 to
  204. track that.
  205.  
  206. I also created http://psf.upfronthosting.co.za/roundup/meta/issue383
  207. to ask for a "Devguide" component on the tracker.
  208.  
  209. Suggestions (please substitute good english):
  210.  
  211. * We ask everyone to be welcoming, friendly, and patient.
  212. * Anything can be asked, and "RTFM" is not an acceptable answer.
  213. * Neither is "it's in the archives, go read them".
  214. * List archives are closed, but subscription is open to everyone.
  215. * Statements made by core developers can be quoted outside.
  216. * We endorse the PSF's [Diversity statement] (link).
  217. * Violators will be towed at their own expense.
Advertisement
Add Comment
Please, Sign In to add comment