Release 1.4.1

This minor release fixes a small but longstanding bug in the drawing of contingency tables. The expected count for a cell should be its row total times its column total divided by the total of all column totals (or row totals; they are the same number). However, somebody mistakenly divided by the number of stories in the data set. We never noticed the error before because the answer count for most questions is not far below the number of stories. But when one or both of the graphed questions had few answers, the red expected-count circles were drawn smaller than they should have been. This error is now fixed. Note that this was only a graphing error; it did not affect statistical results.

Release 1.4.0

This release improves the catalysis part of NarraFirma even more, both in practical support and in output.

Correlation maps

The new “correlation map” diagram shows relationships among all scale questions in a project, overall or in subsets of stories with particular answers to a choice question. You can hover over nodes to see histogram popups and over links to see scatterplots.

Negative correlations are shown on the left side of the diagram. You can also look at correlation maps for subsets of stories about which people answered questions in different ways.

You can also see the same relationships with straight lines between the questions in a circle, thus:


In this case, negative correlations are shown as dashed lines.

CSV graph output

You can now save a CSV version of the data in any graph while looking at it on the “Explore patterns” page (it’s in the “things you can do” list). You can also save CSV data from all the graphs in your catalysis report (choose the “observation graph data as csv” report option).

Same graph in NarraFirma and Excel

This should make it easy to reproduce most of the graphs in NarraFirma in your preferred spreadsheet or graphing program. Some of the graphs NarraFirma draws are hard to create in other places, but you can usually graph something useful when you have the numbers in a file.

Remarkable pattern marking

When you do narrative catalysis, it works best to mark all of the patterns you want to consider before you write about them. If you don’t do that, you’ll waste a lot of time writing observations that look stupid after you’ve seen the rest of the patterns. I have been doing this by writing fake observations with texts like “!” and “?” and “x” and so on. However, after several people asked me how they could streamline their catalysis process, I decided that the software should offer a solution to its users. I was wary of making the “Explore patterns” page even more busy, but… this system should make marking observations easier. Now when you are looking at a pattern (graph or series of graphs) you will see this under the graph:

remarkable unmarked

If you think the pattern is remarkable (interesting, worth considering), you can click:

  • “yes” to mark the pattern as one you definitely want to write an observation for;
  • “maybe” to mark the pattern as one you want to come back to and review later;
  • “no” to mark the pattern as one you definitely don’t want to write an observation for;
  • “redundant” to mark the pattern as one that does show something important, but is similar to another pattern you have written about;
  • or you can just leave the pattern unmarked (for times when you have decided to ignore all patterns related to a particular question or graph type).

This is what it looks like after you click the “yes” button (you can now add observations).

remarkable yes

After you have done this for a while, when you look in the list of patterns at the top of the page, you will be able to sort by your markings, thus:

Sorting by the remarkable tag

This should help make the catalysis workflow smoother, especially when two or more people are sharing the task. Note that this marking system has no effect whatsoever on the catalysis report. All observations and interpretations that have names and/or descriptions will go into the report, no matter how you have marked them. The marking is only for your own reference.

More pattern display options

That patterns table was getting wider and wider, so I finally made an interface panel where you can choose which columns to show in the table. Only the “Index” (used to be “ID”) column can’t be taken out. Everything else can be made visible or invisible.

Choosing columns to display in patterns table

I also added a “Notes” column/field to the observation for remembering things you don’t want printed in the report. This will be especially useful if you are working in a group (or forgetful, or both).

Observation notes

Project options page

There is a new “Project options” page under “Project administration,” where we can put project-wide options. At the moment there is only one option in it: the cell delimiter to use in CSV file import and export.

Choosing a csv delimiter

If your spreadsheet insists on saving CSV files with a semicolon or tab delimiter, set this option and NarraFirma will expect it in files it imports and write it out in files it exports. Be careful, though: don’t export in one format and import in another! (If you do, you can use LibreOffice to re-export with a different delimiter.)

Prettier graph types chooser

The graph-types chooser on the “Configure catalysis report” page is now nicer to look at (and hopefully less confusing), with little thumbnail icons you can click on.

Choosing graph types

