What Would be the Sentiment to an Experimental Rust Port of Inform7 Made With AI Assistance?

It’s nice to see that an AI Overlord agrees that having access to a suite of tests makes the “porting” easier. lol

I take this two ways:

  1. I never assume any system has thorough testing.

  2. I’ve become immune to Claude’s optimism. I make my own judgement.

That’s something I wish they would address in all LLM models. I don’t want encouragement or to feel like “I’m really onto something”, I just want answers. When they make an impersonal LLM, I’ll be a happy camper.


You want to make a custom IDE for Inform… I’m not seeing a cause for anxiety with that. If anything, sharing it would be contributing back to the community.

If you end up sharing your IDE with the community, I guess my main concern would be if you didn’t refactor and approve the generated code yourself. My time, energy and feedback placed into a newly created Inform IDE would only benefit training your AI and not helping a fellow human being improve their craft. You already touched upon this sentiment when you mentioned…

…some people can be extremely disrespectful of other people’s time and attention, shoveling AI garbage at other people without caring how much effort it takes the reader compared to how little effort they put into what the AI wrote for them…

…and I see an IDE written for authors on the same level as a story written for readers. If you have plans to share your IDE tool, be sure you’re not subjecting users to something that you didn’t have a careful hand in every step of the way (save for libraries written by other human beings, of course :wink:).

If it’s just for your own use, my point is moot.

1 Like

I’m sorry… but WHAT???

1 Like

It’s still not perfect, but DeepSeek v4 Flash is way less personal than Claude from what I’ve seen. I’ve not used Claude but DeepSeek seems much more “all business” compared to what I’ve seen people post about Claude’s patronizing comments.

Yeah, the way I would approach it is being honest in the project documentation / readme, etc. about the status, like “it’s wildly experimental, AI assisted, may eat your homework, and might not be as polished as it looks”, for the first while.

AI can be good at making things that appear polished, but are just quite broken upon closer inspection.

So it would have to earn it’s trust from me as I use it and then I could tell people, “it’s still experimental, but I’ve been using it for my projects and so far it’s gone so and so well”. That way it’s completely clear to someone finding it how much went into it and whether they think it’s worth their time to try it out.

When something is experimental… it’s unpredictable. When you honestly feel that experimental is no longer an apt word, then you’ll have my attention.

2 Likes

Yeah, I’m thinking maybe the more interesting thing would be to just play around with an inform inspired language and reap the learning benefit.

I’m intrigued by the idea of a parser that can be trained on Universal Dependencies grammar trees to be able to parse arbitrary input text quickly to these structured trees:

I’m aware of my naïveté at this phase of investigation, but it could be really cool as a first step to an inform-like parser. It could potentially be much less rigid than the inform parser, though I’m not sure if that would prove an advantage, or contribute to confusion.

I think it depends a lot on how you build the next layer.

If I make any progress on the first step of that, then I’ll start a new thread.

I can’t help but think that your struggle (and desire for a custom IDE) with Inform7 is due to it’s natural language authoring structure still being a rigid programming language in disguise. Inform7 code is very explicit and reads easier, but it’s just as difficult to write and reason about as any other language.

What is it about Inform7 that you like? How would you improve upon it with a new version?

Inform7’s syntax feels like you should be able to write any logical sentence and the compiler should understand your intent and just make it so. Is that what you were thinking of using an LLM for at one point on the authoring side?

I won’t paste anymore Claude responses here, but if you want details, click this link to an html page on plover.

2 Likes

Oh, yeah, I totally understand. The thing is that I actually found it more difficult to write than a “normal” programming language because the constructs that I’m invoking with it’s language was far more ambiguous.

In inform, for example, the “keywords” if you can call them that, are more context dependent than in most programming languages. It’s allowed to be more vague, and it depends more on the compiler’s mechanisms, to figure out what you mean unambiguously, as any compiler must eventually do. For example JavaScript has a function keyword which you are not allowed to use except to define functions. Inform has special Instead of rules, but nothing stops you from making a thing called ( nonsensically ) the Instead of Fork.

