Below is the now-outdated draft.
Perpolis gives you ownership of and puts you in control of your own data; whether it’s your blog posts, status updates, pictures, bookmarks, address book, calendar, to-do lists, medical records, or location/travel history.
- Personal: You own your data; all of it
- Portable: You can take your data with you (whether from one service to another, or physically on your own data drive)
- Lifetime: Use your data store to store everything that’s yours (address book, bookmarks, blog posts, pictures, etc.), forever
- Hostable/Accessible: You could keep all your data on your own data drive, but for easiest access, let a service host it for you
- Cachable / Syncable (Versioned): You should be able to use your data even when not connected with your primary data store, including on your phone, laptop, or through the web browser of a public computer
- Integrated: Your data are designed to be used, shared, and integrated across services, and giving you the flexibility to mix and match by whom or where your data are stored.
- Discoverable: If you want it to be, your data should be easy to find by other services or even other people so that they can interact with it.
- Safe: It’s easy to backup. Because it’s Portable, it’s easy to backup in a way that can be restored apart from the current host. By hosting your store with one service and backing up somewhere else (to your own portable drive, for example), you’ll never lose your data
- Secure: You define who gets to access what data, whether it be another service or another person. Data on your devices can be encrypted, of course, so if they’re lost or stolen, the data can’t be accessed.
The idea is simple: everything personal, such as a blog post or address book, should be yours. If you choose to have your blog hosted by, say, Tumblr, and your address book hosted by Danger (T-Mobile Sidekick), then this may not be the case. These data are difficult to take with you should you decide to move to another service, or if either of these services ceases operations.
You should be able to, if you wanted to, keep all this data on your own computer or portable data drive.
By separating data format, data, data hosting, and discovery, you can have control of the data that you own.
Essential to you being able to own your data is Portability – you should be able to take your data with you. Perpolis defines or relies on a wide range of open, extensible formats for all your important data, including address books, blog entries, to-do lists, messages, and blog posts.
By keeping your data in these formats (or at least being able to have it readily exported or imported in these formats), you can move your data from one service to another with no hassle.
Take an address book for example, and let’s say that yours is stored in Apple’s Address Book application on your MacBook. Many have already approached portability of address book, and Apple Address Book is no exception. You can export individual contacts as vCards and or the entire address book as an “Address Book Archive.” But neither of these options (which are options in just about every address book application, whether web or desktop based) gives you true portability. It’s not practical to move or access this address book from anywhere. You can’t take the address book to Outlook on a Windows machine and view, use, and modify the address book on there, then bring it right back to your MacBook (without cumbersome steps of exporting and importing, or complex software).
Imagine if this address book were stored in a standard format that you kept on a small USB “key” drive. While plugged into your MacBook, you can use (view, add, modify, or remove) your contacts (whether looking up a phone number, or sending an email using the Mail application). Then, when you want to use Outlook instead, simply take that USB key and connect it to the Windows machine instead. There you can also use your contacts for the same tasks just as easily.
Better yet, rather than have to make sure you have this USB key with you all the time, what if your address book lived online and your Apple Mail or Microsoft Outlook could both access them? We’ll get into that more in the “Hostable” section.
Portability gives you two things:
The ability to use your data in multiple places, using different software
A better ability to keep your data forever.
The main thing is that by being stored in a standard format, you have the ability take and use this data wherever you want it. And this is an essential aspect if you want to be able to keep your data forever.
How many times have you left behind contacts in your old computer’s address book or in your previous web-based email services?
Particular software and services may not stick around forever (probably not, even). If, for example, you keep all your contacts (address book) in Palm Desktop, you will likely find yourself (if you haven’t already) needing to find new address book software, and exporting your data there. If you don’t export your contacts to other address book software before you lose Palm’s desktop software, you may it difficult or impossible to get to your contacts.
By keeping your data in a standard, software-agnostic format, you’ll always be able to use your data regardless of software changes – forever.
The best way to keep your data easily accessible and forever is to have it hosted.
By having your data hosted, it’s easy to access the data from any of your computers (work and home), portable devices (smart phones), or while at someone else’s computer. More on this in the “Cachable / Syncable” section, next.
Further, by being hosted, your data’s life will easily outlive your computers, phones, and portable drives. All you have to do is ensure that you have a backup and that your data is moved if your host discontinues service.
It is important that your data can be accessed and interacted with when it’s hosted, and for this to be able to be done in a portable way (any software or service can use it), there must also be a standard way to interact with this data. Perpolis defines the operations that may be performed on your data – an implicit API both when operating on a locally available data store, or remotely (likely a RESTful service).
Cacheable / Syncable (Versioned)
Because your data is most likely hosted it’s important that the data is cachable. Your phone, for example, should be able to keep a copy of your address book so that you can use it even when your phone isn’t actively communicating with your host (“connected”).
And since you’ll be making changes to your address book while your phone isn’t connected, and/or because you’re likely to want to use your data with multiple devices or services, it’s important that the data be syncable so that changes can be exchanged with the host, so that all of your devices can see and make use of changes made elsewhere.
Implicit in Syncable is version control. Because devices may update data while not “connected,” there must be a way to determine what has changed and needs to be synchronized. This is accomplished with version control. With a Subversion or git-like structure, changes are tracked and browsable, and clients may be able to store the entire repository with history (git-like, for backup or desktop clients), or just a current snapshot (svn-like, for portable devices or 3rd-party services).
Because of the myriad of types of personal data that you’ll want to store, you should be able to use one type of data from another service. This is actually implicit in the fact that the data should be hostable/accessible.
For example, if you use Gmail for email and Perpolis.com to host your address book, Gmail should be able to use your Perpolis address book when you want to choose email recipients. Gmail could choose to either rely completely on your address book host for all contact-related operations (see “accessible”), or it could keep a snapshot of your address book and make sure it stays in sync (see “syncable”). Further, Gmail could provide only read-only access to your address book, or pass changes to your host via “accessibility” or “syncability”.
It’s very likely that you’ll want different hosts to host different types of your data. Gmail, for example, may host your email, while Perpolis.com hosts your address book, and Blogger2.com hosts your blog entries. When you log into your email service, it should be easy for it to find out where your address book is.
It’s worth clarifying here that everything that you own — your address book, email, and blog posts — all belong to one entity. This entity is likely to be something like OpenID.
Perpolis facilitates discoverability by defining a directory associated with your OpenID. So, when you log into your email service with your OpenID, your OpenID can be used to make it quick and easy to use your address book.
You define who gets to access what data.
All permissions to data is managed with keys and stored with your OpenID.
For example, when Gmail wants to use your address book, you can grant it the ability to access it. You could, at any time, revoke access.
Further, you can define what kind of access other services get. For example, you would allow your own smartphone full access to your calendar, but you could grant just free/busy information to your coworkers.
I am really interested in this idea ,but can’t find the project anywhere on the net. Could you send me any current links referencing it?
This “project” is currently more just a recording of my thoughts and musings on the topic, which could someday evolve into an actual project, but if nothing else may serve as a reference or inspiration to other projects (such as Google’s Data Liberation Front).
I have upgraded it to a wiki page, and it now lives at: http://robertlathanh.com/wiki/Open_Personal_Portable_Lifetime_Store
Glad to hear of your interest, and I hope the idea makes progress one way or another for both our sake!
– OpenIndiana with block level deduplication enabled
– ZPools based on the amount of data integrity needed
– compression enabled on the less-necessary data sets
– remote sync to AWS EBS volume for more-necessary data sets (backups, time machine backups)
– sync to AWS S3 for CloudFront distribution service (photos, personal video content)
Costs about $800 to set up and about $40 per month after, depending on how much space you use, etc.