Learning from our Mistakes: The Failure of OpenID, AtomPub and XML on the Web
25hoursaday.com
25hoursaday.com
It seems AtomPub isn't that terrible idea—you get uniform envelope format, so you can use feeds to represent your data in any way you like, because each entry has its own unique id. AtomPub let you use many conventions that web developers are already familiar with—e.g. <link rel="alt"/>, various extensions like OpenSearch etc.
If you are API author would you consider using AtomPub (or GData/OData)? Do you consider it too difficult/inconvenient to implement?
If you are using any AtomPub (GData/OData) based API what are your experiences? Do you consider it too difficult/inconvenient to consume?
[1] And provides JSON support: directly by translating XML tree as JSON structure (and I was sure they had something called cJSON, but now I can't find reference anywhere so I might have been dreaming that.)
[2] I don't know .NET world that good, so anyone please correct me if I'm wrong.
I don't think it (or SOAP) will just vanish though, it just isn't having the impact its creators had hoped it would.
The main difference between SOAP and Atom is that I can explain the latter to anyone in 5 minutes. Actually that's what some Google engineers have exactly done and you can find the results on YouTube.
And there's plenty of XML APIs and JSON APIs and each one of that APIs reinvents the concepts of feeds and entries, because those concepts are very natural.
Anyway, I understand that AtomPub just isn't very popular[2], but I was interested in any technical difficulties that may arise for both services providers and consumers. That is, if I were to implement API for NextBigThing and were to implement AtomPub-based API, could that be a problem for anyone?
Well, I guess it's a shame I haven't had a chance to get this discussion going while this story was still on the front page…
[1] Which went from "XML is too complex, fuck it; Let's just dump our internal data structures and be done with it" to "Oh, now I understand what that schema thing is supposed to do; it's kinda neat. Let's just re-implement it in JSON."
[2] Actually it seems extremely anti-popular if you just go to ProgrammableWeb and filter several thousand APIs by protocol; there's only one page of results!
Shoot, did I previously log in to SO with my Google account? With my Facebook account? How can I remember? Or maybe, I created a "myOpenID" account? After trying various combinations, I became frustrated by the error "No OpenID endpoint found."
Finally, I ended up spending twenty minutes digging through my old e-mail to figure out that I did, in fact, create a dedicated OpenID account at myopenid.com.
It turned out, for some ungodly reason, that I have to enter my OpenID as "http://<my username>.myopenid.com/" -- I would not have ever guessed this.
As a developer, I can appreciate the motivation behind OpenID. But the execution is simply frustrating.
OpenID is fine in this regard. The root of the problem in lack of site with a short and concise explanation what OpenID is, and best-practice tips on how it should be used. With all contents in public domain or under very non-restrictive free license.
Also, I'd note that the problem you mention is the same for passwords/passphrases. I.e. you have to remember whenever you used one password generator or another (I, unfortunately, have two, because due to way-too-smart sites which decided they won't accept some ASCII non-alphanumeric characters, passwords made by first one, while being secure, weren't allowed to use), or the site was a special case where you typed man-made password. "Did I use my X password here? Or my Y password?" - it's exactly the same.
That you think OpenID fails because there is no concise explanations of best practices and tips is damning enough. Most users aren't going to read that stuff.
Email is exactly the same as OpenID in this regard. Your forgot-which-OpenID-was-used could be compared to forgetting which email address was used. And this is, actually, popular. It's just a hype that everyone's talking about OpenID - totally forgetting that traditional systems have the same problems.
If you're doing it right - by having one primary OpenID URI (per identity) - you won't really forget what your OpenID is.
> Most users aren't going to read that stuff.
Nor passwords, nor OpenID were ever intended to work around this kind of problems. And I doubt there's any solution at all. Users will always forget all sort of things, use and reuse totally insecure passwords, keep their backdoor open wide with silly "password recovery" questions anyone could guess, leak all kinds of sensitive information and whatever else they could do wrong.
Sadly, "OpenID sucks" became a meme. And this is the main reason why OpenID suck now.
I personally find OpenID totally awesome (not that it couldn't be better) when I want to try a new service and don't want to go through a registration form or hand out my password to an untrusted website or when I'm too lazy to type my username/password.
At one point, I had something like 3 or 4 different sites I was registered on that would serve as OpenID providers for me, but not a single place that I wanted to login to accepted OpenID. At that point, I pretty much forgot about OpenID. I bet a lot of would-be early adopters did the same.
By the time I actually started occasionally encountering sites that accepted OpenID and that I wanted to use, I had 1Password and didn't care about OpenID anymore.
It needs an "Modern XML" like the "Modern Perl" that's going around - a take from someone who has used it to solve problems and goes over the bright points and black marks.
For example, to the neophyte, do you pick DTD, XML Schema, RelaxNG, or Schematron to solve data validation task X? How about task Y?
Too many people tried to use XML as a CSV or other structured data replacement, where JSON is usually superior. I doubt that anyone thinks that JSON is a HTML replacement, but XML can be.
It comes down to different tool, different job, and using the wrong tools can leave a sour taste in one's mouth about a technology - how many people here have similar feelings about Java or Windows?
Facebook is implementing a similar proprietary alternative login: FacebookConnect.
You're kidding, right?
Big names that I know of that use/publish RDF:
http://www.bbc.co.uk/blogs/bbcinternet/2010/07/the_world_cup...
http://wiki.freebase.com/wiki/RDF
http://richard.cyganiak.de/blog/2009/10/linked-data-at-the-n...
http://newsbreaks.infotoday.com/NewsBreaks/SciVerse-Hub-Appl...
http://en.wikipedia.org/wiki/Evri
[EDIT] Don't forget DBpedia and FreeBase (which uses RDF heavily) is used heavily by PowerSet which subsequently was bought by Microsoft which now (as far as I know) is used heavily for Bing.
RDF isn't as widespread as it could be (it could be used in Facebook and Wikipedia but isn't, for example).
(And I haven't even heard of FOAF.)
I wouldn't call these huge successes.
Yea, the so-called XHTML5 that will be finally supported in IE9, BTW.
It turns out that's a really bad idea on the Web.
Further reading: http://diveintohtml5.org/past.html
XHTML was a failure. Everyone stuck with HTML4 and advantages of XHTML haven't materialised. I question the whole reasoning behind trying to retrofit HTML into XML.
The "semantic web" has never delivered on its promises, despite hanging around like a bad smell. Very few sites use RDF (or FOAF). The real-world problems that RDF was supposed to solve are, in practice, solved by simple JSON-based Web APIs.
The only XML-based web technology to become a success is RSS.
Now, if SQL were the new thing and had been developed by a group trying to make a standard API for CRUD operations based on some new generalized "Relational Algebra" concept that they extracted out of a couple of company payroll applications, I'd say he was onto something.
OpenID should probably have seen it was overly complex, but I'm not sure how anyone could have guessed that XML was going to be shunned in favor of JSON. It does have some pretty cool advantages, such as DTDs ensuring correctness. It's just that it got a lot of typing real fast (and probably was never supposed to be written by humans anyway) and the space sizes blew up too.
In most scripting languages reading JSON looks like this: x = json.parse(string) and saving it looks like this string = json.dump(x) ... The rest of the app looks the same as if JSON was never in the picture at all.
Now with XML, hah, in most scripting languages you have to instantiate a parser, then use strange xpath traversal methods that are different depending on which parser you use and os on. And don't even get me started on generating xml programmatically ...
Sure, I understand why handling XML has to be so much more complex, it's got attributes and a few other nifty things I will never have a use for.
JSON vs XML --> simplicity always wins over more features.
The remainder of the problems you list are not problems. There are one line parse and dump functions for XML. You don't need to use xpath to traverse a document. The result of parsing a document is the same across each OS (at least in Python, Ruby, Java, Go and other languages that I have used). An application shouldn't need to use more than one parse, so it does not matter that different parsers represent the DOM differently.
The fact that JSON has won over XML on the web says a lot about the technologies people are using to build websites these days. JavaScript client-side data processing seems to be a lot more popular than server-side processing with an XML-loving language like Java or C#.
I think this points to Ruby/Python/Perl/Javascript becoming more and more popular on the server side, even for "serious" apps.
We can just be glad we have such a simple, common data structure before people start writing insanely complex data interchange formats on top of it. You could just as easily write SOAP in JSON.
And what was wrong with the quote? Do you disagree with it and think respect can be bought?
You could have posted your comment as "NourielRoubini" or "LinusTorvalds" and it'd be just as xenophobic and worthless.