Idea: Addon Manager

I was wondering today about how feasible something like this is: A system that allows you to download and install an addon with the click of a button, as well as tell you if an update is available to something you already have installed and update that with one click as well.

It would theoretically use the SVN/Git collection of trunk and contrib* addons and periodically check if an update to those already in Blender is available. Additionally, it would fetch an external database of Addons that are not a part of trunk or contrib and show an entry for each of these just like any other addon, only instead of an ‘Enable’ check-box, you’d have a ‘Download and Install’ button.

This would fetch the addon from the server, downloading it to a temporary place, and install it for you. Simple yeah?

That much is easy, in fact it’s literally 3 lines of code. The problem with this idea is maintainability and flexibility. The whole point of it is to show a repository of addons from external sources, since trunk addons are already there and updated every release, and contrib ones come with most graphicall and build bot builds – however we still have to somehow control what addons are in this repository, allowing anyone and everyone to add to it would be messy and a serious security risk (imagine you enable a cool looking addon that promises a one-click character rig, only to find its a piece of malware with a keylogger).

Someone has to maintain this repository personally, which leaves the question  of how best to do this with minimal regular effort? You could update it only once a week perhaps, but you still need a way to automatically go through the database of scripts and find out which has a newer version available. This means that for each addon you’ll need some custom method of checking for new versions, some developers will update the same file on a server, while others might increment a number and leave the old file in place (auto_tile_size_release_03.py for example)

(mockup)

(mockup)

I’m not the first to have this idea. Campbell wrote a primitive one a while ago, and Gaia Clary apparently as well. They encountered the same problems. The script itself is trivial, the maintainability is not.

I don’t often like to publicize these mad ideas of mine, they don’t normally lead to much, but this time I’d like to ask if you have any suggestions for me – how can I do this simply and only have maybe 20 minutes work per week on maintaining a database of addons? Should I store the addons on my own server, or rely on the original source? Perhaps only include those in the external column of the wiki page? What about asking developers to contribute to this repository and update it each time they release a new version? If so, how best would we combat low quality addons and potential security issues?

The UI mockup at the top of this post is a quick one – I’d still need to handle categories and such, and I might as well edit the existing UI instead of creating my own.

* The Trunk set of addons are those included in Blender by default, stuff like importers and the very useful ones such as Looptools and Node Efficiency Tools. The Contrib set is a collection of addons not included in the official release of Blender, but still officially approved by Blender devs and can be trusted that they’re pretty darn good.