18 Feburary 2016Twine 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!

p.s. 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