Joe Flack TSC Application - 2018-07-16

Name
Joe Flack (@Joseph_E_Flack_IV)

Organization
PMA2020

What contributions (e.g., issue triage, tech support, documentation, bug fixes) have you made to the ODK community?
I have made contributions to ODK-compatible open source software that I am working making more and more beneficial to the entire ODK ecosystem. However, I have not made contributions to official ODK projects, documentation, or the community forum. I would be interested in contributing to documentation and support for some sub-forums, however.

How do you believe your contributions have benefited ODK?
We have started to have users from other organizations who are using PPP to create word document or PDFs from their ODK XlsForms. I believe other contributions would have benefited, but we as an organization have not successfully communicated the existence of our tools to the ODK community.

What do you believe the top priorities for ODK are?
There are several pain points, while I do not believe are among the projects or features currently on the roadmap, I would nonetheless consider top priorities. If ameliorated, I believe it could be a great boon to the ODK ecosystem.

I. Open source graphical user interface(s) for form creation
KoBo Toolbox currently exists as an excellent GUI for form creation. While it is not officially an ODK app, I would say that since it is free, open source, and fully compatible with ODK XlsForms, it should be officially recognized as the first option for a form creation GUI, before considering premium options

II. Graphical user interface(s) for survey lifecycle management
While it is important to have the tools necessary to conduct a survey, there lacks a specialized project management style tool for managing the lifecycle of a survey. Such a tool would provide a way to provide PM style functionality, from form ideation, to regulatory approvals, to form creation and deployment, to collection and analysis, and finally to dissemination. Such a tool should be primarily web based, multitenant, capable of managing multiple surveys, and have the ability to push notifications at key times

III. Automated testing of XlsForms
This is a major pain point for ODK forms, especially complex ones, and especially when multiple collaborators are involved. It can be a disaster if something goes to production with bugs. Once survey data is collected, it typically cannot be re-collected. Manual testing can be tedious and difficult, and testers often don't know what kinds of bugs to look for.

IV. Translation management tools
It is very important that every language implementation of a survey is as close to the true design of the survey and meaning of the questions as possible. It is important to know when something is yet untranslated. It is also important that translations get updated as soon as possible after the source language of a block of text(often English), changes. It is also important to manage the quality of translations, as translators can make mistakes, such as forgetting to update a question number change, or accidentally translating a variable (e.g. ${yes} --> ${oui}).

V. Programming language robustness
Javarosa's current implementation of Xform/Xpath is, I believe, 1.0. It seems to currently lack the language features necessary that to make it a true, turing complete programming language. Namely, recursion and iterative logic is missing.

VI. Version control
It can be difficult to tell what changed between versions of an XlsForm, and to handle such version control, especially if not using Google Sheets.

How will you help the ODK community accomplish those priorities?
I. Graphical user interface(s) for form creation
My organization, PMA2020, has currently doubled in engineering staff and will be starting a new grant. One of our priorities is to begin use of a form creation web GUI. We are likely to be using KoBo Toolbox, and our aim is to add features to it, and hopefully contribute to the trunk of the project. I would be PMA2020's primary contributor on this project given my proficiency in its language stack (Python, React JS) and interest.

II. Graphical user interface(s) for survey lifecycle management
This is additional functionality that we would either like to add to KoboToolbox, or independent of it. It is not certain that we will implement such software, but if so, I would likely be the primary contributor.

III. Automated testing of XlsForms
We have some ideas in mind and would consider this a high priority, especially if we could get backing from the ODK Community in terms of recognizing it, or possibly adding the test suite as a plugin to PyXform / XlsForm offline.

