[http://altruists.org/ff404] Right, this is going to be a very highly compressed talk;
the last time I gave this talk it was 90 minutes!
(I was giving it to an audience who were not sure about what is XML.)
OK, I'm going to give you the 'big picture' first of all:
The 'big picture' is...
Social software, but not in one place with all the data.
You have your data on your server, with your public/private keypair...
so you can contact me directly, so we could make a decentralised network of XML machines.
That's what I'm making here.
And I want to say, this is not distributed programming.
This is not a whole load of machines which are all operating one program...
because your machine is doing your things...
with your software on it, with your data, with your friends.
What is F2F the architecture...? It's P2P plus keys, so you know who is contacting you.
The identity is based on strong cryptography.
So, is the web distributed programming?
Well, each website is doing its own thing...
but what's it giving you?... You're just getting a page.
That's a piece of text, that's not good for semantic web.
That's not intended to program, that's not a two way thing.
It's a bit of a stretch.
It's like a dumb terminal.
So, clients are sending data, we've done this.
You go to Google, you're making a POST request or ...
you're making a GET request, but it's a pretty dumb request.
Google is doing some clever things, but you don't see that...
you just get a piece of text back again.
So, look at that in terms of programming...
Then, OK, I don't have a mouse, but you can see...
we've got code, which we know, we write programs,
and arguments which are untrusted...
that's the data which are passed to the program.
By design, you don't want people writing code and running it on your machine, do you...?
Well, if you know who they are, you might want that.
So, this is normal programming, it separates out arguments from code.
I'm going to say, if I'm going to send something to somebody...
I might want to say, "OK, here's the data."
I might want to say, "I can't access the data, but this is how you get the data...
because you've got permissions".
So data is no longer separate from code. It doesn't have to be.
They have a common format, it's called XML.
So what is running on these machines is basically an XML machine.
It takes input XML, outputs XML so you can network them together.
So a site can dynamically script another site.
We're going beyond "Oh, I'm going here, I'm getting a piece of HTML, I'm bringing it back."
You can chain the requests between the sites.
So, how to program it?
There is one XML item, with a URI that identifies it uniquely.
So, the virtual machine says...
"OK, I can process that, here's some XML as a result".
Whether it crashes or whatever, it only gives XML...
because the output of one is the input of another.
I wasn't sure who knows XSLT...
but XSLT is a W3C standard language from a long time ago...
for transforming an XML document into another XML document.
It is side-effect free.
I will show you the Hello-World service,
So, we have a Hello-World identifier,
the server says "OK, Ja, das kann ich machen"...
so it locates that as an XSLT transform...
So it goes through the script, that's the output.
That's how you make a function call in an ordinary language...
and you're passing in parameters as static data.
You know how that works.
A more transparent alternative is to use XML.
So, why is that helpful?...
Well, the XML input document is the request.
If you can see how that's going to work, that's how to program in this language.
When you're nesting calls - we've written programming languages like this - ...
the deeper ones get transformed first.
So, you're passing XML, by default - you can change it - but by default...
the deeper service requests are processed first.
So that gets replaced with the output of the service.
So when the outside one has only got static content...
that becomes the deepest servicereq, that gets processed.
In an XML pipeline, the output of one transform becomes the input of the next transform.
So by specifying any XML document, you can do any XML pipelining.
So, the last piece to add because XSLT is transforming one XML document into another XML document...
it's side effect free.
But hey, we want to write some data, I want to read some data...
I want to open an HTTP connection and secure it...
so we have some services which are hard coded, so it's not using XSLT.
That adds the bits which XSLT was missing.
That's the summary:-
Your F2F server is an XML virtual machine...
that forms a decentralised network with your data...
and networks only with your friends and you can do any XML pipelining.
The base language is XML and you can write software for it.
I'll have to look at the recording and think about this again.
That was pretty quick!
Thank you very much. I hope you enjoyed it.