The good and the bad with the current Defold releases

@connor.halford recently highlighted some concerns about the release process in Defold and the frequency of the releases versus something like Unity where there are Long Term Support releases with bugfixes and feature releases. Connor writes:

“One thing that was unclear to me was what version of Defold I was supposed to be using. Releases are very regular, mixing together both features and fixes. For an irregular side project, keeping up with releases took an annoying amount of time (until I abandoned doing so), and often led to subtle bugs or changes in behaviour. I prefer the clarity of the release structure that Unity, Godot, Blender and many other software projects follow, with key feature versions followed by stabilising Long Term Support versions. If you need or want the new features then you update, otherwise you stay on LTS and just receive bugfixes.”

Below are the follow-ups to this, moved from the Curious Fishing dev diary to a separate topic.

2 Likes

Thank you sooo much for this summary! It’s very informative, imho describes pretty usual case for Indie development outside of full time jobs and life commitments and perfectly summaries how much unseen effort there is even behind such judging-by-the-cover simple game is. This might be missed by many devs planning making of any game :wink:

Also few good points for the Defold release cycle worth considering. I started having the similar problems with not being up to date sometimes and I think I’m very active though. It’s just, that if we might miss something or so, the new users and users getting back might have similar problems. Release note are great and have summaries, which is of course good, but what me and you are trying to emphasise here is a mixture of fixed and features and that the frequency of smaller features might be overshot and simply missed sometimes :wink: hard to tell, that it’s bad now imho, because I like the engine being up to date, but it’s, at least for me, maybe a little bit more emphasis on features, especially breaking changes, with even more detailed explanations sometimes

Not to hijack the thread, but it seems like something we should think about.
My problem is, I’m not sure you you mean here. Do you want more features or more bug fixes. It kind of feels like you don’t want any more features?
And number of breaking changes I would say is fairly low?
Which ones affected you negatively? And what could we have done better?
E.g. we have documented migration steps, or we do it for you (in the editor).

As for what we work on, it’s always a balance between the paid support, the open tickets (which you vote on), and things that we think is beneficial to the community (e.g. the RoadMap).

I agree with Mathias. I’d like to learn more about this feedback. We do roughly 12 releases per year (ie 1 release per month). The releases typically contain a mix of incremental improvements, new features and bug fixes. The releases should rarely contain breaking changes.

Personally, I’ve always liked this way of working. When something is done we ship it instead of holding on to it until The Big Annual Feature Release.

Good things about shipping stuff when it is done:

  • Developers get access to new functionality as soon as it is ready
  • New functionality gets tested by the bulk of our users when it is done (assuming that our users update to the new version)
    • This means that the cost of fixing issues is lower than if issues are discovered many many months after the implementation was completed.
  • We do not have to maintain two active releases at the same time (LTS with bugfixes and Latest with new features AND bugfixes).

Bad things with shipping stuff when it is done:

  • The impact of each release is much smaller than if all new features are released once per year.
    • Compare Defold 2.0 (wow!) with Defold 1.4.1 (meh!)

@connor.halford and @Pawel :

From your feedback it seems like there is a cost for you to always try to keep up with the latest version? Is this correct?

If this is correct then why are you not deciding to “lock down” your project to a specific version of Defold and never update from that version? Is it because of bugs with that version?

1 Like

It might be worth considering if users are having problems with updates and new versions (i.e “the latest update broke my game!”) or just a lack of clarity (i.e. “this works, so maybe I shouldn’t update? Or maybe it’s better to always stay up to date?”)

In the case of a lack of clarity, it might be the communicative strategy that needs work, rather than changing how you update. I find defold incredibly reliable (my use case is pretty basic) and have never had to worry about updates, etc.

This is the key question. Is there a cost? Or are you just not sure.

2 Likes

Sorry for a late response! So i tried to think about it, because maybe I raised points, that are not actually any problem, but in the end, I think what could be added is the popup window with changelog when updating Defold? What do you think? :smiley: A lot of programs have something like this, especially when there are blocking changes. This removes the cost of developers to be up to date with official channels like forum here, website or so (even if they usually do, like me).

