The person creating the IIAB instance should be able to configure all apps to use the same dependencies (such as databases) so that fewer dependencies are installed overall. Installing fewer dependencies will not only free up disk space for more apps but also reduce the average memory footprint of installed apps.
For example, if all of the apps that the user wants to install support MySQL and 2 of them also support Postgres, then only MySQL will be installed. Moreover, all of the apps will connect to the same MySQL daemon.
This is a set cover problem: we want to find the smallest number of dependencies that can simultaneously satisfy all of the apps' requirements. There is a polynomial-time algorithm for finding a set of dependencies that is at most H(n) = 1 + 1/2 + ... + 1/n times as large as the minimum needed to support n apps.
Additionally, the user could declare that they prefer specific dependencies by listing them in priority order in local_vars.yml. For example:
preferred_dependencies:
- sqlite
- mysql