Granted: I don't understand some of the licencing issue etc or even the coding impact of the following, but 2 cents is still 2 cents - so here's mine...
Why can't there just be a section of server space dedicated to holding the API code directly at Roll20 (instead of outer sources like GitHub). When a person would like to use any specific API, they go to a page of categories and open folder or something - Then they could possibly have a list and select check-boxes on the ones they want used in their campaign. Instead of uploading a copy of the same API over possibly thousands of campaigns, have a single version that can run in multiple instances from one set of codes.
Example (under campaign details/API selection)
(Checkboxes or radio buttons) | Version | Title | System | Author | Catagory | Brief description | # users |
@ | 1.0 | MassInit.js | Any | SomeDude | Combat / Tracker | Allows initiative rolls for multiple selected tokens | ??? |
@ | 3.6 | TurnTracker.js | Any | AnyGuy | Combat / Tracker | Highlights active token from Init Tracker | ??? |
O | F | RollEffects.js | D&D3.5 | CodeMan | Dice Roll Handling | Selects random effects following Critical or Fail rolls | ??? |
O | 2.1 | CharSheetPopulate.js | Pathfinder | GMGod | Character Sheets | Populates blank character sheets to create NPCs | ??? |
O | | Etc | Etc | Etc | Etc | Etc | Etc |
Or possibly having it similar to now, but from the central location (as long as the script title is the exact same as in the campaigns) there could be an update push to get the changes made from behind the scenes. Or maybe upload the current version to the campaign temporarily when the campaign is actively launched and gone when there are no people logged into it.
Either of these options would be able to track which APIs are being used and by how many for the scriptwriters to focus/cater better to the users. Maybe allow the users to sort by popularity (or whichever column). There may be scripts out there with abilities they don't even know about but if many are using it, they might see it and not even realize some cool option existed.
Not sure how campaign specific customization would work, unless you went with the option of getting pushes and perhaps only offered a notice of possible upgrade with a option to follow through or stay with current. (I don't know how many out there are going in and tweaking pre-made coding that would cause them to want to keep an old version going)
This would make it so when a script gets updated, users would get a update to use instead of some not having a bug fix or upgrade due to not knowing one was available (unless the notify version and they chose to keep the older version).
Or should this be moved over to Suggestions?