Welcome to Kartones.Net Sign in

Breaking changes

In my last post, there were some comments from Olmo about breaking changes. Olmo is one of the best .NET developers I know, and he offered some very interesting ideas on how to handle them (for example, leveraging Roslyn to fix breaking changes).

Our position about breaking changes is that they are bad, very bad. We don’t want them, and we will try to avoid them as much as possible. We think it is a pain to work in a project and “fear” updating it because every time you do you have to fix your code to make it work again.

But, the reality is that breaking changes exist, and they will happen no matter how hard we try to avoid them. While we have used Wave in-house quite a lot, we are so used to it that we can miss issues that would be glaring for someone starting with it without prior knowledge. For example we have had a new person using it for building demos, and we got very interesting feedback from him. I am sure that when we release this situation will repeat itself a lot.

So, our idea so far in this front is to do something similar to how the XNA team performed their releases: try to avoid breaking changes in minor releases unless it’s a very important issue, but there will be major releases where we will put in all the minor changes we did not add to avoid breaking things. Not every major release will have to be like that, sometimes a release will just add support to a new platform, add new capabilities to the engine because of platforms evolution,… But we will do our best to not break things on minor updates so people can work on their projects confident that they will not have to lose time because of an upgrade.

Published 11 June 2012 07:09 by Vicente
Filed under:

Comments

# Breaking changes

11 June 2012 08:07 by Miemblogs

In my last post, there were some comments from Olmo about breaking changes. Olmo is one of the best

# re: Breaking changes

11 June 2012 08:18 by Kartones

If you don't want breaking changes, don't develop a new version :P

The only way I know of avoiding them is that one, else you have to go for the path of either versioning (so everyone accepts that non-minor version changes might break stuff) or like .NET extending more horizontally (new assemblies extending or replacing old ones).

As long as you document every breaking change I don't see it bad, it's in the nature of a Framework/API to mutate as time goes by.

You get the choice of update to the newer version, spending some effort in changes, or keeping the old one (which will probably work for years) and missing out new stuff.

# re: Breaking changes

11 June 2012 19:30 by Vicente

Hehehe, it is true you can't avoid breaking changes. But you can decide how to deliver them.

If the breaking change is something not critical (a nice improvement on the API, but not a must), do you think it is better to put it out asap or wait and pack several of those breaking changes together?

# re: Breaking changes

12 June 2012 21:56 by Kartones

That depends on the speed you want to release new versions...

Google usually introduces breaking changes only on major version changes. Microsoft ups .NET from 0.5 to 0.5 sometimes...

At work, our internal API goes from 0.1 to 0.1, and many frameworks go for that approach to (to sometimes introduce breaking changes in sub-versions).

I would say that until you have commercial usage of it, go for breaking if you want. Once you start selling licenses, then slow down or extend instead of mutate to not hurt them, but use major versions to introduce really needed breaking changes (or huge improvements).

# re: Breaking changes

13 June 2012 04:27 by Vicente

Sounds like a very reasonable approach, not much to add to it :) If I was using a third library project I would like things to move like that too.

# re: Breaking changes

14 February 2013 14:28 by Den

Roslyn only allows sharing code samples for now.

PS: what makes Wave better then Unity? Will you go open-source?

# re: Breaking changes

14 February 2013 20:14 by Vicente

Hi Den!

let's be honest, Unity3D is very good, very mature project :)

But it's also quite pricy for some people. We are not charging anything for Wave, or forcing a shared revenue model (like UDK),... We will also release a good part of the source code for free (not all, that may change in the future).

So, given that it's free with nothing attached to it, I would say people lose nothing for trying it and testing if it fits their needs :)

Speaking technologically, we are more code-oriented than Unity (which is more tool-oriented I would say). First because we don't have (yet) a visual editor, and also because the API was designed for code-first. So probably coders will feel more comfortable with it than with Unity, while designers will gravitate more towards Unity.

Does that help? Regards!

Vicente

# re: Breaking changes

15 February 2013 10:27 by Den

@Vicente

Yeah, I have a feeling that Unity "reduces" programmers to designers. Having an alternative is always nice. I wonder what will be your revenue model then :). Also I won't be able to just release to iPhone, I'll need to buy $400+ MonoTouch, right?

# re: Breaking changes

15 February 2013 19:57 by Vicente

I can answer most technical questions about Wave, but the business side it's not something I'm the best person to talk about (I'm not really involved there).

About Monotouch, you are correct, we use it to run on iOS. Same with Monodroid for Android. For Windows 8, WP8 and Desktop we use SharpDX so no problems there.

Regards!

Vicente

Leave a Comment

(required ) 
(required ) 
(optional )
(required ) 

Captcha