FLOSS Cloud Computing Platforms
In response to the increasing concern among users about both the potential for surveillance, and the growing power of a handful of tech corporations (particularly Microsoft, Apple, Yahoo, Google, Amazon, and FaceBook), there has been explosion of activity over the last few years to develop free code software packages to allow users to host their own "cloud computing" services, or host services for other users without any dependencies on proprietary software. This list includes software that uses a server/ client approach, not software that runs only on the users computer using a peer-to-peer approach (eg FreeNet, BitTorrent, Tox, Ring).
document and file storage, synchronization, transfer, and publication
Common proprietary examples: DropBox, GoogleDrive, OneDrive
Free code packages:
- KloudSpeaker
- ownCloud
- Reep: unlike most server apps in this categroy, Reep ("peer" backwards) uses WebRTC protocol to initiate a session between two peers, then leaves them to it. Can be used to download a permanent copy of a file, or if its an audio/ video file, it can be streamed.
- SeaFile
- SparkleShare
- Syncany
- SyncThing
- Tahoe-LAFS
document editing
Common proprietary examples: GoogleDocs, Office365
Free code packages:
- EtherPad (Apache 2.0): collaborative document editing only
- FirePad("MIT")
- LibreOffice Online: still in early stages of development, but based on the existing LibreOffice codebase gives them a headstart, and a solid development infrastructure.
- OnlyOffice: pitched as a full web-based office suite, server-side source code was released under the GNU AGPLv3 license in 2014 (according to Wikipedia article), and client-side desktop editors released in 2016.
calendars
Common proprietary examples: Google Calendar
Free code packages:
- Cozy: also offers contacts synchronization and webmail
- DAVical (GPL)
- Radicale: also offers contacts synchronization
webmail
Common proprietary examples: GMail, Yahoo Mail
Free code packages:
social media
Common proprietary examples: Twitter, FaceBook, Google+, LinkedIn
Free code packages:
- Diaspora
- GNU Social (GNU AGPL)
- Ind.ie Heartbeat: Client apps are only being developed for MacOSX and iOS at present, but The Ethical Design Manifesto they developed to work under is impressive.
project management
Common proprietary examples: Slack, Asana
Free code packages:
- Kunagi (GNU AGPL): aimed at software project management using Agile/ Scrum practices
- MatterMost ("MIT" for compiled versions, GNU AGPL or Apache 2.0 or commercial for derivatives)
- OpenProject: popular fork or RedMine
- RedMine
platform
Combines a number of the packages and functions listed above into a unified package
Common proprietary examples: FaceBook, Google
Free code packages:
- FreedomBone: developed for BeagleBone Black, can also sit on top of a server OS (eg Debian Jesse)
- FreedomBox
- Hubzilla
- Zimbra(GPLv2 backend, Common Public Attribution License v1 frontend)
hardware
Hardware projects supportive of software freedom and often used as personal "cloud" servers:
- BeagleBone Black
- CHIP
- CloudFleet: offers both a hardware device and a software platform offering a range of user services
- Rasberry Pi
uncategorized
- Reasonably Smart, open web "cloud computing" platform acquired by Joyent in 2009
- MongoDB (formerly 10gen)
thoughts on the origin of the phrase "cloud computing" and what it refers to
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 way 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, its 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 home 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 solves 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.
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 with 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".