Description
For many years we've supported windows in the node-mapnik project, keeping builds working on appveyor and providing binaries for all downstream users.
We've been providing windows binaries since 2014 (v1.4.8 release): #202 (comment)
The time has come to drop support however. This is a tough decision because I'd like to keep supporting windows, but I don't have the ability to.
So, windows binaries are no longer going to be supported for > node-mapnik v3.6.3.
I'm sorry to those of you who have been depending on these binaries over the years (especially to those that might have downstream users or companies depending on them as well). This news probably comes as a major inconvenience/disappointment/surprise.
I've been developing in C++ for over 10 years now and much of that time I've been maintaining builds across mac, linux, windows for a variety of projects. Getting Mapnik running on Windows is the one of the hardest and most labor intensive things I've worked on due to:
- how poor the support for modern C++ features have been in Visual Studio (for C++11 and C++14) (or instead how poor my understanding is, since I primarily develop on unix)
- the large number of dependencies mapnik has and the lack of good consistent scripts or binary packages for them (requiring my team to maintain https://github.com/mapbox/windows-builds/tree/master/scripts)
- the fact that mapnik's core build system does not support windows, requiring the maintenance of a totally separate build system (https://github.com/mapnik/mapnik-gyp), which therefore easily breaks.
All of these things combine with the fact that I'm managing a team at Mapbox now and I don't have the time to dig into failed builds. Also my colleague @BergWerkGIS, who was a major force behind making this system work for many years, has moved on to work on other things at Mapbox unrelated to C++ builds. Lastly we've been supporting windows for a couple years now without actually needing it at Mapbox (we don't depend on the windows builds of mapnik or node-mapnik since moving our focus to Mapbox GL - refs https://www.mapbox.com/help/upgrading-from-classic/ and https://www.mapbox.com/help/upgrading-from-classic/).
As such mapnik is no longer building on windows, and its tests have been failing for some time: https://ci.appveyor.com/project/Mapbox/mapnik/history.
If someone were to pick this up they would need to:
- Bring back to life https://github.com/mapnik/mapnik-gyp (or write some other build system like cmake that supports windows) and build Mapnik correctly with it.
- Bring back to life https://github.com/mapbox/windows-builds, or some kind of set of scripts to build all mapnik dependencies with the same visual studio version and create a tarball of mapnik binaries to build against
- Point node-mapnik at that tarball
node-mapnik/scripts/build-appveyor.bat
Line 26 in 176a87d
Since there is nobody that I know to step up to maintain this system, then my only reasonable option at this point is to drop support for node-mapnik on windows going forward.
So, my recommended solution for developers on windows that are depending on node-mapnik is to pin your usage in your package.json
to v3.6.2 like:
"dependencies": {
"mapnik": "3.6.2",
}
Mentioning a few people on this ticket who, from looking at past issues (https://github.com/mapnik/node-mapnik/search?q=windows&type=Issues&utf8=%E2%9C%93), have been users of node-mapnik on windows: @donnyv @eczajk1 @vjpr @BHare1985 @andrelom @bmehta @TimJMartin @germanjoey @aparshin @qiyexue @fnicollet @jbrwn @rclark @n9 @mohsentaleb @djodonnell @iceaxe @mojodna @beaugunderson @strk @mapbox/core-tech