<div dir="ltr"><div class="gmail_default" style="font-size:small"><div style="font-size:12.8px">I've extended Régis' draft with some of the more recent information. Please let me know what you think. I'll try to publish in a couple of days.</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">-- start --</div><div style="font-size:12.8px"><b><br></b></div><div style="font-size:12.8px"><b>QGIS server refactoring is done!<br></b><br>As you may know, QGIS is jumping to a new major version (yes!). 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. (<a href="http://blog.qgis.org/2016/02/10/qgis-3-0-plans/">http://blog.qgis.org/2016/02/10/qgis-3-0-plans/</a>) </div><div style="font-size:12.8px"><br>A year ago, a <a href="https://github.com/qgis/qgis3.0_api/issues/63" target="_blank">tiny troll </a>from switzerland rang a bell about the strong need for love server code base required. <span style="font-size:12.8px">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.</span></div><div style="font-size:12.8px"> <br>As outsourcing the server code base was not an option, so we had to refactor it. 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">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">following</a> happen:</div><div style="font-size:12.8px"><div><br></div><div><b>Higher level refactoring</b></div><div><br></div><div>All services (WMS GetMap, WFS GetFeature, GetLegendGraphics, WCS, GetPrint etc..) have been rewritten. Some like WMS were entirely rewritten. Kudos to the devs!</div><div><br></div><div><b style="font-size:12.8px">New features</b><br></div><div><br></div><div style="font-size:12.8px">- <a href="https://github.com/qgis/QGIS/pull/3886" target="_blank">Multi-thread rendering</a> like in the desktop</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px"><span style="font-size:12.8px">- A new option to </span><a href="https://github.com/qgis/QGIS/pull/5094" target="_blank" style="font-size:12.8px">trust layer metadata</a><span style="font-size:12.8px"> and thus speed up project loading</span><br></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px"><span style="font-size:12.8px">- WFS 1.1 support <a href="https://github.com/qgis/QGIS/pull/5297">https://github.com/qgis/QGIS/pull/5297</a> </span><br></div><div style="font-size:12.8px"><span style="font-size:12.8px"><br></span></div><div style="font-size:12.8px">- Full Python bindings for the server API</div><div style="font-size:12.8px"><br></div><div><span style="font-size:12.8px"></span>- Server Services as plugins like providers</div><div><br></div><div><img src="cid:ii_15f2bbc5aa5c8316" alt="Inline image 1" width="530" height="374"><br></div><div><br></div><div><b style="font-size:12.8px">Deep, complex and unrewarding tasks<br></b><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">- Remove all singleton calls</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">- Cut all the dependencies to the old QGIS project file parser</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">- Minimize dependencies to GUI library. Since fonts are necessary to render maps, totally removing them was not feasable. </div></div><div><br></div><div><b style="font-size:12.8px">Infrastructure tasks</b><br></div><div><br></div><div>- <a href="http://oslandia.com/en/2017/06/16/qgis-server-ogc-cite-compliance-testing/" target="_blank">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">tests.qgis.org</a> </div><div><i style="background-color:rgb(255,0,0)"><br></i></div><div>- Add unit tests ... and again more unit tests</div><div><br></div><div>-<a href="http://oslandia.com/en/2017/06/14/qgis-server-security-aspect/" target="_blank" style=""> Stress QGIS server against security leaks</a> (SQL injections and other malicious attacks)</div><div><br></div><div>- Start profiling and bench marking performances. This work still need some love - and funding - to be achieved</div><div><br></div><div><br></div><div>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">presentation</a> was given at FOSS4G-EU in July. <br></div><div><br></div><div><b>Congratulations</b> to the developers who worked hard on that work. </div><div><br></div><div>Now this deserves to be well tested, please report back any issues!</div></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Oct 13, 2017 at 9:50 AM, René-Luc Dhont <span dir="ltr"><<a href="mailto:rldhont@gmail.com" target="_blank">rldhont@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF">
And I'm waiting to add WFS 1.1.0 support:<br>
<a class="m_8992617653487631691moz-txt-link-freetext" href="https://github.com/qgis/QGIS/pull/5297" target="_blank">https://github.com/qgis/QGIS/<wbr>pull/5297</a><br>
<br>
Regards,<br>
René-Luc<div><div class="h5"><br>
<br>
<div class="m_8992617653487631691moz-cite-prefix">Le 13/10/2017 à 08:58, Régis Haubourg a
écrit :<br>
</div>
<blockquote type="cite">
<div dir="ltr">Hi Anita,
<div><br>
</div>
<div>among the news, Paul is currently tackling OGC conformity
issues. </div>
<div>see :</div>
<div><a href="https://github.com/qgis/QGIS/pull/5044" target="_blank">https://github.com/qgis/QGIS/<wbr>pull/5044</a></div>
<div><a href="https://github.com/qgis/QGIS/pull/5084" target="_blank">https://github.com/qgis/QGIS/<wbr>pull/5084</a><br>
</div>
<div><a href="https://github.com/qgis/QGIS/pull/5145" target="_blank">https://github.com/qgis/QGIS/<wbr>pull/5145</a><br>
</div>
<div><a href="https://github.com/qgis/QGIS/pull/5150" target="_blank">https://github.com/qgis/QGIS/<wbr>pull/5150</a><br>
</div>
<div><a href="https://github.com/qgis/QGIS/pull/5157" target="_blank">https://github.com/qgis/QGIS/<wbr>pull/5157</a><br>
</div>
<div><a href="https://github.com/qgis/QGIS/pull/5303" target="_blank">https://github.com/qgis/QGIS/<wbr>pull/5303</a><br>
</div>
<div><br>
</div>
<div>We still have some harder issues due to crashes of the OGC
testing platform. </div>
<div><br>
</div>
<div>All tests are made using the "basic" level test (see <a href="http://cite.opengeospatial.org/teamengine/about/wms/1.3.0/site/" target="_blank">http://cite.<wbr>opengeospatial.org/teamengine/<wbr>about/wms/1.3.0/site/</a>) </div>
<div><br>
</div>
<div>When all will be green at this level, we'll run the
platform with the other testing levels so that we have a good
overview of our path for a full conformity of WMS 1.3. </div>
<div><br>
</div>
<div>We'll prepare a dedicated blog post toi describe what were
the issues and what we did to fix them. </div>
<div><br>
</div>
<div>Cheers!</div>
<div>Régis</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">2017-10-12 22:56 GMT+02:00 Anita Graser
<span dir="ltr"><<a href="mailto:anitagraser@gmx.at" target="_blank">anitagraser@gmx.at</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">
<div class="gmail_default" style="font-size:small">Thanks
everyone so far! Please keep the info coming. I'll draft
a blog post on the weekend.</div>
<div class="gmail_default" style="font-size:small"><br>
</div>
<div class="gmail_default" style="font-size:small">Regards,</div>
<div class="gmail_default" style="font-size:small">Anita</div>
</div>
<div class="m_8992617653487631691HOEnZb">
<div class="m_8992617653487631691h5">
<div class="gmail_extra"><br>
<div class="gmail_quote">On Thu, Oct 5, 2017 at 9:34
AM, Alessandro Pasotti <span dir="ltr"><<a href="mailto:apasotti@gmail.com" target="_blank">apasotti@gmail.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">
<div>
<div>
<div>Hi Règis,<br>
<br>
</div>
thanks for the nice summary!<br>
<br>
</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>
<br>
</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" target="_blank">https://gist.github.com/elpaso<wbr>/0cd7fb6a0518dc46c45557d913343<wbr>8b8</a>
).<br>
<br>
<div>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" target="_blank">https://github.com/qgis/QGIS/b<wbr>lob/master/tests/src/python/te<wbr>st_qgsserver_services.py#L79</a>
<br>
</div>
<div><br>
</div>
<div><br>
</div>
<div>
<div>
<div>Cheers<br>
</div>
<div><br>
<br>
<br>
<br>
</div>
</div>
</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">
<div>
<div class="m_8992617653487631691m_862687194349826397h5">On Wed,
Oct 4, 2017 at 10:49 PM, Régis Haubourg <span dir="ltr"><<a href="mailto:regis.haubourg@gmail.com" target="_blank">regis.haubourg@gmail.com</a>></span>
wrote:<br>
</div>
</div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div>
<div class="m_8992617653487631691m_862687194349826397h5">
<div dir="ltr">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><br>
</div>
<div>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>We can also show some numbers
about OGC conformity tests and the
goal of reaching OGC certification
(WMS only by now). </div>
<div><br>
</div>
<div>Alessandro, René-Luc and David,
do you have some user oriented
examples for the new modular API ? </div>
<div><br>
</div>
<div><br>
</div>
</div>
<div class="m_8992617653487631691m_862687194349826397m_-5120039862411448526HOEnZb">
<div class="m_8992617653487631691m_862687194349826397m_-5120039862411448526h5">
<div class="gmail_extra"><br>
<div class="gmail_quote">2017-10-04
22:18 GMT+02:00 Anita Graser <span dir="ltr"><<a href="mailto:anitagraser@gmx.at" target="_blank">anitagraser@gmx.at</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">
<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>
</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>
</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>
</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>
</div>
<div class="gmail_default" style="font-size:small"><br>
</div>
</div>
<div class="m_8992617653487631691m_862687194349826397m_-5120039862411448526m_6468191216600627376HOEnZb">
<div class="m_8992617653487631691m_862687194349826397m_-5120039862411448526m_6468191216600627376h5">
<div class="gmail_extra"><br>
<div class="gmail_quote">On
Wed, Oct 4, 2017 at
9:42 PM, Régis
Haubourg <span dir="ltr"><<a href="mailto:regis.haubourg@gmail.com" target="_blank">regis.haubourg@gmail.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">Hi
again,
<div>here is my
very first
draft:</div>
<div><br>
</div>
<div> 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">https://drive.google.com/file/<wbr>d/0BzatQbprJ-hjWF95VzdHbGRsVEk<wbr>/view?usp=sharing</a> </div>
<div><br>
</div>
<div>René-Luc,
David, Paul,
don't hesitate
to amend that!</div>
<div><br>
------------------------------<wbr>------------------------------<wbr>------------------------------<wbr>--<br>
<br>
<b>Qgis server
refactoring is
done!<br>
</b><br>
As you may know,
QGIS is jumping
to a new major
version (yes!).
<br>
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><br>
A year ago, a <a href="https://github.com/qgis/qgis3.0_api/issues/63" target="_blank">tiny
troll </a>from
switzerland rang
a bell about the
strong need for
love server code
base required. </div>
<div><br>
</div>
<div>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> <br>
As outsourcing
the server code
base was not an
option, so we
had to refactor
it. <br>
<br>
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">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">following</a> happen :</div>
<div><br>
<br>
<b># Deep,
complex and
unrewarding
tasks:<br>
</b>
<div><br>
</div>
<div>- Remove
all singleton
calls</div>
<div><br>
</div>
<div>- Cut all
the
dependencies
to the old
qgis project
parser</div>
<div><br>
</div>
<div>- Minimize
dependencies
to GUI
library. Since
fonts are
necessary to
render maps,
totally
removing them
was not
feasable. </div>
<div><br>
</div>
<div><b># Higher
level
refactoring</b></div>
<div><br>
</div>
<div>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><br>
</div>
<div><br>
</div>
<div><b># New
features and
architecture
stuff</b></div>
<div><br>
</div>
<div>- QGIS
Server
Services as
plugins like
providers. <font style="background-color:rgb(255,217,102)" color="#000000">(slide 10
would be a
nice figure
here)</font> </div>
<div><br>
</div>
<div>- <a href="https://github.com/qgis/QGIS/pull/3886" target="_blank">Multi-thread rendering </a>- like
in the desktop</div>
<div><br>
</div>
<div>- A new
option to <a href="https://github.com/qgis/QGIS/pull/5094" target="_blank">trust layer metadata</a> and
speed up
project
loading</div>
<div><br>
</div>
<div><br>
</div>
<div><b>#
Infrastructure
tasks</b></div>
<div><br>
</div>
<div>- <a href="http://oslandia.com/en/2017/06/16/qgis-server-ogc-cite-compliance-testing/" target="_blank">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">tests.qgis.org</a> <i style="background-color:rgb(255,217,102)">XXX
waiting for
Richard to
expose them in
the website</i></div>
<div><i style="background-color:rgb(255,0,0)"><br>
</i></div>
<div>- Add unit
tests... and
again more
unit tests</div>
<div><br>
</div>
<div>-<a href="http://oslandia.com/en/2017/06/14/qgis-server-security-aspect/" target="_blank"> Stress QGIS server against
security leaks</a> (SQL
injections and
other
malicious
attacks)</div>
<div><br>
</div>
<div>- Start
profiling and
bench marking
performances.
This work
still need
some love -
and funding -
to be achieved</div>
<div><br>
</div>
<div><br>
</div>
<div>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">presentation</a> was given at
FOSS4G-EU in
July. <br>
</div>
<div><br>
</div>
<div><b>Congratulations</b>
to the
developers who
worked hard on
that work. </div>
<div><br>
</div>
<div>Now this
deserves to be
well tested,
please report
back any
issues!</div>
<div><br>
</div>
<div><br>
</div>
</div>
</div>
<div class="m_8992617653487631691m_862687194349826397m_-5120039862411448526m_6468191216600627376m_-2738169971533867791HOEnZb">
<div class="m_8992617653487631691m_862687194349826397m_-5120039862411448526m_6468191216600627376m_-2738169971533867791h5">
<div class="gmail_extra"><br>
<div class="gmail_quote">2017-10-04
15:17
GMT+02:00
Anita Graser <span dir="ltr"><<a href="mailto:anitagraser@gmx.at" target="_blank">anitagraser@gmx.at</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">
<div class="gmail_default" style="font-size:small"><br>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote"><span>On
Wed, Oct 4,
2017 at 1:23
PM, Régis
Haubourg <span dir="ltr"><<a href="mailto:regis.haubourg@gmail.com" target="_blank">regis.haubourg@gmail.com</a>></span>
wrote:<br>
</span>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">Hi
<div><br>
</div>
<span>
<div>Yes,
refactoring is
now complete!
see : <a href="https://github.com/qgis/QGIS-Enhancement-Proposals/issues/74#issuecomment-334123595" target="_blank">https://github.com/qgis/QGIS-E<wbr>nhancement-Proposals/issues/74<wbr>#issuecomment-334123595</a></div>
<div><br>
</div>
<div>Anita,
I'll draft an
article
tonight if you
still agree to
review it,
that would be
great!</div>
</span></div>
</blockquote>
<div><br>
</div>
<div><br>
</div>
<div>
<div style="font-size:small" class="gmail_default">Sure!</div>
<span class="m_8992617653487631691m_862687194349826397m_-5120039862411448526m_6468191216600627376m_-2738169971533867791m_302750179668053183HOEnZb"><font color="#888888">
<div style="font-size:small" class="gmail_default"><br>
</div>
<div style="font-size:small" class="gmail_default">Anita</div>
</font></span></div>
<div><br>
</div>
<div><br>
</div>
<div> </div>
</div>
<br>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
<br>
</div>
</div>
<span>______________________________<wbr>_________________<br>
QGIS-Developer mailing list<br>
<a href="mailto:QGIS-Developer@lists.osgeo.org" target="_blank">QGIS-Developer@lists.osgeo.org</a><br>
List info: <a href="https://lists.osgeo.org/mailman/listinfo/qgis-developer" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailma<wbr>n/listinfo/qgis-developer</a><br>
Unsubscribe: <a href="https://lists.osgeo.org/mailman/listinfo/qgis-developer" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailma<wbr>n/listinfo/qgis-developer</a><br>
</span></blockquote>
</div>
<span class="m_8992617653487631691m_862687194349826397HOEnZb"><font color="#888888"><br>
<br clear="all">
<br>
-- <br>
<div class="m_8992617653487631691m_862687194349826397m_-5120039862411448526gmail_signature" data-smartmail="gmail_signature">Alessandro
Pasotti<br>
w3: <a href="http://www.itopen.it" target="_blank">www.itopen.it</a></div>
</font></span></div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</blockquote>
</div>
<br>
</div>
<br>
<fieldset class="m_8992617653487631691mimeAttachmentHeader"></fieldset>
<br>
<pre>______________________________<wbr>_________________
QGIS-Developer mailing list
<a class="m_8992617653487631691moz-txt-link-abbreviated" href="mailto:QGIS-Developer@lists.osgeo.org" target="_blank">QGIS-Developer@lists.osgeo.org</a>
List info: <a class="m_8992617653487631691moz-txt-link-freetext" href="https://lists.osgeo.org/mailman/listinfo/qgis-developer" target="_blank">https://lists.osgeo.org/<wbr>mailman/listinfo/qgis-<wbr>developer</a>
Unsubscribe: <a class="m_8992617653487631691moz-txt-link-freetext" href="https://lists.osgeo.org/mailman/listinfo/qgis-developer" target="_blank">https://lists.osgeo.org/<wbr>mailman/listinfo/qgis-<wbr>developer</a></pre>
</blockquote>
<br>
</div></div></div>
<br>______________________________<wbr>_________________<br>
QGIS-Developer mailing list<br>
<a href="mailto:QGIS-Developer@lists.osgeo.org">QGIS-Developer@lists.osgeo.org</a><br>
List info: <a href="https://lists.osgeo.org/mailman/listinfo/qgis-developer" rel="noreferrer" target="_blank">https://lists.osgeo.org/<wbr>mailman/listinfo/qgis-<wbr>developer</a><br>
Unsubscribe: <a href="https://lists.osgeo.org/mailman/listinfo/qgis-developer" rel="noreferrer" target="_blank">https://lists.osgeo.org/<wbr>mailman/listinfo/qgis-<wbr>developer</a><br></blockquote></div><br></div>