Twine 2.1.0 beta 4

This was originally posted to my Patreon.

Well, I tempted fate by thinking that we were close to a relase. Beta 3 had a nasty bug that invisibly ate up hard drive space on the story list. If you used beta 3, follow these directions  to clean up the mess.

This fixes a few other bugs that were identified in beta 3, too.

You can get it from Bitbucket, and I’ve created a new forum thread  for discussion.

PS. This release is gratis — my policy is to only charge patrons once a month at most.

Twine 2.1.0 beta 3

This was originally posted to my Patreon.

Not quite there yet, but pretty close to a release. You can download it from the usual place.

The major update on this beta is that we’ve added multiple versions of Harlowe and SugarCube, two popular story formats — the things that run a published story in a browser.

In particular, Twine 2 has lagged pretty hard behind SugarCube releases, so this beta adds the ability for you to pick which version of SugarCube, 2.11.0 or 1.0.35, you’d like to use. Before, you had to install SugarCube 2 by hand, which was a bit of a hassle. Similarly, this lets you start using the Harlowe 2.0 release series (which I think is still in the finishing-touches phase), which brings many improvements over 1.0.

(The dialogs related to story formats have been overhauled, too, to make them a bit simpler to digest.)

If you have a free moment and the inclination to test this beta out, it would be especially helpful. The reason why is that this version tries its best to gracefully transition you to an appropriate story format version, even if you had previously installed SugarCube 2 by hand before. And I want to get that as tested as possible, since if it goes wrong it could mess up people’s workflows significantly.

Thoughts? I’ve posted a topic to the forum.

Twine 2.1.0 beta 1

This post originally appeared on my Patreon.

After a long gestation, I’ve put out a beta of Twine 2.1.0! This revamps the user interface quite a bit and speeds up a lot of tasks, particularly with larger stories. If you were used to waiting a few seconds for Twine to start up or load your story, this should make you happy.

There is a lot changed under the hood. I can’t really understate that. This is why I’m going to do several betas before a formal release. And right out of the gate, a couple big bugs have been identified.

So ultimately, consider this a preview of things to come, and if you use it, please keep careful backups of your work. I’ve spent a lot of time ensuring that the new data layer (which is why it’s a lot faster) is solid, but there are still doubts in my mind that won’t go away until it’s been rigorously tested. Which is hopefully where you come in!

I’ve put details for how to download it on the Twine forum.


This post originally appeared on my Patreon.

I have something new for you to play with! I realize it’s been a while. It’s called grunt-entwine-quickstart, which probably sounds like nonsense if you don’t live in the JavaScript world. In short, it’s a set of utilities that will help people who are a bit more technically savvy, or who are building larger stories.

With it, you can:

  • Create a single story from several story files, like StoryIncludes in Twine 1
  • Write CSS and JavaScript outside Twine
  • Add Twee code to a Twine story, or build stories entirely from Twee code
  • Use Git or other source control systems in conjunction with Twine
  • Build desktop app versions of Twine stories

To get started, visit the project page and follow the instructions there. Although you’ll need to use a command prompt with this, I tried really hard to make it understandable for people who haven’t used it before. Please let me know if there are parts that are confusing about the instructions!

If you do live in the JavaScript universe, you may want to use the Grunt plugin as-is. Or you may want to use a plain old command line script, or play with it in JavaScript directly. You can totally do this! Install twine-utils instead and you’ll get a entwine command and associated Node module.

Keep in mind that this is the first public release, so there may be bugs lurking here. If you do run into problems, please add a bug report to the project page. There’s also room to grow here, too. I can see adding a Twine 1 -> Twine 2 converter to this project, and also adding a mobile app builder with PhoneGap/Cordova in the future.

Writing Interactive Fiction With Twine is available in print!

Writing Interactive Fiction with Twine on the shelfI ventured out to a local Barnes & Noble yesterday, and was pleasantly surprised that it was not only there, but also given some prominence on the shelf by the staff.

I think the book production folks at Que did a great job with the print edition. After spending so much time looking at drafts in Word, it was nice to see it, y’know, actually given form with typography and layout.

I had also forgotten — honest! — about the foreword I had written for the book. So I can say that not only did I help with the editing, but my writing does appear in it, even though it’s but one page of 432.

I think by law I am required to link to where you can purchase it, in case you do not know how to exchange money for books, so go to it.

(I didn’t notice Mazes for Programmers next to it until after I had gotten home, but what a book title!)

A second book about Twine!

I’m pleased to see that Writing Interactive Fiction With Twine, a book by Melissa Ford that I tech edited, is now available in e-book format! It will appear in print later this month, at which point I will gush with excitement all over again.

I’m excited both that this is the first book I’ve ever tech edited, and that it’s the second book I know about that is specifically about Twine. (There’s Rise of the Videogame Zinesters too, of course — but while it talks a lot about Twine, I think the ambitions of the book extend past Twine, to a larger creative movement.) That first book is Videogames for Humans, which Merritt Kopas herself gave me a copy of– pretty nifty.

What I really like about Writing Interactive Fiction With Twine is that it treats coding and writing as equal partners in the creative process, and devotes its time accordingly. I think that’s just right for a book about Twine, and for that matter, interactive fiction in general. I think it’s easy to fall into the trap of gee-whiz technical tricks without considering what story purposes they might serve. Melissa dodges that quite deftly.

