A virtual appliance (hereafter VA)
is a computer
that can be run as a
In another words,
the object that is being simulated is a running computer and
the computer that is being simulated runs by executing some program.
That is how VAs can be used to run legacy software on
modern and future hardware. The key phrase to
search is "computer emulation"
The VA can be seen as a container that includes all of the right versions
of all of the dependencies of a distributable application.
An installer can be a folder with VA specific scripts and binaries.
For example, if a client of a freelance software developer
uses a "standard" VA that is provided by the
freelance software developer
then the freelancer can test its deliverables on a specific VA
that the client of the freelancer is expected to use.
Additional services may include _an_attempt_ to make
the software run outside of the "standard" VA, but
that attempt will be on a best effort bases,
because the freelancer lacks the possibility to guarantee
that all of the dependencies of the deliverables are met
outside of the VA.
As of 2021_05 I(Martin Vahi) recommend that
each project has multiple VAs that are
optimised for the different use cases.
A VA for running the application in production.
In the ideal case the HDD/SSD/memory_card image of the production VA
should contain only what is needed for running the application and
otherwise be as small as possible.
A VA that contains the tools and source code repository
for developing the application. It is OK for the development
VA HDD/SSD/memory_card image to be huge.
The priority of the development VA is
the long-term availability of development tools and
documentation reading software. A development VA
allows to create small modifications to the
application years after initial publication without
having to spend a lot of time on setting up the
development environment. Porting tasks might
have their own, separate, VAs, so that there is
one development VA for developing the core functionality
of the application and porting VAs for repackaging
the application for specific hardware and operating
A VA that contains various documentation reading tools.
This VA is probably not project specific and it might
be optional, because the development tools VA
probably already contains documentation reading tools.
In an ideal case this VA contains only the documentation
reading tools, not the documentation itself.
The documentation might be made accessible to this
VA by mounting an USB-stick or
by mounting a documentation folder at some other
physical machine or VA by using sshfs.
As of 2016 the
of the x86 and the AMD64
line of virtual appliances has been
and it is
supported by multiple vendors. Some of the tools for running
x86 and AMD64 virtual appliances are