Plugins vs Extensions
Hi,
I am reviewing the ability extending/adding optional functionality to MuseScore 3.1 and was wanting to know what is the difference between plugins and extensions? I can't seem to find any information on extension development and the difference between each.
Comments
A plugin is code you can write and install to perform tasks on user command. So, for instance, you could write a plugin that goes through all the notes in a score and, say, changing sforzato accents to marcato. Actually I have no idea if that is specifically possible, but that's the kind of thing a plugin can do - provide a new command a user can execute from a menu.
An extension does not involve code. It is just a set of palettes, templates, soundfonts, instrument definitions, and user interface settings (toolbar configuration, etc) that can be easily installed together. Palettes and user interface settings can be collected into "Workspaces" (like the Basic and Advanced workspaces that come with MuseScore), so you could have different workspaces for Basic Drum, Intermediate Drum, etc, each containing different palettes and toolbars.
There is no specific documentation I am aware of on creating extensions, and I'm not sure how "supported" the interface is, but all of the things I mentioned are things MuseScore supports individually, and the extension is basically just a ZIP file containing them all. If you open the MDL extension in a ZIP program, you'll see pretty much everything there is to know about them. So mostly, you focus on actually creating the templates, palettes, etc, then you worry about zipping them up.
"Official" extensions are provided by MuseScore as downloads that can be installed Help / Resource Manager, but it's possible to create your own that you install yourself by just dragging and dropping the extension fie into MuseScore.
In reply to A plugin is code you can… by Marc Sabatella
That's an abuse of the term "extension", AFAIAC. Those are "saved environments,", "preconfigured environments" or similar. Can you cite other applications/products that use the term in this way?
In reply to A plugin is code you can… by Marc Sabatella
Not offhand, but I also can't name more than a handful that use the term in any other way, nor can I think of any that do define something like our facility to see what term they use (I'm not aware of any using the terms you invented). And, some day it's conceivable the extension mechanism would include plugins as well, and then it would be functionally identical to other programs I can think of. So I can't really see how this slight limitation can be considered 'abuse"?
In reply to Not offhand, but I also can… by Marc Sabatella
When I used the term many years ago in a commercial product of which i was the designer/implementor, the term meant user-written code, in whatever appropriate language, that would be executed in a constrained environment, extending the product to do what it couldn't do before (e.g., new commands), not so different from "plugins" here, not merely a saved set of settings.
In reply to When I used the term many… by [DELETED] 1831606
You can throw in "add-on", too, as a member of this set whose boundaries are contentious. See discussions of Firefox.
In reply to When I used the term many… by [DELETED] 1831606
Sounds like you co-opted the term "extension" to mean what everyone else calls a "plugin". Which is fine, but not everyone uses the terms synonymously.
In reply to Sounds like you co-opted the… by Marc Sabatella
That was 30+ years ago. No one called it "plugin". You have co-opted it to mean "saved environment".
In reply to That was 30+ years ago. No… by [DELETED] 1831606
To be clear: we are not the only ones who use the term extension to include things like collections of templates, palettes, and toolbar settings. In fact, that's pretty much industry standard in 2019, if not in 1989. The only thing that might be unusual - and what I thought you were referring to - was the fact that in our model, plugins are currently excluded from the collection. This may well change, though, as a result of the work being done for GSoC.
In reply to To be clear: we are not the… by Marc Sabatella
Actually, it was 1979 -- 40 years ago.
In reply to To be clear: we are not the… by Marc Sabatella
Python uses extensions to refer to user-coded C plus plus (not going to fall into that trap again!) code added to the interpreter (via DLLs/.so's). Firefox https://addons.mozilla.org/en-US/firefox/ "Extensions are just like apps that you add to your browser."
In reply to Python uses extensions to… by [DELETED] 1831606
Chrome, too, uses "Extensions" to mean functional code.
In reply to Chrome, too, uses … by [DELETED] 1831606
Do any of those programs even have anything like palettes, soundfonts, templates, or customizable user interface components? A better comparison is LibreOffice, which uses the term virtually the same way we do, except that, as I indicated, they don't exclude plugins from consideration, and probably in the near future we won't either. So is it really worth worrying about?
In reply to A plugin is code you can… by Marc Sabatella
Excellent, thanks Marc !
I have been creating my own custom Palettes and adding Symbols to them however how does one assign a specific Symbol to a type for example the "Half Open" symbol as an Articulation symbol?
When i use the symbol it has none of the properties of the other articulation symbols in the library.
The same goes for repeats amongst other ones. (play last 2 bars and play last 4 bars)
In reply to Excellent, thanks Marc ! I… by bachomp
Only the default articulations have definitions. You have to write code to add a new articulation that works. :(
In reply to Only the default… by mike320
code in ms core or in the "extension" instrument xml definition file ?
In reply to code in ms core or in the … by bachomp
You must change the program.