JuliaSurveyForm: JuliaCon Survery Form generated from Julia

We translate new questions for JuliaCon survey every year, which has been a bit painful since it’s hard to look for differences between the previous year and the new survey and keep track of the translation and updates of the survey in Google docs. Thus I decided to create this package that creates the JuliaCon survey in pure Julia.

It encodes the survey in a TOML file and generates other formats (e.g markdown) from the schema, a few highlights

  • Survey form is encoded in TOML file, makes it easier to see the diff directly via github/git diff
  • Generates other language translation using Google translate with simply translate(survey, <locale>) so native speakers can skip some trivial translations, and only translate what has been changed or what does not make sense.
  • build-in Julia type for questions, e.g CountryOrRegionQuestion type makes the survey form more compact to read and guarantees there is no missing country or region name (via the awesome cjdoris/Countries.jl), similar for other special question types too. And this is highly extensible within Julia.
  • Generates the markdown format from the TOML for easier reading on Github.

Using the package, I not only translate simplified Chinese version, but also traditional Chinese (generated from simplified Chinese), Japanese (generated from simplified Chinese), Korean (generated from simplified Chinese).

In principle, a few things can be done on top of this:

  • submitting the Julia survey from Julia REPL.
  • automatically create a Google form using the Google form REST API (or other online form services).

Due to time constraints, I didn’t work on these. But it would be fun to submit the survey from Julia REPL :wink: so maybe next year I’ll do it

Tho the main use case is for JuliaCon, but in principle this package can be used for other survey forms and their localication. This package is not registered yet. So you would have to install it via the git link. Perhaps I will change the name to something more general in the future if the functionality is more “complete”.