A Case For Personal Cloud - LinuxTag Talk by Dmitri Popov
Good afternoon everybody,

[SLIDE #1]

Since I only have 30 minutes, let me jump right into it. My talk is roughly divided into two parts. First, I'll talk briefly about the concept of personal cloud computing, and then I'll showcase the Tonido personal cloud platform and the TonidoPlug device.

So let me start with asking the obvious question: What is personal cloud computing? To better understand this concept let's use the following metaphor: Wallet vs Bank.

[SLIDE #2]

Like most people, I have a bank account, and my bank manages my savings, payments, retirement funds, and so on. Basically, the bank offers an advanced functionality which would be impossible or impractical for an individual user to replicate. Moreover, it offers convenience by hiding the complexity of financial operations from the end user. In other words, I don't have to be an investment guru in order to manage my retirement funds -- the bank's experts do that for me and explain the process in terms I can understand.

But there are also disadvantages of "hosting" your money with a bank. Firstly, there is the issue of privacy: bank employees have access to your financial data, and so have tax authorities. You have no full control over what the bank does with your money either: you rely on the bank's investment experts to manage your retirement funds, and you have no control over how and where they invest your money. For example, imagine the surprise of some customers of one of the banks in Denmark when they recently discovered that some of their retirement funds were invested into the defense industry and factories producing land mines.

But being a bank customer doesn't preclude me from having a wallet. The wallet has several advantages compared to the bank. The key among them are availability, complete control, and privacy. My wallet is always with me, so I don't have to find a bank or ATM every time I need to make a purchase. I'm also in full control of the money in my wallet: I can use the money any way I like, no matter how unwise it may be. But more importantly, the wallet offers complete privacy: no one knows what I have in my wallet, unless I choose to share this with the world or a select group of people. In addition to that, I can also use my wallet for other tasks: I can use it to keep photos, store business cards, and save receipts.

Again, banks and wallets are not mutually exclusive, and depending on the situation, I choose the most suitable solution. When I want to buy a book or a sandwich, I'd most likely use my wallet (or rather cash or a card stored in my wallet). But I'll use my bank for more complex financial operations.

Of course, I'm oversimplifying things a bit, but the "wallet vs bank" metaphor can be used to define the concept of personal cloud computing.

[SLIDE #3]

Let's start with the conventional cloud-based services. I'm sure that everyone in the audience is using some sort of cloud-based service and is pretty much aware of its advantages and drawbacks. But let's take a quick look at them through the prism of the "wallet vs bank" metaphor. Obviously, the cloud-based applications and services are the "banks." They offer advanced features and hide the complexity from the end user. A typical cloud-based service offers functionality and convenience at a reasonable price and even free of charge.

But even when you use a service free of charge, there is a price to pay. For starters, you entrust our data to the service provider, losing complete control over it in the process. Lack of customization is another serious issue with the traditional cloud-based services. While you can tweak a few odd settings, usually you can't add or modify features offered by the service. In other words, you have limited control not only over your own data but also over the service's functionality. However, the most serious issue of all is the fact that the cloud-based service is only as good as its weakest link, and in this case it's the Internet connection. The promise of a pervasive always-on reliable Internet connection still remains just that -- a promise. And even if you can gain Internet access, there can be other factors that may prevent you from using it --like price, for example. When abroad, you can use your smart phone for tethering, but you wouldn't do that anyway due to exorbitant roaming charges.

So to sum up: Like a bank, a conventional cloud-based service offers advanced functionality and convenience, but provides only limited control and availability.

This is where the personal cloud platform comes into the picture. A personal cloud server shares a lot of similarities with the wallet: it's simple, it's always with you (or you can access it at any time), and it offers a range of task-oriented applications. With a personal cloud server you retain full control of your data and you are free to tweak the available functionality to your liking.

At this point you might be thinking "Is personal cloud platform just a fancy name for the home server in my closet?" Well, not exactly. A conventional server usually runs a number of servers such as Apache, MySQL, Samba, and so on. And you use them to build solutions for specific tasks like backup, file sharing, Web server, etc. The personal cloud server, in turn, provides a tightly-integrated bundle of applications and services designed for specific tasks. So the basic characteristics of a personal cloud server include the following:

[SLIDE #4]

* Ease of use (deployment and maintenance) and portability
* Instant availability (you can access the server via a direct cable connection, over the local network, and the Internet)
* Subset of functionality (e.g., a simple blog engine to maintain a personal blog instead of a full-blow blog application like WordPress)
* Absolute privacy
* Complete control of the software and data

The Tonido software and the TonidoPlug device provide a practical implementation of the personal cloud server concept. But before we get to the specifics of both products let's take a brief look at Tonido's overall architecture.

[SLIDE #5]

It can be represented as a three-layered cake. The operating system is the bottom layer. Tonido software runs on a variety of Linux distros (including Ubuntu, Fedora, and openSUSE) as well as Windows and Mac OS X. In case of TonidoPlug, the OS layer is a trimmed version of Ubuntu 9.04. On top of the OS layer sits the Tonido framework which powers the Tonido applications.

The Tonido stack is based on the P2P technology, so all Tonido instances are coordinated via the Tonido servers. The servers store only unique user ID which you specify when creating a profile with your Tonido installation. This also means that other users must also have Tonido instances running on their machine if they want to collaborate with you and each other as well as access some shared data. However, Tonido also lets you share content over the Web. The bundled blog engine, for example, allows you to publish a personal blog, you can share files over the Web, and you can instantly create Web-based photo albums.

Now let me show you what Tonido looks like on my netbook. Obviously, my version of Tonido is already installed and configured, but deploying the software is as easy as it gets. On the first run, you are prompted to create a Tonido profile, and once it has been registered, your Tonido installation is ready to go.

When you log in to Tonido, you are dropped into a simple interface which lists all available applications grouped by their type. From here you can quickly jump to your blog, stream music, switch to sharing options, and perform other tasks. The advanced view acts as a dashboard which provides quick access to all Tonido's modules and features.

In order to collaborate and share data with other users, Tonido must be populated with groups and users. Once the group is created, you have the option to send group invites. If the user you want to invite is already in your contacts list, you can create an invite using his or her Tonido ID. Otherwise you can send the invite using the good old email. If you choose the latter approach, the recipient receives an invitation message containing a unique token. The recipient then has to install Tonido and accept the invitation using the token provided. This creates a secure peer-to-peer connection between two Tonido instances and automatically adds the joined user to your Tonido contacts.

The current version of Tonido ships with several handy applications, including Jukebox, Photos, Thots, Webshare, and Workspace.

Using Jukebox, you can access and manage your music files as well as grant other users access to your music collection. The application lets you create custom playlists, and it sports a few default dynamic playlists which give you quick access to recently added and the most popular tracks. You can use the built-in Tag Editor to edit each track's information, while the EXT button allows you to open the current playlist in an external player application. Jukebox doesn't allow you to share your music files with other users, but you can create a guest account which allows other users to access your music collection.

As you might have guessed, the Photos application lets you share and exchange photos with other Tonido users. Sharing your snaps using Photos is easy. Add a directory containing photos to the application, choose the group you want to share the photos with, and Tonido automatically pushes your photos to all users in the selected group, and all photos shared by other users appear in your Photos application. All shared photos are actually copied and stored on your machine, so you can view them even if the user who shares them is offline. Similar to Flickr and other photosharing services, Photos lets you tag, rate, and comment photos as well as mark them as your favorites. Using the commands in the navigation bar to the left, you can view photos by tags, ratings, and users. You can also quickly view the most recent photos as well as photos in a specific group.

You can use Tonido to maintain a simple blog courtesy of the Thots application. This no-frills blogging application does have a few nifty uses. It seamlessly integrates with your Twitter account, so you can push blog posts (or thots) on Twitter. Using the supplied ClipThots extension for Firefox, you can use your Thots blog as a place for storing and sharing interesting links and text snippets. When submitting a blog post, you have an option to make it public, which publishes the blog post on the Web. The blog can then be accessed using its public URL. The blog application also supports the XML-RPC interface, so you can manage your blog using a third-party client.

The Webshare application is designed to take care of all your file sharing needs. Using it, you can give users access to specific directories and files on your machine. Sharing a directory with the world requires just a few simple steps. Press the Share Files button to select the directory you want to share and specify the share's name and description. Once the share is configured, you have to add the users who will have access to the shared directory. You can then email the users a direct link to the share, and they can access and download files via a browser. You can also make the share public by enabling the Allow Everyone option. The Share Photos button lets you create instant photo albums which you can choose to share only with specific users and groups or publish them on the Web. Tonido also offers another, more straightforward, way to share files and directories using the Explorer file manager. Press the Share button next to the file or directory you want to share, and Tonido instantly turns it into a public share.

Finally, the Workspace application can help you to collaborate with other Tonido users. The application offers pretty much everything you need to manage schedules, tasks, contacts, notes, and files. The application allows you to create as many workspaces as you need, so you can set a separate workspace for each workgroup or project. Creating a workspace is as easy as creating a group. In fact, Tonido even allows you to turn any existing group into a workspace with a few mouse clicks. The modules of the Workspace application sport some clever features designed to make your work easier and more efficient. The Calendar module, for example, lets you import events from an iCal file, and if you ticked the Enable Public Display check box when creating the workspace, the calendar is automatically published on the Web. Using the Print button, you can print your calendar as a nicely-formatted agenda. The Tasks module lets you specify a due date and priority for each task as well as assign tasks to users. Using the Filter button, you can quickly view tasks matching certain criteria such as Priority, Assigned to, Due Date, etc. The Notes module offers graphical editing tools, making it easier to create richly formatted notes. The Timeline feature provides a quick overview of all workspace activity, so you can stay abreast of what other users do. As the name suggests, the Files section lets you upload files and documents to a specific workspace. Once the document has been uploaded, you can add tags, comments, notes, tasks, and events to it. But the clever part is that each added item also appears in the appropriate section of the workspace. For example, if you attach an event to the file, the event also appears in the Calendar.

The Tonido bundle contains a few other handy applications, including a torrent manager, personal finance manager, and a backup tool. The latter allows you to easily back up data on your machine to another Tonido instance. The Apps section in Tonido lets you manage the existing application (you can update, suspend, and uninstall it), install new apps, as well as access Tonido's own App Store. The ability to extend Tonido by installing additional applications is a key feature of the Tonido platform. CodeLathe, the company behind Tonido, provides a Tonido SDK and developer documentation to help you to get started with developing Tonido apps. Developers can then register and sell their creations via the Tonido Store. In other words, Tonido uses the same app store model that works so well for Apple and Google.

Finally, let's take a brief look at the TonidoPlug device. It's powered by an embedded Marvell Sheeva CPU core running at 1.2GHz backed up by 512MB DDR2 RAM and a 512MB flash disk. TonidoPlug runs Ubuntu 9.04. The device sports an Ethernet jack for network connectivity and a single USB port. The default 512MB storage can be expanded by plugging a USB stick or a USB hard disk into TonidoPlug. As soon as you do that, TonidoPlug automatically detects the connected storage device, and you can use it right away. Better yet, TonidoPlug makes the storage device available on the network, so you can use the server as a simple NAS solution.

To round up, here are a few useful addresses.

http://www.tonido.com
http://www.tonidoplug.com