I went to FOSS4G 2018, which took place in Dar es Salaam two weeks ago, as an ODK "representative", and this is a summary of my experiences there.
First, the term "representative" isn't exactly right, as I wasn't there to speak on behalf of any official body. Yaw, Hélène, and I had some discussions before I went, and we came up with the following goals for my participation:
- Learning about real-life geo data collection use cases: By attending talks and talking to other conference participants, I might help us learn about how they currently use ODK or aspire to use ODK, and what factors influence their decision to choose ODK among the alternatives.
- Getting feedback on upcoming changes to ODK Collect: I'm the developer primarily responsible for geo functionality improvements that are coming soon in ODK Collect; some of these changes will require users to do things differently, and we wanted to assess how disruptive or tolerable these changes will be for them.
- Connecting users to the ODK community: In my short time so far as an ODK developer, I haven't gotten the sense that we have a lot of close connections with or between the people and projects that use ODK for geo data collection, and that makes it challenging for us to understand how our decisions will benefit or impact them. If we can get more ODK users participating in this forum, we can keep learning from them going forward.
- Bringing contributors into the ODK community: FOSS4G held two community sprint days after the conference proper; we wanted to be part of those sprints and create opportunities for volunteer developers, translators, or writers to join and contribute to ODK.
Before the conference, I took some steps to prepare:
- This was going to be my first FOSS4G, and I had very few prior connections with ODK users there, so I needed a way to find and attract people who used or were considering using ODK. I decided that I needed to be highly visible and recognizable, so I wanted to wear an ODK shirt at the conference. We didn't have one already designed, so I made one! See the "Shirts" section below for details.
- I announced the ODK sprint on this forum. I also went to the FOSS4G sprint page and announced that ODK would be participating (this required registering for an OSGeo wiki account, which took a couple of days to get approved).
- I went through the introductions thread on this forum and contacted all the people who looked like they might be local to Dar es Salaam, to let them know about the conference and invite them to the sprint.
- With Hélène's help, I reviewed some of the top issues marked "good first issue" in our Github repos as possible issues for new contributors to take on at the sprint.
The main conference consisted of three days of scheduled talks. There were a lot of different talks happening in parallel, so I mostly bounced around to talks for projects that seemed related to geographic point data or boundary data collection, and indeed found that folks were often using ODK or other mobile data collection tools.
The shirt was an immediate hit; I was approached multiple times at the conference hall between sessions, and at the opening social event, the shirt catalyzed many introductions. I discovered a great deal of love and enthusiasm for ODK among all the conference participants, and had many conversations about ODK and mobile data collection. Often, people were approaching me with ODK support questions or feature requests; I couldn't answer every question on the spot, but I took careful note of them and used these conversations as opportunities to invite people to tell the story of their ODK deployments, so I could learn the ways it was or wasn't working for them. In some cases, people weren't using ODK and had chosen other alternatives instead; these were opportunities to learn what shortcomings of ODK had been the dealbreakers for them. (The details of these requests and stories are recorded in a notes document.)
I soon realized that the ODK users I wanted to get feedback from would be mostly at the main conference, and only a small fraction of people would be staying for the sprints. So I decided to hold a user meetup on the third day of the conference, before everyone dispersed, to get feedback on our geo functionality changes and solicit specific suggestions.
I organized the user meetup informally, under a great fig tree at the National Museum, on the last day of the conference. To announce the meetup, I posted a couple of handwritten signs at the main doors to the conference hall, and also posted a message on Attendify, the conference app that everyone was encouraged to use for schedule updates and announcements. Once I decided that there was going to be a meetup, I mentioned it in every conversation I could. Knowing that there were other sessions happening at the same time as the meetup, and that I was only giving people 24 hours' notice, I expected perhaps 10 people to attend.
To my astonishment, 40-50 people came to the meetup. I began by introducing myself and calling everyone's attention to the ODK Forum, and started passing around a sign-up list so we could collect everyone's contact e-mail address. I'll be following up with all these e-mail addresses with a reminder and instructions on how to join the forum.
Then, I took a quick survey of usage—how many people were using ODK Collect, how many were using the geo functionality, and how many were using specifically GeoPoint, GeoTrace, and GeoShape. I described the significant functionality changes that were planned for these geo data types, and invited feedback on the changes. (Feedback was generally positive, and no one had use cases that sounded like they would be negatively disrupted by the changes; in fact, in the scenarios people brought up, the changes would probably make things better.)
Finally, I invited general feedback on all aspects of mobile data collection with ODK. Again, I treated this primarily as an opportunity to listen to everyone's concerns, suggestions, bug reports, and feature requests, repeating them back until I was sure I understood them clearly, and then taking careful notes. (These are recorded in the notes document.) One of the people at the meetup joked that I was doing a good job as everyone's ODK therapist.
I had planned these agenda items—the introduction, the sign-up list, the quick survey, the announcement of changes, feedback on the changes, and general feedback—and I was pleased that they all went well, though there was one more agenda item that I regret we didn't have time for. If there had been more time, I would have liked to go around the circle giving each person a chance to introduce themselves and briefly describe their usage scenario. My hope was that this would allow people with similar use cases to find each other and help each other with the similar problems they faced. It would have been difficult to make it around the entire circle with such a large gathering, but I would recommend that others hosting meetups try doing this if they have enough time.
The two-day sprint was hosted at a separate location, the Tanzania dLab—a facility with large meeting rooms, desks, chairs, whiteboards, and projectors. Although affiliated with FOSS4G, it was free and open to the public—no conference registration was required to attend the sprint. Perhaps 6 or 7 projects were represented at the sprint, of which ODK was one; I had signed up on the sprint wiki page and described the kinds of contributions we were inviting.
We began the first day with a quick introduction to each of the projects, to give participants a chance to decide which project they were interested in contributing to. I had expected perhaps 5 people to show up for the ODK sprint, given that it was on a weekend and in a separate location—but we ended up with about 15 people joining the ODK group, the largest group at the sprint!
We gathered all the ODK folks into a separate room, and I began by inviting everyone to introduce themselves and mention how they were interested in participating—as a coder, as a translator, as a writer, or as a user. I wrote their names up on the whiteboard in these four categories. We had a lot of people who were fairly new to ODK, or perhaps had used Collect but were interested in learning how to set up ODK surveys. I wanted to make sure everyone was comfortable and familiar with the platform before writing documentation, translating strings, or editing the code for it, so for much of the first day Iddy Chazua led a tutorial on ODK Collect and XLS Forms. Thank you so much Iddy! Iddy also took everyone outside so they could get a little bit of experience collecting geo traces using the GPS on their phones.
There were quite a few participants who spoke Swahili and were interested in translating, so I got them signed up on Transifex and walked them through the process of entering translations. We also had one person who was interested in translating to Brazilian Portuguese and two people interested in translating to Urdu! For the rest of the afternoon we let folks go to town with the translations, and they made lots of fast progress together.
On the second day, we started helping those who wanted to contribute as developers to set up their laptops for development. There were five interested coders, including Iddy. Because I was most familiar with ODK Collect, I decided to set them up for Android development. The Android Studio IDE is quite a large download (almost 1 GB) and its installation is a process that triggers many more large downloads from the Internet. To make this process practically feasible, I had spent some time on the first day downloading as much as I could onto a USB stick so we could do the installations locally instead of having all the participants try to perform these downloads at the same time over a limited Internet connection, which would have taken many hours.
First, we used Iddy's laptop as a test case to work out how to do the installation procedure efficiently. In the meantime, the rest of the participants continued their translation work from the previous day. After an hour or so we had figured out how to successfully complete an installation of Android Studio, and we were ready. We took a break, and Ivan Gayton gave everyone an introduction to Git and Github. Thank you Ivan!
After lunch, we proceeded with the installations. First, we distributed the main installer file with the USB stick, then had each participant launch the installer and abort it before it started automatically downloading the large SDK packages. Then we had them unpack and copy the SDK packages, which I had also downloaded the previous day, from the USB stick to the appropriate locations on their laptops. We also had them unpack the source tree for ODK Collect from an archive on the USB stick, instead of cloning it from Github, which would have been another long download. Finally, we had them launch Android Studio and start the first build, causing Gradle to automatically download all the Java dependencies from the Internet. In some cases this last step took a few minutes, and in the worst case it took about an hour. But after a couple of hours, we had all five Linux laptops all set up with ODK Collect in Android Studio, they had all successfully built the ODK Collect APK, and everyone had learned how to install the APK on their phones using USB debugging.
At this point we had about an hour left in the day, so we decided to pair up the remaining four developers into two pairs, each with a more experienced and a less experienced member of the pair, and let them take the two top issues marked "good first issue". These issues were selected to be relatively straightforward in terms of programming, which would give them the opportunity to go through the whole procedure of forking the repo, claiming an issue, making a change, testing it locally, pushing a new branch, and creating a pull request. We guided the two pairs through this process, and by the end of the day we had shiny new pull requests and new ODK developers!
Also, after the sprint, more folks have contributed to the Swahili translations and there are now zero untranslated strings remaining.
I made my ODK shirt at vistaprint.com, which will print a shirt with a colour image on just the front for $7. I printed just one shirt as a test, and had it shipped to Toronto for $26, where I picked it up on the way to Dar es Salaam. It was remarkably fast—I designed the shirt and placed the order on Friday, August 17, and the shirt was delivered on Tuesday, August 21 even though I wasn't expecting it to arrive for two more days!
I made the design in just a few minutes; it was extremely simple, just consisting of the words "Talk to me about Open Data Kit" with the ODK logo in the middle. I'll attach the image here so you can print your own identical shirts if you like.
The shirt was remarkably effective. It prompted conversations with many new people, and I quickly became identified as the "ODK person" at the conference. It's a simple gimmick, but I highly recommend it if you want to draw attention to ODK and become a focal point for people interested in ODK!
I want to thank Yaw Anokwa (@yanokwa) and Hélène Martin (@LN) for supporting and sponsoring this trip and helping with the preparations to make it effective, and Iddy Chazua (@Iddy_Chazua) and Ivan Gayton (@Ivangayton) for helping me run the ODK sprint!