This is a long, rambling, incomplete blog post that's been rattling around in my head for a week. I decided to try to just put something in writing to see if I could make it less unclear. Caveat emptor.
If people are to manage their own content, forming their digital identities, they need a way to host software and content that doesn't require obscure and detailed technical knowledge.
Us early adopters are not normal. We've been so close to technologies, for so long, that we forget what it's like to be new to the stuff. Or not to live and breathe tech every day. Most people are not like us. They don't know what HTTP is. It's just some silly letters before the address of a website. They don't know what DNS is. They don't know what FTP is. They don't know what SSH is. Or MySQL. Or PHP. Or Perl. etc...
And they shouldn't have to know these things in order to be full and meaningful participants in online discourse.
Currently, we have a geeky elitism. The early adopting technophile geeks are aware of how software and systems are designed, and may be able to design, host, or manage their own software and content. And everybody else, who don't know, and don't care, about the technical mumbojumbo that geeks seem to like to talk about incessantly. Geeks. Jeez.
I think there are FAR more people like my Dad, than there are like me. My Dad is 75, and has been using computers for as long as I have. He brought home a Vic=20, followed by a C=64, C=128, an Amiga, and now he's on his second iMac. He's not scared of computers, or of technology in general. But he doesn't live it. He plays, but he sees it as a way to do stuff, not as tech for the sake of tech. At 72, he found Skype, on his own, and set up an account to talk to my older brother who lives on the other side of the globe. He can get stuff done, but gets stuck. Like, a lot.
So, when I'm thinking about "breaking away from hosted silos" I try to keep my Dad in mind. Is this something he cares about? Is it something he could do? Would he?
Why would people want to manage their own content? Third party silos are convenient, but temperamental and transient. It's so easy to share content on a hosted (and free) service, without having to think about setting anything up or configuring anything, or running backups, or registering domain names, or any of an unlimited list of details required to host software online.
But these services exist to monetize you, your relationships, and your content. And they may change in ways you don't appreciate, or simply disappear - leaving you suddenly without a potentially substantial component of your online life.
Data portability - the ability to export all (or even any) of your content, to be imported into some other application - gives some sense of security or insurance. But even that requires some technical background that many people don't have and don't want (and shouldn't need).
When I yanked my Delicious.com bookmarks through the export process - through a hidden API url, in a cryptic XML format - I had to futz around for awhile until I got the export file. Then, it was too big to import into something else directly, so I had to futz around with the raw XML to slice it into 3 separate files. I finally got my bookmarks migrated into a self-hosted instance of Scuttle. It wasn't exactly rocket surgery, but it wasn't a trivial task, either. These are things that my Dad would never be able to do. Nor should he have to.
And, even though my bookmark data was all there, my network - the relationships I'd built over the years - was gone.
Right now, the best way to manage your own domain is to set up a shared hosting account on GoDaddy or Dreamhost or any of a long list of others. From there, you likely (but not necessarily) have access to the CPanel (or maybe Fantastico) interface for managing the server space - domain names, databases, directories, etc... Gardner Campbell describes this as a good starting point for students to manage their own stuff, as a 21st century digital literacy skill. I disagree - I don't think it's easy enough. It's easier than managing your own server, but it's far more complicated than most people would be comfortable with. My Dad calls me regularly for help with finding things on his Mac. I can't imagine how many calls I'd get if he tried setting up a web hosting account. He'd have to move in with us, and that's not the best solution to getting Dad to host his own stuff.
Actually, Dad's iMac already has everything he'd need, in order to host his own stuff. It comes stock with Apache2, MySQL, PHP, and all kinds of other goodies. All he'd have to do is sign up for a DynDNS.org account, light up the built-in server apps, and install whatever web applications he wants. But Dad isn't about to do that. Even that single-sentence description of the process would make his eyes glaze over.
So, what's the alternative? If most people (including my Dad) would never set up a web hosting account, or run their own webserver, how are they going to host their own content?
The closest thing I've seen as an ideal alternative is the Opera Unite project. Built into the Opera browser, is a server that can install and run a number of applications - things like webservers, file sharing, whiteboards, etc... It only takes a single click to install an application. Then, it runs on your own computer, storing the data on your own hard drive. Unite takes care of mapping a domain name to your running copy of the Opera browser, and sends people directly to your computer instead of some server Out There.
Here's the Applications menu running on my laptop, letting people who visit my operaunite.com domain choose what they want to see.
The stock Unite apps are decent enough, but don't really replace what people are doing online. There is a blog app, but it sucks terribly. The bookmarks app is no Delicious (nor Scuttle). So, the apps aren't a huge draw.
But the model is great. Software that runs on your own computer that lets you control your own content. It handles an automatic domain name, for those that don't have one (or don't want to set one up). But, it also works with regular domain name, as long as it's configured to point to your home IP address. Unite even starts to address the social network layer - letting you connect with friends through the Unite service and see their activity streams.
Opera Unite is cool, but it's not the killer platform for hosting your own stuff. It's cross platform, but it requires people to switch browsers in order to run a server. They should be decoupled. A separate, ideally cross platform, server platform is required for this to really take off.
We've got similar models in non-server software. The App Store shows how easy it is to find and install apps - something, again, that many people just don't do on their desktop computers. If they do install something, it's because they've been asked or told to, not because they felt comfortable trying out a new app, experimenting and exploring. The app store changes that. It's trivial to try out a new app, without worrying about installing it, or breaking anything.
So, the characteristics of this mythical standalone self-hosting platform:
- lightweight - tomcat need not apply
- cross-platform (Mac, Windows, maybe Ubuntu?)
- server "app store" analog for easy one-click installs
- simple domain name setup (default to a computer.username.ihostmyownstuff.net but allow/encourage custom domains)
- simple interface for managing apps - add/delete/start/stop/config/etc... without having to edit files
- simple interface for managing app data - backup/export/import/config/etc... without having to edit files
What about the apps? Traditional php applications currently require too much geek stuff to properly manage - you should be editing files, auditing files for plugins/themes before installing to verify that they don't contain evil stuff, etc... My Dad won't be doing that. He literally needs a one-click install.
So, if it's really one-click, what does the app look like? Could they be some form of native code, rather than bundles of interpreted php etc...? Also, a stand-alone desktop app may not require MySQL or PHP or any of the other common parts of current traditional web apps. What if these apps were compiled native code, using some form of stand-alone NoSQL data storage?
One of the nice things about the use of php for web apps is that they are easily readable and modifiable - anyone with a text editor can hack on the code, tweak it, or fix things. But, how many people actually do that, in comparison to the number of potential users of the software? Is "anyone can edit" worth the cost of "everyone has to manage"? WordPress has come pretty close to trivial administration - the app has a one-click updater, and plugins and themes update almost automatically from within the Dashboard. But, it needs to get installed and configured in the first place. And there are lots of other apps out there that don't offer anywhere near the level of interface polish as WordPress.
Dad isn't going to install a copy of Gallery2. And he certainly isn't going to hack a theme for it.
But, he could click "install photo gallery" from the mythical self-hosting app directory. In my head, it's as simple as browsing the App Store on an iPhone, and clicking on an app to install it. Done. No geeky stuff required.
Of course, this would only handle the app/content side of things. What about the magic of the network of social connections? There are a few models. Google's OpenSocial project may be a solution. Or, there could be central connection hubs - similar to GameCenter for iPhone games - where people register with the service, and all of their apps send notifications to the service (or, alternatively, let friends know where to get notifications sent directly).
And, all of this is based on the (likely false) assumption that people really give a crap about running their own stuff and owning their software and data rather than continuing to feed their activity streams into "free" hosted services so others can monetize them by inserting ads or reselling data and relationships.