From 23rd to 27th of September, Camptocamp participated in the latest OpenLayers code sprint in Bonn, Germany. The code sprint was organized by the OpenLayers community and followed recent meetings in Lausanne and Saas Fee with the objective to release OpenLayers 6. This goal was achieved late on Thursday, an effort towards which the entire community has been working during the past year and which was made possible by the financial contributions of Swisstopo and many other partners via the Openlayers Development Association, as well as FOSSGIS and OSGeo.
The OpenLayers 6 release brings a whole lot of improvements to the library. One major new feature is the ability to compose layers with different renderer types. While the map previously used a unified rendering strategy, with all layers being composed in one single HTML element, it is now possible to have a map with layers that use radically different rendering technologies. This is a major step forward for the library and opens up many new possibilities.
Another strong focus was put on vector tile rendering improvements, with better performance, lower memory footprint, more efficient decluttering and better tile queue management. Experimental features that are not yet included in the API were part of the release as well, and are available as examples to play with. For more details and breaking changes, have a look at the release notes.
Among the many things that were accomplished during this codesprint were:
- A new WebGLPointLayer with the ability to display large amounts of points at high performance, using a new literal style format which uses expressions to enable dynamic styling. This API will become stable in the future once it expands in functionality and gets more mature, hopefully allowing more geometry types along the way.
- Increased performance was also the main goal for the work done on hit detection, a topic that drew some uncertainty due to a regression in soon to be released Chrome 77 that drastically slows down the usage of getImageData() (heavily used in OpenLayers code). Several approaches were considered to “adapt” to the upcoming Chrome version, although it now seems as if the problem will be less critical than initially anticipated (which is good news for OpenLayers!).
- During the code sprint advances were also made to improve the usability of the library with Typescript. Only a last obstacle needs to be tackled to generate typing for the entire library out of the JSDoc annotations. Typescript definitions have been requested for a long time by the users and represent a real challenge when the original code is not authored in Typescript. Hopefully a better solution for this should arrive soon!
- The Select interaction has been a source of confusion and frustration for some time and has now been reworked in depth: it now does not generate an internal layer anymore to display a selection, but does so by changing the style of selected features on the same layer. Same result, much better developer experience!
- The code sprint also dedicated quite some time to a new experimental feature that changes the coordinates management of the library behind the scenes. This allows application code to ignore altogether the view projection system (which is often not easy to work with, such as Web Mercator) and use geographic coordinates with the library. Calling useGeographic() enables this behaviour and allows to work exclusively with geographic coordinates, while keeping the view in a different projection. This new feature turned out to have an impact on a large part of the codebase. Also, the implementation does not only allow to be used for geographic coordinates, the developer can now set any coordinate system for working with the data independent of the data’s view. Again, this should allow for an improved user experience and generally make the library more accessible to newcomers, while still maintaining one of the strengths of OpenLayers (using custom projections).
Overall, this codesprint was a great success. Both new and experienced contributors have collaborated successfully, bringing new lifeblood in the community and adding to the momentum of the project. This could not have been possible without the engagement of Marc Jansen and the funding of our partners, and all the participants are probably looking forward to the next community sprint!
Also this sprint has seen some changes in the OpenLayers PSC, with two new freshly arrived members: Frédéric Junod from Camptocamp and Marc Jansen!
As for the OpenLayers project, there are many more great features that the community is planning and thinking about, and its future is definitely looking full of surprises!