A common problem when running various OMNeT++ models is, that sometimes it’s very hard to setup and prepare all dependencies needed by a specific model version. Apart from the trivial dependency on a specific OMNeT++ version, a model may need other models that introduce additional, sometimes even contradictory requirements.
We started to explore what is the best way to pack all dependencies for easy deployment while also keeping the ability to run graphical applications. We used VirtualBox images for this purpose in the past, but those can be fairly large and do not provide the best experience (why would you need a whole another machine with its own OS to try out a piece of software? Also you have to pre-configure some resource limits like the number of CPU cores, memory size, etc).
We considered packaging OMNeT++ into a Snap, FlatPak, or AppImage package, but these are more for packaging a single application, while OMNeT++ is more of an environment containing multiple executables (i.e. the IDE and all simulations created are separate applications really).
It is often a problem to reproduce a given simulation experiment even if the model source code is available. It is hard to recreate the environment required for older models as it may require a specific operating system, compiler and OMNeT++ version. To help the researchers with this task, we are providing now a docker image that contains a specific version of OMNeT++ compiled in release mode.
Recently we started to use Docker to build OMNeT++ releases. This approach gave us reproducible results and
independence from the local development environment. While previously we needed a carefully configured Jenkins build
server, from now on anyone can re-create the release archives by simply checking out the OMNeT++ sources, going into
releng directory and executing the
build-omnetpp-in-docker script (as long as
docker are already
installed on the system). The docker images required by the build process are available on DockerHub.
Go and give it a try if you need to build an OMNeT++ distro for whatever reason.