Announcing Construct LTS releases

27
Official Construct Post
Ashley's avatar
Ashley
  • 2 Oct, 2024
  • 1,546 words
  • ~6-10 mins
  • 2,043 visits
  • 0 favourites

Construct 3 was first launched in 2017, and as it matures and gains more widespread usage, the way it's used evolves over time too. Recognizing this, we've now launched a new Long Term Support (LTS) release channel for Construct. We've been working hard behind-the-scenes for a few months now to adapt our internal processes to make this possible, and now we're happy to announce that LTS releases are available!

What are LTS releases?

In the past we've had regular (approximately weekly) beta releases for testing purposes, and then a stable release every 2-3 months. Historically we've only supported the most recent stable release. When it came to upgrading, your options were to update to the latest stable release, or stay on an old release which will no longer receive any updates whatsoever.

We work hard to ensure Construct remains backwards compatible, going so far as to ensure even Construct 2 projects from 2011 can still be imported to Construct 3. Often this involves a lot of complex work behind-the-scenes that goes unnoticed - but that means we did our job well! However the reality of software development means sometimes updating a project to a new release is trickier than expected. Over the years, sometimes features are retired and replaced by new options, and projects have to be changed. Sometimes it's possible that a project actually depends on a bug in Construct to work correctly, and when we fix the bug the project stops working as expected, and then identifying how to change the project to get it working again can be tricky. It's even possible that optimizing something to run faster causes problems for projects that have race condition bugs in their logic and expect certain timings. And sometimes new bugs accidentally slip in to new releases - while we endeavor to fix such regressions, sometimes they can lurk undetected for a while, and only get fixed after some time.

In other words, pretty much every single change to Construct carries some backwards-compatibility risk. All of this is normal in software development, but it can sometimes make it trickier to update to a new Construct release, particularly with large and complex projects. If you are close to launching a major project and you've already done a lot of testing, the last thing you want is to run in to an unexpected problem with a new Construct release - and yet you want the confidence that if something serious breaks, it will be fixed.

The industry's solution to this is to have an LTS release channel. Many other tools and software platforms use LTS releases for this reason, and we're now introducing the same for Construct!

How do LTS releases work?

In contrast to a stable release every 2-3 months, and only the latest stable release being supported, our current intended schedule is to make an LTS release every year (around June). A new LTS release will be based on the current stable release at that time. Then this LTS release is supported for 18 months. This means there is a further 6 months support after the next year's LTS release, ensuring plenty of time to update to the next LTS release if you need to.

This provides the predictability that sticking to the same version of Construct provides, while still having a guarantee of support in case a serious problem is discovered. For example if you are approaching the launch of a major project, using an LTS release ensures you won't have any unexpected problems with new Construct releases, and that if a major problem occurs it will still be fixed. Previously if you stuck to an old stable release, it would not have been updated even in the event of a major problem arising - it would only have been fixed in the latest stable release.

LTS releases also provide us with a useful milestone when we know changes will have backwards compatibility implications. For example if we plan to retire an old feature which has been replaced with a new option, we can schedule the retirement to happen after the next LTS release. Then anyone who has trouble updating their project, or just wants more time to do so, has the option of continuing to use the old feature in the LTS release for another 18 months. In the long term this will help make sure we can keep improving Construct while minimizing disruption from necessary changes.

What kind of updates will LTS releases get?

As noted previously, pretty much every change - even bug fixes and optimizations - carry some compatibility risk. Therefore the aim of LTS releases is to change as little as possible, and only update them with critical updates. For example if mobile app publishing rules change and an update is required for it to be possible to continue publishing to mobile, this update will be applied to the LTS release. Alternatively if there was some disaster like a browser update having a bug that breaks existing Construct projects - which we'd note is exceedingly rare - we'd also patch the LTS release to work around it.

In pretty much all other cases the answer to the question "will this change be made to LTS?" will be "no". The very purpose of LTS releases is to be predictable in the long term, and that cannot be achieved if lots of changes, improvements and bug fixes are continually being applied - in that case you may as well use the latest stable release. The goal is to have the minimum changes possible, so users of LTS releases never have unexpected problems, but can rest assured any major problems will still be dealt with. So generally it will require exceptional circumstances for a change to be made to an LTS release.

How do I use LTS releases?

You can load the latest LTS release of Construct by visiting editor.construct.net/lts. At time of writing, the latest LTS release is r397.4, so you can start using LTS releases today. As ever the releases page also lists all current and past releases, and this now includes LTS releases. You can also find a list of just LTS releases here.

When you use an LTS release, Construct will only notify you of an update if a newer LTS release comes out. You won't be notified of any other releases - but we'd suggest at least keeping an eye on stable releases so you're aware what kinds of changes are being made to Construct in the mean time.

Updating projects

We also recently introduced a new Deprecated features dialog that appears when you open a project that uses features that are deprecated or have been retired. Our aim with this is to help make it easier to find out when projects need to be updated for newer versions of Construct, and what you need to do to update them. We've also got a new section of the manual on Deprecated features which includes detailed descriptions and advice to help you update your project. As we mentioned before, we take backwards compatibility very seriously and we try to make breaking changes as rarely as possible - but naturally when software is developed over a period of many years, sometimes such changes are truly necessary. So we've done what we can to try to make such updates as straightforward as possible. We hope that these measures will also help if you need to upgrade from a previous year's LTS release to the next year's one, as the intervening year's worth of updates may have made some changes necessary, and this dialog should help make it clear what happened and what needs to be done.

Should I use LTS releases?

LTS releases will be more predictable, but updated much less frequently. The vast majority of new features, usability improvements, additions, changes, optimizations and bug fixes will only be made for the latest beta and stable releases. If you care about getting the latest updates, you should probably still use stable releases. LTS releases are intended for people for whom predictability is more important than the latest updates. As we mentioned before a good example of this is if you have a large project that is approaching launch. Another example may be in education, as teachers can use an LTS release knowing it won't change significantly over the course of an academic year, ensuring they won't need to change lesson plans or materials.

Conclusion

Construct now has three release channels, all with a different trade-off between update frequency and predictability. LTS releases are a new option that prioritizes lower frequency updates with greater predictability while still providing a guarantee that any major problems that come up will be sorted out.

Maintaining an older version of Construct for a longer period of time has its challenges. We've made internal changes over the past few months to facilitate long-term maintenance and ensure we have a good process for updating LTS releases. This is an important step to help make sure Construct is dependable for major projects, professional usage, and in education.

You can learn more about our release channels in our new guide in the manual on Construct release channels, and you can find all our releases on the releases page. Happy Constructing!

Subscribe

Get emailed when there are new posts!

  • 6 Comments

Want to leave a comment? Login or Register an account!
  • Congratulations on the team's work, Construct for me is the strongest engine on the market, if I could I would like to ask for more attention to those who develop for PC, I feel that many of the things I use to be able to launch on Steam are "hacks" for the WEB version, perhaps a review on NW.js or another way so that we can work on good .exe software.

  • Love you folks! Construct remains the best piece of software. Regularly improved, stable as can be, and a joy to use. The same cannot be said of iTunes for the PC. Congrats Construct Team and thank you!

  • Perfect timing, ty

  • Good Luck!

  • Very cool! I'll definitely consider this since my project is nearing release! Thanks for all the hard work!!

  • Thank you Ashley and the team for making it happen and work for us! I made my whole RTS game nuke them all just based on c3 and could not believe it was possible before, you made my dreams come true and i am forever grateful!