Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Plugin not working with version X.0.0 #133

Open
Andersama opened this issue Feb 6, 2023 · 1 comment
Open

Plugin not working with version X.0.0 #133

Andersama opened this issue Feb 6, 2023 · 1 comment

Comments

@Andersama
Copy link
Owner

Andersama commented Feb 6, 2023

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.

@Andersama Andersama pinned this issue Feb 6, 2023
Repository owner locked and limited conversation to collaborators Feb 7, 2023
@Andersama
Copy link
Owner Author

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 free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

1 participant