I also added a section to the help system (for the “Explore patterns” page) explaining more details about each type of graph.

And that’s the list of changes in this release, aside from little bug fixes and tweaks.

As with previous revisions, this work was funded in part by development commissions. If you would like to help us improve NarraFirma, why not have a look at our NarraFirma commissions list for some ideas?

Release 1.3.1

This release contains a tiny fix to a tiny problem I had failed to solve in the 1.3.0 release but (of course) thought of a solution to the very next morning.

You want to know what it was? Okay, thanks for asking.

When I was drawing counts on contingency chart bubbles, and the bubbles were too small for the texts to fit into, I couldn’t figure out where to draw the texts so that (a) they could be read and (b) they would be associated with the right bubble. Without displacement they looked like this. You knew which bubble the text referred to, but it was sometimes ugly.

So I tried moving the texts outside the bubbles in both X and Y dimensions. But the resulting charts looked crazy, with numbers scattered all over the place, and it was not always easy to tell which text went with which bubble.

So I put out version 1.3.0 with the numbers always in the same place, but sometimes hard to read.

Then, the next morning, I realized that I should displace the texts only in the Y dimension. That way they look consistent but shift downward when they can’t fit inside the bubble.

It looks a lot better now.


Release 1.3.0

This release includes many improvements, mainly to to the catalysis process. We would like to thank our supporters for the development commissions that funded this release. (Want to see what’s coming next for NarraFirma? Have a look at our new commissions page.)

New report type

First, there is a new catalysis report type organized by themes, or clusters of observations. In this new type of report, interpretations follow observations instead of the other way around.

Also, you can now save a bundle of images associated with your observations in a ZIP file (in PNG or SVG format).

Also, all reports now use HTML headers (H1 to H6) to start the various sections of the report. These are more likely to be recognized by your word processor as styles. (LibreOffice picks up HTML headers pretty well.)

More flexibility in creating observations

You can now set up multiple observations per pattern. You could already do that using the @header@ sectioning system, but it was awkward and difficult. Now you can do the same thing using buttons in the interface. This also means you can cluster your observations separately even if they connect to the same pattern. You couldn’t do that before.

Please note that we have not included backward compatibility for the old @header@ sectioning system. We decided that leaving in all that messy code (not to mention adapting it to the new report types) was too risky. If you have any reports with observations that use the old @header@ system, please copy and paste your texts into new observations.

Also, it is now possible to include multiple patterns per observation. This is useful when you see the same thing happening across two or more patterns, and you don’t want to write what is essentially the same observation in two places. Now you can include a list of additional patterns (graphs) to display for any observation. This is also useful when you are showing a particularly confusing contingency (bubble) chart, because you can include the bar charts for each axis right there in the observation.


New report fields

Observations have a new linking question field, which you can use to connect the observation to its interpretations. This question will help you avoid restating the observation as you write each interpretation.

Interpretations have a new questions field, which you can use to pose questions to the people who are doing the sensemaking. This addition was suggested by a NarraFirma user who pointed out that because catalysis is supposed to generate more questions than answers, it would make sense to have a place to write the questions. (I should have thought of that a long time ago.)


This example shows, respectively, the interpretation name, text, questions, and idea.

New report options

Many more things about the catalysis report can be controlled by the NarraFirma user, including:

  • Which observation strengths to include (in any of the four types of report)
  • The order of report sections (which can now be set during clustering)
  • Whether to print each perspective/theme/observation/interpretation (that is, you can temporarily hide report elements)
  • Whether to show sequence numbers (1, 1.2, 1.2.3) for all report elements
  • More labels (for interpretation questions and ideas)
  • How big graphs and graph fonts should be
  • Whether to show or hide non-response (“No answer”) counts (overall and per pattern)
  • Your own replacements for all graph and statistical texts (making it possible, for example, to remove all English words from reports)

Graphing improvements

A few tweaks to the graphs make them look better. Contingency charts now show observed (and sometimes expected) counts per bubble and per row/column. This is useful in printed reports where you can’t hover over anything to see a number.

Also, the Y axis labels on contingency chart have been flipped — now they read from top to bottom, which makes more sense. And the “No answer” count is last, not first.

