[MonoDevelop] Ideas for an addin manager
lluis at ximian.com
Sun Jul 3 18:37:21 EDT 2005
One of the good things of MD addins is that in most of cases they can be
implemented in fully managed code, which means that the same binary can
be safely distributed to any platform that runs MD. I'm writing here
some ideas about how could we take advantage of this.
>From the user's point of view, I envision the following features:
* A dialog shows a list of addins installed in MD.
* The addins can be enabled / disabled.
* When the user enables an addin, MD checks that the dependencies
of that addin are installed in the system, and shows an error
message if they are not.
* Addins can be downloaded from internet. There is a list of
addins which are available for download. The list is taken from
a repository of addins. The user can register new repositories
by just adding new urls.
* Addins downloaded from internet can be easily updated when a new
version is published.
Now some technical notes:
* Enabling/disabling of addins would require restarting MD. Doing
it on the fly would be really hard to implement with the current
* We need a way of specifying the dependencies of an addin in a
* An addin may depend on other addins.
* Because of the previous point, MD should take care of making
sure that addins can find the addin assemblies they depend upon.
* Some addins will have uncommon unmanaged dependencies, which
will need to be installed by using whatever system it's Linux
distribution is based on. This new addin management system would
not be so useful in this case, but I think that there are many
other cases in which it would be really useful.
* If an addin only has managed dependencies (for example, the boo
compiler), an option would be to package those dependencies
together with the addin.
* A repository of addins could be something as simple as an XML
file with the list of addins (and its dependencies and versions)
together with gziped assemblies.
* There would be an "official" MD repository of addins, with the
optional addins we are not currently shipping.
Any comment about this?
BTW, I don't think I'm going to implement this at short term, so if
people agree that something like this is needed and somebody has some
free time, feel free to take it, it shouldn't be too difficult to do,
and looks like fun ;-)
More information about the Monodevelop-list