From Fedora Project Wiki


Insim ( is a web service for monitoring package installation sizes and other numbers.

The purpose of Insim is helping developers with optimizing package dependencies and preventing regressions in installation sizes. It achieves this goal by simulating package installations in different distributions, gathering and presenting useful data about simulation results.

Package dependency optimization is a continuous process. A developer may want to reduce package dependencies, but once this is done, new unwanted dependencies will start appearing over time, causing a regression. Insim helps to prevent this situation by providing a tool for monitoring changes in package dependencies and installation sizes.




In Insim context, module is a group of related packages, defined by developers themselves. A module can be for example base group, runtime environments of programming languages some language, whole desktop environments, or individual applications.

Modules can be freely based on each other, with one limitation: there can be no dependency cycles between modules.

Insim simulates installation of modules in different versions of different distributions, called collections. Collections can be for example Fedora 23, rawhide or CentOS 7.

Installation simulation mimics real package installation, except that no actual packages are installed anywhere - only dependencies are resolved. For simulations Insim uses the same libraries as DNF - hawkey and libsolv.

All installation simulations are performed with base modules installed, which means that users of Insim won't directly see changes in total installation sizes caused by changes in underlying modules.

Once simulation is complete, the results are saved in database. Insim users can view them using web interface.

Insim Web interface presents overwiew of each module, where users can compare different statistics of module installation across different collections. This allows detecting regressions in installation sizes by comparing latest numbers for different collections.

Furthermore, it is possible to see historical data for each collection, which can be used for narrowing unexpected changes in installation sizes.

For each installation simulation it is possible to see detailed information, which contains list off all dependency packages with their sizes, as well as dependency graph.

In web interface users can also see detailed difference of any two installations, from the same or different collection. Difference view shows which packages were added or removed and difference in dependency graph.

Example: Apache Ant is an application, written in Java. It requires Java Development Kit (JDK). In Insim, "ant" is a module representing Apache Ant application. "ant" module is based on "java-devel" module, which represents JDK. When simulating "ant" installation, Insim will first perform minimal install of "java-devel". Then it will install "ant" on top of that and record which packages were installed to satisfy "ant" dependencies, together with their sizes.