FLOSS Cloud Computing Platforms
thoughts on the origin of the phrase "cloud computing" and what it refers to
A list of free code software ("FLOSS") for self-hosting or community-hosting "cloud" services can be found at: Free Code Self-Hosting Packages
The term "cloud computing" fudges together a number of different things, including the use of virtualization to reduce the dependence of an online service (eg webserver) on a single server computer. The most common usage describes ways for users to access servers on the internet to supplement the computing they do on their own computer. This most commonly involves online storage of user data, across a range of functions (eg documents, calendar, contacts), and synchronization of that data between a number of computers the user works on (eg work computer and home computer; or office desktop, work laptop, and mobile device).
To understand how each of the packages listed is used in a "cloud computing" server, it's important to understand the concept of the "stack". At the base of the traditional server stack is the computer, the physical hardware all the server software runs on, which can be anything from a home PC to a high-end blade server. Sitting on top of the hardware is the OS (Operating System), usually some UNIX-like OS like GNU/Linux or BSD. Sitting on top of the OS are the application packages, such as webservers (eg Apache) or listservers (eg Mailman).
This can be a little confusing, as when people say "a webserver" they may be referring to a webserver application package, or to a server computer dedicated to running a webserver package. In theory, a server computer can run a number of server applications at once, so the same computer could be a webserver, a mailserver, a listserver, and an IRC chat server, for example, although how well this work in practice depends on the number of people trying to use each of these services at once. A server package that manages file storage, calendar, messaging, or webmail,running on top of a traditional server stack on a remote computer, would fit what NIST definition of "cloud computing" calls "Software-As-A-Service" and what Richard Stallman calls "Service-As-A-Software-Substitute".
In the early days of the internet, organisations would run a server for the use of their own members, and one server computer, sitting in a broom closet in the office, would be adequate to offer a range of services as described above. As internet access became commercialized, and especially as more users had access to broadband, it became harder for one server computer to meet the resource demands of its webserver, and still provide reliable support for the users of its other services. The phrase "slashdotted" was coined to describe a webserver being overwhelmed by a spike in requests for web pages, after being featured on popular geek news site SlashDot.org. The increase in spam email created similar problems for server computers running mailservers. Buying more powerful hardware or using one server computer for each service could solve these problems, at least temporarily, but this made it costly and troublesome for organisations to run their own servers, which along with the stress hosting more powerful servers put on their internet connection, led to the rise of server hosting in datacentres as a commercial business. The is origin of "in the cloud:, as a marketing term for paying another company to keep your company's private data on their computers, instead of your own.
Datacentres began as places for organisations to co-locate servers they owned in a secure, temperature-controlled building owned by a hosting company, with an internet connection that had large upload bandwidth. It made sense for smaller organisations to lease the surplus capacity of another organisation's server ("shared server"), and run their server applications on that, rather than owning their own server computer. Offering shared servers on their own server computers then became another revenue source for the hosting company that ran the datacentre. This is what the NIST definition calls "Platform-as-a-Service".
As websites began to evolve from collections of static HTML pages to more complex "web applications" like search engines and particularly webmail and chat (eg web-based IRC clients), it became harder for even the most powerful server computer to keep up with users demands on popular websites. The solution to this problem was "virtualization" or "virtual machines"; simulating a complete server computer in software, then running that "virtual server" in such as a way that multiple server computers could contribute their resources to serving its users when needed, but no server computer's resources are tied up by the virtual server when it has no users. Leasing the use of virtual servers to organisations that wanted to be in control of their own server right down to the OS, but with the performance and cost advantages of virtualization, then became another revenue source for hosting companies. This is what the NIST definition calls "Infrastructure-as-a-Service".
See also: Free Code Self-Hosting Packages