Skip to content

Instantly share code, notes, and snippets.

@michielbdejong
Created July 11, 2011 10:42
Show Gist options
  • Save michielbdejong/1075667 to your computer and use it in GitHub Desktop.
Save michielbdejong/1075667 to your computer and use it in GitHub Desktop.
draft text for 10-minute video explaining our project
Caption: "Exit Installed Software. Enter Hosted Software."
Do you remember when we didn't have internet? Fifteen years ago, we each had our computer, but we used them
as stand-alone devices. Say you used your computer to invite people to your birthday party. You would use a
text editor to write the invite text, a spreadsheet for the guest list addresses, and a drawing program to
draw a nice invite. You would save everything on your computer's hard disk, so you have a copy of your art
work, and then you would print out the invites using this thing called a printer, and send them in the post.
Ten years later, we all had email addresses, and the web existed as a place for information. So to send
birthday party invites to your friends, you would do the same, except you would use email instead of postal
mail. Email travels over the internet, and uses servers to do so. Servers are computers just like your own
one, except that they don't have screens and keyboards, because nobody is sitting directly at them. But they
are important in making the internet work. They are usually stacked up in cupboards inside buildings.
[photo]
[diagram: PC -> my server -> your server -> PC]
Nowadays, you would probably not even use software on your computer to create the invite and send it via
email. You would create the invite directly on a website.
[diagram: PC <-> website-server -> PC]
The software programs that used to run on your computer, are now replaced by websites that run on a server.
If software lives on a server, then we call it Hosted Software. Hosted software is handy, and we all love it
because it makes your computer a lot simpler to use and maintain. You don't have to bother with install disks
all the time, like we used to in the past.
The account you have on the website is a Hosted Account. Your text, spreadsheet data, and drawing are no
longer on your hard disk. They are now on the website, in your account. This is also handy, because it means
you can easily find it if you use another computer, and you don't lose it if your hard disk breaks. Whenever
you go back to the website, doesn't matter which computer you use, your data is still there, inside the
website.
[diagram: website [app block] (a) (a) (a) accounts]
Caption: Hosted Software is Dangerous
But there is a problem with Hosted Software that didn't exist with email. Email has an open architecture.
This means anybody can add servers to the email system, and these will work with all other servers. You may
have your account hosted on a different server from me, but we can still email with each other, thanks to
this open architecture.
[diagram: open network, adding a server]
Hosted Software often has a closed architecture. For me to read the invite to your birthday party, we need to
both use the same website. We cannot both freely choose which server we use, because the server of that
website is the server of that website. All our files and data are on the server of this website, simply
because that's how this website works. This is a restriction of our freedom as a consumer. It leads to
monopoly situations, in which the company who happens to own the more popular websites have control over us.
There are several solutions to this situation. They are being worked on, by techies who care.
Caption: Idea #1: Open source
One is what you
could call multi-hosting. WordPress is an example of this: you can host your blog on WordPress.com, but if
you want to, you can also rent a server somewhere, registered with your own domain name, and install the
WordPress software on there. That way, there are many servers running a particular web application, and you
as a user can choose which server to open your account on, or even rent and set up a server especially for
yourself.
[server of 1 colour, and small servers of same colour splitting off. hosted accounts visible inside each
one.]
This is a great solution in itself, but it requires the user to maintain their software. This is cumbersome,
and a lot of users will simply not do it. It is too much work for the user. So we need to work on something
better. It works for WordPress, but quickly becomes too complicated for most other websites.
Caption: Idea #2: Open Web
A second approach to getting back our consumer freedom is called Open Web. It's the effort to make different
websites work together, through standards. By defining common standard formats, agreeing on them, and
implementing them, you and I can communicate with each other, even if we don't both use the same website. You
have an account hosted on one website, and I have my account hosted on another website, but because these
websites have agreed to speak the same language with each other, you and I can still see each other's
accounts, and interact.
[servers of different colours, users connected across website walls]
This is a better solution, because it doesn't require the user to do anything. However, it requires a lot of
hard work from the website engineers to align all the different formats and get everyone on the same page.
Every bit of functionality of every website would have to be mapped by some technical document, that then has
to be agreed upon, and implemented by all the other websites. The open web allows an identica user to follow
the status updates of a diaspora user, for instance. But it doesn't (yet) allow that identica user to send a
private message to the diaspora user. So it sort of works, but only for some of the features, and progress on
this is slow.
Caption: Idea #3: Unhosted User Accounts
The third approach is what we are working on in the Unhosted project. It is separating the user accounts from
the web applications, so that they can move freely. Whereas currently on the web, you can only have hosted
accounts (accounts that are on the same server as the website), we want to make websites that you can use
with unhosted accounts - accounts that live somewhere else, on some other server.
[server is a rectangle/bar/block (app) with circles underneath (accounts). use any app with your account.]
The first time you use an unhosted-capable website, you may not notice any difference. Let's see an example.
Say you're a student at Landow University, and on the university website (http://www.landow.edu), your create
an account. You end up choosing "pam524" as your username, because "pam", your first name, was already taken.
Whenever you log into your university website, you can see your exam results on there, submit questions to
professors, etcetera.
Now say you want to create a birthday invitation, and the website you choose to use supports hosted as well
as unhosted accounts. You go to the register screen of the website, and start the annoying process of
creating yet another account on yet another website. You put in your email address ([email protected]), and
suddenly, the magic happens: before you can continue down the form to put in all those other fields, the
register page proposes you to use your existing account from the university website, on this new website. So
even though you use the new website, which runs on a certain server, your account is not hosted on that
server. You are logging in to the website with an unhosted account. An account that's hosted somewhere else.
Why is it good that websites support both hosted and unhosted accounts? Because it allows you to choose where
you want your data to be, and the websites you use have no control over that choice. It is also better
because it becomes cheaper for small companies to run a nice website. If they don't have a very big server,
then they can choose to open up their website only for unhosted accounts, and not offer registration of
hosted accounts which would cost them money. That way, people who have an account somewhere else, can use
this nice new website, but the website would not need to set up a big server that can contain all the data of
hosted accounts. This way, the web becomes an open network again, where small players can easily add
websites, and where users can easily choose on which server they want their files and data to be.
The advantage of this third option, is that it's not necessary for users to install and maintain lots of
different kinds of software on their server, and it's also not necessary for website engineers to agree on
detailed formats describing how features in their website could interact with features on other websites.
Caption: How does that work?
So let me try to explain how this works under the hood. There is the server that hosts the website you visit.
And then there's the server that hosts your account. When you put your email address ("[email protected]")
into the birthday-invites website, this website can see by looking at your email address that you're pam524
"at" landow.edu, so it finds the server for "landow.edu", and asks that server if it would be OK to store
some data on there. The landow.edu server responds with "yes, that's OK, we know pam524, she has an account
here, with some disk space". This part of the process is called 'cross-origin webfinger', in case you want to
read more about it.
Next, you need to put your student password into the landow.edu server. You don't put your password into the
website you are visiting, because your password is secret, and stays between you and the landow.edu server.
So in your browser, you are redirected briefly from the birthday-invitations website to the landow.edu
website. There you put in your password, and you're redirected back to where you were. This part is called
'OAuth2'.
Finally, there is the language in which the birthday-invites website tells the landow.edu server what it
wants to save to and retrieve from the disk space it has assigned on there for your account. In this
language, there are 3 important commands: "PUT", for "putting" data onto the account, "GET", for "getting"
data back from there, and "DELETE", for deleting data that is no longer needed. This simple store-and-
retrieve language is called 'cross-origin WebDAV'.
Caption: The Plan
So this is our plan. We are gradually coming out of the research phase and moving into the implementation
phase. The first websites that accept unhosted as well as hosted accounts are starting to appear on the web.
If you're a web developer, then we invite you to download our Software Development Kit, so you can find out
how you can also accept unhosted accounts instead of just hosted ones on the website you're developing.
If you work at a website and want to respect your users' right to be in control of their own user data while
they use your website, then you can point your CTO or lead developer to our project - everything we do in our
project is given away for free as public domain knowledge, for others to reuse freely and benefit from.
If you are an end-user, then you can ask your favourite website whether they would consider accepting
unhosted accounts on there. If enough people ask, they might listen.
You can also ask the provider of the email account (for instance, the place where you work, the university
where you study, or the association you're a member of, basically any place that you form a part of, and that
has its own website), whether they could link some disk space to your email address. One Gigabyte per person
is a good measure to ask for. Tell them you want to use it as an "unhosted account".
Finally, whoever you are, if you think it's cool what we're doing, then please donate to our project. We are
a non-profit project that is funded entirely from donations. If you donate 25 euros or more, we can send you
an official Unhosted T-shirt!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment