Understanding Data

Monday, November 20, 2006

Found a New Criteria for Evaluating Technology

Whenever you are evaluating a new technology, ask yourself:

Which problems would be easier to using this technology?

If you cannot come with a good answer after understanding the core of the technology, you can probably stop reading.

Saturday, November 18, 2006

How I Lost My Faith In Web Services

I used to loathe web services. I found it to overly complex and complicated for doing something that really isn't that complicated. However living in a grid world, it is hard to avoid web services, so I started looking into it. And I really, really tried to like it. And for while I think I liked it. However while trying to create a WSDL for a service, I realized, as others have, that things are not that simple. Web services appear to be in an infant state; as CORBA once was - only worse. There actually exists an organization which purpose is to create interoperability between the WS stacks and to remove ambiguous items in the standards.

Even the guy who created google web API agrees that web services suck. SOAP also pretty much ignores all HTTP error codes, throwing out a good error model, and usefull stuff such as redirection. There are already several hundreds well functioning HTTP clients and servers. Finding a client library that supports WSRF and whatnot brings down the number of clients to 5-10 options - perhaps even less. And their interoperability is by no means guarenteed, unless you use really simple stuff.

I am also questioning the whole reason to use web services in grid. The need for handling state and receiving notifications (to get an asynchronous system, where polling is not necessary) seem rather obivious to me. Yet they went for web services, which does neither of these. Instead they created WSRF and WS-Notification to model this on top. Now, I am all about minimal protocols and layering, but this is just crazy.

The opposite camp of WS is the REST people. However REST is really a design principle, and not a standard. Usually REST will use HTTP, URIs, and XML for its standards. Notice how it isn't inventing anything new and useless? REST, being a design principle, can be hard to understand as it might change the way you thinking (and we don't want that do we). Even the main grid guy does not understand it.

I find REST to be much better approach than WS. Mostly because it is more simple, yet more flexible - given that you understand HTTP. HTTP is in my opion very well designed, but unfortunately most people see HTTP as something which can only retrieve HTML pages. There is one problem with HTTP though: It doesn't do notifications. So, instead of inventing a beast similar to WS-notifcation, which in turn would require your client to run a server, is there a protocol which supports notifications, yet have the client acting as client? Furthermore it should be reasonable flexible and simple.

Such an animal already exists: XMPP does all of this. As a bonus it is already widely deployed, as it is the underlaying protocol of jabber. Yet it have managed to stay relatively hidden and staying of out of peoples way. I like such technologies; usually it means that just work. Everyone talks about WS these days, so clearly it is not working properly :-). Of couse, this Bill has already suggested using XMPP for grid, so what are waiting for?

Wednesday, November 08, 2006

Design by Committee sucks

I'm currently attendending 1st KnowARC Conference in Oslo. As I do not have a big group to discuss my research with (although I highly appreciate the discussions with my supervisor, it is also monoculture), it is important that I get out and collaborate. Also, the topic of my ph.d. study (grid data management) is a quite relevant topic these days.

Yesterday we had a meeting about capability and design on a furture grid data management system. However stuffing ~20 people into a room and let them discuss (only like five where active though) does not produce good results.

As it could be expected people have very different views on what the system should be able to do, and how it should be constructed. However instead of trying to create a reasonably well designed system, we ended up with pretty much the union of everything. This way no one really loses. Unfortunately no one really wins either. The system gets overly complex, and insanely hard to implement (we're talking distributed, fault tolerent, scalable systems). And usually no one will implement anything complete due to the complexity of the system.

Good design can created in many ways. But it does not come from committees which tries to solve everything at once.