April 03, 2005

Progress or backwards compatibility?

Posted at April 3, 2005 09:28 PM in BitWise .

Unless we're working on a "major" release of BitWise (e.g. the last major release was 1.0 last year), we've always tried to ensures that everything is backwards-compatible. That is, someone running 1.0.4 can chat with someone running 1.0.1 and not have any problems (unless the feature is altogether missing from 1.0.1, of course). However, 1.0.4 will have two non-backwards compatible changes to the whiteboard. Here are the two non-compatible changes:

1) Previously, resizing a whiteboard image changed the original image. Therefore, if you reduced the image by 50% and then expanded it by 200%, you would end up with an image the same size as the original, but it would be pixelated from being reduced. In 1.0.4, images are always stored at their original size and only displayed based on the resize factor, so that if you resize an image to 50% and then to 200%, you end up with a double-sized image based on the original image size (and no pixelization). However, someone whiteboarding with you using an older version would see the image at its original size and pixelated from the loss of data.

2) Duplicating a whiteboard object used to re-send all of the information: starting location, color, ending location, etc. This usually wasn't a big deal except in the case of images; the entire image would be resent. Instead, 1.0.4 duplicates objects by sending a command "duplicate item X," thus eliminating the need to retransmit any of the details about the item. If I'm using 1.0.4 and you are using an older version, you would not see the items that I duplicate because your client does not understand this new duplicate command.

It is quite clear that these changes make the whiteboard a more powerful and efficient tool. Is this progress worth the loss of backwards compatibility, or is backwards compatibility more important than these new features? This is an important issue and the discussion here could affect BitWise's future adherence to compatibility or forging ahead with non-compatible changes.

Comments

I'm one of those people who doesn't like upgrading software unless I want a specific feature that is not in my current version. I believe if my program does the job I need it to, there is no reason to get a newer version of it.

In this case, if I were to have an older version of BitWise, I would not really be affected, everything on my end would seem the same as before. So it is not like I am losing a feature because version 1.0.3 featureX is not compatible with version 1.0.4 featureX. I still have the feature that works as usual, but the person using 1.0.4 has the improved version of it.

I think that the loss of backwards compatibility is 100% worth it when it comes to improving the software.

Posted by Sonic_Molson at April 3, 2005 07:52 PM

Progress.. It isn't very hard to update to a newer version.. And if the features dont work at all.. you can always do what MSN does and simply display a message "the user is using an older version, and this feature will not work with them".

Posted by Matthew at April 3, 2005 08:13 PM

Backwards compatability is good to a degree, but progress demands that it be abandoned eventually.

There will be always new techniques, new features, new ideas, new methods. These must be embraced in order to evolve, and sometimes this means breaking compatability. The only question is when to make these changes and how to make them to least impact the users of older versions.

Sometimes good design can minimize the impact of these changes, but sometimes a fundamental change is required that may not have even been reasonable to foresee when the original spec. was created.

In this case, both these changes are very evidentally a good idea, and their impact is pretty minimal; I cannot see any problem with doing them at all.

Posted by S at April 4, 2005 12:38 AM

Just to be clear, in the case of the change to the duplication, it wouldn't work just like before for the user using a 1.0.3 whiteboard with a 1.0.4 user; if the 1.0.4 user duplicates an item, the 1.0.3 user wouldn't see it AT ALL on his/her whiteboard. So there is a possible negative impact here. A message could be displayed, but that would probably be more pain than it's worth to implement. "Most" users upgrade quickly, and probably not a huge number of people regularly use the whiteboard anyway.

If this non-compatible change affected something more core, like text chat, then it wouldn't be so easy to make. As it is... someone can ask in tech support why it doesn't work and we can tell them. :)

Posted by Kevin at April 4, 2005 06:10 PM
Posting of new comments has been disabled for this post.