The smaller, but more frequent release are actually a strong point for me, but I really wanted to consider why it might be bad for other devs, hence my thoughts. It happened to me few times, I was surprised by some feature change or new API version of some function I learned, but it’s not much of a cost I would say. It’s a human overlooking things rather, I guess

(Perhaps our discussion should be separated to some other thread?)

2 Likes

Yes, I totally agree! Added https://github.com/defold/defold/issues/7186

Done

4 Likes

I never had problems with Defold versions. I appreciate the new release notes format you guys are doing, pointing out exactly breaking point features and fixes, everything is clear and super easy to follow even for a no good programmer like myself.

But I missed so many features and fixes because I couldn’t keep up the updates rate. I think everything should keep the way it is but it would be nice to see a post (blog) within 3 or 6 months pointing out the features and fixes most antecipated. See, this post should not be written with the defold community in mind. It should be something really simple and that can be read by anyone. There you could set a link to the detailed release page for those really interested.

Edit: I didnt make myself clear enough. Sorry. I think we should’ve a post for example with features and fixes between big versions (e g 1.3.0 → 1.4.0) relevant to the “end users” or people that never used Defold.

4 Likes

Can’t remember where I’ve read this, but isn’t it the case that there is a limited time that the build servers support older versions? If so I’m sure the timelines are generous, but still relevant for a multi year project. Setting up your own build servers is a cost, both financial and time investment in the knowledge required.

My two cents on the topic as a whole is that I want features as soon as possible, which means I prefer the current setup.

Something that could improve is documentation of breaking changes. For example I’m sure I’ve booted up Fates of Ort after >10 releases have passed, forcing me to dig through many release notes to try to hunt down the breaking changes. Perhaps a page serving as a timeline of breaking changes.

4 Likes

Neither have I. The current quick release schedule works well for me and all the information about any changes is neatly presented to anyone who cares to take a look. After years of using Defold and dozens of updates I can’t recall anyting other than the most minor of issues caused by getting the latest builds.

Comparing this to my Unity using friends (bless them), the experience of updating their software annually sound like quite a chore. The words ‘nightmare’ and ‘trainwreck’ have been used. And it taking days or weeks to reintegrate their projects with the latest version.

6 Likes

Correct.
We generally support Defold versions up to 6 months old on the extender server.

4 Likes

Perhaps we could agree on certain Long Term Support versions which we keep around for longer?

3 Likes

Well, it doesn’t have to do with our dmSDK, but how complex we want our Dockerfile to be. Often we support 2 sdk’s for a platform during a grace period.

What you’re suggesting is having the Dockerfile grow infinitely large for all past platform sdk upgrades for all platforms (we have 9 platforms now). It will become incredibly difficult to maintain, and also lock us down so that it gets harder to update things. I don’t think that’s the way to go.

Edit: I’m also just going to add that this has been the workflow for the past 6 years, and I think 1 person has ever encountered an issue with it.

2 Likes

I like the current releases system.

But also like this comment:

It would be cool to see a table or something like that of the extensions referencing to the release. (Matching engine version and official extension version).

Defold 1.4.0

extension-spine: 2.5.0
iap: …
gpgs: …

6 Likes

While I do agree it would be nice to see the relationship between the Defold version and the extensions we update, we cannot maintain such a list for external assets.

Perhaps the extensions/libraries should have some tag system that we can parse.
E.g. when displaying the dependencies in the editor, we can show some pop up for the extension, showing the changes, and also the lowest supported Defold version.

3 Likes

The only issue I’ve had with a Defold release is when spine was removed, I thought that if I didn’t update then I would be able to continue my project without needing to get the dependency. This didn’t work and lead to a lot of confusion when my game built successfully but wasn’t playing properly.

