No people, no software

A hackathon story

Connecting with the people your software serves is more important than anything else you could do.

The Wikimedia movement is an international movement and a Wikimedian is someone who contributes software or free knowledge to one of its many projects (the most famous of which is Wikipedia). Wikipedians work tirelessly to create, nurture and protect content as well as provide the software that wraps it up and delivers it to readers. Working across multiple timezones in different languages in different countries with different skill-sets these people support the largest website in the world run by a non-profit.

It’s important for such people to get together to share knowledge, to share time and to share ideas. Various hackathons and editathons happen across the world every year and are open to all — whether you have no idea what we do or if you have been around for years — and financial support is available for those who might not otherwise be able to attend. I get the privilege of attending many of these events and this weekend I’m in Prague for the European hackathon.

Hackathon attendees take time for the group photo [Source: Wikimedia Commons, CC BY 4.0]

Thursday

The event begins with a social event. I spy TheDJ one of our most prolific and longest running editors who is also a software developer. I don’t think I’ve been to a hackathon where TheDJ has not been there. I give him the same hug I’ve given him in France and in Israel, ask him how he’s doing and then give him a demo of the latest project I’m working on at the Wikimedia Foundation. I am reassured by the feedback he gives as he explores the prototype, and it gives me affirmation that we’ve building something that’s going to have a positive impact to users when finally deployed.

Next to TheDJ is Sage. Sage is also a long term editor, but I haven’t seen him for four years. Back then, he provided community input for a mobile web upload photo feature that eventually had to be shut down due to an influx of selfies that the community was unable to moderate. One good thing that came out of that project was a photo of a very rare disease (diphtheria) and the Wikipedia selfie article which Sage created. I ask him if he’s edited the article recently and we look at it together, scrolling through it on his mobile phone. He feels the image selections could be improved, and I have a feeling he’s going to be editing the page later.

Outside, I talk to Andre, the Wikimedia bug wrangler who lives in Prague. We talk about the city he knows so well and then as I’m a little jet-lagged, I make my way to the hotel as I know very well that many of these old friends at this weekend’s hackathon have lots to catch up on and are likely to be out all night (and I’m too old to do that these days).

At the tram stop, I bump into one of my colleagues in Brazil who’s attending his first hackathon. I’ve seen his name on bug tickets and in emails but never in person so as we make our way back to hotel we talk about the maps infrastructure he supports.

I’m quite excited about the weekend. I work in a remote team with team members in Spain, England, Poland and the United States. If there’s one thing I’ve learned well through this experience, it’s that some things get done better when they are done face to face and some things are done better asynchronously. I’m curious what will come out of this hackathon.

Friday

The next morning, we are up bright and early and everyone is trying to decide what they want to work on during the hackathon. During the introduction session, I learn that the majority of the hackathon attendees are volunteers and a high percentage are Czech. The Wikimedia Foundation’s staff are a small minority of the people here. A few possibilities are pitched and a session to match mentors to newbies is planned.

Mentor matching session in Prague. Anyone need to learn SPARQL? [Wikimedia Commons, CC BY-SA 4.0]

After the introduction I meet Simon who’s been editing Wikipedia but wants to contribute code. There’s a few bugs in the Wikipedia feature to view images on the desktop site that he’s keen to work on, so we sit down and discuss solutions and I walk him through the code. He’s a smart man and he’s up and running in no time whatsoever. I’m hopeful we can integrate him more into the movement as I feel he would have a great impact.

I’m still not sure what to work on, other than helping enabling people to do other things, but I come across a group of editors who also use the iNaturalist mobile app. iNaturalist is a citizen science project and online social network allowing people to share observations of biodiversity. The Wikimedians here in Prague are interested in exploring ways to share its own freely licensed content with our own projects.

The iNaturalist Wikimedians are planning a photo walk. I decide it will be a good opportunity to spend time with editors and understand what they do better and hopefully find opportunities for my hackathon project to help them do that more efficiently. Inspired by Jimmy Wales’s fundraising banners, I walk around the room with a big sheet of paper saying “come on a walk and learn about iNaturalist” and tell people “the banner campaign will only stop when I have enough people” which turns out to be surprisingly effective.