(By the way, the book also devotes many chapters to a gentle introduction to Harlowe, the default story format in Twine 2 — so if you’re used to SugarCube but are curious what Harlowe’s all about, the book is a great way to try it.)

Tech editing was more intimidating than I expected. I hate errors in technical books and resolved to make sure Melissa’s copy was spot-on accurate, but after all was said and done, I remained paranoid I missed something. We’ll see!

Twine 2.0.11pre1

This post originally appeared on my Patreon.

It took longer than it should have, but we’re firmly on the road to 2.0.11. You can grab a copy of prerelease 1 here. This is a minor update, fixing a number of bugs (especially a couple bad ones affecting Linux users) as well as adding Finnish and German translations. If you notice a bug, please report it!

I’ll write a little bit about why there’s been a longer gap between this release than there typically has been, because I think it’s a useful cautionary tale. Over 2015, I was proud to hit a release about every month and a half. The slowdown was basically a case of pulling one thread in the codebase and all kinds of thing untangling.

I had some free time around the holidays, so I decided to try using a CSS preprocessor for the code, and also to try to improve the code structure. That is to say, to try to pay down some technical debt. What ended up happening was that using a preprocessor triggered a general rethink of the Twine UI, to try to make it more consistent, and improving the code structure led me down the road to major refactoring, which also implies major retesting. Both these things took up the time I had charted out in my head, and went well beyond. It was clear to me that getting this branch of the source tree (which I had named, with increasing dismay, refactor-2k15) in shape that it could be merged back into the main line of development would take a long time, much longer than I (and many other contributors to the code) was comfortable with.

So I’m taking a different tack now, prompted by a talk by Ryan Florence called “Don’t Refactor, React” that Aimee Knight was kind enough to point me to. It’s well worth a watch if you’re trying to grapple with the dizzying carousel that is JavaScript development these days. (No, this does not mean I’m rewriting Twine in React — though who knows what the future may bring, I guess? Right now I am finding I prefer Vue over React, for what it is worth, though this opinion is not informed by a lot of experience yet.)

The point of the talk being, instead of refactoring from all the way at the top, start simply, and at the lowest level. Succeed early, and use momentum to your advantage.

What this means in practice is that once 2.0.11 is out the door, I’m going to try to move over the changes from that ill-fated refactor-2k15 branch over in small, incremental steps. My hunch is that this will work a lot better. Here’s hoping!

I’ve attached a screenshot of the revised UI, by the way. As you can see, it’s not radically different — hopefully just refreshing. There’s a whole other post to be written about how I got there.

Screen Shot 2015-12-13 at 8.16.29 PM

Twine is free software

In a lot of ways, that’s all you need to know.

This week, I’ve been informed by folks in the Twine community of a couple developments: that Twine has been placed on Steam Greenlight by someone who is running a crowdfunding campaign for same, and that someone had set up a page on to sell binaries of Twine for $5. ( has since taken this page down.)

Right upfront, I’ll state that nobody has previously communicated with me about any of these things, so you can consider them unauthorized by me — which I italicize to stress that I’m speaking for myself only.

But, besides that– is it legal to put Twine into an app store regardless of my own personal wishes, let alone charge money for it? I’m not a lawyer, obviously. But I believe the answer is yes, if that distribution complies with the GNU Public License v3 (or GPLv3), which is the license I chose for Twine 2. (I used GPLv2 for Twine 1.x.) In particular, sections 4, 5, and 6 describe the requirements for distribution in what I think is pretty plain language.

One nuance of the GPLv3 that you may not be aware of is that it allows for a fee to be charged for distributing the software — but there are two major requirements. First, the distribution must include source code or otherwise make it available to end users. Secondly, it requires that customers be also allowed to distribute the software themselves, for free or for cost. So, there’s no point in charging for a GPL-licensed application, since anyone who ponies up whatever cash is allowed to then give it away to the entire world for free.

Before I move on, I’ll also point out that works you create with Twine are not governed by the GPL. The story formats that your work is bound to — Harlowe, Sugarcube, and Snowman — have more permissive licenses that largely only require you to credit them appropriately.

That said, there’s something here that I especially don’t want to discourage, which is people asking for donations to expand Twine’s capabilities. It would be hypocritical to do otherwise, considering I’ve set up a Patreon to do exactly that. Again, the GPL places limitations on this. If you create a derivative version of Twine, it must also be released under the GPL — and ideally, you would contribute those changes to the main source repository. You are not permitted to take Twine, change it, and then offer it under a different license (in particular, a proprietary one).

Obviously, you should use the same judgment that is appropriate when evaluating any crowdfunding campaign. I don’t know the person running the crowdfunding campaign nor have I spoken with them, as I mentioned above, so I can’t really speak to its viability. You’ll have to draw your own conclusions.

I’ll close with why I haven’t put Twine in app stores like Steam, itch, the Mac App Store, and so on thus far. Right now, I have my hands full supporting mobile browsers and all three major desktop OSes — producing separate versions for the various stores, let alone supporting them, is too much for me to consider right now. Though that may change in the future– who knows?

Speaking of, I’m looking for someone to assist with managing the Linux version of Twine. There were a number of Linux-specific bugs that made it into 2.0.10 because we didn’t test on that platform as much as we did Windows and OS X. If you’re interested, please drop me a line.

Edited on 20 December 2015 to clarify that changes to Twine must remain under the GPL, as specified by the terms of the GPLv3.