Open Source Dev: 06.01.2018 - usds/us-forms-system GitHub Wiki
Conversation with Spoke project (moveon.org) (6/1/18)
HISTORY
- Started as a closed project within Bernie campaign - Coders for Bernie
- Moveon negotiated with them to adopt the codebase - last April / March 2017
- Open-sourced it July 2017 - came to them kind of gnarly - took a bit of work to get it into shape
- Working in production (in the open) Sept 2017
- Forked by Australian marriage equality campaign
- Pulling in Australian company’s changes was actually tough, they should have just rewritten the features
- But they were interested in maintaining the story of provenance - both internally and externally - there is value in that
- He suggests that our story is also about transparency in government
- Open source ‘is a strategy’ that takes a lot of time
- 'The first six months in the open is a lot of work’ - you’re doing more work than getting benefit
- A question of resource management - it is very intensive
- Make it ‘newbie-ready’ - this takes a lot of work up front
HACKATHON NOV 2017
- … as forcing function for newcomer experience
- Suddenly had 10-20 ppl trying to install it all at once
- ‘I got to see all the things they ran into’
- ‘If you asked me at that point whether this was worth open sourcing the project, I’d said 'I think we should give it six months, but not yet …''
- They got two really strong contributors
- A few really committed developers - one guy on paternity leave ‘who was bored’ - haha sigh.
FROM 1 USERS TO N USERS
- 'You’re going to be in the wilderness for a while'
- Recommendation: find a partner or organization that is another compelling user of the code
- Their users are organizations, not individual users (similar to us)
- At 2 users, the codebase is suddenly forced to be generic
- Now over a 100 campaigns using it (!)
- SEIU, Working Families Party, …
- Super contributors = 5-7 people
- 1 feature submitted = 15
- Installed Codebase = 100
- Make it super easy - make campaigns ‘not afraid of the software'
- They made a ‘one-click heroku button’ to set up
- Youtube video to ‘setup spoke in 10 min’
- Run test suite, sample data (include sample data)
- They were 'performing in public’ - in the slack channel, they would work with people to get things up and running ‘publicly’
- ‘Sales funnel’
- They’re competing with actual vendors (like us)
- ‘This is as close to any kind of promotion you will ever see from us’
- **opensource.moveon.org —> easy to pitch to your boss - like a ‘vendor website’ **
- ‘This saved us $100k’ etc. and here’s how to contact us
- "100 learn about it, 10 will say they will, 1 will actually do something"
TRACKING SUCCESS / MEASURING COMMUNITY
- Tracking activity in the slack channel
- Tracks activity in GitHub repo (notifications)
- People are super intimidated and he tries to eliminate or reduce intimidation / imposter syndrome
- ‘Just commenting makes us happy’
- ‘You can mark your work ‘work in progress’ and we’ll help you get it over the finish line’
- Be explicit about encouraging people to engage
- Doesn’t look at forks, ‘though I should’
- **Actually prefers that people run code off master - unmergable forks are an indication of ‘a sad open source project’ **
COMMUNITY MANAGEMENT
- Asked one of the contributors to run the community themself - he basically escalated the power of this one individual, and it solidified that person’s commitment
- I didn’t want to say to people ‘Give me your email address’ - he said ‘go to this issue and comment on it!’ and he knows that GitHub will email them with notifications on the issue, and that he has their handle on GitHub
- Matches contributors to new orgs who need features - suggests that org pays dev, and then merges changes back up
TELLING A STORY
- **‘Theory of Change’ **- he abbreviates this as TOC
- Story that you tell others: ‘If you do X, change will happen’ - meta level is important for folks to understand their impact (and want to contribute)
- Very simple and quick pitch - it should be really clear
- Highlighting customers through the work that the tech enables (‘changed outcomes for healthcare in Alabama through the election’) - how it actually impacted people
DEVELOPER EXPERIENCE
- Dev should be up and running in 10min - 30min max.
- How to deal with dependencies on external services
- Spoke is dependent on telephony, authentication for end-to-end experience
- The readme says very explicitly that if you want an end-to-end setup, you will need to interface with third party services
- They have to keep updating readme as third party services change (‘super annoying’)
- Make it easier for folks to develop locally by stubbing out third party services
- e.g. for twilio connection, he stubbed out a fake service so that you can actually run everything locally and get a ‘reply’ that looks like a text message - for local dev and testing
- The ‘airplane test’ - can you develop and run things locally in a meaningful way (on an airplane)
- Good first issues
- ‘Even though it would have taken me five minutes to fix the bug, I just filed the bug as ‘good first issue’ instead so others could pick it up’
- Important to have these ready for hackathon
- **In each issue, write out which files will be touched in this issue **
- Think about the junior developer who has never before contributed to an open source project
HACKATHON LOGISTICS
- Before hackathon - they had 2 people install the codebase beforehand and get feedback - ‘some stranger needs to go from zero to X on their own before you take it to a hackathon’
- At Hackathon - grouped people into 2s and 3s to do the install together
- ‘Abortion Access’ hackathon in NY is a really strong example
- If you can bring someone who is a user of the software - not a developer, but someone who uses it, and if they can attend with you, it creates a motivation
- Have issues ready - good first issues list needs to be prepped - 5-10 issues that could be completed in less than a day (a new person can do it)
- Goals & success metrics
- He’s looking at whether people had a good experience
- ‘I could write that code in 5 minutes, so it’s not about the code’
- You’re trying to get people into to the project, or just coding for a good cause - evangelism around open source
- Lower the barrier to engaging with open source project
- At best, one person in the hackathon will continue working on the project - 'that’s a great success'
- 'Go wide'