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. (http://blog.qgis.org/2016/02/10/qgis-3-0-plans/)
A year ago, a tiny troll from switzerland rang a bell about the strong need for love server code base required. 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.
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 code sprint in the city of Lyon, France dedicated to sharing their vision, planning the work and finally making all the following happen:
Higher level refactoring
All services (WMS GetMap, WFS GetFeature, GetLegendGraphics, WCS, GetPrint etc..) have been rewritten. Some like WMS were entirely rewritten. Kudos to the devs!
New features
Multi-thread rendering like in the desktop
A new option to trust layer metadata and thus speed up project loading
WFS 1.1 support https://github.com/qgis/QGIS/pull/5297
Full Python bindings for the server API
Server Services as plugins like providers
Deep, complex and unrewarding tasks
Remove all singleton calls
Cut all the dependencies to the old QGIS project file parser
Minimize dependencies to GUI library. Since fonts are necessary to render maps, totally removing them was not feasable.
Infrastructure tasks
Build a OGC compliancy platform and integrate it to a continuous integration platform. Conformity reports are now pushed to tests.qgis.org
Add unit tests ... and again more unit tests
Stress QGIS server against security leaks (SQL injections and other malicious attacks)
Start profiling and bench marking performances. This work still need some love - and funding - to be achieved
A presentation was given at FOSS4G-EU in July.
This feature was funded by QGIS.ORG Donors