Interactive Fiction allows programmers to become writers and writers to become programmers. To an experienced programmer, the IF languages are all extremely straightforward. But, planning a plot and writing large amounts of text to describe a story is something that most programmers don't ever get a chance to do.
OTOH, experienced writers obviously know how to put a good plot together and write large amounts of text to describe a story. But they usually don't know much about programming.
That's the beauty of IF. The languages are simple enough to allow writers to learn to program them, so both programmers and writers can get into writing IF.
If you don't know anything about IF, check out this article on 1up.com.
I'm currently working on my first work of IF. I'm programming it in TADS3 and am very happy with the progress I have made. TADS3 is a wonderfully expressive language with a huge amount of stuff in it that makes creating worlds easy. For instance, let's say I want to create a room for the person to be in.
field : OutdoorRoom 'field'
"This is a beautiful wide open field that stretches as far as you can see in all directions. The grass is green,
the sky is blue, and the air smells oh so fragrant. There is a path leading north towards a white house in
the distance. "
north = outsideWhiteHouse
Hooray! Now you have a room. When the player types "look", that description will be displayed. If the player types "north" then the player will move to the outsideWhiteHouse location (which I haven't described).
Now lets say you want to add a bit more detail so that if the player types "examine grass" then they'll get a response:
+ Decoration 'grass' 'grass'
"The grass is clearly the product of obsessive lawn care. It's so green that it seems as if the grass was
actually painted green. On closer inspection, it appears that the grass really was painted green with
spray paint. Presumably that means that the grass is actually the product of extremely lazy lawn care.
Either way, it is very green. "
Now the player will see that description of the grass if they type "examine grass". Now let's add an object to the room.
+ rake : Thing 'rake' 'rake'
"This is a simple rake for sweeping leaves. "
When the player types look in the field room, they will see a list of its contents. In this case it will list the rake after it has described the room. So, now the player can do things like "get rake" to pick up the rake and "examine rake" to see the description of the rake that we wrote.
It's so simple!