Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.Sign up
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 X.0 will continue to work in X.y.z.
- NodeModel implementations created for version X.0 will continue to work in X.y.z.
- Extensions created for X.0 will continue to work in X.y.z.
- 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.
- 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.
- For more .Net API breaking changes, you can refer to this S.O. post.
- 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 later 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.