Jump to content
Ultimaker Community of 3D Printing Experts
smartavionics

Cura stability - the argument for an LTS release cycle

Recommended Posts

Hi,

Here's a hot topic... let's see what people think.

As a contributer to Cura, I am pleased that users can try out new features and provide feedback due to the regular releases of Cura. But not everyone wants to try out the latest and greatest features/bugs as they are actually more interested in stability. I use Cura to create parts for my business and so I understand very well people's requirements for a stable version of the software that you know will work (with whatever limitations it may have reliably). I use the development version of Cura and it does get broken but, for me, it is normally no hardship to rewind back to a working version. I appreciate that not everyone is in the position to do that.

So I think that Ultimaker should give serious consideration to changing their Cura release regime so that those people who want stability can have it and those who want to live on the edge can do so.

I can think of two examples of software products that allow users to choose between stability and new features:

Ubuntu Linux - produces feature releases every 6 months and LTS (Long Term Support) releases every 2 years (I think, whatever, it's a long time).

Google chrome browser - has 3 release branches (dev, beta and stable) stable still gets updated fairly frequently but not as much as the other branches.

Personally, I strongly believe that Cura should be released using the LTS model, i.e. once an LTS release has occurred, only critical bug fixes will trigger a new release on that branch. The more frequent feature releases can then be the incubation environment for new features, etc. When new features and other changes have been proven to be sufficiently stable and worthwhile, they could be incorporated into the next LTS release.

My overriding rational here is that the vast majority of users are more interested in stability and basic print quality than having new features.

Please discuss politely.

Cheers,

Mark

Edited by Guest
  • Like 6

Share this post


Link to post
Share on other sites

I agree with the idea of an LTS release, but it may not be quite as easy as it sounds.

From experience working on Cura 2.1 through Cura 2.3 with the team, and on all the releases since then as an external contributor, I know that solving some bugs that may seem fairly innocent from the outside turn out to require fairly big architectural changes. These bugs would not be solved in the LTS release.

Having different release branches is going to require more man-hours at Ultimaker. It is not just about maintaining two branches, which can diverge quite a bit over the LTS period, but also about testing each release before it goes out. Having LTS releases means more releases in total, so more load on the already overloaded testing team.

Having multiple branches to maintain can also lead to confusion about what fixes are in what branch. As an example I can name a couple of fixes that were made to the development branch of Cura well before Cura 3.0 was released that were simply forgotten to be included in the 3.0 releases (yes, all 5 of them) because the 3.0 branch had already been split off.

I am not saying these issues can not be overcome (and I personally think they should be overcome), but giving a couple of arguments from the outside why this is not going to happen overnight.

  • Like 3

Share this post


Link to post
Share on other sites

All good points. I don't think for one moment that it would be easy to move to an LTS release cycle. However, something has to be done to avoid the current situation where every time a new Cura release is made there's a possibility of something getting broken or being incompatible with a previous release. It can't be said that hasn't happened in the last couple of releases, because I know for a fact that it has.

If I was an Ultimaker customer that had shelled out for one of their nice machines, I would be very unhappy if I upgraded to the latest feature release only to find that I couldn't achieve the same quality of output that I could previously.

  • Like 3

Share this post


Link to post
Share on other sites

Interesting question and thank you for opening it up here @smartavionics. I'm curious to hear how our users think about it. I think it is clearly a topic with many different opinions. (and a difficult one too!) I have the impression that Aldo's feedback was mainly fuelled by technical limitations, which is a good and realistic perspective but not necessarily what would be best from a users perspective. (who probably doesn't care much about those reasons). Following Mark's perspective, they want reliability instead.

There is definitely pros and cons on both sides, and technical/organizational reasons that favor one over the other. For example, with this speed of innovation it is also not easy to create documentation that explain (new) features about Cura. Things can get outdated quickly and change in general.

Personally, I am split between the two. But if I would have to choose I think for now the fast innovations are necessary for Cura to grow and gain more value, and perhaps we have to try to minimize or accept the downsides of this. I realize 'necessary' is different from what you might 'want' as a user, but I guess the necessity outweighs the want-factor in this case (in my opinion). (which is kinda in line with Aldo's rationale).

Share this post


Link to post
Share on other sites

Although as a hobbyist a bug here and there doesn't hurt me, I think a split in stable and innovative releases makes a lot of sense. Even for the non business people it's nice to have a stable version for sort off critical work. Assuming one can run the latest versions next to the stable versions one would have the best of both worlds.

I assume many people already try to achieve this currently by keeping older version in use, a "proven" stable version would be helpful.

Ultimately it would be more interesting what ultimaker's business customers think about this...

  • Like 1

Share this post


Link to post
Share on other sites

I know you never expected that, but I work with Ubuntu ...

and for almost 10 years now. And that's why I can only agree with the idea with the LTS model! It is extremely comfortable to have a stable LTS version that works reliably for me. but it is also very cool to be able to access a very up-to-date, if not quite as stable version, if I need a newer feature.

Share this post


Link to post
Share on other sites

I expect it would mean that we lose about 25-50% of our development time if we were to start supporting a LTS version of Cura.

A user does care about technical perspective, as it simply means that it will come at a cost. It's easy to say that one wants all the features, you want it stable and you want it done yesterday, but that's not how it works (unfortunately). Aldo is making a pretty valid point that it will come at a cost (a pretty high one at that). So in order to make a good decision, people need to ask themselves; Is it worth that much?

  • Like 1

Share this post


Link to post
Share on other sites

If Ultimaker makes *very* sure that all Cura-versions can work parallel, also early developer versions, without influencing each other's settings, then doesn't that solve the problem? When they are installed in totally different directories, based on version number and sub-numbers? I think this is already the case, although I don't know about the very early experimental versions?

Then you can just keep a couple of the most stable older versions on your system for production. And you can freely experiment with all new features in the nightly builds, and give feedback.

A version that is stable enough for my production models, might crash or miss an important feature for someone else. And vice-versa. So anyone can keep a couple of "good-enough" old versions in parallel on his system, as his "personal stable branch".

The advantage is that the newer features get tested well in the field, and that no extra manpower is required to maintain and develop several old branches in parallel.

  • Like 1

Share this post


Link to post
Share on other sites

Fortunately (at least for Linux), having multiple versions doesn't seem to be a major issue as they are currently self-contained.  And even if they weren't, it wouldn't take a whole lot to setup Docker containers if needed (mainly drive space - I have a 480G SSD and my Ubuntu 16.04 Desktop takes ~18G with a lot of extras I have installed).

 

Having worked on Ubuntu directly for 3 years, I can tell you that it is really a LOT different to maintain an LTS OS than a single product like Cura, mainly in favor of the OS.  Most of the apps are maintained upstream and a lot now have their own LTS tracks (including several stable kernel branches).  Not to say that Ubuntu doesn't have their work cut out for them as they currently support two LTS releases, a development release, and a 'next' release that receives active development.  Figure ~60-80% workload on new development, and the rest on support.  For a large community, this is not a problem.

 

I don't know how many active + community developers Cura has (I would venture to guess it is less than 30).  Figure it would take 10-15% more to be able to backport bug fixes and then test them for any kind of maintained LTS tree.  The hard part is the testing.  True SW validation takes resources and skills different from most development disciplines.  And even then, bugs get through.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Terms of Use Privacy Policy