<div dir="ltr"><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Aug 30, 2016 at 9:26 PM, Paolo Cavallini <span dir="ltr"><<a href="mailto:cavallini@faunalia.it" target="_blank">cavallini@faunalia.it</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-">Il 30/08/2016 18:58, Anita Graser ha scritto:<br>
> Hi,<br>
><br>
> Is there anything on the plugin repo wiki page that we still need? I<br>
> reviewed it and it seems pretty much outdated:<br>
> <a href="http://hub.qgis.org/projects/quantum-gis/wiki/PluginRepository" rel="noreferrer" target="_blank">http://hub.qgis.org/projects/<wbr>quantum-gis/wiki/<wbr>PluginRepository</a><br>
><br>
> It also mentions "trusted" users, which causes confusion with our<br>
> current effort to establish trusted plugin authors. (See comment<br>
> in <a href="http://gis.stackexchange.com/questions/203116/what-does-the-trusted-flag-mean-for-qgis-plugins" rel="noreferrer" target="_blank">http://gis.stackexchange.com/<wbr>questions/203116/what-does-<wbr>the-trusted-flag-mean-for-<wbr>qgis-plugins</a>)<br>
><br>
> I suggest deleting the wiki page.<br>
<br>
</span>+1<br>
Thanks Anita for raising this.<br></blockquote><div><br></div><div><br></div><div><div class="gmail_default" style="font-size:small">​I'll move on and delete it. Bellow, you find the content for future reference:​​</div></div><div class="gmail_default" style="font-size:small"><br></div><div><div class="gmail_default" style="font-size:small">​---------------------------------------------------------------​</div></div><div><br></div><div></div></div><div class="gmail_default"><span style="font-size:small">​</span>This is the entry point for those interested in working on the plugin repository. The plugin repository is a django application. The source code for the application is hosted on github:</div><div class="gmail_default"><br></div><div class="gmail_default"><a href="https://github.com/qgis/qgis-django">https://github.com/qgis/qgis-django</a></div><div class="gmail_default"><br></div><div class="gmail_default">If you would like write access to the above repository, please contact Tim Sutton (<a href="mailto:tim@linfiniti.com">tim@linfiniti.com</a>).</div><div class="gmail_default"><br></div><div class="gmail_default">Note the repository was changed from a personal repository to a community one - please note the new url above.</div><div class="gmail_default"><br></div><div class="gmail_default"><br></div><div class="gmail_default">h2. The pieces </div><div class="gmail_default"><br></div><div class="gmail_default">* <a href="http://plugins.qgis.org">http://plugins.qgis.org</a> - the upload and download app</div><div class="gmail_default">* <a href="http://hub.qgis.org">http://hub.qgis.org</a> the bugtracker for the plugins</div><div class="gmail_default">* <a href="http://hub.qgis.org/projects/qgis-django/issues">http://hub.qgis.org/projects/qgis-django/issues</a> the bugtracker for the webapp</div><div class="gmail_default"><br></div><div class="gmail_default"><br></div><div class="gmail_default">h2. Version 1.0 </div><div class="gmail_default"><br></div><div class="gmail_default">This section lists wanted features for the first version of the plugin repository. Once everything is on its place, we can probably switch from the original repository now hosted at <a href="http://pyqgis.org">pyqgis.org</a> and require all the plugin developers to upload the plugins to the new repository. From that time, no more public 3rd party repositories will be encouraged - everyone should be happy to use the official repository :-)</div><div class="gmail_default"><br></div><div class="gmail_default">For easy usage of the repository, a command line tool (supposedly a python module) should be provided with qgis that will upload new plugin version, given just the package file, changelog and username/password. Later we could even create a plugin for convenience with simple GUI for instant publishing.</div><div class="gmail_default"><br></div><div class="gmail_default">List of views and actions in the plugin repository application:</div><div class="gmail_default">* views for registered users:</div><div class="gmail_default">** list my plugins</div><div class="gmail_default">** plugin details with editing (remove incorrect upload, delete plugin, add owner etc.)</div><div class="gmail_default">* actions for registered users:</div><div class="gmail_default">** add plugin / edit plugin</div><div class="gmail_default">** upload new plugin version</div><div class="gmail_default">* views for all users:</div><div class="gmail_default">** list plugins (main page)</div><div class="gmail_default">*** show either featured (default) or all plugins</div><div class="gmail_default">*** show plugins of a particular user</div><div class="gmail_default">*** sorting: recently added/updated, most downloaded</div><div class="gmail_default">** show plugin details</div><div class="gmail_default">** repository xml compatible with original repository</div><div class="gmail_default"><br></div><div class="gmail_default">Notes:</div><div class="gmail_default">* user authentication - osgeo LDAP should be used (no more new logins please!), using HTTPS so that the passwords are not visible (see <a href="http://packages.python.org/django-auth-ldap/">http://packages.python.org/django-auth-ldap/</a>)</div><div class="gmail_default">* there is always one or more owners for a plugin, any owner of a plugin can add new people as co-owners. Only owners are allowed to upload new versions, edit or completely remove a plugin. If the owner of a plugin disappears, a new owner could be assigned for the plugin by the admins</div><div class="gmail_default">* download counts</div><div class="gmail_default">** downloading of plugin packages should be redirected in order to calculate download count directly (without accessing web server stats)</div><div class="gmail_default">* featured plugins</div><div class="gmail_default">** admins might want to mark interesting (and well behaving) general purpose plugins as featured to make them more visible from the less interesting ones</div><div class="gmail_default">* trusted users</div><div class="gmail_default">** a simple protection from malicious users: everyone is at the beginning marked as untrusted, the uploaded plugins are not visible until an admin doesn't review the code and mark the user as trusted. Plugins uploaded by trusted users are immediately visible - this still leaves some space for malicious users (first upload something good, get trusted, then upload something bad), however we don't have resources to check all the updated plugins. Malicious users - once detected - get blocked forever.</div><div class="gmail_default">* plugin uploading: user should only select a file for upload and provide a changelog - the rest should be handled on the server</div><div class="gmail_default">* plugin versioning: for each plugin, the entire release history will be kept. By default users will see only the last version. For plugins that make distinction between development (experimental?) and stable versions, there should be an option when uploading the plugin whether that is a development version. The owner should be able to mark also manually which version is the last stable and last development (experimental) version.</div><div class="gmail_default">* upload checks</div><div class="gmail_default">** check that the uploaded file has an acceptable size (e.g. < 1MB)</div><div class="gmail_default">** check that the uploaded file is valid zip archive</div><div class="gmail_default">** check that the plugin exists, user is owner of the plugin, this version does not exist yet, ...</div><div class="gmail_default">** parse plugin metadata and update the plugin details from it: nowadays the plugins store metadata in __init__.py file, but it has been suggested to migrate them to a separate text file (so that both repository and plugin manager in qgis will have easier work). Of course a compatibility python method should be kept in __init__.py file that would create the metadata info from the text file. Syntax of the metadata file should be user-readable and editable (i.e. no XML!), probably the best choice will be the format used in "ConfigParser":<a href="http://docs.python.org/library/configparser.html">http://docs.python.org/library/configparser.html</a> Python module.</div><div class="gmail_default"><br></div><div class="gmail_default">Preliminary suggested table structure (incomplete):</div><div class="gmail_default">* users: owner_id, name, mail, trusted  (connected to "LDAP":<a href="http://packages.python.org/django-auth-ldap/">http://packages.python.org/django-auth-ldap/</a>?)</div><div class="gmail_default">* plugins: plugin_id, name, description, last_version, last_update_time, create_time</div><div class="gmail_default">* plugin_versions: plugin_id, version, upload_time</div><div class="gmail_default">* plugin_owners: plugin_id, owner_id</div><div class="gmail_default"><br></div><div class="gmail_default"><br></div><div class="gmail_default">h2. Version 2.0 </div><div class="gmail_default"><br></div><div class="gmail_default">* categories/tagging of plugins - "django-tagging":<a href="http://code.google.com/p/django-tagging/">http://code.google.com/p/django-tagging/</a> or "django-taggit":<a href="http://github.com/alex/django-taggit/">http://github.com/alex/django-taggit/</a></div><div class="gmail_default">* user rating (no registration) - "django-simple-ratings":<a href="http://github.com/coleifer/django-simple-ratings">http://github.com/coleifer/django-simple-ratings</a> ?</div><div class="gmail_default">* download charts (?)</div><div class="gmail_default">* searching - "django-haystack":<a href="http://github.com/toastdriven/django-haystack/">http://github.com/toastdriven/django-haystack/</a> ?</div><div class="gmail_default">* "ponies!":<a href="http://djangopony.com/">http://djangopony.com/</a></div><div class="gmail_default">* for each plugin, a link to its original repo (default to a standard repo)</div><div class="gmail_default">* for each plugin, a link to its bugtracker (for now, <a href="http://hub.qgis.org">http://hub.qgis.org</a>)<span style="font-size:small">​</span></div><br></div><div class="gmail_extra"><br></div></div>