Open Source Handbook "A manager's guide to the business and organisational applications of open source technologies"

Software stacks

In most real-world applications, software packages are combined in a so-called "software stack". The diagram shows a software stack to implement an interactive website:

Website software stack

The example software stack illustrated is based on an open source operating system - in this case Linux - that manages the access to the machine's hardware and the network. On top of the operating system is running an Apache web server. The next layer up is a MySQL database server. Above that is the PHP scripting language. This stack illustrated is so common that it has its own acronym: LAMP (Linux, Apache, MySQL, PHP). Topping off the stack and making use of the scripting language and database to generate the web pages is a Drupal content management system.

Software stacks are not limited to open source software. In fact, the idea comes from the proprietary software world. However, the freedom of choice that is inherent with open source software means that it is very easy to put together any number of different software stacks by selecting package components to build an application. In the example above it would be possible change any of the components: perhaps use a PostgreSQL database rather than MySQL or a different content management system.

Extra layers can also be added into the stack. One possibility is to place a "virtual machine" between the operating system and the hardware. This is common in cloud computing applications. It is even possible to "mix and match" open source and proprietary components to build mixed software stacks.