You can now suppress showing “No answer” counts, and you can set this option for the entire report and per pattern (for example, note the lack of “No answer” counts in the table above).

The little histograms on contingency-histogram charts are now all the same width, so they are easier to compare. The heights of the boxes show the number of stories, but the widths are all the same.

Interface improvements

A variety of interface improvements have been made. For example:

You can save any graph you are looking at to a file.

Clustering has gotten easier, with multi-select click and drag, plus more information on what you are clustering.

Multi-user collisions (between users editing the same text box) are now handled more gracefully.

You no longer have to wait while the “Explore patterns” page calculates statistics; now that is done in the background.

Options that pertain only to printing the catalysis report have been moved to the “Print catalysis report” page. Interface texts and interactions throughout the catalysis section have been improved.

You could always write simple HTML in catalysis report fields, but now you can also use simple markup for **bold** and __italic__ text. (I added this for my own convenience, but you might like it too.)

And of course several bugs have been fixed. Most importantly, PNG graphs now draw correctly in catalysis reports, and custom CSS is now working correctly for graphs as well as texts.

Release 1.2.6

This release fixes a major bug which we only noticed the other day, but which apparently had been in NarraFirma from the beginning. Deep in the code, an accessor returned the value of a field. While checking to see if the stored value existed, the code mistakenly returned a blank string if the value happened to be exactly zero. This error has now been fixed, but this means that on every histogram drawn (and every statistical test run) before version 1.2.6 of NarraFirma, all scale values that were exactly zero were ignored.

We were very upset to discover this mistake, and we heartily apologize for never having noticed it before.

Most graphs will not have been affected much by this error, since it is rare to collect huge numbers of zero scale values. However, please be aware that it is possible, if you load an older project into version 1.2.6+ of NarraFirma, that a histogram (and its statistical test results) could change.



Release 1.2.5

This minor release adds a few more little things related to having more fun doing narrative catalysis. Most importantly, you can now hide the various panels of statistical information on the Explore patterns page, opting instead to see the same information in a popup window. (Apparently not everyone loves to wallow in statistical results.)



Release 1.2.4

This release contains several quality-of-life improvements for the process of narrative catalysis.

The biggest change is the ability to “switch out” the story collection under a catalysis report by exporting your report elements to CSV, then importing them to a new (empty) catalysis report on a different story collection. This will be useful when you’re partway into writing observations and realize you should have lumped the answers for a question differently (or some other fix to the data). As long as the question short names are the same in both story collections, your observations, interpretations, and perspectives will transfer to the new report.

Several other little improvements and fixes should make catalysis easier, such as:

  • a running observation count
  • a way to randomly sample stories from a graph selection
  • better sorting options in the patterns table
  • an index number for each story (so they are easier to link up between the catalysis report and the story cards)

And so on.


Release 1.1.0

Version 1.1.0 of NarraFirma adds two new ways to get your data out of NarraFirma.

First, in the survey, participants can see and copy a summary of their submitted stories (and you can control whether people see this or not).

Second, in the application, you can print an HTML project report that summarizes everything you typed into NarraFirma (for use in other software).

If you have an existing NarraFirma installation and need help upgrading it to the new version, check our installation page for instructions.

Releases 1.0.1 and 1.0.2

Release 1.0.1  is a minor version with a small bug fix (the navigation bar had been accidentally made to scroll with the page). The release also updates the banner and screen shots in the WordPress plugin directory.

Release 1.0.2 adds eleven more customizable texts to the story form. It should now be possible to present a survey with participants seeing no English text at all. That was my goal before, but I missed some texts on buttons and error messages. Thank you to the user who pointed out the still-only-English texts!

In 1.0.2 I also added a “Notes” field to each question, for times when you want to remember why you chose a particular question or why you worded it in a that way. (Because I wanted to do that and couldn’t.)

If you have an existing NarraFirma installation and need help upgrading it to the new version, check our installation page for instructions.

Release 1.0.0

I (Cynthia Kurtz) am pleased to announce version 1.0.0 of NarraFirma. The software now looks better and works better. I have been working on it for about four months, adding functionality, fixing bugs, and tweaking lots of little things.

These are the main changes in NarraFirma 1.0.0 (in the order in which I happened to think of them).

