Originally posted by ean5533
If you are going to have optional components, make them large, broad components -- groups that include many packages. An "SDL" component should include SDL itself, SDL_ttf, SDL_net, SDL_image, OpenGL, OpenAL, etc. Then at least manual dependency management is simple; the box says it needs OpenGL 3.2, SDL 1.3, and GTK 2.16, rather than needing to list out 79 individual, cryptically-named packages.
Said system even makes it easier and more reliable even when automatic dependency management is in place, for that matter, as well as making it easier for developers to select, install, and test against a minimum base, as well as making it easier to determine which versions of which distros might comply.