At very long last, Twine 2.0 has entered beta. You can download it from Bitbucket, or play with it right now.

The word beta has been abused to the point that it is essentially meaningless, like HD or cloud, but I’m a bit of a traditionalist about it. To me, it means no more features until the real release, only fixes. It means we’re close to a final release. So it’s an exciting milestone for me.

The long road to now

I’ve been keeping mostly quiet about Twine 2 while things were in the design phase, so let me catch you up on what I’ve been working on. My first goal with Twine 2 has been to fix all of the infelicitous parts of Twine 1. Anna’s tutorial was incredibly instructive, because all the things she warns you about shouldn’t be things you have to remember. That means:

You no longer have to remember that to name your first passage Start — you just click the little rocketship icon next to the passage you’d like to start with. (I remain unsure if another icon would be more obvious, but my thought for now is that it’s lifting off the launchpad.)

You no longer have to play hypertext janitor and add every new passage you link to. It’s pretty hard now to create broken links in a story, I think. As soon as you add a new link, Twine will create a passage for you.

You no longer have to remember that CSS needs to go into passages tagged ‘stylesheet,’ or JavaScript goes into ‘script.’ There’s a separate place for each in the editor.

You no longer have to remember that the name of your story has to go into a passage named StoryTitle. You just rename the story in the editor.

You no longer have to capitalize passage names in links exactly right.

All of these changes are overdue and unexciting. The more interesting part is that it’s a browser-based application. This does not mean it is necessarily web-based. I’ll come back to this point in a moment. Going browser-based solves one of the biggest hassles I had with Twine 1: compatibility with the variety of Windows and OS X versions (and poor left-out Linux users, who I threw a vague bone to with some bare-bones instructions) that the world uses. I had hoped that Python and wxWidgets were ecumenical enough to allow me to ignore the differences between platforms, and that turned out to be mostly true. But when Twine crashed inexplicably on people’s computers, I had no idea how to figure it out, as inevitably they would be on a platform I didn’t have access to. Trying to debug an application over email is excruciating.

So while a browser-based application still means experiencing the rich pageant known as browser compatibility testing, the truth is modern browsers aren’t vastly different anymore, and it’s a lot easier to get your hands on, say, Internet Explorer 9 if you need to chase down a bug.

Going browser-based also makes it much easier to get Twine onto other platforms. Linux is now a first-class citizen in Twineland, and there’s now support for writing Twine stories on a tablet, whether it’s running iOS, Android, or something stranger. (This still is a bit rough in places — but we’ll get there by the time there’s a real release.) I even eventually would like to explore bringing Twine back in desktop application form via node-webkit. So far as I can see, it’s the only good way to tackle multimedia. And who knows? Maybe Twine will end up as a Chrome Store or Firefox OS app too.

Anyway, while I’ve been coding myself silly with the new Twine editor, Leon Arnott has been working on fixing all the infelicitous parts of the Twine runtime, and in fact adding a ton of new features. He’s been keeping his notes on what’s changed on his Twine 2 site.

It is also be possible to create custom story formats for Twine 2, just the same as in Twine 1. I’m working on formal specs for people to follow right now. If you’re interested in creating a story format, then please get in touch.

About freedom

When people hear that Twine is browser-based, they often assume that it will require creating an account on a web site, with all of the nastiness related to ownership of content, terms of service, and so on that can ensue. I think that there’s definitely room for a server-based Twine, but I have been designing Twine 2.0 so that it will be completely functional if you download it to your computer and run it locally. It doesn’t require any kind of install procedure, even. (Lord knows how much fun I got out of writing NSIS installer scripts.) You just unzip the archive and open index.html inside.

I believe that one of the core values of Twine is that your work belongs to you, and that shouldn’t ever change.

* * *

If you love Twine as much as I do, please consider supporting its development.