ITK/Backward Compatibility Open Discussion

From KitwarePublic
Jump to navigationJump to search

The topic of backward compatibility has generated animated discussions among users and developers.

We gather here multiple points of view from some of the influential users and developers.

The content of this page is not intended to be conclusive on any of the proposed topics. It simple intends to gather elements of discussion that will serve as food-for-thought.

Main Discussion Topics

Discussion Topics

  1. Deprecation of classes / method. When to deprecate, and how to deprecate.
  2. Drawing the line where fixing a bug will result in backward compatibility breaks.
  3. Cathedral/Bazar: How much burden to put on new contributions to the toolkit.
    1. Is the Insight Journal + Code Review directory a process that is too burdensome.
  4. When can we require additional effort from users to update their code for using new versions of ITK ?
    1. Never
    2. Once a year
    3. Once every five years
  5. How far back in time should we maintain backward compatibility (relates to the previous topic)
    1. Today's version should be compatible with ITK version from N years ago
      1. 1 year ?
      2. 2 years ?
      3. 5 years ?

Position Statement 1 (Luis Ibanez)

Topic A

Topic B

Topic C

Position Statement 2 (Bill Lorensen)

Topic A

Topic B

Topic C

Position Statement 3 (Steve Pieper)

This is primarily a policy discussion, and so the central issue is how to effectively communicate with users of the toolkit about what they get when they use a particular piece of code. The general policies could be summarized as:

  • Different things should have different names.
  • Similar things should have similar names.
  • If two things have the same name, you can assume they will behave the same.

A way to interpret this is that if you come up with non-backwards compatible version of an algorithm, you should give it a new class name, like MyFilter2, rather than relying on the toolkit version number to indicate that it is different. Deprecation warnings at compile time can inform the developer that MyFilter is out of date. Dropping support for deprecated classes should happen when the toolkit itself gets a new name (like ITK4 instead of ITK3). Developers can choose when to migrate to a new class and/or a new version of the toolkit.

Topic A

Topic B

Topic C

Position Statement 4

Topic A

Topic B

Topic C

Position Statement 5

Topic A

Topic B

Topic C

Background Links