|
| 1 | +--- |
| 2 | +title: 'Low-code contributions through GitHub' |
| 3 | +published: September 28, 2021 |
| 4 | +author: isabela-presedo-floyd |
| 5 | +description: "Low-code contribution workshops offer a way for folks to join a project's contributors list without the technical overhead. In this blog we present a workshop format that relies solely on the GitHub web interface." |
| 6 | +category: [Access-centered, Community, OSS Experience] |
| 7 | +featuredImage: |
| 8 | + src: /posts/low-code-workshop/blog_feature_org.svg |
| 9 | + alt: 'An illustration of a brown and a dark brown hand coming towards each other to pass a business card with the logo of Quansight Labs.' |
| 10 | +hero: |
| 11 | + imageSrc: /posts/low-code-workshop/blog_hero_var2.svg |
| 12 | + imageAlt: 'An illustration of a dark brown hand holding up a microphone, with some graphical elements highlighting the top of the microphone.' |
| 13 | +--- |
| 14 | + |
| 15 | +Healthy, inclusive communities are critical to impactful open source projects. |
| 16 | +A challenge for established projects is that the history and implicit technical |
| 17 | +debt increase the barrier to contribute to significant portions of code base. |
| 18 | +The literacy of large code bases happens over time through incremental |
| 19 | +contributions, and we'll discuss a format that can help people begin this |
| 20 | +journey. |
| 21 | + |
| 22 | +At Quansight Labs, we are motivated to provide opportunities for new |
| 23 | +contributors to experience open source community work regardless of their |
| 24 | +software literacy. Community workshops are a common format for onboarding, but |
| 25 | +sometimes the outcome can be less than satisfactory for participants and |
| 26 | +organizers. In these workshops, there are implicit challenges that need to be |
| 27 | +overcome to contribute to projects' revision history like Git or setting up |
| 28 | +development environments. |
| 29 | + |
| 30 | +Our goal with the following low-code workshop is to offer a way for folks to |
| 31 | +join a project's contributors list without the technical overhead. To achieve |
| 32 | +this we'll discuss a format that relies solely on the GitHub web interface. |
| 33 | + |
| 34 | +## Case study - collaboratively improving the accessibility of images in documentation |
| 35 | + |
| 36 | +Our successful experiments are based on having new and seasoned contributors |
| 37 | +work together to add alternative text representations to images in project |
| 38 | +documentation. Each event lasts an hour with the following format: |
| 39 | + |
| 40 | +1. pre-meeting preparation with a project contributor and meeting facilitator |
| 41 | +2. a crash course in the specific topic - eg alt text for images |
| 42 | +3. an introduction to a collaborative pull request created by a project contributor |
| 43 | +4. group working session to suggest changes to specific files assigned in the pull request |
| 44 | +5. a short review of the submissions by the core contributor |
| 45 | +6. final review by the core contributor to submit a final pull request |
| 46 | + |
| 47 | +Accessibility is a focus for many members of Quansight Labs' team so we've |
| 48 | +chosen this prompt to begin testing these workshops. We'd love to hear about |
| 49 | +other prompts that may be good for low-code contributions. |
| 50 | + |
| 51 | +### Pre-meeting preparation |
| 52 | + |
| 53 | +Each event relies on a single pull request managed by a project contributor. |
| 54 | +We recommend using a fork to reduce noise to other contributors because we |
| 55 | +gonna be loud for an hour. |
| 56 | + |
| 57 | +Before the event the contributor makes a pull request identifying files that |
| 58 | +need changes related to the prompt, some projects may have rendered |
| 59 | +documentation that would also help guide the contributions. The attendees will |
| 60 | +use these files to recommend changes to the code landing their aliases in the |
| 61 | +GitHub history. The facilitator will add an agenda for the event with learning |
| 62 | +materials that will prepare folks for the event. |
| 63 | + |
| 64 | +### The crash course |
| 65 | + |
| 66 | +The crash course is a short lightning talk style introduction to support the |
| 67 | +prompt folks will address during the hour. This short talk is important to |
| 68 | +prepare folks for the topic, to support contributors we want to remove the |
| 69 | +technical roadblocks that distract them from the community. |
| 70 | + |
| 71 | +### Introduction to the pull request |
| 72 | + |
| 73 | +To kick off the work, the core developer walks us through the pull request |
| 74 | +they've prepared and introduces different files. For reinforcement, the |
| 75 | +facilitator will share their screen to demonstrate the process of recommending |
| 76 | +changes to files in a pull request. |
| 77 | + |
| 78 | +### Group work |
| 79 | + |
| 80 | +Together the new and old contributors work together to make changes to relevant |
| 81 | +files to improve their quality. These changes are made using GitHub's suggest |
| 82 | +changes feature that allows authors to make single line changes to code; a |
| 83 | +workflow perfect for alt text. |
| 84 | + |
| 85 | +### Group review |
| 86 | + |
| 87 | +Over 40 minutes several contributors can make quite a few commits. The project |
| 88 | +contributor shares their screen to review the suggestions made over the course |
| 89 | +of the event. This portion becomes a critique to review the different |
| 90 | +contributions made. |
| 91 | + |
| 92 | +### Bringing everything home |
| 93 | + |
| 94 | +All of the work we talked about happened on a contributor's fork. They now |
| 95 | +have a pull request withl a gaggle of contributors. Their last job is to |
| 96 | +submit the pull request to the mainline project and see the work accepted into |
| 97 | +the code base. |
| 98 | + |
| 99 | +## Success stories |
| 100 | + |
| 101 | +Everyone loves an underdog story. What follows are there triumphs of some open |
| 102 | +source allies who thought they could run an hour sprint that allowed multiple |
| 103 | +folks to contribute to an open source project. Believe it or not, we weren't |
| 104 | +lying to ourselves and others. Below we highlight our successes with running |
| 105 | +low-code sprints in Jupyter and NumPy. |
| 106 | + |
| 107 | +### Jupyter accessibility group |
| 108 | + |
| 109 | +There is a small group of the Jupyter community focused on the improving the |
| 110 | +accessibility of JupyterLab and orbiting projects. We meet every other work to |
| 111 | +add small patches and fixes. Currently, we're in the process of organizing |
| 112 | +workshops to advocate for accessibility and improve the quality of the entire |
| 113 | +Jupyter experience for disabled scientists. |
| 114 | + |
| 115 | +On an off week, between our normal syncs, we tested a low-code format for folks |
| 116 | +to participate in the Jupyter project. During an hour, four people were |
| 117 | +included in the project by suggesting changes to alt text for images in the |
| 118 | +JupyterLab documentation (https://github.com/isabela-pf/jupyterlab/pull/1), |
| 119 | +resulting in a collaborative commit to mainline with the help of [@krassowski](https://github.com/krassowski) |
| 120 | +and [@isabela-pf](https://github.com/isabela-pf) as champions for the shared |
| 121 | +work.(https://github.com/jupyterlab/jupyterlab/pull/10670) |
| 122 | + |
| 123 | +We consider this event a success because we were able to remove `git` as a |
| 124 | +technical barrier to entry and support changes from multiple authors. |
| 125 | + |
| 126 | + |
| 127 | +### [NumPy documentation](https://numpy.org/doc/stable/) new comers meeting |
| 128 | + |
| 129 | +Our fledgling experience in the Jupyter event made us *sort of* confident this |
| 130 | +could work for other projects. So we contacted our NumPy accessibility allies |
| 131 | +[@melissawm](https://github.com/melissawm) and [@marsbarlee](https://github.com/marsbarlee) to test this hypothesis at the NumPy newcomer's |
| 132 | +meetings, which [happen every other |
| 133 | +Thursday ](https://mail.python.org/archives/list/[email protected]/thread/4EBH3QAH6IR56WJCM7VEL55ACGGK6JKP/). |
| 134 | + |
| 135 | +During the first meeting, @marsbarlee provided a valuable [slideshow on how to |
| 136 | +write alt text for scientific |
| 137 | +diagrams](https://docs.google.com/presentation/d/150vhbpGrtAc3ALhrS1a07lhEKCgevAY3ITh-4eCndDk/edit?usp=sharing). |
| 138 | +Writing alt-text for scientific diagrams in the documentation poses a unique |
| 139 | +challenge, as conventional advice for writing alt-text is not sufficient. |
| 140 | +Abstract concepts such as mathematics can be difficult to describe visually. |
| 141 | + |
| 142 | +We tackled this in the workshop by comparing different examples, such as how |
| 143 | +writing alt-text for a Venn Diagram differs from writing for a bar chart. We |
| 144 | +also took cue from the surrounding context of the diagram, such as the code |
| 145 | +comments, to find the most relevant information to visually describe. |
| 146 | + |
| 147 | +The progress from the NumPy newcomer's meeting can be seen in this issue |
| 148 | +https://github.com/melissawm/numpy/pull/27 . Melissa led the second iteration |
| 149 | +of this event to complete more alt text in the main NumPy documentation as well |
| 150 | +as beginning to cover [NumPy tutorials](https://numpy.org/numpy-tutorials/) |
| 151 | +with a new group of people. By hosting a workshop with another project, we saw |
| 152 | +the similar yet different challenges NumPy faced compared to Jupyter, |
| 153 | + |
| 154 | +By working on the NumPy tutorials, which are originally written as Jupyter |
| 155 | +notebooks, we faced new questions, such as how to handle rendered live charts, |
| 156 | +which are not in still images formats such as JPEG. We faced other types of |
| 157 | +media, such as cell input and outputs. |
| 158 | + |
| 159 | +We used a variety of markup languages, including reST, Markdown and HTML, each |
| 160 | +with it's own quirks and slight variation in implementing alt-text. |
| 161 | + |
| 162 | +In these two workshops, the community gathered together to create more |
| 163 | +accessible documentation across the open-source space, one contribution at a |
| 164 | +time. A highlight, to us, is that we provided opportunities for both long time |
| 165 | +NumPy fans and high school students to see themselves in history of such a |
| 166 | +foundational tool like NumPy. Moreover, attendees were still adding alt text |
| 167 | +contributions after the event concluded. |
| 168 | + |
| 169 | + |
| 170 | +## Conclusion |
| 171 | + |
| 172 | +Using GitHub's suggested change system is a way to support low-code, |
| 173 | +single-line contributions to different open source code bases. The event's |
| 174 | +collaborative hands-on format offers time for the community to interact in a |
| 175 | +meaningful way and see the fruits of their labor immediately. |
| 176 | + |
| 177 | +Please reach out to us if you or your project are interested in running event |
| 178 | +like this. We'd love to hear about how this process can work for your events |
| 179 | +and project's perspective. |
0 commit comments