Skip to content

Consolidate dependencies [on databases especially, e.g. MySQL, SQLite, PostgreSQL] #1206

@veeara282

Description

@veeara282

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions