I have been using django and django-cms lately and I know Spyder is not a framework (like django is), but would it make sense to provide some decoupling of a spyder base and the different plugins so that they could be pip installable and maybe easier to maintain?
I am right now in the process of adding a conda package manager plugin but I have been thinking of other plugins that could make work easier in many other fields/directions that could leverage on a core. On the long run when Spyder moves to github (which is something that is almost agreed on as I understand) and hopefully more contributors jump on board we should make it easier to develop spyder and plugins for spyder.
Making all the plugins live inside the main repo will make in the future spyder much harder to maintain (or at least more annoying?). Just as Django has a ton of packages that enhance functionality and play (in theory) nicely together, and depend on spyder, could we make something on this direction happen maybe by doing a bit of metaclassing to simplify the definition of plugin base classes?
Right now there is a compatibility library for py2 and py3 that lives within spyder but there is also 'six' so if six takes care of that spyder does not have to....
We could have something like
pip install spyder-plugin-conda
pip install spyder-plugin-x
pip install spyder-plugin-y
and spyder should be able to autodiscover this plugins and allow for enabling or disabling them (dialog...)
Spyder plugins should be able to run by themselves (but depend on other modules inside spyderlib or even by separating modules from spyder that deal with this, the 'six' example...)
We could even have something like spyder-qtwidgets or whatever and have a set of widgets defined in there.
I am also aware there are few developers/contributors right now and this seems like a daunting move, but in the long run I think it would pay off tremendously as plugins can be maintained by their own developers, without having the core of spyder contributors worry about this, except for having a clear and hopefully not so volatile plugin-api.
Cheers