So we’re almost ready to release v2.0-dev-13 which I’m considering as a release candidate for v2.0 since there are no more planned changes to the API.
I’m wanting to get feedback on a proposed system for plugin versions. This effects the autoloader and manual plugin loader, and also how plugin files are named.
Plugin tab
Currently the plugin tab filters out plugins it thinks can’t be loaded by parsing the version in the filename. The proposal is to get rid of that and just display all the plugins it finds. This way you, as the user, can decide which one to manually load.
The downside is that if you go back and forth between incompatible versions a lot, and you are doing a lot of manual plugin loading (not using the auto-loader) then you’ll just need to scroll past a lot more to get to the right one. To make that easier, you could put them on separate SD cards or something. Or, one thing we could add is to have a plugin folder convention, like metamodule-plugins-v2
will only be seen my firmware v2.
Autoloader
Right now the autoloader attempts to parse the versions and pick the latest one that it thinks is compatible. However, this is not worked out to be totally accurate and is a point of confusion during development.
The proposal here is to make the autoloader more dumb. It will just sort the plugins by version (using SemVer) and attempt to load the latest plugin version it finds.
For example, if the autoloader scans all the disks and finds:
SupaPlug-v1.2-beta7.mmplugin
SupaPlug-v0.1.mmplugin
SupaPlug.mmplugin
SupaPlug-v0.9-dev-13.mmplugin
SupaPlug-v0.9-dev-12.mmplugin
Then it will attempt to load the one with v1.2 because that’s the latest version. If it fails to load this one, then it will not try any more.
We might add a feature to make it try more versions until one succeeds. (e.g. next it will try v0.9-dev-13, then v0.9-dev-12, then 0.1, then the one with no version).
Plugin file name
The proposal here is to require plugins to be named like this:
[BrandSlug]-v[plugin-version]-[sdk-version].mmplugin
The plugin-version
is anything the plugin developer wants to use to keep track of updates/bug fixes, as long as it starts with a -v
and is in SemVer form (e.g. 1.2, or 1.2.3, or 1.2.3-beta-2)
The sdk-version
is either -fw-X.Y
for officially released firmware, or -dev-Z
for development firmware. The difference between the two is we keep dev firmware plugins more hidden on the webpage since the firmware they run on is not yet considered stable enough.
E.g, there might be a release for official firmware and the latest dev firwmare like this:
Plugin-v1.2-dev-12.mmplugin
Plugin-v1.2-fw-1.6.mmplugin
The file name is important so you can look at a .mmplugin file you downloaded and (1) know if it’s later or earlier than the one you already have by looking at the -v
part, and (2) know if it will run on the firmware you’re using, by looking at the -fw-X.Y
or -dev-ZZ
part.
Strictly speaking, if you read carefully above how the manual plugin page and the autoloader work, then you’d see that these version strings aren’t necessary to run a plugin on the MetaModule. But they are necessary for the plugin to be released on our plugin webpage since our script uses that information to know where to place the plugin, and to make sure we’re linking to the latest versions.
Any feedback on this is welcome, from users or plugin devs. There may be some use case we’ve left out or are missing!
More info on releases is here: