This minor release fixes two bugs: (a) the texts of edited stories did not appear correctly in the “Show story texts for copying” popup on the “Explore Patterns” page, and (b) annotation import and bulk change might not work correctly for edited stories. Thanks to a helpful user for finding this bug!
If you want a longer explanation, keep reading.
A subtle bug has been creeping into NF (without my noticing it) over the past few years. What happened was, I was supposed to be accessing story data through methods that check for updates to the story. This was to handle situations in which story data were edited (on the “Review incoming stories” page) after they were first entered (via survey, data entry, or import). I did once know about and use these checking-for-updates methods, but I seem to have forgotten about them as the years went by. So I had been poking my fingers directly into the story data, bypassing the checking-for-updates methods. That was a bad thing.
Fortunately, most of the direct access was into things the user cannot change (like story and participant IDs, which are generated by the system). But three direct accesses created problems.
- On the “Explore Patterns” page, showing story texts in a separate window for copying would show the original story texts, not your edited versions. (This is the bug the helpful user found and reported.)
- When you were bulk-changing annotation data, any edited story data would not match up correctly, because only the original versions were being compared.
- When you were importing annotation data, NF was looking for the original story texts in the CSV file, not the edited versions.
These mistakes are all fixed now.
But finding bugs should not be how you remember how you used to do things.
This is just the sort of incident that makes me think software development support systems could do a better job of capturing, managing, and making accessible the stories of software development. Years ago, we told ourselves a story about how we access data that may have been altered, but eventually I forgot the story. The question is, how could I have been helped to remember it?
Probably the best answer is to work the story into the code, which is how we fixed the problem. We made the fields I was poking my fingers into private, so I will get an error if I try to access them directly again. Plus, we strongly typed all references to the data structures involved, so I will see warnings if I try to use them in ways they were not meant to be used again. We should have done all of this long ago, but we didn’t – probably because it didn’t occur to us back then that we would be developing NF in fits and starts with months and years between. I am now thinking that I should probably go over all of the code and clean up any place in which any variable has an undeclared type (of “any”), to better flag future departures from forgotten practices.
As always, if you find any bugs, please report them on the GitHub issues page.