We’re living in a unique time right now, trying to build community while social distancing and fighting the world-wide COVID-19 pandemic. A few weeks ago, I had the opportunity to teach an open source workshop to the Women Who Code Mobile track community. This might have been just another online event, when I first signed up to put it together 2 months ago before the quarantines started, but it quickly turned into something so much more ….. Over 260 people registered for the webinar, over 100 actually joined, and the Slack channel for the workshop had 73 members …. By the time it was all over, I had merged / closed 20 pull requests.
It wasn’t just because of me though …. The desire to build community and to continue learning tech in a time of social distancing may have something to do with it. Here’s what I learned.
Lesson 10: TL;DR 🙂 Lessons Learned Summarized
It’s a lot of work to prepare a talk on open source, create a practice project, hold workshop time and space for hands on work / help, and have issues ready for folks to work on with “real” projects developed on many different programming languages.
I was trying to meet many needs at once! While I successfully met the need to deliver a talk on open source contribution, and creating a workshop and a simple Github project for folks to learn how to make their first contribution using the standard Git workflow, I struggled to meet other needs: offering issues from multiple open source projects in the preferred programming languages of choice for the more intermediate level attendees. I also struggled initially with how to offer advice for those just learning to code and wanting to contribute to open source. I’ve since learned from this experience and am planning another open source workshop later in the year, incorporating these lessons learned!
That being said, I would still call my open source event a success. I went above and beyond by offering so much more than just a typical presentation. From my workshop,
almost 2 dozen people submitted a pull request to an open source project for the first time, and got their PR merged. At least one person started contributing to another open source iOS Swift project. Most importantly, my workshop met the goals of building community, connection, and an opportunity for folks to learn something new, all things that are desperately needed right now during this time of social isolation. Please continue to stay safe out there!
Lesson 9: Build a multi-part event.
I wanted to do more than just give a talk on open source contributing, because I felt like attendees would get more out of my event if they could get hands-on experience with open source contributing, rather than just passively watching my presentation. When I attended Write/Speak/Code last year, while there were a lot of great talks and keynote speakers, my most memorable experience from that conference was being assigned an issue and eventually getting my PR merged. From that experience, I wanted to provide something similar of value for attendees, going above and beyond what was expected of me for a “typical” presentation. This is what lead me to create a multi-part event.
For my multi-part event, I started with giving a presentation about open source over Zoom for the first half hour covering: how to select a project and first issue, and how to make your first contribution to an open source project using a popular Git workflow. Then, after my presentation, we moved to the Women Who Code Mobile Slack channel to find an open source project and start working on an issue. I also dropped a copy of my presentation slides into the Slack channel as a reference for the workshop attendees.
Lesson 8: Have someone moderate your presentation, and check in with folks as you present.
Presenting online is not the same as presenting to a physical audience. You miss a lot of social cues, like when people might look confused or have questions. And when your screen is in full, presentation mode on Zoom, you can’t see what questions people are posting to the chat room.
I once hosted a Zoom webinar for another speaker, who was unaware that they weren’t advancing their slides in parallel with their talk. I didn’t feel comfortable constantly interrupting them to remind them to advance their slides, and they couldn’t see my direct messages to them in the chat box. So it really helped that Women Who Code Mobile Fellow, Mackenzie Bryant, was there to moderate my presentation. She even let me know when my screen share wasn’t on before I got too far into my presentation. Phew! In addition, I made sure to stop a few times during my presentation to make sure folks were still following along, and could still see the slides and hear my audio.
Lesson 7: Use Slack or some online medium to facilitate active work and direct interaction with all workshop attendees.
As mentioned earlier, I wanted to do more than just deliver a presentation. I wanted to offer an experience where people could walk away having learned something, having actually done something. But how to do that with an online event? You need something where folks can actually interact with each other directly.
For that, we moved to Slack after my presentation for the workshop portion of the event. You might ask, why Slack? Why not continue working together on Zoom? Well, Zoom is great for giving presentations and while there is a chat room (and supposedly a meeting feature, which I haven’t used yet), Slack is really designed for instant messaging, especially with large groups of people, which is what we really needed for the workshop. We needed to be able handle channel wide messages, direct messages, threaded conversations, etc. So to the Women Who Code Mobile Slack we went! This is where we created threads in the #open_source_workshop channel, and got to work!
It felt like there were dozens of people typing messages all at once, and I was trying to answer questions while moderating pull requests at the same time. It was chaotic.
Fortunately, several people stepped up to answer questions with me, and I was able to merge a few PRs during the workshop, and finished merging the rest after the official workshop was over.
The entire event, from my talk to when things slowed down at the end of the workshop, lasted about 1.5 hours. So it ran a little longer than the hour I had allocated for the event.
Lesson 6: Enlist the help of maintainers and others to help make your workshop more useful to attendees.
In order to make my presentation more informative, I included screenshots of an actual contributor submitting a pull request to my repo, from forking and cloning my repo all the way to submitting the PR, code review, and PR merge. This is where Jen Winer, Director of the Women Who Code Boulder/Denver chapter, stepped in, and helped me with capturing those screenshots. Thanks Jen!
For the workshop portion of the event, I created a “practice” repo on Github, that let contributors modify a README file. A contributor would submit a pull request, adding a line to the README file stating what their favorite ice cream flavor was. This gave people a chance to learn how to submit a pull request, regardless of programming experience or programming language preferences.
Also, I tried to find maintainers of “real” active open source projects, to create beginner friendly issues for attendees. For this, Eric Internicola was generous enough to set aside time to create issues for his iOS Swift repo, as well as give his time to help out at the event.
Lesson 5: There will be folks at different levels. Meet people where they are.
I admit, this was an area that I struggled with. On the one hand, in marketing an event, do we specify what experience level(s) people need to be at, to get the most out of the workshop? Or do we attempt to cater to all / most levels, knowing that many of the resources will go towards assisting the beginners, especially for a free workshop? Do we create a multi-track event, with a beginner and an intermediate track, knowing that such an event will require more organizing and more volunteers and time?
Also, there were a couple of more intermediate topics that I didn’t get to teach, and felt like this audience wasn’t ready for, like handling merge conflicts, so I handled those myself. But perhaps with better planning / organization, I could teach that next time.
For the workshop, I opted to encourage those who were more junior developers to start small and level up as they improve, with regards to open source contribution. And it was fortunate that many of the attendees were willing to help each other during the workshop as well!
Along the same lines ….
Lesson 4: People have different ways of learning. Refer folks to different resources / tutorials. Encourage others to chime in with answers to questions, links to resources, etc.
There were a couple of areas of the Git workflow where folks seemed to struggle the most: forking and cloning a repo, and creating an issue branch off of their own master branch instead of submitting a PR on their master branch.
This is where animated gifs and screenshots are your friend! Eric created a great gif demonstrating how to fork and clone a repo.
One of the attendees submitted a PR on their forked master branch, and was struggling with the idea of creating an issue branch. Before closing their PR without merging, I tried to explain in their PR what they needed to do next time and included a link to a tutorial about Git branches, and asked them to follow up with me on Slack after they’ve gone through that tutorial. This person took my advice, and for their next PR, I was able to merge it without any problems.
It seems to require a great deal of patience and good written communication to hold an online event! Does this mean online events are “worse” than in-person events? Not necessarily. Although ….
Lesson 3: Online events can provide opportunities when in-person events aren’t possible or unavailable in one’s local area.
I think this may be why my workshop ended up being so popular, even though online events can’t always give you those more personal connections like the ones you could make in-person. But with in-person events being canceled left and right during this pandemic, folks were hungry for events that provided community, connection, and a chance to learn, however brief. And even after this pandemic is over, there are some places in the world where in-person tech events are scarce. I think being able to offer and deliver online tech events well will continue to meet a need. It also didn’t hurt that my workshop got tremendous marketing from Twitter (from DiversfyTech, Women Who Code Mobile, and Women Who Code Colorado , etc.) . 🙂
That being said ….
Lesson 2: Event scope is everything. While the event was successful, we may have to reduce the scope for future events, to better meet the needs of workshop participants!
Remember when I mentioned that only 1 person signed up to work on Eric’s iOS Swift project? Although Eric was happy with that, I had hoped that there would be more. And with this event being aimed at the Women Who Code Mobile track, there were some requests for Android projects folks could contribute to, and I wasn’t able to deliver on that.
That’s when I realized that I was trying to take on too much with this event. I was scheduled to teach a similar open source workshop for my local Women Who Code Boulder/Denver chapter in May, but realized after this experience that I wasn’t ready. We needed to line up more maintainers of open source projects and that’s when it hit me!
It is too difficult and a big ask to find maintainers willing to not only maintain open source projects in addition to working their full-time jobs, but also create issues and offer their time and support to events like this. There are much bigger, more popular open source events that consolidate opportunities like this to make it easier for everyone all around.
That meant ….
Lesson 1: We’re going to do another workshop, version 2.0, Stay tuned!
So, we’ve canceled the Women Who Code Boulder/Denver May workshop. But I will be planning another workshop, closer to October, to coincide with Hacktoberfest. This way, I can focus on teaching the Git workflow in my workshop, and attendees can search for open source projects and issues through the Hacktoberfest event, freeing me and the Women Who Code volunteers from having to search for open source maintainers willing to create issues just for our event. Doing this will give workshop attendees more options with projects to choose from, including finding ones in their programming languages of choice. We will still have volunteers / mentors to help folks with selecting projects / issues through Hacktoberfest, however. Also, we hope that we will be more recovered from the pandemic by October and be able to offer this workshop in person then. 🙂
All the details haven’t been worked out yet, but that is the general idea. In the meantime, if you’d like to learn more about how to get started in open source, check out the video and slides for my presentation.
I am grateful that my open source workshop for the Women Who Code Mobile track went so well, and I hope it helped a lot of people. I’m looking forward to doing this again later in 2020, and that it will be even better next time!