Frequently Asked Questions

Is Enketo open source?

Yes it is! The source code is here.

How can Enketo (Express) work offline?

The first time you load any Enketo Express survey, a copy of the app and survey are stored in the browser. An offline-enabled icon icon will be shown in the top left of your screen to confirm that it has been stored. From that point onwards you can load that survey even when you do not have an Internet connection. When an application update is available the cache will automatically be updated when the user is online.

You can safely shut down your computer and go to the field to collect data. Any data you collect will also be stored persistently in the browser. Enketo will check regularly to see if there is an Internet connection available and try to upload any records that have not been marked as 'draft'. Once the server has confirmed that the data was received successfully, the record will be deleted from the browser storage.

More details can be read in this old blog post and this technical faq.

What are the future plans for the Enketo project?

Our high-level roadmap is published here. The activity in Enketo's repositories is another good indicator of what is happening.

What software license is Enketo provided under?

See license details for each Enketo app and library in the files of each repository.

What browsers are supported and recommended?

All popular modern browsers are supported and recommended on all platforms except on iOS. They are: Chrome, Firefox, and Edge.

In addition, Safari, a somewhat embarrassingly outdated browser that lags years behind the competition is also supported on iOS and Mac OS.

On iOS, modern browsers are not allowed by Apple. For example, Chrome on iOS is just an outdated Apple-provided browser engine with a few missing features and a Chrome skin. It is not the real Chrome. Therefore, on iOS only, we have no choice but to recommend Safari as it is the least terrible iOS browser available. On iOS, browser version and OS version are linked. We only support Safari on the latest iOS version. Note that webforms on Chrome on iOS do not work offline.

What does "Enketo" mean and how is it pronounced?

Enketo means "survey" in Esperanto.

We are not sure how to properly pronounce it in Esperanto but you could say [\in-ˈke-tō]. The first "e" and second "e" should be pronounced the same because each letter has only one pronounciation in Esperanto. (How cool is that!)

How do ODK Central/KoBoToolbox/Ona/Etc communicate with Enketo Express?

Generally Enketo Express is installed on its own server and a typical communication takes place as follows between the OpenRosa server (KoBoToolbox/Central/Ona) and Enketo using various APIs:

  • The users clicks the Enketo/Webform button in the interface of the OpenRosa Server.
  • The OpenRosa server makes an API call to Enketo to obtain a webform URL.
  • The user is redirected to the webform URL.
  • Enketo retrieves the XForm from the OpenRosa server and displays it to the user.
  • The user collects data and clicks Submit.
  • The data is sent to the OpenRosa server.
How is this project funded and sustained?

The development of Enketo libraries and apps is supported by code contributors and financial contributions by companies and organizations that have adopted Enketo. These adopters are providing Enketo-powered tools as part of their own information management products. Some of them pay for bug fixes, new features and regular maintenance. Some do not contribute back in any way.

What are the technologies used for offline capabilities of Enketo (Express)?

The app itself is cached in the browser using Service Workers.

The data, form, and form resources are stored in the browser using IndexedDB.

What is the difference between Enketo Express and Enketo Core?

Enketo Core is a library that contains Enketo's form engine. It is not an app by itself but a minimal and not-very-opinionated (no JS frameworks!) building block that can be used to create Enketo-powered apps.

Enketo Express is one of the apps that is powered by Enketo Core. There are quite a few others created and maintained by various companies and organizations.

For more information see this page.

What is the form format that Enketo supports?

Enketo supports only one form format and that is the widely adopted, open-source OpenRosa XForms format.

Very few people directly build forms in this format though. The most popular, and recommended, way to create the supported XForms is to create them as XLSForms and then convert them to XForms. Many information management systems will do this conversion for you, behind-the-scenes, and therefore appear to support XLSForms directly.

Who owns the data collected with Enketo Express?

Enketo Express does not store your data on its server. It is not an all-in-one information management system as it needs to be linked with a form/data server (such as your own installation of ODK Aggregate) that will take care of that. Therefore, the question about data ownership is likely more applicable to the provider of the data/form server you are using.

Enketo's offline-capable webform views store data in the user's own browser. When data is submitted to your data server it is routed via the Enketo Express server, which functions as a proxy to avoid cross-domain issues. Depending on the configuration of Enketo Express, some metadata about the submission is logged though. See the Enketo Express source code for the current metadata that may be logged as it may change depending on troubleshooting needs.

For more information about Enketo's offline technologies see this technical faq.

Troubleshooting an Enketo Express installation

Here are some common things you can try to fix your Enketo Express installation:

  1. Check if your Node.js version is supported by your Enketo Express version. If you are running the latest version of Enketo Express, use the Node.js version included in the instructions
  2. If you cannot start the application at all, check if the redis tests in the instructions are passing
  3. Remove the node_modules folder (rm -R node_modules) and rebuild with npm install --production (or npm install if you are planning to play around with Enketo locally in developer mode)
  4. Remove the public/js/build folder (rm -R public/js/build) and rebuild with grunt
What is the relationship between OpenClinica and Enketo?

OpenClinica is using Enketo throughout its platform. It is by far the major sponsor of Enketo and directly responsible for many of its features.

What is the relationship between OpenClinica and Esri and Survey123?

Esri is using Enketo Core as the form engine that powers their own Survey123 for ArcGIS web application. Esri was a sponsor of Enketo's libraries and paid for some features and improvements in the past.

What is the relationship between Enketo and ODK?

Enketo and ODK are following the same XForms format and APIs. This means Enketo Express (and some other Enketo-powered apps) can be used in conjunction with ODK Central, ODK Briefcase, and ODK Build. They should be seen as an alternative for ODK Collect. The codebases of Enketo Express and ODK Collect are completely separate and both are 100% unique implementations of the same specifications.

Within the ODK Developer Community, Enketo is involved in documenting the XForms and XLSForm specifications.

In addition Enketo is actively involved in proposing and discussing additions and changes to the specifications.

What is the relationship between Enketo and KoBoToolbox?

Enketo Express is an integral part of and KoBoToolbox has historically sponsored a large chunk of Enketo Express' development. It still provides code, feedback, emotional support, and funding for features and bug fixes.

What is the relationship between Enketo and Ona?

Enketo Express is an integral part of The founders of Ona have historically played a huge role in Enketo's development and design when we were working together at the same lab at Columbia University. Ona still contributes code, feedback, sponsorship, emotional support, and translations to the Enketo project.

Can I help translate Enketo Express?

Please do! Request here to be added to an existing language or to request for a new language to be added.