Grotesque

An interactive fiction library manager

Pyifbabel 0.2.3 Released

After a long time of much inactivity, I’m happy to announce the release of pyifbabel 0.2.3. pyifbabel is a developer library implementing the Treaty of Babel for extracting metadata from interactive fiction story files. This release is not an interesting one, in terms of new features. However, it consists of a lot of bug fixes that have accumulated since the last release, particularly in the IFiction file handling code. Therefore, if you use the library it is highly recommended to update to the latest version.

pyifbabel forms the foundation of the next release of Grotesque (yes, it’s still in the works). Already, the development version of Grotesque which uses pyifbabel is much more successful at extracting metadata from story files than the previous version of Grotesque does on its own. That said, don’t bother trying out the development version of Grotesque since it’s highly broken in other ways!

You can download pyifbabel 0.2.3 here or you can install it using pip with pip install pyifbabel.

pyIFBabel 0.2.2 Released

Yep, another minor update to pyIFBabel. There’s not much to say about this one since the API isn’t well documented anyway. I added a couple functions for working with treatyofbabel.ifiction and treatyofbabel.ifstory together, such as making it easier to merge several story IFiction records into a single IFiction file. You’ll be happy to know that this was implemented as a direct need for Grotesque (read: yes, I’ve been hard at work on Grotesque itself lately). Anyway, check the http://grotesque.invergo.net/download page to get the latest pyIFBabel.

pyIFBabel 0.2.1 Released

Hot on the heels of pyIFBabel 0.2 is version 0.2.1. This is a minor update that primarily adds support for Quest format stories. Quest is not officially covered by the Treaty of Babel, but there’s nothing stopping me from implementing a handler for it, so I did. Enjoy!

pyIFBabel 0.2 Released

Version 0.2 of pyIFBabel, a Treaty of Babel library for Python, has just been released. This version fixes some bugs in IFiction file handling in the previous version. However, the most significant development has been in the treatyofbabel.ifstory module, which was altogether non-functional in version 0.1. This module defines the IFStory class, which makes it simple to work with story files and their metadata information. With this, I now have what I need to integrate the new pyIFBabel functionality back into Grotesque (though I will return to pyIFBabel to implement some further features which will eventually end up in Grotesque as well).

pyIFBabel 0.1 Released

I’m happy to announce the first beta release of pyIFBabel, a pure-Python implementation of the Treaty of Babel for developers of interactive fiction tools. This module was originally written for Grotesque. I figured that it might be useful for other developers, so I cleaned up the code greatly, packaged it up nicely and made it available separately. The goal is to both provide full compliance with the Treaty as far as correctly identifying story files of any supported format as well as properly handling and generating metadata for the story and wrapper formats that support it.

The bulk of the functionality has been implemented. All of the story formats covered by the Treaty are properly handled (tested on several files of each format), as well as the extraction of data from blorbed files. Creating IFiction XML files of metadata is supported, however this is likely to change a bit in the coming releases, as I have yet to properly implement the XML verification and lint processes supported by the official Treaty of Babel tool.

If you’re interested in using the module I invite you to download it from this page. If you encounter any bugs or a serious lack of functionality, please contact me and I’ll work on it. Alternatively, if you would like to fork my git repository, it’s available on Gitorious. I would gladly welcome some help on the package!

For those of you who are Grotesque users and aren’t concerned with development, I assure you that this is a good thing for Grotesque in the long run. Right now I am dedicated to making the its foundation as robust as possible, and the Treaty of Babel functionality is a key portion of Grotesque. It is important that it works well to provide you with the best organizing capabilities for your IF library!

Grotesque Development Has Moved to Gitorious

At the moment, this doesn’t affect anyone but me, but I have moved development hosting of Grotesque from Sourceforge to Gitorious. There isn’t much of an effect, since generally speaking I’m just committing locally and pushing my changes to the remote Git repository; it doesn’t make much difference where that remote is. There were two main reasons for the move, one personal and one practical. On a personal level, it allows me to have all my development projects in one place, rather than spread out between several.

On a practical level, it will make future potential contributions from other developers much easier. When I started hacking on Grotesque, I did so unofficially on my own Git repository since the official one was using SVN. When I was ready to merge my changes, I had to bother the original author by email, then he had to grant me permissions, etc. With Gitorious, like Github, anyone can easily fork the repository, work on the code, and then send me merge requests to get the code included. Unlike Github, it allows me to organize a project with multiple repositories. So, both the main Grotesque repository and the external pyIFBabel (Treaty of Babel) library repository are stored under the same project.

