Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

REST is OVER!

  • Loading branch information...
commit 661fde11d969204f47a0ffa17c085f5d12b0b919 1 parent 0edae1e
Steve Klabnik authored
1  blog.rb
View
@@ -85,6 +85,7 @@ def format_outline(outline)
begin
source = SourceFile.new(params[:id])
@title = source.metadata['title']
+ @title_hidden = source.metadata['title-hidden']
@content = source.content
@outline = source.outline
haml :post
118 posts/2012-02-23-rest-is-over.markdown
View
@@ -0,0 +1,118 @@
+---
+title: REST is OVER!
+title-hidden: true
+---
+
+<div style="text-align: center">
+<h1 style="
+padding:25px 0;
+margin-left: 40px;
+margin-right: 40px;
+margin-top: 0px;
+margin-bottom: 10px;
+font-size: 800%;
+letter-spacing: -0.04em;
+background-color: #4DBCE9;
+text-shadow: -2px -2px 0px white;">REST is</h1>
+<p><img src="http://i.imgur.com/GFhQ2.png" alt="over" /></p>
+</div>
+
+<hr/>
+
+Yep. Sorry to have to inform you. REST is totally over. The cool kids are
+moving on. We're building "Hypermedia APIs" now. Such is life.
+
+## A lesson from the anti-globalization movement
+
+Way back in the day, [COINTELPRO](http://en.wikipedia.org/wiki/COINTELPRO) was
+at the forefront of America's fight against "subersive" organizations and
+individuals. One goal of COINTELPRO was to create tension and division amongst
+radical groups, in order to disrupt their operations. Techniques such as
+[Concern Trolling](http://en.wikipedia.org/wiki/Troll_(Internet)#Concern\_troll)
+are really effective at this kind of thing.
+
+In 2008, for the Republican National Convention in St. Paul, a document was passed
+around:
+
+> At an anti-RNC conference held over the weekend of February 9th and 10th, a
+> broad spectrum of groups revealed what are being called the “St. Paul
+> Principles” of unity for resisting the 2008 Republican National Convention
+> (RNC).
+>
+> This is a departure from the sectarian squabbles that have plagued past
+> years’ anti-convention organizing. Pitting groups of differing political
+> beliefs against each other has been a frequent tactic of state repression
+> since the days of COINTELPRO.
+>
+> By drafting the principles together, the co-signing organizations are taking
+> historic steps to actively extinguish divisiveness from their respective
+> groups. The principles will ensure respect for the soon-to-be-permitted march
+> on September 1 by people planning non-permitted activities, and in turn,
+> participants in the September 1 march will adhere to the principles and do
+> nothing to sow division among the many activists coming to the Twin Cities to
+> protest the RNC.
+>
+> The principles are:
+>
+> 1. Our solidarity will be based on respect for a diversity of tactics and the
+> plans of other groups.
+>
+> 2. The actions and tactics used will be organized to maintain a separation of
+> time or space.
+>
+> 3. Any debates or criticisms will stay internal to the movement, avoiding any
+> public or media denunciations of fellow activists and events.
+>
+> 4. We oppose any state repression of dissent, including surveillance,
+> infiltration, disruption and violence. We agree not to assist law enforcement
+> actions against activists and others.
+
+Please draw your attention to the third principle. The reasons behind this rule
+are interesting:
+
+1. 'Solidarity' kinda goes out the window when you're busy arguing about each
+ other's drama.
+2. Every second you have in the media is precious. Why waste it talking about
+ each other when you could be talking about your issue?
+3. Media will jump on any kind of debate as a weakness. The only way to make
+ these sort of self-reflective discussions productive is to keep them
+ internal.
+
+So, keeping that all in mind, why are we arguing about what REST means all the
+time? Yes, it's annoying that the common usage of REST is not actually REST.
+Yes, it's really hard when someone is wrong on the Internet. Yes, words do
+matter. However, it's a question of what's most productive with our time.
+Every moment we waste arguing over what REST means could have been spent
+discussing how to properly build APIs instead. But why bother being productive
+when we can be critical?
+
+## 'Hypermedia API' is more clear
+
+The real problem is that REST is just bad branding. This isn't Roy's fault, he
+wasn't thinking about such things when trying to write his thesis. But really,
+from an outside perspective, a 'real RESTful API' does two things:
+
+1. Uses HTTP correctly.
+2. Serves hypermedia responses.
+
+HTTP does most of the heavy lifting in terms of bringing us into REST
+complaiance. So why are we talking about how to transfer represntations of state?
+
+The phrase "Hypermedia API" is much more direct: it's an API where hypermedia
+is at the center. Those RESTish APIs could never be called 'Hypermedia APIs,' as
+it's quite obvious that they don't use hypermedia. It is not quite clear that
+they don't transfer state and representations, though. ;)
+
+## We just really shouldn't fight
+
+Ultimately, it really comes back to the first point, though. Arguing about this
+is just wasting everyone's time. It's time to take a deep breath, step back,
+and just let REST go. Language changes. It happens. It might be a little bit
+sad, but life will move on. Let's build fantastic APIs instead. <3 <3 <3
+
+Oh, and I didn't actually kick this off, credit for that goes to Mike Amundsen
+and O'Reilly with [Building Hypermedia APIs with HTML5 and Node](http://www.amazon.com/Building-Hypermedia-APIs-HTML5-Node/dp/1449306578/ref=sr_1_1?ie=UTF8&qid=1330039178&sr=8-1).
+Once something has an O'Reilly book about it, it's legit. ;) Additionally, the
+term has been bandied about in the past, in various presentations and talks,
+but I feel that now's the time to really step forward and start calling a spade
+a spade.
3  views/post.haml
View
@@ -1,4 +1,5 @@
-%h1= @title
+- unless @title_hidden
+ %h1= @title
:preserve
#{@content}
- content_for :sidebar do
Please sign in to comment.
Something went wrong with that request. Please try again.