<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Hi<br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On 05 Oct 2017, at 10:09, David Marteau <<a href="mailto:dmarteau@3liz.com" class="">dmarteau@3liz.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi,<div class=""><br class=""></div><div class="">Thanks for the overview. </div><div class=""><br class=""></div><div class="">We need more examples of embedding the server in python and I plan to publish some concrete examples from our use cases asap.</div></div></div></blockquote><div><br class=""></div><div>Thats great David! Looking forward to testing it out. Can you maybe publish your examples in the python cookbook?</div><div><br class=""></div><div>Regards</div><div><br class=""></div><div>Tim</div><br class=""><blockquote type="cite" class=""><div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><br class=""></div><div class="">David M.</div><div class=""><div class="">
<div style="letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""></div>
</div>
<br class=""><div class=""><blockquote type="cite" class=""><div class="">Le 5 oct. 2017 à 09:34, Alessandro Pasotti <<a href="mailto:apasotti@gmail.com" class="">apasotti@gmail.com</a>> a écrit :</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class=""><div class=""><div class="">Hi Règis,<br class=""><br class=""></div>thanks for the nice summary!<br class=""><br class=""></div>Maybe it would be interesting for python devs to stress out how QGIS server 3 brings the bindings and the plugins to a new level: while the original filter-style python plugins, are still available, the new service-oriented plugin-based architecture allows Python developers to create new services (for example WPS) by implementing a new `QgsService` directly in Python. Overriding existing services is also possible.<br class=""><br class=""></div>The server API has now full python bindings and a QGIS server can be easily implemented directly in Python and wrapped into your favourite framework (see this simple wsgi experiment: <a href="https://gist.github.com/elpaso/0cd7fb6a0518dc46c45557d9133438b8" class="">https://gist.github.com/elpaso/0cd7fb6a0518dc46c45557d9133438b8</a> ).<br class=""><br class=""><div class="">For more examples of the API, I think there are some basic examples in the official Python tests: <a href="https://github.com/qgis/QGIS/blob/master/tests/src/python/test_qgsserver_services.py#L79" class="">https://github.com/qgis/QGIS/blob/master/tests/src/python/test_qgsserver_services.py#L79</a> <br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><div class=""><div class="">Cheers<br class=""></div><div class=""><br class=""><br class=""><br class=""><br class=""></div></div></div></div><div class="gmail_extra"><br class=""><div class="gmail_quote">On Wed, Oct 4, 2017 at 10:49 PM, Régis Haubourg <span dir="ltr" class=""><<a href="mailto:regis.haubourg@gmail.com" target="_blank" class="">regis.haubourg@gmail.com</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="">Well, from a user point of view, that's a bit hard since all this is 90 % refactoring.. which is supposed to be transparent for users. <div class=""><br class=""></div><div class="">We have the trust and multithreaded features, that should (and early testers today found it slower today) and the ability to code new services using python.   </div><div class="">We can also show some numbers about OGC conformity tests and the goal of reaching OGC certification (WMS only by now). </div><div class=""><br class=""></div><div class="">Alessandro, René-Luc and David, do you have some user oriented examples for the new modular API ? </div><div class=""><br class=""></div><div class=""><br class=""></div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br class=""><div class="gmail_quote">2017-10-04 22:18 GMT+02:00 Anita Graser <span dir="ltr" class=""><<a href="mailto:anitagraser@gmx.at" target="_blank" class="">anitagraser@gmx.at</a>></span>:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class=""><div class="gmail_default" style="font-size:small">Great overview, thanks for drafting Régis!</div><div class="gmail_default" style="font-size:small"><br class=""></div><div class="gmail_default" style="font-size:small">Some additional ideas: Could we add a section with the key improvements from an user perspective? </div><div class="gmail_default" style="font-size:small"><br class=""></div><div class="gmail_default" style="font-size:small">I'm particularly intrigued by the services / plugins part. Could you elaborate?</div><div class="gmail_default" style="font-size:small"><br class=""></div><div class="gmail_default" style="font-size:small">Regards,</div><div class="gmail_default" style="font-size:small">Anita</div><div class="gmail_default" style="font-size:small"><br class=""></div><div class="gmail_default" style="font-size:small"><br class=""></div></div><div class="m_6468191216600627376HOEnZb"><div class="m_6468191216600627376h5"><div class="gmail_extra"><br class=""><div class="gmail_quote">On Wed, Oct 4, 2017 at 9:42 PM, Régis Haubourg <span dir="ltr" class=""><<a href="mailto:regis.haubourg@gmail.com" target="_blank" class="">regis.haubourg@gmail.com</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="">Hi again, <div class="">here is my very first draft:</div><div class=""><br class=""></div><div class=""> Several images can be pulled from the joined slides given at Foss4G-EU here <a href="https://drive.google.com/file/d/0BzatQbprJ-hjWF95VzdHbGRsVEk/view?usp=sharing" target="_blank" class="">https://drive.google.com/file/<wbr class="">d/0BzatQbprJ-hjWF95VzdHbGRsVEk<wbr class="">/view?usp=sharing</a> </div><div class=""><br class=""></div><div class="">René-Luc, David, Paul, don't hesitate to amend that!</div><div class=""><br class="">------------------------------<wbr class="">------------------------------<wbr class="">------------------------------<wbr class="">--<br class=""><br class=""><b class="">Qgis server refactoring is done!<br class=""></b><br class="">As you may know, QGIS is jumping to a new major version (yes!).  <br class="">Doing so was made necessary because of the need to switch to python 3, QT5, but also because we needed to break the QGIS API in several places. </div><div class=""><br class="">A year ago, a <a href="https://github.com/qgis/qgis3.0_api/issues/63" target="_blank" class="">tiny troll </a>from switzerland rang a bell about the strong need for love server code base required. </div><div class=""><br class=""></div><div class="">Indeed, the API was locked by some old methods of QGIS server. In short, QGIS server was reparsing the qgs project file in his own way, and created dependencies to part of QGIS we needed to drop.</div><div class="">   <br class="">As outsourcing the server code base was not an option, so we had to refactor it. <br class=""><br class="">The involved parties decided to get engaged in a <a href="https://github.com/qgis/QGIS/wiki/QGIS3---QGIS-Server-code-sprint-Notes" target="_blank" class="">code sprint</a> in the city of Lyon , France dedicated to sharing their vision, planning the work and finally making all the <a href="https://github.com/qgis/QGIS-Enhancement-Proposals/issues/74" target="_blank" class="">following</a> happen :</div><div class=""><br class=""><br class=""><b class=""># Deep, complex and unrewarding tasks:<br class=""></b><div class=""><br class=""></div><div class="">- Remove all singleton calls</div><div class=""><br class=""></div><div class="">- Cut all the dependencies to the old qgis project parser</div><div class=""><br class=""></div><div class="">- Minimize dependencies to GUI library. Since fonts are necessary to render maps, totally removing them was not feasable. </div><div class=""><br class=""></div><div class=""><b class=""># Higher level refactoring</b></div><div class=""><br class=""></div><div class="">All services (WMS GetMap, WFS GetFeature, GetLegendGraphics, WCS, GetPrint etc..) have been rewritten. Some like WMS were entirely rewritten. Kudos to the dev's</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><b class=""># New features and architecture stuff</b></div><div class=""><br class=""></div><div class="">- QGIS Server Services as plugins like providers. <font style="background-color:rgb(255,217,102)" class="">(slide 10 would be a nice figure here)</font> </div><div class=""><br class=""></div><div class="">- <a href="https://github.com/qgis/QGIS/pull/3886" target="_blank" class="">Multi-thread rendering </a>- like in the desktop</div><div class=""><br class=""></div><div class="">- A new option to <a href="https://github.com/qgis/QGIS/pull/5094" target="_blank" class="">trust layer metadata</a> and speed up project loading</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><b class=""># Infrastructure tasks</b></div><div class=""><br class=""></div><div class="">- <a href="http://oslandia.com/en/2017/06/16/qgis-server-ogc-cite-compliance-testing/" target="_blank" class="">Build a OGC compliancy platform</a> and integrate it to a continuous integration platform. Conformity reports are now pushed to <a href="http://tests.qgis.org/" target="_blank" class="">tests.qgis.org</a> <i style="background-color:rgb(255,217,102)" class="">XXX waiting for Richard to expose them in the website</i></div><div class=""><i style="background-color:rgb(255,0,0)" class=""><br class=""></i></div><div class="">- Add unit tests... and again more unit tests</div><div class=""><br class=""></div><div class="">-<a href="http://oslandia.com/en/2017/06/14/qgis-server-security-aspect/" target="_blank" class=""> Stress QGIS server against security leaks</a> (SQL injections and other malicious attacks)</div><div class=""><br class=""></div><div class="">- Start profiling and bench marking performances. This work still need some love - and funding - to be achieved</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">A <a href="https://git.osgeo.org/gogs/foss4g-europe/foss4g-europe-2017-paris/src/master/presentations/2017-07-20/general_track/foss4g-europe-2017-QGIS_3_Refactoring_and_enhancement-DMarteau-PBlottiere.pdf" target="_blank" class="">presentation</a> was given at FOSS4G-EU in July. <br class=""></div><div class=""><br class=""></div><div class=""><b class="">Congratulations</b> to the developers who worked hard on that work. </div><div class=""><br class=""></div><div class="">Now this deserves to be well tested, please report back any issues!</div><div class=""><br class=""></div><div class=""><br class=""></div></div></div><div class="m_6468191216600627376m_-2738169971533867791HOEnZb"><div class="m_6468191216600627376m_-2738169971533867791h5"><div class="gmail_extra"><br class=""><div class="gmail_quote">2017-10-04 15:17 GMT+02:00 Anita Graser <span dir="ltr" class=""><<a href="mailto:anitagraser@gmx.at" target="_blank" class="">anitagraser@gmx.at</a>></span>:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class=""><div class="gmail_default" style="font-size:small"><br class=""></div><div class="gmail_extra"><br class=""><div class="gmail_quote"><span class="">On Wed, Oct 4, 2017 at 1:23 PM, Régis Haubourg <span dir="ltr" class=""><<a href="mailto:regis.haubourg@gmail.com" target="_blank" class="">regis.haubourg@gmail.com</a>></span> wrote:<br class=""></span><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="">Hi <div class=""><br class=""></div><span class=""><div class="">Yes, refactoring is now complete! see : <a href="https://github.com/qgis/QGIS-Enhancement-Proposals/issues/74#issuecomment-334123595" target="_blank" class="">https://github.com/qgis/QGIS-E<wbr class="">nhancement-Proposals/issues/74<wbr class="">#issuecomment-334123595</a></div><div class=""><br class=""></div><div class="">Anita, I'll draft an article tonight if you still agree to review it, that would be great!</div></span></div></blockquote><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><div style="font-size:small" class="gmail_default">​Sure!</div><span class="m_6468191216600627376m_-2738169971533867791m_302750179668053183HOEnZb"><font color="#888888" class=""><div style="font-size:small" class="gmail_default"><br class=""></div><div style="font-size:small" class="gmail_default">Anita</div></font></span></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""> </div></div><br class=""></div></div>
</blockquote></div><br class=""></div>
</div></div></blockquote></div><br class=""></div>
</div></div></blockquote></div><br class=""></div>
</div></div><br class="">______________________________<wbr class="">_________________<br class="">
QGIS-Developer mailing list<br class="">
<a href="mailto:QGIS-Developer@lists.osgeo.org" class="">QGIS-Developer@lists.osgeo.org</a><br class="">
List info: <a href="https://lists.osgeo.org/mailman/listinfo/qgis-developer" rel="noreferrer" target="_blank" class="">https://lists.osgeo.org/<wbr class="">mailman/listinfo/qgis-<wbr class="">developer</a><br class="">
Unsubscribe: <a href="https://lists.osgeo.org/mailman/listinfo/qgis-developer" rel="noreferrer" target="_blank" class="">https://lists.osgeo.org/<wbr class="">mailman/listinfo/qgis-<wbr class="">developer</a><br class=""></blockquote></div><br class=""><br clear="all" class=""><br class="">-- <br class=""><div class="gmail_signature" data-smartmail="gmail_signature">Alessandro Pasotti<br class="">w3:   <a href="http://www.itopen.it/" target="_blank" class="">www.itopen.it</a></div>
</div>
_______________________________________________<br class="">QGIS-Developer mailing list<br class=""><a href="mailto:QGIS-Developer@lists.osgeo.org" class="">QGIS-Developer@lists.osgeo.org</a><br class="">List info: <a href="https://lists.osgeo.org/mailman/listinfo/qgis-developer" class="">https://lists.osgeo.org/mailman/listinfo/qgis-developer</a><br class="">Unsubscribe: <a href="https://lists.osgeo.org/mailman/listinfo/qgis-developer" class="">https://lists.osgeo.org/mailman/listinfo/qgis-developer</a></div></blockquote></div><br class=""></div></div>_______________________________________________<br class="">QGIS-Developer mailing list<br class=""><a href="mailto:QGIS-Developer@lists.osgeo.org" class="">QGIS-Developer@lists.osgeo.org</a><br class="">List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer<br class="">Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer</div></blockquote></div><br class=""></body></html>