Wednesday, July 28, 2021

A New Journey to NarraFirma

Hello everybody. After nearly two years, it's finally time to go back to work on NarraFirma. I am now beginning a new development pulse. Hooray!

In fact, I have already released a new minor version. You can read about the changes in version 1.4.2 in the narrafirma.com blog post announcing the release

Now here's my wish list for this next pulse of work, which will take place over the next 3-6 months (how long it lasts depends on what else happens during that time). The big-ticket items are as follows.

Display-only lumping

When you ask people a question and give them several answers they can choose from, some of the answers might not be chosen very often. For example, if I say, "How do you feel about this story?" People might respond with a distribution of answers like this:

  • satisfied (12)
  • frustrated (18)
  • relieved (13)
  • angry (14)

Most statistical tests can't compare counts less than twenty. Also, the more ways you slice and dice your data (by province, by age, etc), the smaller your counts get. So, catalysis almost always involves a time-consuming step where you lump similar answers together to get larger counts. 

You can lump answers in NarraFirma right now using the import system. In the above example, you can tell NarraFirma that it should read the answers in your data file thus:

  • satisfied (12) or relieved (13) -> positive (25)
  • frustrated (18) or angry (14) -> negative (32)

Lumping via import works now. But it's a pain to keep re-importing your data over and over as you make lumping decisions. This is an aspect of the NF catalysis process that I have always found to be particularly annoying.

I am fairly certain that if I tread very carefully, I can add display-only lumping to NarraFirma. That is, you will be able to enter a series of commands into a field on the "Configure catalysis report" page, and NarraFirma will draw lumped graphs without changing your data. That means you'll be able to change your lumping scheme without re-importing anything. This could speed up the catalysis process considerably.

The system will probably work like the filter system does. The commands will look something like this:

  • Feel about == satisfied || relieved == positive

Meaning, when NF gets to the question "Feel about," it will pretend that the answer "satisfied" is the answer "positive." And it will do the same thing for the answer "relieved."

Survey improvements

Originally we wanted to build a strong story-gathering capacity into NarraFirma. However, we ran out of money before we could get to it. As a result, gathering stories using NF is very simple and plain. 

As far as I know, most of the people who are using NF today are not using it to gather stories. They are using SurveyMonkey, Google Forms, Open Data Toolkit, LimeSurvey, and many other options. That's why I improved the import functionality of NF in the last pulse of work on it.

However, in this pulse of work, I would like to improve how NF collects stories.

I have done a few things already. I added a "maximum number of answers" field to keep people from ticking off every possible answer to multi-choice questions. And I spent a little time improving the accessibility of NF surveys. 

But there's much more I would like to do, if I can. Specifically:

  1. I would like to make it possible to display images and videos (via web links) as introductory, question-asking, and answer-representing elements in a survey. 
  2. I would like to make it possible to specify multiple language versions for all text elements of story forms, to be selected via a language-choice question at the start of the form.
  3. I would like to see if NF can support uploading of images and recording of audio stories during the survey.
  4. I would like to support an "other" write-in text box on single or multi-choice questions.

I cannot promise any of these things, because a lot of them have to do with legacy infrastructure decisions we made several years ago. But I do at least want to see what is possible.

Theming

Another feature I had wanted to have in NarraFirma back in the day, but had to put off for lack of time and funding, was a theming page. 

This would be in the catalysis section. You would read each story, write a few brief themes to describe it, and then merge your themes into a short list. The list would become answers to a question with counts you could graph.

You can actually do this in NF now, using the annotation system. But it's such a pain to do it that way that I usually do my theming in a spreadsheet. I would like to see if I can make an interface within NF that makes theming simpler and more intuitive.

Reporting

The last big-ticket item on my wish list for this pulse is the ability to export a catalysis report in ODT format, which can be read by most word processors. Writing reports only to HTML is a big limitation, and it has bothered me for a long time. I believe that this task is doable; it just requires a lot of time and careful attention.

Little things

There are many small suggestions I would like to work on, most of them submitted by NF users. I will be attending to everything listed on the GitHub issues page, and I have many other little things to look at that people told me about in emails. 

If there is something you would like me to change in (or add to) NarraFirma, now is the time to speak up. Add an issue on the GitHub issues page, or send me an email at cfkurtz@cfkurtz.com. I would love to hear from you.

And as always, I want to say a big thank you to everyone who has helped with NarraFirma, recently and in the past. Every donation, commission, suggestion, and encouraging email has helped me to keep working on the software and making it better and better.