All posts by Remnant

World Machine Author

On WM 2.3 and Code Debt

Beta 1 Available! Rejoice!

As I mentioned on the forums, Beta-1 of WM 2.3 is now available if you haven’t heard! Visit the main website and follow the news links to get at it.

I’ve already started fixing a couple further bugs, and introducing a few new things for Beta-2, such as multithreaded support for Thermal Erosion.

I’ve been continually mentioning how 2.3 is mostly an internals change that should pave the way for easier and more profound changes down the line. I’m hoping to be able to give folks a taste of those changes sooner rather than later.

What I really want to talk about is the concept of Code Debt.

The curse of Code Debt

One experience I’ve had on the World Machine project is just how toxic the kind of “code debt” that 2.3 addresses is. For those who aren’t familiar with the concept, Code Debt is essentially much like financial debt.

When you need something done in a whole hurry, and you don’t have the resources available, you can choose to “take out a loan” by coding things in the fastest but not best engineered way. In short, a dirty hack.

However, you have to pay interest on that loan. And the interest rate is high : Every time you need to touch that system in the future, you have to interact with your crude code. Over time, the cost of having to deal with your dirty hack far outweighs the time savings you got in the first place.

All that Work, but still the Same?

To deal with the code debt, you have to continually refactor your code to improve its quality. WM 2.3 is primarily a release aimed at doing just this. Lots of internal systems are taken apart, re-plumbed, and put back together again. The depressing thing though, is when you’re done..

… you have exactly what you started with, from the outside. In the ideal case, nothing will have changed from the User’s perspective. If you get alot of your development drive out of creating cool new features, like I do, this can be a bit depressing.

The good news of the effort though, is that done well you can move forward from that spot at a far faster clip than would have been possible if the debt was not dealt with.

Anyways, just a kind of windy aside about what the primary goals of WM 2.3 were. I hope it provides some illumination for folks out there!

2.3 Beta-1 — Monday?

Hey folks,

I had originally planned to release the first beta of WM 2.3 today, but I realized only yesterday(!) that that is probably not a good idea since I’m going out of town this weekend to help some friends out — in case anything is horribly broken I wouldn’t be able to fix it in realtime.

So I’ve postponed the 2.3 beta again, until monday, so that I can be sure that I will be immediately able to fix anything that arises.

See you then!

Out, dratted bugs

A good thing I pushed 2.3 back a little bit further, as I’m currently fixing a serious build crash that was uncovered once I started the final testing. And let me tell you, there’s nothing like tracking down subtle multi-thread crash bugs to really brighten ones day!

I also want to fix the “stranded route points” issue for 2.3beta-1.