You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is for anyone confused as to why plugins stopped working with new versions of their software. I'm leaving this here because this repository is a prime example.
First to cover the basics, OBS (and many other software) follows the semantic versioning system, this provides a slight hint as to how significant changes have been made to the underlying code.
The pattern goes like this major.minor.patch where whenever a significant enough change occurs the lower digits are reset. This provides fairly straightforward way of determining if you're on the latest version of a piece of software as the numbers should be strictly increasing. It's an incredibly intuitive system, with one incredibly unintuitive catch.
If patch increases usually the change is pretty insignificant, perhaps a bug or several have been fixed but the underlying functionality is the same, for the most part hoping between patches should be seamless unless the code changed specifically impacted you already.
If minor has changed there's been a fair amount of change, a new feature likely has been added. In most cases a bump to a new minor version may be a good sign to update, as each new minor version may include new utilities which help you in some way. There are likely a number of patches along for the ride.
When major has been changed, as the name gives away a lot has changed. So far there's a relatively straightforward pattern, the bigger the number the better the software. It's got less bugs and more features (probably faster too etc etc...). But here is where the pattern breaks a major revision increase means (normally) that there may be breaking changes. Whatever fixes, new features (or removals) or patches could have been significant enough that the underlying code may not function the same way at all. Unlike minor and patch which are otherwise assumed to be backwards compatible with lower versions, major is not.
How does this impact plugins? Plugins like these are compiled against a particular version of their target application where target system has provided a specific API. An API here means a list of functions which must be provided for the plugin to work. When compiled there is an underlying ABI (how the function parameters are used and more complicated things) which the API will follow but for the sake of simplicity we'll say there's a specific API. In this case the plugin system has a small, but not exactly thorough check to verify that what appears to be a plugin appears to use the current version's API. If that check fails it simply ignores the plugin because if it were to continue there's no telling what could happen.
A breaking change to the plugin's system, whether to it's API or ABI will deserve a major version bump, because quite simply, NONE of the previously built plugins will work with the newer version (unless there's specifically code added to handle multiple APIs). In short a major version bump may mean that plugins stop functioning.
This is the counter intuitive aspect of semantic versioning, a change to the major part of the version number may mean things just don't work. That is of course until the code is recompiled against the new version.
The text was updated successfully, but these errors were encountered:
I realize I forgot to clarify a solution here, for anyone who skimmed or got lost, be sure to download the most relevant recent release. EG: For obs version 28.x.x, download a version of the plugin which mentions being compatible with 28.x.x. Some plugin versions may work for even later obs versions as the plugin abi may not have been modified.
Sign up for freeto subscribe to this conversation on GitHub.
Already have an account?
Sign in.
This is for anyone confused as to why plugins stopped working with new versions of their software. I'm leaving this here because this repository is a prime example.
First to cover the basics, OBS (and many other software) follows the semantic versioning system, this provides a slight hint as to how significant changes have been made to the underlying code.
The pattern goes like this
major.minor.patch
where whenever a significant enough change occurs the lower digits are reset. This provides fairly straightforward way of determining if you're on the latest version of a piece of software as the numbers should be strictly increasing. It's an incredibly intuitive system, with one incredibly unintuitive catch.If
patch
increases usually the change is pretty insignificant, perhaps a bug or several have been fixed but the underlying functionality is the same, for the most part hoping between patches should be seamless unless the code changed specifically impacted you already.If
minor
has changed there's been a fair amount of change, a new feature likely has been added. In most cases a bump to a new minor version may be a good sign to update, as each new minor version may include new utilities which help you in some way. There are likely a number of patches along for the ride.When
major
has been changed, as the name gives away a lot has changed. So far there's a relatively straightforward pattern, the bigger the number the better the software. It's got less bugs and more features (probably faster too etc etc...). But here is where the pattern breaks a major revision increase means (normally) that there may be breaking changes. Whatever fixes, new features (or removals) or patches could have been significant enough that the underlying code may not function the same way at all. Unlikeminor
andpatch
which are otherwise assumed to be backwards compatible with lower versions,major
is not.How does this impact plugins? Plugins like these are compiled against a particular version of their target application where target system has provided a specific API. An API here means a list of functions which must be provided for the plugin to work. When compiled there is an underlying ABI (how the function parameters are used and more complicated things) which the API will follow but for the sake of simplicity we'll say there's a specific API. In this case the plugin system has a small, but not exactly thorough check to verify that what appears to be a plugin appears to use the current version's API. If that check fails it simply ignores the plugin because if it were to continue there's no telling what could happen.
A breaking change to the plugin's system, whether to it's API or ABI will deserve a
major
version bump, because quite simply, NONE of the previously built plugins will work with the newer version (unless there's specifically code added to handle multiple APIs). In short amajor
version bump may mean that plugins stop functioning.This is the counter intuitive aspect of semantic versioning, a change to the
major
part of the version number may mean things just don't work. That is of course until the code is recompiled against the new version.The text was updated successfully, but these errors were encountered: