Backwards Compatibility Efforts Gone Broke?

An example from the wild about how hard it can be to satisfy everyone when you’re writing and offering a library to the world: with the recent libcurl release suddenly open office doesn’t link fine with it.

It turns out these guys have enabled our help-define (CURL_NO_OLDIES) always. The define disables all our backwards compatibility defines/fix and let you check that your application still builds with the latest and doesn’t rely on anything that might be removed in the future.

CURL_NO_OLDIES is a convenient define that really suits a purpose. But not really well suited to unconditionally define for all builds since then you of course get these problems when we (in libcurl) rearrange our defines. This problem came to no surprise to us, since we did quite a large rearrangement before this particular release, and I actually expect that these support-defines will be present for a long time ahead.

So not only did they file a Debian bug report on open office, but also on libcurl.

The conclusion: use CURL_NO_OLDIES when you test-build your application against libcurl. Don’t leave it in the Makefile unconditionally for future builds.