Data integrity. The “Explore Patterns” page in the Catalysis section now includes several “data integrity” graphs, which show overall trends across questions. These include:

  • Values for all scale questions together in one graph (to look for systematic biases such as all answers converging to the left or middle or right)
  • Means and standard deviations of scale values per participant (to look for patterns such as small ranges within participants, which might mean people were not paying much attention)
  • Counts of unanswered choice and scale questions (to look for questions people avoided or didn’t understand)

Data integrity graph

These new graphs are listed on the “Explore Patterns” page, so you can write observations about them and include them in your catalysis report. (Also note that bar graphs and histograms now have number labels above each bar.)

Qualitative observations. The answers to free-text questions are now included in the “Explore Patterns” page. You can look at all the answers in one place (sorted alphabetically, with duplicates marked), and you can write observations and interpretations based on them.

You do have to copy and paste texts into your observations. This may seem like a cop-out, but I did it on purpose. I played with different options for creating observations based on text answers, such as clicking on check boxes, reviewing texts in tables, and so on. In the end I decided that simple copy and paste gives users the most flexibility. You might want to include only part of what somebody wrote, or you might want to embed what somebody wrote in your own explanatory text about it. This option shows you what people wrote and gives you the ability to review it and use what you need from it. That’s all you need.

narrafirma text question

Multiple scatterplots. The “Explore Patterns” page now includes scale+scale+choice question combinations. This was something we had on the list to do in the earlier version but ran out of time for.

narrafirma multiple scatter plots

A few other things to note with respect to these graphs:

  • Scatterplots can now (optionally) show correlation lines.
  • Statistical displays have been made both smaller and more informative. For example, all graphs now show the count of stories on which the question was not answered.
  • Because this scale+scale+choice addition means there could now be hundreds of scatterplots generated, I added a progress bar (with cancel button) when more than 200 statistical results are being generated for the patterns table. This prevents people having to look at a blank screen while the page calculates its content.

Custom CSS. You can now style the HTML content of your survey (on-line and printed), story cards, and catalysis report. Nearly every element of these generated pages has a class whose style you can change.

narrafirma custom css

NarraFirma’s survey system is still far less sophisticated than that of most surveying packages (there is still no built-in “other” field for choice questions, and no question piping), but at least now you can make your survey page look a lot better. Also note that in the survey itself, users can now see the numerical value of each slider as they drag the button (though if you don’t like this you can use CSS to hide the new number value). They can also click on the number to change it in a popup dialog. I also made the survey image field function (it was an oversight that this field never worked).

More catalysis options. There are now more options for drawing graphs and for building a catalysis report, including:

  • choosing which graph types to see at any time (a big plus for times when thousands of graphs can be generated)
  • setting dot size, opacity, and correlation lines on scatter plots; numbers of bins on histograms (these choices are especially useful if you imported your data from elsewhere)
  • showing interpretations in the patterns list (for times when you wrote an interpretation but can’t remember what observation it was attached to)
  • more user-supplied sections in the catalysis report: introduction, “about this report”, table-of-contents headers, labels for report parts, conclusion, custom CSS
  • better support for HTML in texts for observations, interpretations, perspectives, and ideas (and ideas now print in the report)
  • the default catalysis report (without writing any custom CSS) now looks a lot better (I think)

narrafirma configure catalysis options

narrafirma catalysis report

Please note: If you have a catalysis report created with a version of NarraFirma prior to version 1.0.0, and it contains interpretations with ideas in them, the ideas will not print with your catalysis report in NF >= 1.0.0 until you go to the “Cluster interpretations” page and click “Start or update clustering diagram.” (This is the only backward incompatibility issue in this version release. Few people should be affected by it, and it’s easily fixed.)

Improved colors. NarraFirma’s color scheme has been improved and simplified. (I don’t know about you, but I gradually lost my patience with the color of green I thought was energetic two years ago. These new colors are more subdued, possibly more professional, and at very least less irritating.) I also replaced the home page “PNI diagram” image map with something that I think is easier to understand. I removed the most annoying parts of the visual look of NarraFirma (at least to me) – the diagram triangle, the blue gradients, the rounded rectangles. I think the software looks more confident and “grown up” now. (Hopefully you do too.) Also notice the new “Choose another project” link, which means you can switch projects without logging out.

