For a long time, there was a hard-and-fast division between two legal classes of software. Free or open source software could be copied, changed, and redistributed. Proprietary or closed software was closely controlled by the vendor, and its use was encumbered with restrictions. There are other categories of software that lie somewhere between these two extremes (such as software that can be viewed but not changed and redistributed). In this article, however, we stick to the categories of free and proprietary and explore the relationship between cloud services and free software.
The term cloud computing is vague, but it's useful for the purposes of this discussion. The term covers, for instance, when you read your mail on a website, such as Gmail, instead of receiving it in a program on your computer, such as Outlook or Thunderbird. This is an example of Software as a Service (SaaS), where you run an application on a remote server.
There are also ways to upload entire computer systems (operating system plus applications) to the cloud, or run programs on operating systems hosted in the cloud.
As first, it would seem that anything that runs in the cloud is proprietary. You can't see the source code, and the cloud vendor has total control over it. As with other proprietary software, you may find one day that your favorite feature has disappeared because the vendor decided to concentrate on something else. And, you must agree to terms of service that control your own behavior on the site (even though hardly anybody ever reads them).
The relationship of cloud vendors to free software is more complex, though, and people who use and advocate for free and open source software should be aware of some of the subtleties.
Powered by Free Software
Many cloud services are built on free software. And why not? The open source tools are out there for everyone to use. By installing them, cloud service providers get all the benefits associated with free software, including a pool of developers and users who know the tools and from which the vendor can draw employees.
The underlying use of free software is neither new nor restricted to the cloud. Apple's two flagship operating systems, macOS and iOS, are based on open source operating systems. Most network routers use the Linux kernel, as did early versions of VMware's hypervisor. Such examples of the proprietary adoption of free software could go on for pages.
In practice, a viable cloud model is just to load free software onto a server and charge customers to use it. Many vendors do the same with proprietary software. Customers appreciate this option because it frees them from buying more hardware and wrangling with downloads and updates. And, cloud vendors can then build other valuable services, such as graphical interfaces or application performance monitoring, on top of the free software.
People can also use this model for software they create themselves. For instance, Dries Buytaert, after developing and releasing Drupal, the popular web hosting software, as open source, went on to form the company Acquia to offer it as a cloud service with many additional services. A similar business model supports WordPress.
Is it unfair exploitation to build a cloud business on free software? Not usually. As long as vendors adhere to the licenses, the use of free software is mutually beneficial. That's the topic of the next section.
Any vendor who builds a business on top of software has a strong incentive to support its development. The vendor appreciates a healthy community with the resources to maintain and improve the software. For this reason, big cloud vendors become major backers of free software. They provide fixes and new features coded up by their own developers, provide funding, and participate in the community.
Cloud vendors may go even further, by releasing tools they have created as free software. For example, Google, Amazon, Facebook, and many other companies have open sourced tools for common use throughout the computer industry.
Why would companies give away what they laboriously created? They do so because the software they release is not core to their business. I call this model of support for free software "closed core."
Within such a model, Google's algorithm for ranking search engine results will never be open source, nor will Facebook's method of choosing which news items to show users. These features and tools comprise their core business software, and the secrets behind them are fiercely protected. So, if companies create software for site maintenance and other non-core activities, they often find value in releasing those tools as open source.
The Free Cloud
We've seen that free software (and proprietary software as well) have a complex relationship to SaaS and other cloud offerings that can benefit both sides. Let’s take the discussion further. Could we have a truly free cloud? Could cloud computing provide the same rights that free software offers—the right to adapt and distribute the code?
One license, called the GNU Affero General Public License, which is “specifically designed to ensure cooperation with the community in the case of network server software,” tries to ensure that software stays free after cloud vendors adopt and change it for their own use. Specifically, any changes that a vendor makes must be released under the same Affero license so that the whole community can benefit from any bug fixes or improvements.
I haven't seen much discussion of the Affero license. I don't know how widely it is adopted, but perhaps developers don't feel that it solves enough problems to be worthwhile. Just consider:
- Most developers use "permissive" licenses, according to this recent white paper. These developers don't care about the changes made by their users in the first place.
- Many of the changes that a user makes to free software are useful only to that particular user. Hardly anyone would benefit from releasing these changes back to the project.
- Users always have incentives already to release their changes back to the community. They might get help with maintenance. Also, if the community accepts their changes into the project, the user no longer has to reapply the changes every time they update the software.
- Whether or not a cloud vendor releases its software, the user still has no choice of what to run in the cloud. If the vendor turns off a feature, the user can't turn it on.
I have discussed theoretical solutions to these issues in a past video presentation, but such solutions would require rethinking the installation and distribution of cloud software. Essentially, multiple versions of the software would be offered online, giving users the same choice they have for free software. But, my proposal for a free cloud remains just a thought experiment. Ultimately, it's a reminder that cloud computing reproduces the drawbacks of proprietary software that free and open source software tries to solve.