On Tue, 13 Sep 2022 at 19:55:01 +0100, Simon McVittie wrote: > For most libraries, the deciding factor would be: are library users > expected to find the library via a single pkg-config file that cannot > coexist with the other version (like libpng's libpng.pc and OpenSSL's > libssl.pc/libcrypto.pc/openssl.pc), or do they ship versioned pkg-config > files that can coexist (like GTK 2/3/4, Qt 4/5/6 and SDL 1/2)?
A more technology-neutral way to ask this question is: when the library user names the library that they want, do they do so with a major-version-qualified name, or with an unversioned name? For libraries like GTK and SDL, the answer is that they normally use a major-version-qualified name: Autotools PKG_CHECK_MODULES([GTK], [gtk+-3.0]), Meson dependency('gtk4'), CMake find_package(SDL2 REQUIRED) or similar. Because names are interfaces and interfaces are names, we package these libraries with correspondingly versioned names: libgtk-3-dev, libgtk-4-dev, libsdl2-dev and so on. For libraries like libpng and OpenSSL, the answer is that they normally use a non-versioned name: Autotools PKG_CHECK_MODULES([openssl]) or Meson dependency('libpng') or similar. We package these libraries with unversioned names: libssl-dev, libpng-dev and so on. I think following that principle would make me lean towards a -dev package without the major version, because library users seem to ask for it with dependency('wxwidgets', modules: ['core']) or WX_CONFIG_CHECK([3.0]) or $(wx-config --cflags --libs core) or something like that - where the 3.0 is a minimum version, rather than a major version to select. smcv