narrafirma new home page

More testing. I spent several weeks on additional testing, in two ways. First, I created some new fake projects and ran through them, looking for problems to pop up (and they did, and I fixed them). Second, I converted and imported data from several old projects. In these I compared NarraFirma’s graphs and statistics to those generated using other software (and fixed more little bugs). Here is an example of a large (pre-NarraFirma) data set I imported for stress testing.

narrafirma with a large data set

Note that I also tested several data sets created or imported within the past two years, and I can report that your updated copy of NarraFirma should not have any problems reading data you created in it (or imported into it) within the past two years. I did add some new fields, but they are optional and have defaults. No existing data formats have been changed. (The one exception, ideas on clustered interpretations, is explained above.)

Better importing. While importing old data sets I gave the data import function a good workout. As a result I added more import options, better error checking and reporting, and a much better explanation of how the import system works. Shown here are an example error report, a CSV story form with new “form” options, and (the start of) one of the import help pages.

narrafirma import error message

narrafirma import file with new options

Auto-created story forms. One of the irritating things about building a story form in NarraFirma was that you had to write your questions, then place them one by one into a story form. I’d had about enough of that, so I added a button that generates a new form based on the questions you’ve written.

narrafirma auto fill story form

Better story cards. You can now choose which questions to include on your story cards. You can also customize how ranges are drawn and control all aspects of the cards with custom CSS. In this example I used color and spacing to create cards on which differences will stand out from further away. This can be helpful during a sensemaking session.

narrafirma story cards

Observation strengths. You can now set a strength value on each observation as you write it and use these to sort your observations. This will be a big help during the stage of catalysis when you stop looking at every pattern and start whittling down your observations to what you have time to explore in detail.

narrafirma observation strengths

Number of stories told. There is now an auto-generated field in each story collection that counts how many stories each participant told.

  • In a NarraFirma web survey (or data entry form), this depends on people clicking the “Yes, I’d like to tell another story” button (so the count is how many stories people told per session, not necessarily per individual).
  • In an imported file, the column titled “Participant ID” determines how stories are grouped by participant.

In either case, the story count per person is handled as though it was a question, and NarraFirma generates graphs showing it in relation to other questions. If everyone told one story, you can ignore this generated question. However, in cases where people had the option of telling any number of stories, you can sometimes see useful patterns in how voluble people wanted to be.

narrafirma num stories told

I considered doing the same thing with story length, but decided not to, for two reasons. First, I’ve looked at story length on several projects and have never found any useful patterns in it. Whether somebody talks or writes for longer doesn’t seem to mean much. Second, it’s impossible to set categories for story length when all the stories haven’t yet been collected, and I didn’t want to introduce a graph whose meaning kept changing. Besides, if anyone really wants to look at story length, they can use the annotation system to add such a question and fill in the values by hand.

Side note: I found a bug in the chi-squared statistical test which was leading to too few test results being shown (and too many “count below threshold” messages showing instead). You will see more p-values in your “table” graphs now.

Better admin page. I cleaned up the way-too-nerdy page for creating projects and users in the node.js version. (The WordPress version admin page is unchanged.)

narrafirma node.js admin page

Observation sections. A user asked about adding the ability to write more than one observation per graph. I didn’t want to clutter up the most complicated page in the application even more, so instead I added a function that is hidden from view. If you segment an observation using tags such as @first@ and @second@, you can then refer to those sections in your interpretations. In your report, the observation under each interpretation will show only the section of the observation you referred to.

narrafirma observation sections

narrafirma observation sections printed

I also fixed a bug where changes to interpretations made after the clustering diagram was created did not appear in the printed catalysis report.

Fully configurable survey fields. You can now enter your own texts for every part of your story form. There are no longer any hard-coded texts, like “Please enter your story here.”

narrafirma configurable fields

That’s it. There were also many little bug fixes and tweaks to how things look. We hope this new version will be even more useful than the last. Please send feedback and ideas.

Last thing: If you have an existing NarraFirma installation and need help upgrading it to the new version, check our installation page for instructions.