Modularity — library level
Luca has saved me some work on describing how it should work (here it is, pity nobody reads it anyway).
Quick summary:
- do not dump everything into the same library (or two — do people remember
libavcore
?), - make library provide similar functionality (e.g. decoders, decompressors, hash or crypt functions) through the same interface,
- provide implementations in future-compatible way (i.e. I might ask for LZ4 decompressor even while compression library currently supports only LZO and deflate and nothing bad happens — and you don’t have to check for
libavutil/lz4.h
presence and such).