The interest of making an LSP was to give more insight into that process of picking apart the text you put in and understanding it as some unambiguous Inform construct.

I.e. I want to know where Inform sees the name of my thing starting and ending, and which object it’s resolving to. For example if I define Mary's Bedroom is a room. and then in another part of the story say The Bedroom is a room. If I remember correctly, it actually interprets Bedroom as an abbreviation of Mary's Bedroom which I defined earlier and then will get confused. But that doesn’t happen if you define them in the other order.[1] It would help to be be able to hover or ctrl+click the noun Bedroom to see that it is actually referring to Mary's Bedroom to help me debug the otherwise confusing error message.

So seeing what inform is thinking in realtime is what I’d want out of an IDE. Which I think would be great for learning what is actually happening as you put in these words that mean something clearly to us humans, but may not be interpreted how we think by the compiler.

I totally get that it’s a programming language with the facade of English. After working with it for a bit, the mechanisms involved have become much clearer and less mystical. I’m starting to “see through” it pretty well, but I still think that it would be great to have more insight.

That’s a great question! I don’t want it to seem like I don’t like Inform. I’m actually kind of fascinated and very impressed by it. I think it’s really cool, otherwise I wouldn’t be here.

And honestly learning how it works has been a fun diversion, and the initially somewhat “mystical” aspect of it has been like a game in itself, like I’m trying to learn The Art from Myst ( But thankfully in English instead of D’ni ).

The things that I really like about inform:

  • It’s largely declarative instead of imperative. i.e. you’re defining what things are rather than constantly telling the system what to do directly.
  • It can be reasonably read by people understanding English, even if they have no idea how to write it. I think this aspect has a lot of potential for studio documentation. It allows the uninitiated to actually read the source code, which is valuable even if they haven’t learned to do anything useful by writing it. It also makes “modding” an existing story way easier, for example if you have multiple people contributing, but not everybody is going to learn the details of the syntax.
  • It can extend itself. I love how flexible the language is and how the language can be used to add new language constructs.
  • It exercises a totally different part of my brain than normal programming, at least as far as syntax. I really like that it still has a fun, modeling / programming kind of thing to it, but that it gets me away from tons parenthesis and curly braces and modules all nested inside each-other, etc. The plain English facade, even though it is but a facade, does use your brain differently, and it can be relaxing to a degree after a lot of coding, while still having the fun problem solving aspect to it.

So really, inform did something I’d never seen before, and I’ve been around a lot of different kinds of programming languages, and it made me want to see how far you could go with the concept.

Other than hoping to have a language server, I’m mostly just trying to figure out what goes into making something like inform and whether or not I can test out the concept in different contexts other than interactive fiction.

For instance, I’ve written my own game engine already and it has Lua scripting, but it’s scripting system can be hooked into other languages too. What if I was able to make an Inform inspired scripting language for my game engine?

I was also interested in trying something Inform-esque for writing out user experience scenarios for design I’m doing for online group software.[2]

Oh, no, not at all. I really don’t want to use LLMs on the authoring / compiling side of things. :sweat_smile: They’re way to expensive and/or fickle.

I am interested in using very small neural networks or statistical machine learning models to generate the sentence grammar trees in order to replace the exact grammar matching used in Inform7 and specified by English.preform.

I’m curious how using natural language processing to build grammar trees might allow more diverse sentence structures, while still allowing the compiler, after that initial statistical parse, to deal with strict grammars and definitions.

So essentially use statistical methods to figure out whether each word is a noun, a verb, a noun phrase, a direct object of a specific verb, etc.

Then of course I’d still need to implement the whole world-building system on top of that grammar tree, which is doubtless a huge project in itself.


I know I’m kind of getting ahead of myself a bit here. I’m good at that. :smiley: But it’s OK because what’ll happen is I’ll go and do some reasearch and try stuff out, learn some things, and then probably get stuck or find something else that seems more worth my time, and I’ll be left having had some fun exploring an interesting idea and learning a few things along the way.

