11436 SSO

Punk Rock and Web API Styles: Differentiate and Accept

Kevin Swiber
Sep 27, 2012

"Everything flows; nothing stands still." - Heraclitus

Cultural Evolution

Mainstream culture and subculture have a give-and-take relationship. Strong opinions are formed on both sides as cultural ideas shift between the underground and the commonplace. Let's explore this as it pertains to Web APIs, but first, we'll illustrate this pattern with a more popular example: punk music.

A Brief History of Punk

Punk music was born in the mid-1970s. Bands such as Detroit's MC5 and The Stooges were a gateway between the declining garage rock genre and a new style of music that would come to be known as punk. [[{"type":"media","view_mode":"media_original","fid":"16231","attributes":{"alt":"","class":"media-image","height":"499","style":"width: 300px; height: 150px; margin: 4px; float: right;","typeof":"foaf:Image","width":"1000"}}]]

You can follow the stream of influence to the turn of the century: The Ramones, Black Flag, Operation Ivy, NOFX. While varying in style and performance, these bands shared a common thread in DIY ethic and reckless abandon. More than just music, punk became a thriving subculture in the United States and around the world.                   image: layoutsparks.com

By the 1990s, a branch of punk known as "pop punk" began to inflitrate the mainstream. Pop punk is considered a fusion music genre, combining elements of pop and punk into a single style of music. Bands such as Green Day and Blink-182 saturated the airwaves. Fitting under the umbrella of "alternative rock," these bands received far greater reach and acceptance than most of their predecessors.

REST and the State of Web APIs

Music is just one example of this pattern in cultural appropriation. Another can be seen today in the evolution of Web APIs.

REST stands for Representational State Transfer. The term was coined in 2000 by Roy Fielding in his doctoral dissertation. REST is an architectural style that highlights a series of constraints for building loosely coupled client-server systems to span decades. It promotes independent evolution for both clients and servers and was born from the architectural success of the World Wide Web.

In the world of Web APIs, a subculture of smart, passionate people formed around REST. While some have different opinions, their approaches share similarities:

  • Use HTTP as a base protocol.
  • Be hypermedia-driven. Let messages from the server guide clients to their goals.
  • Implement patterns for distributed systems that stand the test of time.

REST is not a standard; it's a style. As a result of this and a spike in popularity, a branch of REST has emerged. This "pop REST" style is a fusion of traditional REST and alternative techniques. The approach:

  • Use HTTP as a base protocol.
  • Implement patterns for distributed systems that are easy for developers to adopt.
  • Drive the application with clean, readable URIs.

Instead of driving application state with hypermedia messages, "pop REST" relies on clean, documented URI structures to assist developers in building client applications. Though distinctly different from traditional REST, it is this interpretation that has made its way into the mainstream.

Differentiate But Accept

For the many people who had never been exposed to punk music prior to the rise of pop-punk fame, the phrase "punk music" took on a totally different meaning. REST has gone down a similar path.

Much like old school punk and pop-punk, message-driven and URI-driven REST variations can co-exist. The Web API community has enough space for it all.

Going forward, it's up to us to collaborate as a community, document these differences, analyze design trade-offs, and offer guidance.

Regardless of experience in this arena, fresh thoughts are valuable. Check out the API Craft group for interesting API discussion, and maybe you can lead the trends. Voice your strong opinions along with a touch of DIY ethic and reckless abandon. Together, we are building the future. "Hey! Ho! Let's go!"

Scaling Microservices