|
|
Log in / Subscribe / Register

Development

ownCloud 1.0: towards freedom in the cloud

June 30, 2010

This article was contributed by Koen Vervloesem

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 Ubuntu One.

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.

Future features

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 owncloud@kde.org.

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.

Comments (9 posted)

Brief items

Firefox 3.6.6 released

The Firefox 3.6.6 release is out. It seems that the crash protection feature introduced in 3.6.4 caused some grief for Farmville players, so the frozen-plugin timeout has been increased.

Full Story (comments: 24)

k3b 2.0 released

Version 2.0 of the k3b optical disk recording application has been announced. "With a few exceptions, K3b keeps feature-parity with 1.0.x series, but it also introduces a number of new features. Perhaps the biggest among these is support for Blu-ray drives. Additionally a lot of work have been put into improving the overall user experience."

Comments (1 posted)

KDE SC 4.4.5 Released: Ceilidh

Version 4.4.5 of the KDE Software Collection is out. "This is expected to be the final bugfix and translation update to KDE SC 4.4. KDE SC 4.4.5 is a recommended update for everyone running KDE SC 4.4.4 or earlier versions. As the release only contains bugfixes and translation updates, it will be a safe and pleasant update for everyone."

Full Story (comments: none)

End of support for PostgreSQL 7.4 and 8.0

The PostgreSQL project has announced that there's only one more update coming for the 7.4 and 8.0 releases. "We urge users still using 7.4 or 8.0 in production to begin planning migration to newer versions immediately." Additionally, 8.1 goes unsupported in November.

Full Story (comments: none)

PyPy 1.3 released

Version 1.3 of the PyPy Python implementation is out. There are a lot of improvements and speedups in the just-in-time compiler, along with alpha-quality support for CPython extension modules written in C. LWN looked at PyPy back in May.

Full Story (comments: none)

Python "newthreading" proof of concept released

The "newthreading" project within the Python community is a new attempt at improving concurrency in Python programs and facilitating the removal of the much-maligned global interpreter lock. A proof-of-concept implementation has just been released. "This pure Python implementation is usable, but does not improve performance. It's a proof of concept implementation so that programmers can try out synchronized classes and see what it's like to work within those restrictions." More information can be found on the newthreading page.

Full Story (comments: 47)

RedNotebook 1.0 released

The 1.0 release of the RedNotebook graphical journal is out. "It includes a calendar navigation, customizable templates, export functionality and word clouds. You can also format, tag and search your entries."

Full Story (comments: none)

Thunderbird 3.1 has been released

Mozilla Messaging has announced the release of the Thunderbird email client version 3.1. Based on Gecko 1.9.2, it has a number of new features and improvements including a new quick search toolbar, improvements for searching, phishing protection, an attachment reminder, a one-click address book, and more. "One-click Address Book is a quick and easy way to add people to your address book. Add people by simply clicking on the star icon in the message you receive. Two clicks and you can add more details like a photo, birthday, and other contact information." Click below for the full announcement.

Full Story (comments: 17)

Newsletters and articles

Development newsletters from the last week

Comments (none posted)

Queru: The Froyo Code Drop

Jean-Baptiste Queru talks about the Android 2.2 code dump from Google. "In order to make it easier for device manufacturers and custom system builders to use Froyo, we've restructured our source tree to better separate closed-source modules from open-source ones. We've made many changes to the open-source code itself to remove unintentional dependencies on closed-source software. We've also incorporated into the core platform all the configuration files necessary to build the source code of Android Open-Source Project on its own. You can now build and boot a fully open-source system image out of the box, for the emulator, as well as for Dream (ADP1), Sapphire (ADP2), and Passion (Nexus One)." The post as a whole describes something which is beginning to look more like a real open source project.

Comments (11 posted)

FFmpeg gets its own implementation of Google's VP8 codec (ars technica)

Ars technica looks at an effort to create a native VP8 video codec implementation for the FFmpeg project. "Building on top of FFmpeg will allow them to take advantage of a substantial body of existing code. FFmpeg already supports previous iterations of the codec, such as VP5 and VP6, which share some common characteristics with VP8. According to [Ronald] Bultje, some of the optimizations developed for FFmpeg's H.264 and VP5/6 code can be shared seamlessly with the new VP8 implementation. This approach will lead to a smaller footprint than if the developers were to simply graft Google's code into FFmpeg."

Comments (3 posted)

Guido on the history of Python

Python creator Guido van Rossum has been writing a series on the history of the language; the latest installment is titled From List Comprehensions to Generator Expressions". "Why the differences, and why the changes to a more restrictive list comprehension in Python 3? The factors affecting the design were backwards compatibility, avoiding ambiguity, the desire for equivalence, and evolution of the language. Originally, Python (before it even had a version :-) only had the explicit for-loop. There is no ambiguity here for the part that comes after 'in': it is always followed by a colon. Therefore, I figured that if you wanted to loop over a bunch of known values, you shouldn't be bothered with having to put parentheses around them."

Comments (2 posted)

Knowledge: A Different Approach to a Database on the Desktop (KDE.News)

KDE.News takes a look at Knowledge, a prototype of a flexible database. "Knowledge was coded in Python to save development time and, while incomplete, allows the ideas behind Information Management software to be explored. Knowledge goes beyond existing KDE applications for storing textual information in a searchable format (Knotes etc.) because the data is stored in a highly structured way, which provides many possibilities for both the GUI display of data, and for searches. The data is stored in records, but unlike most other databases these are flexible as fields within each can be arbitrarily added, removed or re-ordered."

Comments (none posted)

Programming with Scratch (Linux Journal)

Linux Journal reviews an educational programming language for younger children, Scratch. "Scratch allows the user to write programs by dragging and connecting simple programming instructions. The programming instructions resemble puzzle pieces and will only "fit" together in ways that make semantic sense. For example, you can't put the "Start" instruction inside an "If" instruction. The instruction pieces are also color-coded according to what type of instruction they represent; all control structure pieces are yellow, while all motion pieces are blue. The program that the user creates controls one or more objects, or sprites. From a programmer's perspective, Scratch has a very sophisticated set of instructions, as we'll see soon."

Comments (24 posted)

Page editor: Jonathan Corbet
Next page: Announcements>>


Copyright © 2010, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds