« MainSoft and Mono. | Main | Slides from the... »

The Atom API, dependencies, and logic that I just don't understand.

I've been casually following the various Atom API debates and I've found that reading the back and forth flames is educational for me as I try to better understand XML, HTTP, and the various approaches to web services. Maybe you can help me out because some logic that I just don't understand has been introduced into the debate. I'll explain.

I've never written a real spec like the ones that IETF or W3C produces, but it seems to me that when you are writing a spec, as when you are designing software, you have to think a lot about dependencies. You have to decide what specs are you going to build your spec upon. With the Atom API initially, there seemed to be a bunch of choices for foundation specs including HTTP, XML, SOAP, and XML-RPC. Now, obviously you need HTTP and XML because Atom is about the web and the Atom data format is XML, but what do you need beyond that? You need some framework or at least some guiding philosophy on which to base a web services API, but you're never going to get concensus to bring XML-RPC or SOAP into the Atom API dependency list. There's too much politics in this decision, too much baggage comes along with SOAP, and most sane people realize that XML-RPC is an amorphous blob not a spec. So, you're stuck with HTTP and XML.

I don't think being stuck with HTTP and XML is a really a problem. HTTP and XML are fine specs and they've gotten us very far, at least in my practioners view of the web. What I don't understand is why you would limit yourself to using only two of the verbs defined in the HTTP spec, as Russell suggests. The Atom API is an API spec for a web application, so why shouldn't it make full use of the spec that literally defines the web? It's not like HTTP is some complex beastly thing either. HTTP is a pretty simple spec, simple and powerful, and it's verbs are perfectly suited to the Atom API problem domain. Making full use of HTTP and XML rather than pulling in SOAP or XML-RPC reminds me of the XP philosophy of doing the simplest thing that will work.

I guess what it comes down to is that I just don't understand Russell's logic. He seems to be saying: Java2 Micro Edition's (J2ME) HTTP support is incomplete and therefore the Atom API sucks. Russell also implies that the standard HTTP verbs DELETE and PUT were intentionally left out of J2ME. Do we know that to be a fact? How can that be anything but an oversight and, when you get right down to it, just a bug in J2ME.

Comments:

It doesn't matter if PUT and DELETE were left out of J2ME on purpose or not, the fact is that 250 million Java phones can't use the Atom API because of it's religious implementation of HTTP. Those verbs are also not supported in Flash, which has how many more millions of clients? It doesn't *matter* if they are buggy or not, that is how things are right now. Both the API is broken and the process is broken as people ignore the fundamental fact that many clients out there do not support PUT and DELETE. The solution is quite simple, just don't use them. What does it hurt? The API was meant to be a simple solution, and it's not. Simple as that. When there was a problem with certain servers not supporting a different authentication header, they changed it to a custom WSSE header instead. But when complaints are made about PUT and DELETE, they fall on deaf ears. What's wrong with making the API so simple you can update it from a simple web form? Why the religion? Why discriminate against technologies that you may not be using right now (but I guarantee you will be in the next year or so)? Why are you defending a bad process? Why are you saying "why not use PUT and DELETE" when I've given various *good* examples why it's a bad idea (and check the wiki for more)? Just because those verbs are there doesn't mean that they need to be used. Just because it's the "right" way doesn't mean its the practical way or the simplest way. I don't want anything to do with XML-RPC or SOAP. I simply want a clean API that I can implement easily on the server (without going through hoops and praying there's no implementation bugs since no one actually uses these verbs for anything else and therefore haven't been tested), and I want something I can use on next generation clients. It's very simple. I'm coming up with concrete examples for changing the spec and the REST guys and people like you are just crossing their arms and bleating "No. It's not the right way." It's insane. -Russ

Posted by Russ on February 19, 2004 at 09:36 PM EST #

Your claims of "religious fanaticism" ring hollow when you realize that the Atom API *specifically addresses* broken clients that do not fully implement HTTP: http://intertwingly.net/wiki/pie/DifferentlyAbledClients This is currently a SHOULD in the API, although all known clients and servers support it (including Blogger and Typepad). You're arguing (in a roundabout, flaming sort of way) that we should change that SHOULD to a MUST. Others, including representatives from Blogger, agree with you, and have made that point on atom-syntax. Which is where you should make your point if you are actually interested in a constructive solution (which I doubt, given your attitude so far, but I am willing to be proven wrong). Prove me wrong, Russ. Show me you're not just a whining ranting blogger. Subscribe to atom-syntax and make your case. It's a community project; join the community, or shut the fuck up.

Posted by Mark on February 19, 2004 at 11:05 PM EST #

I can understand your logic and your anger perfectly now Russ. You want to sell your J2ME app into a market made up of millions of Java-enabled phones that all have an incomplete HTTP client implementation and no hope of upgrade. You can't use Atom as currently spec'ed and you don't think the Atom guys are listening. I'd be angry too, but I would be spitting some fire in Sun's direction.

I did the research that I should have done before making this post and was glad to see that there are a number of proposed workarounds for this "impass" as it is called on the Atom WIKI - and a lot of smart people advocating a workaround. However, I was not able to find a bug report in Sun's bug database for this J2ME bug. Is there such a bug report? Is Sun going to fix this?

Posted by Dave Johnson on February 19, 2004 at 11:26 PM EST #

Mark, blow me. I'm not going to shut up, so deal with it. -Russ

Posted by Russ on February 19, 2004 at 11:44 PM EST #

Thanks Russ, you've just conclusively verified my suspicion that you have absolutely zero interest in actually finding a solution, you just want to retreat to the comfort of your own web space and complain. Please feel free to continue doing that, but don't be surprised if we don't bend over backwards to accomodate your broken legacy toolkit and your over-the-top rants.

Posted by Mark on February 20, 2004 at 02:30 AM EST #

It's a bit disheartening to see someone like Mark step in. Kinda wish he'd go back to harassing Winer. Those two definitely deserve one another. As for Russ' whining I'd also expected better. Atom has a SOAP api which is basically what Russ wants, HTTP over GET and POST. Next time perhaps do a little more research, think about finding a solution instead of just whining.

Posted by Bo on February 20, 2004 at 03:51 AM EST #

Post a Comment:
  • HTML Syntax: NOT allowed

« MainSoft and Mono. | Main | Slides from the... »

Welcome

This is just one entry in the weblog Blogging Roller. You may want to visit the main page of the weblog

Related entries

Below are the most recent entries in the category Blogging, some may be related to this entry.