IV. Translation management tools
We have existing tools which do this, and are currently in development of improving them. Qtools2 (https://github.com/jkpr/QTools2), built on top of (and nearly a fork of) PyXform, provides significant quality assurance checks in the form of warnings and conversion errors, which can also be turned off. We would just have to find a way to get these features into PyXform, and I and others in my organization would be happy to make pull requests.

V. Programming language robustness
Upgrading Xpath to 1.2 or 2.0 would greatly increase the power of the language. I would not be opposed to committing directly to JavaRosa, but given my lack of proficiency in Java, it would probably be awhile before I could make any commits.

VI. Version control
We have some tools available to alleviate the problem of finding out "what changed" between forms. We have tools that will highlight cells that changed in between two forms, and can also create a tabular report of the changes. We have other ideas as well. Probably the best way to contribute these tools would be to somehow have them integrated officially into the ODK Ecosystem, or have them integrated into existing tools.

How many hours a week can you commit to participating on the TSC?
2 to 4 at current is the maximum that I can promise without further buy-in from my team.

What other mobile data collection projects, social good projects, or open source projects are you involved with?
I. Open source ODK-compatible projects, contributed to:

  1. PPP for XlsForm->doc/html/pdf conversion (https://github.com/PMA-2020/ppp, https://github.com/PMA-2020/ppp-web)
  2. XlsForm translation management and form diffing utilities (https://github.com/PMA-2020/pmix/tree/master/pmix)
  3. XlsForm conversion tool built on pyxform that adds extra quality assurance checks (https://github.com/jkpr/QTools2),

II. Open source, ODK-compatible projects, non-contributed to, but can speak for / represent:

  1. JHU Collect, a fork of ODK collect w/ some extra features added by Yaw himself and some others, which we are hoping to bring current with ODK collect soon (https://github.com/jkpr/collect-fixed)
  2. ODK Graph, which can visualize an ODK form as a graph visualization (https://github.com/jkpr/OdkGraph)
  3. ODK2Stata for auto-generating Stata .do files (https://github.com/jkpr/odk2stata)
  4. PMA analytics, which, in tandem w/ JHU collect, provides analysis of user behavior (https://github.com/jkpr/pma2020-analytics2)
  5. AnswerAgreement, for measuring concordance of questions answered (https://github.com/jkpr/AnswerAgreement)

III. Recent open source contributions, misc

  1. JSON-to-GraphQL-Query (https://github.com/dupski/json-to-graphql-query)
  2. GRAND Stack Starter (https://github.com/grand-stack/grand-stack-starter)

Please share any links to public resources (e.g., resume, blog, Github) that help support your application.
I. Résumé - http://joeflack.net/resume
This document is out of date, so some recently learned skills & experience are as follows: Xpath / XlsForms, AWS S3, Linode, continuous integration, React JS, Apollo Client, Cordova, R, Jupyter Notebooks, Sphinx, Node JS, DHIS2, Markdown, Makefile, Bash.

II. GitHub profile - https://github.com/joeflack4

III. Blog - http://www.joeflack.net
I haven't updated this in forever, but listing anyway.

1 Like

Hi Joe, thanks for applying to the TSC! You have some good ideas for potential areas of improvement, but I'm slightly concerned about them being very specific... Would you also be happy looking at other features and improvements that are already in the roadmap? And if so, what form do you think your contributions could take?

1 Like

Hello Adam~. Thanks for the response. I actually did not realize this thread had been posted here; I must've not read Yaw's post fully before posting my application in the google form.

You are right that my desired scope of contribution is specific in a sense. Firstly, I wouldn't say it is specific in the sense that the points are too related or too focused on detail. That being said, I do concur that they are very specific in the sense that they are coming from my own view of what some important ODK ecosystem pain points are, as opposed to those that are on the current roadmap.

Concerning what parts of the roadmap I would find myself qualified, readily-abled, and/or mostly interested in working on would be the following 3 that are currently in the Icebox:

Icebox Items

  1. JavaRosa: Add full XPath support**
  2. Collect: Form linking (e.g. Q5 of Form A goes to Q2 of Form B)
  3. Collect: Refer to data in another form

**This particular item on the roadmap would be essentially the same as point "V. Programming language robustness" from my original post.

To be honest, I believe that Yaw added these to the Icebox because these are 3 pain-points that my organization identified. So, I am very familiar with these items and feel their pain first-hand, as opposed to most of the other items on the roadmap.

Regardless of the TSC status, I'm already taking some steps in the directives outlined in my original post, and will be engaging in active development on these points. Currently, I'm working on point "III". My priorities are roughly the following:

  1. Automated testing of XlsForms (III)
  2. Graphical user interface(s) for form creation (I)
  3. Version control (VI)
  4. Programming language robustness (V) (aka "icebox item 1" above)
  5. Form linking (aka "icebox items 2 & 3" above; this I will probably outsource / delegate)
2 Likes