Writing to think: Questions on the web

Saturday April 26, 2014

I have made some things online that involve "asking and answering questions" in the traditional multiple-choice-test way. I built the software to do that (with Python on Google App Engine, again differently with node.js on Heroku) both times.

Is there any "built in" web element for questions and answers of the types I'm thinking of? There are HTML forms. HTML forms provide pretty much flexibility, and even start to have some functionality for different question structures - radio buttons for a single choice vs. checkboxes for multiple selections. But HTML forms, being just HTML, have pretty clear limits. Javascript can add some more functionality, and then eventually you need a web server backend of some kind to support more.

There are web services like Google Forms and SurveyMonkey, and the very task-specific Doodle, which take all of HTML/Javascript/backend and run it all for you. This means that the available functionality is whatever they provide, everything is hosted by them, and as far as I know there is little or no mechanism for creating things outside of their web GUIs.

The popular services just mentioned mostly collect information without any feedback; when you want to have a "correct" answer there isn't much functionality. Where is a good existing solution? There's internet detritus like MakeaQuiz.net. There's Quizlet, which seems pretty neat but also isolated perhaps by its attempt to chase education spending. (It also supports, like most education sites, an unhealthy distinction between student and teacher.)

The desire for profit seems to poison projects that could otherwise have a broader positive effect. Projects affiliated with the very cool JiTT methodology disappeared into companies. I'm not even sure what sort of thinking led to the closing of the Khan Academy source.

But it isn't just the profit motive that keeps question-and-answer technology balkanized; there's no real standard, and I don't think it's very easy to come up with one. The systems I built aren't easily transferred anywhere for use by others, for example. This is my fault, but I also don't think it's a very easy thing to design.

There are some attempts at standards for questions, at least. BlackBoard has a way to load questions from some tab-delimited formats. Moodle has something called GIFT. There's the Question and Test Interoperability spec, which is such a huge mess you need to employ a stapler guy to support it. And there's something called QUOX. Oh my.

And these are all purely for assessment, where earlier there were some purely for survey/data collection. It seems to me that they shouldn't be so different. Fundamentally isn't it all just questions?

Another take on this, I suppose, is sites like Stack Overflow, which represent a different sort of questioning. And there is OSQA, "the Open Source Q&A system", which is cool. You could run that on your server, or for that matter run Moodle, or some survey platform, most likely. So that's also another delivery model: the run-your-own-server-with-pre-built-software model. A lot of setup/maintenance overhead, and still not a lot of interoperability as far as I can tell. (OSQA is also available hosted.)

Just one more: There are also frameworks for building assessments, which try to generalize while still providing some structure. I was happy to find out about the one linked, for Rails; I don't know if there are others or if any are widely used.

Markdown is pretty much the best thing ever. (Note to self: get off wordpress...) Can we come up with a markdown solution to the question problem? Something super light-weight, that blends easily into text files that humans would actually write...

The kramdown (etc.) markdown extension for definition lists seems like a candidate. Here's how it works:

This is the "term".
: This is the "definition".

Get's rendered something like this, using the standard HTML definition list tags:

This is the "term".
This is the "definition".

So let's say the term is the question, and the (possibly many) definitions are answer choices. Of course we could have a blank definition represent a text box (or text area):

What do you think?

A multiple-choice survey could be as easy as this then:

What's your favorite color?
: red
: blue
: green

To add correctness functionality, a little more syntax could be added:

Sugar is sweet.
: true*
: false

The idea here is that these text files would be rendered into interactive HTML/Javascript such that you wouldn't see which was the correct answer - you would select an answer, possibly have a submit button of some kind, and get feedback on whether your answer agreed with the one in the text. I do think that teacherly paranoia about "test security" is one thing that prevents good functionality from spreading much on the web. Nobody wants to share their oh-so-secret correct answers, lest the horrible children cheat. I think this perspective is a disease on society.

Maybe this could be a short answer question:

What is the capital city of Wisconsin?

Of course you have the problems of evaluating text answers (Is "Madison, WI" also correct? etc.). Generally, there is of course an awful lot of functionality that you want from questions, and it may be hard to reduce it all down. Some things should be obvious: true and false is a special case of multiple choice. But other things like scoring, when/whether to show the correct answer, etc. seem difficult to abstract very far.

The text questions could be rendered as stand-alone HTML/Javascript, or to connect with (or even be hosted on) some sort of web system. More details would have to be worked out.

The illustrious Ramnath, who always seems to be doing cool things several years before I know about them, has thought about this markdown question idea to some degree. I want to find out more about what he's done.

This post was originally hosted elsewhere.