Hi Markus,
This is not great news for Apache CouchDB.
Part of our selection criteria for moving to a FDB backend was proper Windows support. There is a large (though not primary) user base presently using CouchDB in desktop settings on MacOS and Windows. These are small office / home office type applications where clustering isn’t useful. We also have a few (large) client using CouchDB on Windows for actual clustered servers (though we would generally counsel them to use Linux/BSD instead.)
Alternatives 1 and 2 are no-gos for these environments, I’m afraid. We’ve been down this path with them before and both have been summarily rejected for the time being. (The reasons are largely administrative, political and legal, and less technical.)
For CouchDB, should either of these alternatives be selected, we might have to drop plans to use FDB on all platforms, and build against something like SQLite on Windows instead. At the very least, that would delay our full FDB-based release by some time. It also wouldn’t help for the Windows-based clustered installations, which would no longer be possible.
Alternative 3 is probably fine for us, though our experience with CouchDB packaging and building its toolchain and dependencies (Erlang, ICU, curl, OpenSSL, Mozilla Spidermonkey) are that MSVC builds are both more performant and more broadly compatible with other native Windows applications. What will matter is that our native FDB driver in Erlang still be compile-able with MSVC, which it should be. (FYI, cross-linking of separately built MSVC and MinGW-built binaries is frequently not possible – see Erlang’s Win32 build walkthrough for a partial explanation.)
Could you provide more detail as to why Clang is preferred over MSVC? If it’s just cli options, there are wrappers extant to make cl.exe
and link.exe
act more like gcc/g++
and ld
. If it’s MSBuild vs. GNU make, you can absolutely use make
with MSVC, that’s how we build CouchDB today.
I’m happy to share my experience in comparing and contrasting both compiler chains, and possibly help find workarounds, though my time for contribution is limited.
For reference, in case you’re looking at your download numbers for Windows to inform this decision, CouchDB right now are wrapping our 3.0 release (the last major release before moving to FDB). We were planning to start exploring FDB on Windows with CouchDB in the next couple of months; it’s not been the focus to date.