Wikimedians take a photo walk to go find critter photos for iNaturalist [Wikimedia Commons, CC BY-SA 2.0)

I’ve been using iNaturalist for some time, but there’s lots of people in the group that don’t know how to use it, thanks to the human billboard banner campaign, so everyone has questions and knowledge to share. I learn something new that iNaturalist defaults to a non-permissive license that doesn’t allow my photos to be used on Wikipedia. The group helps me change that and retroactively update the licenses on my existing photos. Eventually we reach a park where we take some photos using the app. Our plan is to later find ways to use these in Wikipedia.

TheDJ is migrating some legacy code to Webpack and hitting some problems so the two of us sit down to pair program and get things working. He just has one bug left to fix, but he’s unblocked now.

Saturday

I join the group session with the iNaturalist Wikimedians. Apparently lots of Wikipedia articles on biodiversity do not have images, yet there are images inside iNaturalist that can be used! A Wikimedian in the group describes their workflow for transferring images to Wikipedia. It involves manually downloading the image and uploading it via a form. I’m pretty convinced I can make a slightly better workflow so get to work immediately on doing just that.

Soon I have a raw and hacked together prototype that shows me images from iNaturalist for Wikipedia articles. I just need some way to identify which articles do not have images and upload those photos. I ask an API expert how to do the former and discover the Wikidata query service and ask the image upload expert how to do the latter and am pointed at some badly documented parameters to a Wikipedia page that allows you to pre-fill upload forms. I combine everything to get a minimal viable product.

Simon is making good progress with his changes. We review and merge his first ever patch to our codebase. There’s a glow to him that’s shared by most new contributors and it’s nice to see that in person. Someone has already added him to a list of trusted contributors. Should I say thank you? he asks. There’s never any harm in saying thank you, I grin.

Sunday

Playing with my iNaturalist prototype, I realize that most of the articles do not have photos on iNaturalist. I soon realize that I’m only getting Wikipedia articles of endangered species, so it’s no surprise that a citizen science project is also lacking in those images. I need to change my query to exclude endangered species, and for that I need to learn SPARQL, a RDF query language for databases. I make a note to myself to learn that later, but in the meantime I need to find the SPARQL expert and of course, there’s one in the room who very generously gives me ten minutes of his time to correct my SPARQL syntax.I now have a working app! I upload several images from iNaturalist effortlessly to Wikimedia Commons and include them on their corresponding articles. My contributions include a photo of a damselfly. I share the link with my new group of friends.

A damselfly uploaded by Laura Gaudette to iNaturalist, uploaded to Commons using my hackathon prototype! [Wikimedia Commons CC BY 4.0]

I look around the room and feel grateful to be part of such a rich movement of inspired dedicated individuals. Everywhere I look, someone is helping somebody solve the latest problem, or sharing a laugh, or furiously coding to wrap up their project so they have something to show. At the showcase a wide range of projects are demoed to cheers and claps. There’s an API documentation website that has been worked on alongside a remote attendee who couldn’t make it to Prague ISBN scanners; text recognition services; and an app that let’s you tell Siri to edit Wikipedia. It’s invaluable to see where everyone’s passions lie; to learn what’s possible and to find ways to make things better. I leave this hackathon energized and inspired and be part of something so unique and proud of my organization for helping make this happen.

Hackathon project is showcased at the end of the event (Wikimedia Commons, CC BY-SA 4.0)

I get a message from Dario, an ex-work colleague (when you leave Wikimedia Foundation you don’t necessary leave the movement), who’s seen my iNaturalist prototype. Apparently my prototype has been enthusiastically shared by a hackathon participant and is now going viral with users uploading images. He has lots of user interface improvement suggestions. I guess I know what my next hobby project is going to be…

On the train, as I head to Budapest, I reflect on what makes a Wikimedia hackathon so special. I can only conclude that our volunteers are our customers and there’s nothing more valuable than getting face time with the people your software serves. Software doesn’t solve problems, people using the software solve problems. It’s easy to forget that sometimes.