Would it be possible to have a warning message popup if you attempt to Bundle a project letting you know that your Defold version is more then 6 months behind or if a breaking change has been released between your current version and what the build servers support? It could be a “Would you like to continue?” style message so users can continue if they do not think they are impacted

1 Like

Maybe I am doing very simple stuff but I’ve never had any problems with this. I don’t know what next-level stuff everyone else is working on!!

This would be a great idea.

Oh, hello. I really wasn’t expecting one small paragraph in my big postmortem to spin out into a separate thread. It wasn’t really intended as feedback, certainly not a request, more just a personal reflection, but sure I’ll try to expand on it.

Firstly please bear in mind that I’m talking about 6 years’ worth of Defold updates. Breaking changes may be rare, but there have been several over that kind of time frame. Also updates may now be monthly but they used to be fortnightly.

The point I was trying to make is that it isn’t clear what version of the engine the engine’s developers expect me to be using, so without any other indicators the answer is always ‘latest’. With Unity LTS there is clear communication: if you want stability use an LTS version, if you want new features use what they call ‘tech’ versions. Also, LTS versions have a clear expiry date of 2 years, after which they stop being supported but remain available. There is a clear strategy here that they explicitly describe and recommend: when you’re starting a multi-year project, start on the latest tech release and follow that, settling on whatever the newest LTS version will be that comes out during the length of your project. If you’re starting a project that will take a year or less, just use whatever the newest LTS version is at the project’s start.

Updating the Unity version of a project is a big deal, it can take days of work. But you know that going in and you only have to do it once or twice a year, so all the time spent on it is batched together. Plus they have update guides detailing all the breaking changes, so you don’t have to read thousands of largely irrelevant patch notes.

With a monthly and especially a fortnightly update schedule, there is a constant background pressure to update. Especially for an irregular hobby project, there will practically always be a new version of the engine out, and I don’t know if I’m expected to update or not.

I did eventually. Was I expected to, supposed to? I don’t know, it didn’t feel that way. Will problems arise from a project remaining on an old version of Defold? I don’t know, presumably.

Updating the version of any engine any project is running on has risks and costs. Things that are relevant to your project may be added, removed, intentionally changed, unintentionally changed, or broken. Some of those risks can be mitigated by spending more time on updating your project, which is the cost. You can take a chance and update blindly, or you can be thorough and read all the patch notes between your current version and the latest, noting all the risks relevant to your project and the things you need to check or do post-update to verify or fix them. Clearly this takes time, and it takes an increasing amount of time the longer you wait to update. Probably you could do most updates blind without issue, but you need to be doing so regularly, because otherwise when an issue does eventually occur you’ll have a hell of a time identifying where it came from if you did one big blind jump.

Btw to make my life easier I ended up having a defold-version.txt file in my project under source control so that I know what version of the engine a project is using and can see the history of what versions it used before.

Project last updated to:
Defold 1.3.0
Released 7th March 2022
https://github.com/defold/defold/releases/tag/1.3.0

At the time of release, Curious Fishing was on a version of Defold 6 months out of date. Is that a problem? I don’t know. Will that be a problem when I open the project 2 years from now? I don’t know. It would have been a year out of date but there were fixes I had requested in that version so I needed to update to it.

5 Likes

From our side of things, we strive for a process where it is safe and recommended to update whenever there is a new update.
Just like there are safe editor updates continuously (between the Defold releases).

We still consider breaking changes an exceptional event, and we don’t do it lightly. We only do it if it can be considered a necessary bug fix, or that it will help us enough by removing old problems from within the pipeline/engine so that it is worth it.

Some of the changes in the past have been more manual upgrades. In the future, we will look more into automatic migration, so that it will be even less of a hassle.

4 Likes

This is another communication difference. From the maintainer’s perspective there may be a difference between the engine and the editor but from a casual user’s perspective there isn’t. Whenever I’ve said ‘engine’ above I am talking about the combination of the engine + editor. If I open Defold and it says an update is available, that’s what I’m talking about.