Frank Karlitschek announced the ownCloud project during his Camp KDE
presentation [PDF] in January in San Diego. After only five months, he has released ownCloud 1.0. It is meant to be a completely open source replacement, using the AGPL license, for proprietary cloud storage solutions like Dropbox or Ubuntu One.
OwnCloud, a KDE project (actually, a Social Desktop project), has a
strong use case: because KDE runs on all kinds of devices (work and home
PCs, notebooks and netbooks, mobile phones), it becomes more and more
problematic for users to keep their data synchronized between these
devices, or to create backups of their documents. A lot of users (not only
in the KDE world) have therefore migrated to web-based applications like
Google Docs, GMail and Flickr, or synchronization services like Dropbox and
Dropbox is a web-based file hosting
service that enables users to store their files on the servers of the
company Dropbox, synchronize them with their Windows, Mac or Linux computer
or their mobile device, and share them with others. Canonical's Ubuntu One offers roughly the same
functionality, but only has a Linux client for now. The unfortunate unifying theme in this trend is that all these web-based applications and services, including Canonical's, are proprietary. A few months ago, Frank described why it's important to create non-proprietary alternatives:
This trend is problematic and we have to make sure that free desktop applications don't get replaced by web based apps and become irrelevant in the next 10 years. It is also important that we still own our data and don't [lose] control over our personal files.
I think we have to make sure that our great KDE desktop applications support features like sharing data, accessing data from any device, automatic versioning, backuping and encryption.
A server in each house
The ownCloud project solves this by adding a relatively easy-to-install
server package as a companion to the user's desktop, notebook, netbook, and
mobile phone. Users can install ownCloud on their home PC that is publicly
accessible via a static IP address or dynamic DNS, or on a VPS (virtual
private server) or dedicated server that they rent. Files and other data
can then be stored on their personal cloud storage and made accessible to
all of their devices.
OwnCloud is a web application written in PHP. Users can choose between
MySQL and SQLite for the database. The latter is especially nice, because it makes the setup easy for new users. Moreover, ownCloud uses a database abstraction layer, so support for additional databases is possible. The project is already working on PostgreSQL support. Your author installed ownCloud 1.0 on a fresh Turnkey LAMP 2009.10 server, which is based on Ubuntu 8.04 and offers a fully configured LAMP stack (Linux, Apache, MySQL, and PHP/Python/Perl).
After the installation, users can open the ownCloud directory in their
favorite browser, which launches the "first run wizard" that helps with the
initial configuration. For instance, this allows the user to choose between
MySQL and SQLite, set up the administrative account, and it has some options for automatic backups, forcing SSL, and the location of the data directory.
When logged in on the web interface, the user can upload, download, or
delete files, create directories, look at the log of actions, and change
the settings. The possibilities are rather basic, though. For example, it's
not yet possible to move files between directories on the server and the
interface doesn't show any information about the files other than the file
name. So all in all, ownCloud's web interface isn't all there yet.
Essentially, ownCloud is a simple web-based file server: it stores the
user's files in some personal cloud storage. Users can then access these
files via a web interface, even on their mobile phones. But ownCloud also
supports WebDAV, so users are not limited to the web interface: their
documents folder can be mounted on Linux, Mac OS X, and Windows. Your
author mounted his ownCloud installation successfully on a Ubuntu 10.04
desktop with GNOME, using the "Connect to server..." menu. The WebDAV
directory that needs to be entered is listed on the bottom of the ownCloud
web interface, and if the web server supports SSL, access can be encrypted.
OwnCloud also supports the Open Collaboration Services API (OCS), so the user's ownCloud installation can push notifications to the KDE desktop if interesting events occur, such as someone who accesses a shared file or a full storage device. You have to use the latest KDE (KDE SC 4.5 RC1) to get notifications working, and the configuration is still a bit rough: the user has to add his ownCloud as a social desktop provider in the system settings "Account Details" - "Social Desktop" - "Add Provider" by entering the URL http://servername/ocs/providers.php. After this, add the "Social News" widget to the desktop or panel to see the notifications. This configuration setup will be made easier in ownCloud 1.1.
While the current release isn't overwhelming feature-wise, the project's
roadmap gives an idea
of some interesting features we can expect. For the next version, the plan
is to support easily sharing files and directories with other
people. There's also an idea to use the Git version control system as a
storage backend to have a history of all files. There will also be a command line synchronization client and a KDE front-end to be able to access files offline. According to Frank, it should be easy to develop a GNOME front-end for ownCloud, and he is already talking with some GNOME developers about a closer collaboration in the future. OCS is a Freedesktop specification, so it's not tied to KDE.
Moreover, one of the KDE Google Summer of Code students, Martin Sandsmark, is working on a client side library for better integration of desktop applications with the ownCloud service. When this library is finished, KDE applications can use it to easily store and share data like bookmarks, calendar data, or configuration data across different systems. The library is using the OCS API as a data exchange protocol, so it works together with KDE's social desktop project.
OwnCloud has a basic plugin system which will be improved a lot in version 1.1 (expected in August 2010). This means that enterprising users can write their own additional services in the future. Frank shares some interesting examples in his release announcement:
- A photo gallery plugins. So you can share your photos with others without uploading it to services like Flickr or Picasa.
- Music server. You can listen to your music from every device without copying it around.
- Podcast catcher. A central place to collect your audio and video podcasts and access it via a HTML5 interface or a native media player.
With respect to encrypted file storage, ownCloud is still in the planning phase. The idea is to develop an encryption backend using GPG, but this is not trivial; Frank told your author:
The handling of the GPG keys is not yet clear, because we have to store them on the client and we don't know how to transmit them using the web interface or WebDAV. If someone has an idea how this could be done in a secure but still usable way, please contact us on the mailing list email@example.com
On July 4, Frank will give a
talk about the future of ownCloud at Akademy 2010 in Tampere,
Finland. Developers who are interested in contributing can find the code on
Gitorious and discuss these
matters on the mailing list or the #owncloud IRC channel on Freenode.
Taking back control
With the recent trend of many open source users migrating to proprietary cloud storage solutions, it's nice to see that the ownCloud project is working on a solution that should be able to compete with them. While ownCloud 1.0 doesn't look that spectacular and is not well documented, the project's vision is. When ownCloud 1.1 is released in a few months, the software will probably be a lot more polished, and users will then really be able to take back control over their own data.
to post comments)