Why I Developed JIFFEE

Of course there are already many established tools out there for authoring IF, so why am I trying to create a new one? First, let me emphasize that JIFFEE is not a new language. There is general consensus that inventing yet another IF authoring language is a fool's errand, and I completely agree. Instead, JIFFEE explicitly disclaims the idea of using a special-purpose IF authoring language at all.

In my view, the design of any IF authoring system is based on a fundamental assumption about language and beginning IF authors which heavily influences the structure of that system. There seems to be general agreement that existing programming languages are by themselves inadequate for the job of writing IF, so some kind of tool is needed to support authors. However there are (at least) three possible assumptions a designer can make:

  1. Any form of written behavioral specification is too hard for IF authors to use, so the whole authoring process should be based on filling out forms and clicking on menus. Adrift is a good example of a system based on this premise.
  2. General-purpose programming languages are too hard for IF authors to use, but natural language is not, so a domain-specific language is a good solution. Inform is the most popular example of this type of system, but TADS and HUGO are also based on this idea.
  3. A standard programming language, if introduced in a limited and stereotyped way, is a reasonable and adequate tool for authoring IF. Systems based on this assumption are much less popular, though there are a few like PUB. JIFFEE is based on this approach.

I believe all three of these paths are worth exploring, because different approaches are likely to appeal to different people. The more variety we have available, the more potential authors we can reach.

I chose to devote my time and energy to choice #3 because, although difficult to implement effectively and thus under-explored, it offers a number of advantages that make it worth the effort. In particular JIFFEE has the following useful characteristics:

[1] Most of the nasty things you've heard about JavaScript are true (for older browsers; the new ones are much better), so there are a couple of rather painful exceptions to this rule that JIFFEE has to work around. Sometimes life is hard.