I’m curious if anyone has novel ideas for how to handle extensions / plugins in publicly shared projects. Do you just mention them in the README and leave downloading and installation to the users? It seems possible to include releases within the project and have a script that moves them to the user extensions directory - that would probably be less intimidating, but are there license or other obstacles? Is there something else I’m missing (I haven’t been building general projects for a few years)? In the absence of standalone options, there’s a barrier for non SC users that I’d like to keep as low as possible.
It is a weak point of SC. Having them place things in the Extensions folder is the sure-fire way for things to work.
The following is a different solution. Maybe someone has a better/newer solution to this.
There are some versions of SC this doesn’t work on, and I don’t remember which. Maybe that has been fixed. Probably was Windows.
I put all the files in one folder and have them put it on their desktop or wherever is easy for them.
If they are using the IDE, open SuperCollider->Preferences and add the folder to the Interpreter->Include list (this is so that SC can see the Class files).
Then File->Open startup file and manually assign the ugensPluginsPath (where SC looks for the .scx and .so files), making sure to keep the Extensions folder and SuperCollider app plugins in the list, and then adding the folder, wherever it is:
Server.local.options.ugenPluginsPath = [
thisProcess.platform.classLibraryDir.dirname+/+“plugins”,
“~/Library/Application Support/SuperCollider/Extensions/”.standardizePath,
“the path to your folder”.standardizePath,
];
This avoids them having to deal with the Extensions folder. But I think maybe it didn’t work on Windows. Or wasn’t working in 3.13 in Windows. I don’t remember.
Sam
Thanks. I was thinking something a little different.
Like, use .unixCmd to cp from an extensions folder in the repo to their Platform.userExtensionDir, then write a little file to say that this was done and doesn’t need to be done again. Could do a check first to not overwrite extensions that are already installed. I think that this works on all platforms, but not sure if there would be permissions issues on some systems.
So, power users can just install as normal, noobs can run the little init script and just restart SC.