It’s OK to me that this will probably go nowhere, but I’ve gained a lot over the years by being willing to explore and think about things like this.

It’s unlikely, but not impossible, that this turns into something anybody else will actually care about, but maybe the journey will prove interesting to onlookers, and if I get anything going I’ll share it just in case.

So far I’ve just started experimenting trying to train a CRF model to predict the parts of speech in sentences. It’s not super great so far with zero tuning training on some Universal Definition sentence trees. I might try using Stanza which is more sophisticated to generate labels that I can train my tinier model on.


  1. Actually I can’t remember if that’s right for sure, it might be the other way around. ↩︎

  2. I tried a little bit with inform and had some trouble with the fact that I wanted to go to bsky.app, and I think it was being weird about the dots in the name of rooms that were representing websites. ↩︎

1 Like

Thanks for the thorough reply. I felt much of the same friction with my brief encounter with Inform7, but I prefer terse prose and terse code. :wink: Oddly enough you mentioned Lua and I just started dabbling in it and find it to be a breath of fresh air. I was playing around with LÖVE and totally diggin’ it.

Curious. Do you think it’s easier to dissect Inform7 and understand it thoroughly enough to extend it and modify it? …or do you think it’s easier to roll your own Inform7 inspired parser engine and language?

I ask because both paths would probably get you to the same desirable destination, I think. Anyway, food for thought.

1 Like

I would say it’s vastly easier to roll your own I7-inspired system. While Inform is written as a literate program (which helps a lot when understanding it, compared to Dialog’s mostly-uncommented C), one of its main priorities is backwards compatibility, and the result is that you often need to know several unrelated languages (I7, I6, Preform, Neptune, C…) to figure out why something works the way it does. I would estimate the number of people who truly understand the inner workings of I7 can be counted on one hand.

2 Likes

Yeah, I think Lua’s a pretty nice little language. Well suited for extending other systems, too. I’ve heard great things about LÖVE, too, though I haven’t tried it myself yet. It sounds like they nailed the enjoyable programming experience.

@Draconis’s take sounds right to me. I haven’t got a very good grip on how complicated different pieces of inform are yet, other than that the thing as a whole is very complicated.

It does seem like the literate source is an invaluable resource for figuring out how to make something inspired by it, though. I figure I’ll just start going through things one step at a time.

1 Like

Started a new thread to record progress:

FYI: Lua inside C# was used for the UX in RedBox kiosks. Those are gone, but the same architecture is in CoinStar machines. I know the guy that built it.

2 Likes

I don’t know if you’ve come across them already, but as a programmer, you might find Ron Newcomb’s “Inform 7 Programmer’s Manual” and Celtic Minstrel’s “Inform 7 Reference Manual” quite useful.

The former is a bit outdated in parts, but both are well worth a look, for working in Inform as well as for creating an Inform-like system of your own, I think. (Nonetheless, an LSP implementation would be cool, too.)

For further background reading, there’s also Graham Nelson’s whitepaper “Natural Language, Semantic Analysis and Interactive Fiction” (PDF link).

2 Likes

Ooh, nice resources, thanks!

I’ve just seen the first two l links elsewhere on the forum recently and hadn’t gotten to look much into the first, and I haven’t seen the whitepaper before.

2 Likes

My impression of Inform is that because it looks like natural language it decreases the cognitive load of the developer/writer because there is less code switching. You are always operating under English grammar and not switching back and forth to a language with a bunch of curly braces. Writing something like now the vase is broken. does not interrupt the writing flow like vase_broken_flag = true would.

Curious to know what folks who use Inform think about this concept. Does it actually feel less like you are programming and more like you are writing?

Sounds like Inform is the COBOL of IF.

2 Likes

You know, the suitability of Inform 7 for programmers was discussed to death around 2010. It is not at all relevant to the question posed in this thread. Can we at least split that off if we’re going to relitigate it?

2 Likes