Brandon Invergo

Release of Grotesque 0.9.4 and pyifbabel 0.4

After an unfortunately long period of time, I'm happy to announce the release of Grotesque 0.9.4 and pyifbabel 0.4. See below for the release notes (important in this case). There aren't many new features but it's an essential step towards having a more robust architecture for the program.

Grotesque is a interactive fiction library manager, used to organize and quickly browse your stories. It features automatic detection of metadata for stories and, lacking that, it fetches the metadata and cover art from IFDB. pyifbabel is a development library used by Grotesque to implement the functions related to the Treaty of Babel for identifying interactive fiction files. Grotesque 0.9.4 (and all future versions) depends on pyifbabel 0.4 or higher. Because pyifbabel was formerly a part of Grotesque, if you're updating Grotesque you may have to uninstall the old version before installing the new ones, or else it may complain of file conflicts.

Currently, only a Python source distribution of both are available, which should work fine on GNU/Linux systems and maybe Mac with the correct libraries (see below). Previously I provided self-contained Windows executables. Unfortunately, I have limited time to work on Grotesque, time that I would prefer to spend moving the project forwards, so I can't dedicate myself to putting together a Windows release anymore. However, if there is anyone out there who is familiar with Python development and who would like to assemble (and test and maybe help debug) an executable (prob. using py2exe or something like it), I would be happy to lend my support. Knowing how to code in Python isn't strictly necessary but it would help. Please get in touch if you're interested.


Grotesque also requires GTK+ 3 (any version should be fine) and pygobject (aka python-gobject). Both Grotesque and pyifbabel are based on Python 2; Python 3 is not yet supported, but I plan to migrate to it next, since I'm tired of fighting Unicode in python2.

If you encounter any bugs, please fill out a bug report at the respective pages of the two projects (you can log in as "anonymous" to do so).

Grotesque 0.9.4 news

This was aimed to be strictly a bug-fix release. It has been over two years since the last release and the program was no longer running with recent versions of GTK+. In truth, I started and stopped development a few times over the last couple of years and always got disheartened. The unfortunate fact is that I made some poor design decisions when I first took over development of Grotesque (it was my first big Python project), which have turned out to make the underlying architecture fragile and difficult to extend. The whole point of the current 0.9.4 release and the planned 0.10 release that I'm about to start is to replace the underlying bits with something of more stable, extensible and sane design. There are many remaining bugs and open feature requests, but I cannot seriously approach them until I finish with this bit.

If you're already using Grotesque, the current release should have no problem loading your library, but I will warn you now that the next release will be incompatible. However, the current release provides a library export function that saves it to an IFiction text file, which also retains all of your annotation in Grotesque (e.g. played status, date added, etc.). You will then be able to import the IFiction file into the next version. I apologize for the inconvenience, but the only other way to do it would lead to the build-up of even more cruft in the code.


  • pyifbabel (0.4) is a new dependency. pyifbabel was broken off into its own package to allow other developers to more easily use it.
  • Removed support for GTK+ 2: one of the things that prevented me from regaining development momentum was the need to maintain two code-bases in parallel, supporting both GTK2 and GTK3. As a lone developer with a very busy work schedule, this simply isn't feasible. Apologies to anyone who hates GTK3.
  • Several GTK-related bugs were fixed. On my computer, at least, the program would no longer launch due to updates to the GTK library. These have been fixed. The program should run without any warnings.
  • Library import/export added. Explained above
  • Story file locations are now editable. In the "Edit Story" dialog, you can now edit the location of the story file
  • (Very) basic HTML in story metadata is parsed. I found that some metadata pulled in from IFDB had basic HTML tags in it (like for bold or italics text). Grotesque now parses those and formats the text appropriately.

pyifbabel 0.4 news

Not much to say here. Several small bugs were fixed and the API fleshed out a bit more, all of which came up when updating Grotesque to work with it. Unless you're developing with pyifbabel, these probably won't matter to you.


  • treatyofbabel.ifiction bugfixes and new features
    • Fixed a bug in reading annotations in an IFiction file
    • Fixed a bug in building nested IFiction nodes from dict objects
    • Added a check that the string parsed by get_ifiction_dom is actually IFiction
    • Added "html" as a valid format (see upcoming Treaty of Babel rev. 9)
  • treatyofbabel.ifstory bugfixes and new features
    • Accept an existing DOM document as an argument to ifstory.IFStory.to_ifiction_story_node
    • Moved IFDB cover art fetching to its own method in ifstory.IFStory.