qgis / QGIS-Enhancement-Proposals

QEP's (QGIS Enhancement Proposals) are used in the process of creating and discussing new enhancements for QGIS
117 stars 37 forks source link

Policy and standards for plugins in QGIS 3.0 #93

Open timlinux opened 7 years ago

timlinux commented 7 years ago

QGIS Enhancement: Policy and standards for plugins in QGIS 3.0

STATUS: DRAFT

Date 2017/04/02

Author Tim Sutton (@timlinux)

Contact tim@qgis.org

maintainer @timlinux

Version QGIS 3.x

Summary

In QGIS 3.0 we will 'clean house' and provide our users with a cleaner, more cohesive QGIS. This proposal ponders the future of plugins within QGIS 3.0.

Some proposed guidelines:

Cleaning house

Here follows a proposed list of eEssential plugins (Python):

And proposed essential plugins (c++) - should become core functionality:

Possible candidates for removal C++ plugins

*For the resource sharing plugins we should:

Moving forward

My proposal for progressing this QEP is this:

Backwards Compatibility

None

Issue Tracking ID(s)

None

Votes

None

nyalldawson commented 7 years ago

@timlinux is this about included plugins or all plugins (including repo ones)?

timlinux commented 7 years ago

Hi @nyalldawson - sorry I was saving as I went along - perhaps reload the page to see a more complete transcript.

timlinux commented 7 years ago

@timlinux is this about included plugins or all plugins (including repo ones)?

@nyalldawson I would say generally it applies mainly to those plugins shipped with QGIS - but we would also like to clarify the process of when and how a plugin can move out of a plugin repo and in to core.

alexbruy commented 7 years ago

@timlinux which Routing pluign do you mean? If you are talking about RoadGraph, it is already removed.

Also personaly I think that CSW support should be not a plugin, but a core feature like other OGC services. This even more important with ongoing work on metadata support in QGIS.

elpaso commented 7 years ago

Each plugin should be under maintainership of a developer

Totally agreed, this seems so obvious to me that I'd not even though of writing it down, but if you want to, I wonder why the plugins should be treated differently from the rest of the code.

I mean, that if a developer develops and commits a cool new feature in core, shouldn't this be taken as an implicit commitment to maintain it? At least for a reasonable amount of time.

I don't see the need to make a distinction for the plugins, even if they are probably easier to isolate from the rest of the core contributions, that tend to spread over different areas of the code.

tomchadwin commented 7 years ago

Python plugins which become popular features and are in core should be considered as candidates for being ported to C++ […] Legitimate reasons for maintaining the plugin as python code could include: […]

  • any others?
timlinux commented 7 years ago

@elpaso wrote:

Totally agreed, this seems so obvious to me that I'd not even though of writing it down, but if you want to, I wonder why the plugins should be treated differently from the rest of the code.

I mean, that if a developer develops and commits a cool new feature in core, shouldn't this be taken as an implicit commitment to maintain it? At least for a reasonable amount of time.

I don't see the need to make a distinction for the plugins, even if they are probably easier to isolate from the rest of the core contributions, that tend to spread over different areas of the code.

Yes you are right this should be an implicit requirement for any new code contributed to QGIS. I think it is always worthwhile to reinforce the message though.

borysiasty commented 7 years ago

@timlinux you mentioned the Plugin Manager. For a few years it's in core, not a plugin. Actually, do we really need to keep the 'core plugins' as plugins? I guess it's confusing for users some plugins are not deinstalable. I'd rather see them fully merged with the code base, like it's now with the PuginManager (c++ classes) and PyPluginInstaller (Python package). The main advantage of keeping them as plugins is the possibility to disable unwanted or crashing ones. But is it really so important? It's just my 2 cents, I believe you investigated it deeper during the meeting.

timlinux commented 7 years ago

@timlinux you mentioned the Plugin Manager. For a few years it's in core, not a plugin.

@borysiasty ooops - I was aware of that :-P

Actually, do we really need to keep the 'core plugins' as plugins? I guess it's confusing for users some plugins are not deinstalable. I'd rather see them fully merged with the code base, like it's now with the PuginManager (c++ classes) and PyPluginInstaller (Python package).

Yeah this is one of the points I was trying to make - if we ship something as part of core, it should not be a 'plugin' but just 'enabled and working' as per any other feature of QGIS core.

timlinux commented 7 years ago

@borysiasty following from your comments above, I added a section to the proposed way forward:

timlinux commented 7 years ago

@tomchadwin wrote:

lack of C++ knowledge in the maintainer of the Python plugin, and no C++ able/prepared to take ownership

Yes good example, Ill add it to the QEP thanks.

timlinux commented 7 years ago

@alexbruy wrote:

@timlinux which Routing pluign do you mean? If you are talking about RoadGraph, it is already removed.

Thanks I removed it from the list.

Also personaly I think that CSW support should be not a plugin, but a core feature like other OGC services. This even more important with ongoing work on metadata support in QGIS.

I agree 100%! Thanks for your comments.

borysiasty commented 7 years ago

@timlinux - great. The list is getting shorter :)

Btw. the split between c++ PluginManager and Python's PyPluginInstaller may be a good* example of porting most code to c++ and only leaving python-related stuff in Python (your fifth point).

*) maybe not good, but at least just an example ;)

manisandro commented 7 years ago

This might be a good moment to send an update concerning globe: I've upstreamed patches to osgQt (https://github.com/openscenegraph/osgQt/pull/3) and osgEarth (https://github.com/gwaldron/osgearth/pull/890) to allow distributions to ship side-by-side installable packages for osgQt4/osgQt5 and osgEarthQt4/osgEarthQt5. This is a precondition for distros to even be able to ship osgEarthQt5, since there are still some osgQt4 users out there. I also did some initial work to get the globe compiling again (https://github.com/manisandro/QGIS/commit/3ad287b7c38e7c07ffd427b12d2952a29e28ffdb). Unfortunately the big blocker at the moment is that osgEarth simply seems to be broken when used with Mesa drivers (at least, Intel, which I tested against). I posted upstream [1] but got no reaction so far. I would not like to write off the globe plugin and still plan to invest some time to get it to work, but it won't happen immediately (though clearly I know the freeze is approaching).

And while I'm at it, I'm currently doing some heavy work on the geometry checker at the moment to support for checking multiple layers at once resp. for the topology checks to work on multiple layers.

[1] http://forum.osgearth.org/osgEarth-2-8-on-mesa-intel-td7590671.html