Another example. Three DuckDB-based extensions wanted to use the same shared library — libduckdb. The package manager sees files on disk. PostgreSQL sees shared libraries and control files. The user sees CREATE EXTENSION. All three layers can disagree. The practical resolution was to mount two of the extensions as sub-extensions under pg_duckdb. It worked, but it took real effort to coordinate and persuade the authors. The lesson is simple: names are part of compatibility, and they do conflict.

Part IV Maintenance in the Wild

Library Conflicts

PIGSTY
DuckDB-family extension dependency and shared library conflict map