In 2000, I wanted my own web page. Getting one felt like magic. Then I wanted my own site. Another magical experience. Then my own virtual server. More magic. Then a chunk of a real server that somebody else managed. Kind of magical. Finally, a server all to myself to administer. Today is finally
up and running, in all its 16-virtual-cores, 2-terabytes-of-online-storage, 90-gigaflops-of-computing-power glory.
So I am looking for an open-source CMS to run on it; and given
Drupal's recent runaway success with
kings and
presidents alike, Drupal is my top choice. So I am reading e-books about Drupal; and I come across a description of Drupal's architecture and its place in the "software stack".
The Drupal code is written in
PHP, a programming language designed to deliver dynamic content (rather than static HTML). The application relies on the data in the stack layer below it - the database layer, in Drupal's case MySQL. Deeper still below that is the web server layer, enabling both PHP and MySQL function over the Internet (in our case, the web server is running on Apache). At the very bottom, the web server is embedded in the operating system (we use Mac OS X Server, but it could be Windows, UNIX, or Linux). So all in all, four layers:
PHP > MySQL > Apache > Mac OS X
You could extend the stack both up and down. The content management administrator doesn't interact directly with the PHP code; he or she normally uses a graphic user interface (GUI) to access the application. The administrator sets up the experience for the end users, who interact with the system through their own GUI. On the other end, for the operating system to run, the server hardware must have some basic software (=firmware) that allows to install the operating system, and check the integrity of the hardware. So the extended stack is more like this:
End user GUI > Administrator GUI > Application > Database > Operating System > Firmware
The IT staff's goal is to make as much of the stack invisible to the end user. The goal of the advanced user is to understand how the stack functions as far down as possible. The deeper you can reach, the more power you have.
But the beauty of today's situation is that one can have power even with just top-of-the-stack access. Modern servers come ready with the whole stack set up and ready to go. There is open source software for all the layers of the stack. Besides the depth, there is breadth - there are open source applications for almost everything under the sun. Which means the end user no longer needs to dive into the stack and get lost in heady geeky things. They can stay on top of the stack and focus on the task no one else can do: creating and organizing content.