Skip to content
Ian Keough edited this page Apr 27, 2016 · 3 revisions

As of Dynamo 1.0, Dynamo has gone to semantic versioning. This will enable us to guarantee the following:

  • Zero touch libraries created for version 1.0 will continue to work in 1.x.x.
  • NodeModel implementations created for version 1.0 will continue to work in 1.x.x.
  • Extensions created for 1.0 will continue to work in 1.x.x.
  • Our dependency versioning is consistent with NuGet.

The following rules of thumb will aid you in making the right decisions when discussing and developing new functionality and refactoring.

Internal Developers:

  • You must not change the namespace of a type.
  • You must not remove a type, method, or property.
  • You must not rename a type, method, or property.
  • You can add a type, method, or property.
  • You can move a type to a different assembly as long as the type's namespace remains the same.
  • You can mark a method or property as obsolete. When doing so, be sure to provide a message referencing the replacement functionality.

External Contributors:

  • You can choose to develop only against x.0.0 releases which have a stable API. This guarantees compatibility with the version of Dynamo that you advertise, but does not allow you to access APIs introduced in 1.x.x releases.
  • If a new API is available, you can use reflection to test whether the API exists. You can then implement conditional logic to call the new API if it is available, or call the stable API. This will ensure that your code works with the new API AND the old API.
Clone this wiki locally