I’ll still upload new Grotesque versions for download on Sourceforge (in addition to making them available here), since people might still go there to look for them. I’m going to try to close the issue tracker there, since for most people it’s a convoluted, overly-complicated mess. Until I find a better solution, you can just send bug reports directly to me.

As for actual progress, in a massive coding spree this weekend I rewrote much of the Treaty of Babel code to be more similar to the official C API and commandline tool. Now I’m ironing out all the bugs that creep into the code during such long sprees. This will be good in the long run because, in greatly expanding this code, I will be able to add a bunch of new features to Grotesque as a result (such as more extensive metadata handling, top- notch iFiction support or the capability to create blorbs). As an aside, somehow I managed to fail to include an AdvSys handler when I was previously working on the Treaty. That has been rectified, so future versions of Grotesque will properly handle your old AdvSys games (“.dat” extension)!

Gearing Up for 0.9.4

I apologize for the general silence over the last few months. Unfortunately, life has been too busy to do much coding for Grotesque. Things have cleared up, so now I’m ready to get back to it. I’ve decided to start blogging the development process so people can have some sign of life in the project.

With the next beta release, version 0.9.4, in mind, I’m mainly looking at structural changes “under the hood”, in order to stabilize things a bit and to facilitate the future addition of new features.

First of all, I had been maintaining two separate branches of the code to support both GTK 2 and GTK 3. This was insane and unmanageable, plus it had the side effect of making the user choose which version to download. I’ve rearranged the code so that both versions are in the same branch, which allows easier parallel changes, but the choice of which to use is made by the program itself. It’s still tough to try to maintain code for both library versions, and I still intend to stop developing for GTK 2 once we hit 1.0. It’s for my own sanity.

What I’m working on now is a brief aside. Grotesque comes with a pure Python implementation of the Treaty of Babel. I’ve decided that this is pretty useful, and others should have access to the library as well. So, I’m splitting off development of that library to a separate project. I’ll update the code a bit to more closely resemble the official C API for the Treaty. There’s also some code that is embedded in Grotesque which would be more appropriate in the Treaty library, so I’ll move that over as well. This will all involve a few changes in the Grotesque code. For Linux users, this means that the new Python Treaty of Babel module will have to be installed separately. I’ll make this as easy as possible by putting it in PyPi and I’ll at least add it to the Arch Linux AUR, with the hopes that others will package it for other distros.

Next will be the big change for 0.9.4, which will be migrating from a basic Python- pickled flat file for storing user data to storing everything in an SQL database. The original method made sense at first, when each story was only stored with its basic Treaty metadata. Now that I’m adding new things like played state and contemplating adding things like tags, notes, etc., I’m finding that it’s becoming difficult to manage. An SQL database will help with that, though it does increase the complexity of the program. Also, for Linux users, it will add more dependencies (namely SQLAlchemy and Elixir).

Well, that’s it for now. I’m looking forward to getting 0.9.4 out there, since it’s been a long time since an update!

Grotesque 0.9 Released

I started developing Grotesque this summer, picking up where liedman left off. I’m happy to release the fruits of my labor to you now. As you can see, the version number jumped from 0.2.1 to 0.9. I did this to reflect the sheer amount of features added to the program and to reflect that I now think it is close to being feature complete. However, it should still be considered beta software and there still might be some bugs to work out.

You will notice that there are two versions, one for GTK2 and one for GTK3. This is because with Python applications, there appears to be no sane way to support both versions of GTK in one app. After Grotesque hits 1.0, I will stop developing the GTK2 version. If you aren’t sure which one you should download, get the GTK2 version to be safe, since not all Linux distros are shipping with GTK3 yet (Ubuntu won’t until November 2011, for example).

Some new features in 0.9 include:

  • Full support for all Treaty of Babel bibliographic fields
  • Fetch and display cover art from IFDB
  • Fetch and display (average) star ratings from IFDB, which you can override and set yourself if you would like
  • A new filter list, allowing you to filter your library by author, genre, group, year published, series, forgiveness and minimum rating
  • A beautified story information area
  • Mark stories as new/played
  • Faster loading for large libraries
  • Recursively import a folder of IF (good for people who have their libraries organized in hierarchical folders)
  • Edit story entries