Improved workflow and tools for form design

I am curious what systems & processes other people use for designing complex forms, collaborative work, version control, and debugging.

Full disclosure: I'm not a developer, so I might be ignorant of some tools out there.

I don't like working in MS Excel. It's bloated, some of the people I work with don't have it, and it's not actually a very good tool for the design process (e.g., poor commenting functionality, handling long consent scripts or questions is annoying, etc.).

Some things I would love to have access to:

1. Plain text format. I write reports in Notepad++, not MS Word, for similar reasons. There are a few benefits that this could open up, beyond just stability of text editors versus MS applications and their open source nature. Specifically:

A. I can use version control like git. This seems like something I should start using for ODK projects, given the dependencies between my edits and those of collaborators.

B. Facilitate syntax highlighting and auto-completion. It would be nice to have () and {} automatically appear in pairs and $ and variable names from earlier in the script be colored for easy identification. I wrote this in Notepad++ and the text ${varname} in #3 is all in pink. It's great.

2. Ability to edit simultaneously. Yes, we can do this in Google Sheets, but ODK was designed for data collection in far-flung, off-grid locations and many of us work in places with inconsistent electricy + internet. Maybe Excel does this and I just don't know it.

Related to #1 above: Asynchronous editing with merge would also be nice for some people; I would like effective tracking of changes in the git style.

3. Identify errors proactively. In an ideal world, if I type ${varname} and there is no question called that before where the reference to ${varname} appears, it could flag an error. Same for questions with choice options not in the choices sheet. If the first word in a "type" cell is not a recognized question type, it would be easy to see.

Even in a less ideal world, it would be easier to write a script checker that could be run quickly to identify all current errors if this were written in plain text format. As it stands, XLSForm Online only generally finds the first error. You've got people (myself, Medair) designing their own methods of checking. I can't speak for Medair, but mine is janky and I can't share it with newer ODK users in my org. because it's too messy and has to be debugged often (and I don't have the time).

4. Clean and efficient commenting functionality. Yes, I can insert a column and just put my comments there, but it's clunky if me and someone else are writing comments back and forth. Excel sucks for this.

How do other people approach these issues? Have I been suffering through the use of Excel for years for no reason?


There is ODK Build, which validates most form structure (not expressions) as you go, and it's fairly capable by now.

Build won't do all the things you suggest though. But do feel free to request missing features as GitHub issues at the build repo!

With form drafts in Central you can test very quickly and without interrupting production form versions.

If you need more powerful form design, you can export from Build to XLSForm and take it from there. At least Build can get you comfortably there most of the way, and you only have to add features that are not yet supported in Build or by the XForms standard.