As someone whose entire career has been involved with technology platforms, and specifically programming platforms in some form or another, it’s clear to me something which is obvious to most patient observers: that adherents of a particular technology platform tend to become very “religious” about it.
Advocates of specific a technology platform are known to rather vigoursly proselytize and defend their technology platform of choice, and they are also known to call out “blasphemy” (as they see it) against their technology platform. I guess it’s just human nature to gravitate to concepts and communities and to then defend them from perceived outside attackers. I myself have at times been among the technology platform devout over the years though I do try my best to keep it in check.
But I’ve noticed that the concept of RESTfulness in Web APIs has a religious tenor that is beyond what I’ve observed elsewhere. This post’s goal is to explain what I’ve perceived. As you read, note that I make several points along that way that seem to unrelated, but I bring them together at the end.
Well-Known Founders
Many technology platforms, while possibly having a single founder are promoted by companies and over time their marketing and promotion tend to minimize the founder’s visibility among its adherents, such as Windows, Java, .NET, Zend Framework, Sitecore and ExpressionEngine to name some commercial examples.
Yet other technology platforms have a single visible founder and they tend to be open source, for example: Linux, PHP, Python, Ruby on Rails, Drupal and WordPress to name just a few.
Like these mentioned open-source technology platforms REST also has a well-known founder Dr. Roy Fielding who named and defined REST in his chapter 5 of his doctoral thesis, titled Representational State Transfer (REST).
Architectural Style vs. Platform
Now if Dr. Fielding reads this post I’m sure he would first object to my associating REST with Platforms; he has made it clear on numerous occassions he considers REST to be an Architectural Style and not a Platform.
That’s fine and I don’t disagree in the least, but I’m associating them because they share at least one (1) attribute. Few (if any?) architecture styles have emerged that are the result of one man’s PhD definition, as I’m far as I am aware. And that has ramifications that caused REST to be treated by its adherents more like a software platform than a lower-level architectural style.
Requirements and Constraints
Unlike most technology platforms which are often not focused on the rules of how to use it properly, REST is instead a prescription for the requirements and constraints a system must follow. In other words its about both what you must and what you cannot do (in order to be considered RESTful).
Potential critics of this post might point out that that is the point of an architectural style. But this style has an engenered a level of religious fevor, similar to that seen around technology platforms that I’m not aware any of other architectural style receiving, at least not lately.
The Good Book
And this prescription for must and must not is where REST starts to look a lot more like a religion than most technology platforms. The Torah, the Bible and the Koran, for example, they are all written works that prescribe correct and incorrect behavior among their faithful. Similarly Roy’s thesis defines what is and what is not correct among the REST faithful.
God and the 10 Commandments
While most technology platforms that have a visible founder see the founder actively involved in evangelizing, writing about, and shepherding their platform on an ongoing basis, Dr. Fielding has pretty much been an absentee founder. In the earlier days of the web he was active on W3C and related mailing lists, and he wrote a seminal post clarifying (especially in his reply to comments) that “REST APIs must be hypertext-driven” But since then Dr. Fielding has been conspiculously absent when any of the debates regarding the application of REST have emerged.
In many ways Roy has been for REST like the God of the Old Testament; he spoke to the people in the early days and wrote his “commandments” in the form of his thesis, but since then the faithful have only had his thesis and that one blog post to clarify the meaning of REST.
Disagreement and Debate
Today, fourteen (14) years since Roy’s thesis and six (6) years after his seminal post on REST disagreement and debate rages on regarding RESTfulness and Web APIs, its relative usefulness, the level of RESTful purity required, and especially as it relates to one specific constraint; HATEOAS.
I’d link to specific debates but there are so many yet few epic or seminal debates so it’s hard to pick just one. But I can link to several conferences and mailing lists where you’ll find these debates and mentions of REST-related debates on blogs across the web:
The primary things you’ll find among these debates is disagreement on the role of hypermedia and an assertion that permeates much of the dialog among the most fervent being that most other people building APIs “don’t get it” and “are doing it wrong.” On the other hand there appears to be very little agreement on how to do it right, at least when it comes to specifics.
I will say that I do tend to agree with those debating that most people do not get it and that they are doing it wrong because parts of REST are not easy to fully understand so it’s very difficult to be sure of what exactly “right” is. And why is that?
Exegesis
It boils down to this. There’s little disagreement about who gets to define REST; everyone (I know of) points to Dr. Fielding as being authoritative and his writings canoncial. REST was defined by this one (1) man who wrote down it’s specification in an academically defined manner sans examples, and then briefly clarified it in one (1) blog post with follow up replies to questions for about two weeks after.
Since then the REST faithful have been left to interpret what REST means on their own much like the process of Exegesis related to religious texts.
And like religious movements, REST has a good many people who have taken it upon themselves to explain the meaning of The Good Book and the intentions of it’s founder. Without Fielding actively participating and making judgements on these debates who has the authority to declare who is right and who it wrong?
What if God was One of Us?
Imagine if God had decided to hang around all these years and intervene on the topic of religous debates? Imagine how much less contentious religion would be?
In that vein, I leave you with this joke from Emo Phillips as hopefully an appropriate analogy:
Once I saw this guy on a bridge about to jump.
I said, “Don’t do it!”
He said, “Nobody loves me.”I said, “God loves you. Do you believe in God?”
He said, “Yes.”I said, “Are you a Christian or a Jew?”
He said, “A Christian.”I said, “Me, too! Protestant or Catholic?”
He said, “Protestant.”I said, “Me, too! What franchise?”
He said, “Baptist.”I said, “Me, too! Northern Baptist or Southern Baptist?”
He said, “Northern Baptist.”I said, “Me, too! Northern Conservative Baptist or Northern Liberal Baptist?”
He said, “Northern Conservative Baptist.”I said, “Me, too! Northern Conservative Baptist Great Lakes Region, or Northern Conservative Baptist Eastern Region?”
He said, “Northern Conservative Baptist Great Lakes Region.”I said, “Me, too! Northern Conservative Baptist Great Lakes Region Council of 1879, or Northern Conservative Baptist Great Lakes Region Council of 1912?”
He said, “Northern Conservative Baptist Great Lakes Region Council of 1912.”I said, “Die, heretic!” And I pushed him over.
P.S. Credit for Inspiration
This entire post was inspired by Nick Kallen’s comment on Roy’s blog post about REST and hypermedia. His comment starts with this (emphasis mine):
I had a hard time with the writing in this article; I don’t normally perform exegesis on blog posts. Am I interpreting this correctly?
WOW! Great post. Gonna leave this one open for a while, let it digest, and stimulate similar thoughts I’ve been having lately.
Hi Kin,
I can’t think of anyone I’m more honored to have appreciate this post than “The API Evangelist.” Seriously, thank you!
-Mike
Fantastic post. I’ve drawn out the analogy a bit more here in a blog post – I see parallels between the REST “revolution” against SOAP and the Reformation -> http://www.soatothecloud.com/2014/02/rest-soap-religion-and-reformation.html
Your post has the same flaw many texts about religion nowadays have: it confuses the religion with its followers, judges the “religion” by its fanatics.
Seeing Fielding as REST’s God is incorrect. If we stick to the Old Testament, Moses is likely the better metaphor. Moses wrote down a bunch of rules that happen to work nicely for an orderly society. Fielding has done the same: there are some rules that appeared to work nicely for the Web; he found them and wrote them down. And the Web was not the work of one man. It has a whole history behind it. For this one solution that works, there were a hundred more that didn’t. One could say that the Web is the result of “natural” selection: many hypertext systems existed back in the days, the Web was apparently the only one with a design that enabled to scale globally. Fielding was interested in why the Web has these particularly interesting architectural properties, and he formalized this into a conceptual framework called “REST”. That hardly resembles the one God imposing rules on us.
It also indicates why it is meaningless to call “REST” a platform: the Web is a platform. The two tablets with the Ten Commandments don’t do anything themselves; it is societies that adhere to these and/or related ethical rules that carry value. What can you build on top of “REST”? Nothing; you build on top of the Web. The term “Computing platforms”—which is not as vaguely defined as the mentioned “Platform technology”—refers to environments, not technologies. REST is not an environment and thus cannot be called a platform, notwithstanding the fact that REST environments such as the Web do exist.
Observing that a certain number of people tend to defend a certain paradigm in a religious way does not change the validity of that paradigm. Similarly, the existence of a http://en.wikipedia.org/wiki/Flying_Spaghetti_Monster doesn’t suddenly turn spaghetti into a religion. The same thing applies here: even though some fanatics might act “religiously”, that doesn’t turn REST into a religion. It’s not something you have to believe or have to follow to be “right”; it is what it is: an architectural style.
If you follow the style, you will get certain architectural properties which might or might not be useful to the application you are building. If you don’t follow that style, you will get different architectural properties that might or might not be useful. It’s a technological decision and nothing more. Don’t blame the “religion”, blame the religious fanatics that try to turn it into something it’s not.
And finally, I highly doubt the “more”.
I really enjoyed this article. In contract with Ruben, I would highlight that the variety of expression of religion (in context with Biblical interpretation) is not the work of zealots but the strength of the foundational concepts (like the above mentioned 10 Commandments).
The principles behind REST are true and effective. That every possible variation of thought on REST principles is not completely written out does not nullify the value of the principles or the value of the REST-like variants. There isn’t a right or a wrong in a lot of REST conversations, just general “rightness” (except for strong SOAP advocates) and some consternation on the details.
In general, REST is a pretty good world view on network and application architecture. I would say that the Bible is similar on living life. Precision isn’t there, but satisfaction is…
I seriously don’t understand the problem. Why can’t people just stop using the term REST if they don’t want to adhere to the constraints that Fielding proposed? Is buzzword compliance really that important?
Interesting thoughts. I believe there is absolutely no harm done with all the (sometimes really religious) debastes around what REST is and what not. In fact, I believe it is fruitful.
I agree with Mike, though, some more contributions by Dr Fielding and his perspective today would certainly be very interesting.
Interesting perspective.
I actually think, Roy is much more a “Physicist”, than a “religious leader” :) in the sense that his work was to solve the puzzle, to explain something that existed: World Wide Web. Much like a Physicist is trying to deduce rules of nature, but isn’t inventing them, Roy wasn’t trying to just make-up things, he was trying to understand what architectural traits make web work, once web had already proven that it is scalable and sustainable.
In that sense, I don’t think “Roy’s” REST is a religion. Now the mess that masses made out of it… OK, that’s a different story :)
P.S. Fun fact. While the description of REST per se is in Chapter 5, Roy actually explains what “REST” is at the end of Chapter 4. Could be why a lot of people seem to have never read that: “The next chapter introduces and elaborates the Representational State Transfer (REST) architectural style for distributed hypermedia systems, as it has been developed to represent the model for how the modern Web should work. REST provides a set of architectural constraints that, when applied as a whole, emphasizes scalability of component interactions, generality of interfaces, independent deployment of components, and intermediary components to reduce interaction latency, enforce security, and encapsulate legacy systems.”
Hi @Ruben,
Thanks for taking the time to post a detailed reply. Sorry for the late followup.
Maybe, but in my world view a religion is equal to its followers. Without followers a religion would simply not exist; you cannot disconnect the two.
And I believe religions must be judged by their fanatics because it is the non-fanatics who give license to the fanatics ability to be fanatical in the name of their religion. If moderate followers were to actively disavow and excommunite fanantics then the fanatics would have no quarter. But the moderates (almost?) never do this.
Thus, for practical purposes:
And that’s the view of a secular humanist. But we digress.
It cannot be “incorrect” as it is my perception. You may have a different perception but that does not make your perception “correct”; by definition it is correctly, and only, your perception.
I was going to go with Moses when I wrote this but I did my homework beforehand. God inscribed the first tablets; Moses only inscribed their replacements after he destroyed the first set. But again, we digress.
Don’t disagree with any of that. Nor does it conflict with anything in the post.
One could definitely say that, and I look forward to and will applaud your blog post where you explain that analogy as you see it. We need more perspectives on understanding REST, not less.
But that’s where you started to miss the point of my post. REST should be considered a conceptual framework for what works, but instead it have been interpreted by followers as rules that must be obey, hence my comparison with REST to religion.
Did you actually read my post, or just skim it?
I stated explicitly that REST was not a platform. I also exaid that I was comparing them because REST shares some attributes with platforms. You may see my comparison as a stretch and that’s your perogative, but I felt it was a comparison worth making.
You seem to be making my point that
a religion == its followers
. :)Where did you find me saying anything about the validity of the REST platform?!? Stated explicitly I believe that REST is a very good architectural style, especially when compared with the architectural style(s) people are purportadly replacing with is such as SOAP, CORBA, COM and others that came before it.
It appears you simply assumed that I was being critical of REST; I was not. I wrote this post as a precursor to a post that I hope I have the time to write in the near future. In it I plan to layout what I think should define REST and what I think almost everyone who writes about it is missing. But I’ll leave that for another day.
But if the Flying Spaghetti Monster were taken seriously and were to acquire believers then by my definition it would be a religion (believers a.k.a. followers):
And since I’m not advocating that my definition be applied to law or have any broad societal consequences I’m happy to say that, on my blog, my definition of religion stands. :)
Ah but here on my blog, having fanatics means that it is a religion. But it can also be an architectural style; the two are not mutually exclusive.
Even so, that’s not the point; you are throwing the baby out with the bathwater. The point of the post was not to define REST as a religion but instead point out that debates on what defines REST have a religious tenor, and how the absentee nature of the one and only man who could mediate these debates results in inability to reconcile these debates. Again, I wrote this because I want to point back to it when I ultimately make my case for what I think REST requires and why.
BTW, I am not being critical of Dr. Roy Fielding as one commentor on Twitter surmised, I believe Fielding has every right to choose not to participate in the REST debates, and I bear him no ill will because he does not. I also hope that nobody else will bear him ill will either. I simply wanted to portray what I see to be the result of Fielding’s lack of involvement after establishing the concept in hopes that maybe we as a group of RESTafarians will start to formulate a better way forward. Just call me Martin Luther. :)
I could not agree with that statement any more than I do. Or, I agree that it should be that way.
Sorry, on this blog they are one and the same.
Funny, that was exactly the point of my post; to call out the religious fanaticsm and implicitly (and in a future post, explicitly) call for a way forward.
Thanks again for taking the time to comment in depth.
Hi @Dale,
Thanks for comment, glad you liked it.
Hmm, you got me on that one. I’ll need more elaboration to be able to contemplate it.
Hopefully I didn’t imply that I was being critical of REST; not at all! I believe REST has great value, if not frequently misunderstood. And I believe that misunderstanding is universal with the exception being Roy himself.
My hope we RESTafarians come to a canonical agreement on what exactly REST is, and move on from there.
Hi @Kjetil,
It’s not a "problem" per se, just an analysis of the situation as I currently see it.
There are three (3) broad categories of people involved with Web APIs that have adopted the term REST:
Those who don’t pay much attention to or don’t really care what REST really means and choose to apply the term to their own API which is essentially JSON over HTTP. For the former, it’s an education concern and for the latter you won’t get them to change until a better marking buzzword comes along.
Those who pay a lot of attention to what REST means and then advocate for REST as they see it to be by participating on forums, writing blog posts, writing books and hosting and/or speaking at conferences. And I guess I’d have to add myself to this group, at least the first two activities.
Those who don’t understand REST yet means but really want to learn what it means and apply their their own technical and/or business problem.
I ignored the first group and wrote this post for the latter two audiences to illustrate the confusion about REST is occuring and why I think the confusion exists. And as I have time I’ll be writing at least one follow up post on this subject.
Hi @Manfred,
Thanks for the comment.
Hmm. Well, as a secular humanist I tend to think that religious tenor tends to drown out rational debate, so I do think there is harm done whenever fanatics dominate the discussion
Yes. As I said in another comment I don’t blame Fielding one iota for his choice not to participate in the discussions, but if had my druthers I would love to see him become more active in settling the debates and, even better, to have him start writing blog posts explaining the finer points. But, that’s totally up to him.
Hi @IraKli,
Thanks for taking the time to comment.
Have you ever read the book “The True Believer; Thoughts on the Nature of Mass Movements?” Brilliant book. The author analyses mass movements related to religion, nationalism, ethnicity, etc. and illustrates many commonalities, of which I see several in REST.
For a mass movement to occur you need “Men of Words” and “Men of Action.” Read it and I think you’ll see the parallel between Dr. Fielding and Men of Words.
Read my reply to @Ruben above :)
Thanks for mentioning that. I was not aware but I will definitely scour the end of Chapter 4 in the near future.
Hi @Mark,
Thanks for the comment and glad you liked it.
Interesting post yourself, thanks for sharing. Looking forward to more posts on REST from you in the future.
Astonishing clarity of insight, both into programming and into the nature of religion and exegesis. I don’t even know what REST is. But I don’t have to know what it is to get the benefit from this blog post, which is a sure sign of a well written essay.
RPC (Remote Procedure Call) also surged from a PhD definition.
Hi @Paul, Thanks so much for the comment, appreciate that kudos.
Hi @Andres, Thanks also for the comment. Really? Did not know that. I googled for it and found RPC on Wikipedia where it said he coined the term while working at Xerox PARC at the same time he was pursuing his PhD. Interesting nonetheless, thanks for sharing!