How to Run a Whole Community Sprint
Most open source project sprints are focused on code contribution. While this makes some sense---open source software is, after all, *software*---it's also a little narrow-minded.
61 posts
Most open source project sprints are focused on code contribution. While this makes some sense---open source software is, after all, *software*---it's also a little narrow-minded.
There are many ways for newcomers to participate in a project, from testing onboarding documentation to reviewing pull requests to showing up to community events. But it can be surprisingly difficult to find ways for newcomers to contribute code.
Many potential contributors have a desire to contribute but lack knowledge about the codebase and the community that would help them contribute effectively. Context-Building Tasks are tasks which do not require a lot of context, at least at the beginning, but encourage the contributor to learn more and more context as they continue with the task.
Carol Willing was a crucial part of Python's governance transition from a BDFL model to a Steering Council. She served on the first Steering Council and has also been involved with Jupyter and its governance. This interview was recorded in January 2023, as part of a research project led by Seth Frey and funded by the NSF's DASS grant program. The interview has been lightly edited for readability and shared with Carol's consent.
Information naturally flows from those who have more power to those who have less.
As we've discussed previously, all systems are built on abstractions, and all abstractions are at least a little bit wrong. The more complex and important a system is, the more likely it is that a leaky abstraction will gum up the works. So systems need feedback mechanisms to detect when an abstraction is leaking, so they can identify and fix the problem.
Every progressive group ought to ask themselves occasionally, "Who are we fighting for? And how do we know what their needs really are?" Self critique, reflection, and open dialogue are vital tactics for organizers, and our work as maintainers of Parsons is no different.
A lot of progressive data work involves moving data into and out of third-party tools. While Parsons aims to make that easier, it's still pretty hard. One skill that's really helpful is getting comfortable reading documentation, and in particular, API documentation. So: this is a primer on how to read API docs.
There's a saying: the map is not the territory. Farnham Street Blog has a pretty good explainer:
Welcome to the authentication guide for the Parsons project! It has three parts:
Welcome to our Intro to Python Programming guide! It is designed for people without much experience in either programming generally or using Python specifically.
Command line interfaces let you do a lot of different things on your computer, including installing and running programs and navigating the directory structure of your computer.
It’s the last day of my mini-batch, although it’s not my last day at Recurse, since there’s an active alum community I’m eager to be a part of.
Today I finally tackled making a code madlibs program.
When we left off, I’d written some rather ugly code that gave us the basic features of a madlibs program without using any macros. But the whole point of this project is to better understand lisp macros. So today I focused on refactoring my program to use macros instead.
Building off of yesterday’s work, today my hope was to finish my humble text-focused Madlibs program, so that I could move onto code-focused Madlibs tomorrow.
Day 1 of my Recurse mini batch is complete! I spent a good portion of it meeting people and learning about the community, but I did also make some small steps on my project:
Next week I’ll be doing a mini-batch at Recurse. I’m planning to blog about it each day, and I figured I’d start by laying out my plans for the week.
I just fixed a Django bug that took me ages to solve. Part of why it took so long is that the errors I was getting weren’t surfacing the right search results. So, in case anyone ever has a similar problem, I will record what happened here and hope the search algorithms send this their way.
I wrote an ‘intro to operations’ guide. The ideal audience is me a week ago.
I spent a good portion of yesterday staring at my Django test cases and whimpering. No matter what I tried, no matter how thoroughly I flushed the database between each test case, state seemed to be persisting from test to test. “How is this happening?” I howled to my computer.
Me: Wow, Django’s Case() sure is a useful addition to the annotate function! You can use it to chain together When() functions to conditionally annotate your queryset! Django is so cool.
Julia Evans, in her recent summary of her time at the Recurse Center, links to this cool little project which visualizes how you use Git. Here’s my result:
It’s late Friday night, technically Saturday morning, and like a party animal I’m up googling, “Could someone mess up my server if I let them run arbitrary Python code with no imports.”
Let’s say you’ve got an engineer or other employee who costs you $150,000 a year in salary & benefits. And let’s say they lose just 2 days a year to dealing with problems caused by underfunding of the FOSS projects they work with – bugs, missing documentation, lack of features that would make life so much easier.
Earlier today a friend/former colleague of mine linked to a dataset on the OpenScienceFramework with the commentary “OKCupid released some of their data!“ It turns out they didn’t release it, it was scraped.
The intro to testing session I ran on Saturday went well. Unfortunately the resolution on Hangouts on Air recordings is not good enough to read my code, so it’s pretty much unwatchable (though folks who saw it live were able to see what I was doing).
This Saturday at 11am EST I’ll be running a remote workshop with PyLadies on getting started with testing. If you’re a lady or genderqueer/non-binary person who wants to know more about the nitty gritty of unit tests and integration tests or maybe just the high level conceptual stuff like “why do people do this to themselves” you should consider signing up. I’m not sure if there’s an official cap but I know there are a lot of people enrolled (90ish! o.O) so it’s probably a good idea to RSVP if you’d like to join.
So, LibrePlanet happened this weekend. It’s one of my favorite conferences, and not just because it’s local. This year Deb Nicholson and I ran a pre-conference workshop for free software projects to improve their usability and new contributor onboarding, hosted by the lovely folks at Bocoup. According to our participants it was a smashing success. Deb and I are writing up a guide so that other FOSS conferences can run similar workshops.
Today I had the pleasure of speaking to a Mozilla study group about The Little R’er. The Little R’er is a project of mine from about a year ago - it’s basically The Little Schemer for R. Or, rather, the first few chapters of the Little Schemer for R. R is, in my opinion, a much less elegant language than Scheme and I found that the socratic method eventually broke down as a pedagogical tool. The discovery of silent recycling did not help my enthusiasm levels either.
I spent a couple of hours today wrestling with encodings. Writing out the details here to help me remember, and perhaps save someone else from grief.
There’s a body of research literature showing that people overestimate how well they can explain phenomena. Ask someone whether they understand how a can opener works, for example, and they’re likely to say they do. Ask someoneto explain how a can opener works, though, and you’re likely to get confusion, frustration, and a confession that they don’t understand as well as they thought they did.
Last year I participated in a novel and exciting meta-analysis project called Many Analysts, One Dataset. A single dataset was given to researchers in over a dozen independent groups to analyze, with the hope of seeing just how divergent the analyses would be.
Last month I quietly launched a new company, Galaxy Rise Consulting. Yesterday, my first client Sumana Harihareswara less quietly launched her new company, Changeset Consulting. If you need advice, auditing, internship support, release management, sprint prep, or anything like it for your FOSS project, I highly recommend Sumana. And if you need a website, app, or data science project developed, I highly recommend me. ;)
I did an interview with Django Girls. You can read it here.
Yesterday I backed up my entire computer, deleted and resized some partitions, and then attempted to upgrade my operating system from 32-bit to 64-bit. I was following this guide, which unfortunately doesn’t tell you to follow the instructions as root from the beginning. The result? Halfway through the process, I deleted my 32-bit version of sudo in order to install the 64-bit one.
I missed this paper when it went around last week: The prevalence of statistical reporting errors in psychology (1985–2013). Daniel Lakens has a very good review of it.
Making icons for Android is pretty tedious, until you realize you can manage everything with a shell script:
I recently made myself a new personal website, and I noticed there were a couple of problems with the mobile version: the font-awesome icons weren’t displaying, and the collapsed, mobile-friendly navbar wasn’t expanding.
A year or so ago I wrote the In Person Event Handbook to help people prepare their projects for in-person events like workshops, hackathons, and sprints. With the PyCon 2015 sprints coming up, I thought I'd take a moment to write up the highlights. Want to make your project welcoming to newcomers? Read on!
I've long known the adage "When you have a hammer, everything looks like a nail" but I've only recently come to appreciate its truth.
A few months ago, I joined a project called Crowdstorming a Dataset. It's a project affiliated with Center for Open Science and its basic premise is this: what if you gave a single dataset to dozens of researchers, and asked them to prove or disprove a particular hypothesis? What are the different analytical approaches they might take? Would they all give similar answers? Once they're given the opportunity to give and receive feedback, would their answers and methodologies converge?
\* A friend asked what SCaLE stood for, and I got everything but the 'a'. He laughed and said, "It could mean literally anything!" For the record, it's the a in *Ca*lifornia.
On Tuesday night we had our first official setup sprint -- an IRC get together where OpenHatch volunteers test an open source project's installation and contribution process and documentation. Our inaugural project was Oppia, a tool which helps non-technical users create interactive educational activities online. Three volunteers (Carol Willing, Anurag, and myself) spent two and a half hours working with Oppia maintainer Sean Lip testing and improving documentation. The quick, casual feedback process meant we made a bunch of changes, including restructuring the documentation to be easier to navigate, adding explanations (and/or links to tutorials/guides) where documentation was too terse, and changing the output of the testing suite to be more understandable. We also managed to create the project's 100th issue.
Time for another list of excuses for shamefully neglecting this blog:
Contributing to existing open source projects isn't just about improving those projects -- it's a chance for contributors to grow, too. When we run Open Source Comes to Campus events, we love seeing students exposed to their first projects that aren't throwaway coding exercises. Working on open source projects can teach anyone a lot about software engineering and collaboration. Here's some of what *we've* learned:
*This is part two of a three part post brainstorming potential improvements to the journal article format. Part one is here, part three is here here.*
A little less than a year ago, I was asked to direct OpenHatch's Open Source Comes to Campus event series. Open Source Comes to Campus is a workshop designed to introduce college students to open source, to teach them how to use tools like version control and issue trackers, and to guide them through making their first contributions. When I joined, OpenHatch was averaging two events a year. I was asked, hopefully, if I could run seven events in 2013.
*Recording this for posterity, in case it helps someone the way random websites helped me today.*
I've been hearing good things about the Capitol Words API for months now, so I decided to try doing something with it. I wrote a script which queries the API for instances of a given word and returns two text files: the first is a compendium of sentences from every time a Republican has said that word (in a given date range), and the second the same but for Democrats. I fed the results into a word cloud generator I found on github, which I modified slightly to suit my purposes.
I spent the last week and a half at PyCon. I have a lot of things to say about it - too many, really, to form a coherent narrative. So here are some scattered thoughts.
A round up of recent goings on:
This Saturday, February 23rd, is Open Data Day, "a gathering of citizens in cities around the world to write applications, liberate data, create visualizations and publish analyses using open public data to show support for and encourage the adoption open data policies by the world's local, regional and national governments."
As I mentioned in my last post, I chose to look at the EPA Toxics Release Inventory this month. The full dataset was way too large for my little netbook to handle, so I filtered the results to my home state of Massachusetts, and downloaded it in csv format. I used this helpful pdf to identify the variables I was most interested in: year, total release of toxic substances, and whether the substance released was a carcinogen.
I've been a bit busier than usual the last few weeks. Missed last week's post. More beer for everyone! Here's a list of things I've done between my last post and now. (Why yes, this is a pretense for skipping another week. Glad you asked.)
Life has been super busy lately, so here's another link-and-run:
A week or so ago the founder of a feminist blog I lurk on asked if anyone could help update their commenting system. It was a real pleasure to realize that hey, this was totally something I could do.
This is an article summarizing this Nature editorial, which is definitely worth reading as well.
I've given three public talks in the last six months. What really strikes me is how different these talks were, in content, structure, and intent.
I've been tutoring a friend of a friend in Matlab, and we spent a good hour this afternoon chasing down a bug in his program. He asked how I can stand it, the constant trouble-shooting spiced up by the occasional epic search for a minor flaw\*. "Doesn't it drive you crazy?" he asked.
It's been about a year since I started this blog, and I'm slowly getting a sense of what I want it to be, on multiple levels.