ALPS vs UBER

128 views
Skip to first unread message

Dmitry Pavlov

unread,
Apr 7, 2014, 6:36:29 AM4/7/14
to api-...@googlegroups.com
Hello.
After reading "RESTful web apis" I thought that for our web api alps could be a good choice for profile description, but in this list I found that Mike Amundsen is working on another format "UBER".
Is ALPS is already dead or will be after UBER maturing or they are just have different applications?

--
Regards, 
Dmitry Pavlov

Elben Shira

unread,
Apr 7, 2014, 2:14:44 PM4/7/14
to api-...@googlegroups.com
I had the same response when reading RESTful Web APIs. I think Leonard Richardson and Mike Amundsen did a great job explaining hypermedia, REST, and surveying today's available media types. Specifically, I enjoyed their insight that we are very used to traversing the web via hypermedia in the form of HTML.

But the strong push for choosing a pre-existing media type seemed off-based, especially the language that states something like "if you're not using one of our media types, then you're committing a grave sin." I don't see anyone using ALPs, for example.

I think of it as a chicken-and-egg problem. Say Twitter, Facebook, Google, and Salesforce implemented their APIs in a nicely defined media-type, with hypermedia and all. Then it would make sense for everyone to follow suit. But this isn't the case today.

I've tried thinking through how we could use media types like json.org, Collection+JSON, HAL, Siren, etc, at our company. But it seems that the tooling and community is not there yet to make such a commitment worth it. There are also a lot of unanswered questions (how would you combine two media types in a single API? What happens if I choose Collection+JSON and find it to be insufficiently expressive for future needs). An ad-hoc API (i.e. "fiat standard" in RESTful Web APIs) seems to still be the "safest" way.

I know some companies have successfully used one of these media types. Balanced, for example, uses jsonapi.org, I'm sure thanks to the work of Steve Klabnik. But even Balanced builds their own clients, which makes sense, because the semantics of a money transfer API is different than a to-do app.

At the end, I don't think there is enough real-world evidence to show that it's worth all the effort to go full hypermedia with well-defined media types. And so some of us that are designing APIs go back to what we know best: our nice, safe world of a personal fiat standard.

Steve Klabnik

unread,
Apr 7, 2014, 3:03:43 PM4/7/14
to api-...@googlegroups.com
We build our own clients because that's what customers want. I'd
actually recommend that _every_ API provider provide official clients,
even if their API is incredibly simple. Let your customers hit the
ground running, rather than forcing them to re-build code that
everyone can share. And it doesn't even cut anyone off: we have one
client who really wants specific things, and so they've built their
own client. Works well for everyone.

Philip Nelson

unread,
Apr 7, 2014, 3:15:22 PM4/7/14
to api-...@googlegroups.com
It seems to me that most of these open media types fall into the category of a generic collection as a type of software. We use collection api's all the time in other parts of our code, and consider rolling our own a code smell. For the project I'm on now, I haven't felt much in the way of constraints using HAL. 

Is it just learning the expected semantics you find onerous? You can add whatever you want beyond that anyway. 



--
You received this message because you are subscribed to the Google Groups "API Craft" group.
To unsubscribe from this group and stop receiving emails from it, send an email to api-craft+...@googlegroups.com.
Visit this group at http://groups.google.com/group/api-craft.
For more options, visit https://groups.google.com/d/optout.

mca

unread,
Apr 7, 2014, 10:24:22 PM4/7/14
to api-...@googlegroups.com
Dimitry:

ALPS is designed as a description format -- you can use it to describe real life concepts as a "problem domain" and then use this description to design an actual API.

UBER is designed as runtime message format -- you can use it to model representations of a live API.

So you could *describe* the service w/ ALPS and *implement* the service w/ UBER.

Does that help?

--

Dmitry Pavlov

unread,
Apr 8, 2014, 1:55:00 AM4/8/14
to api-...@googlegroups.com
I think i get it, UBER is just a hypermedia format, like HAL or Siren.
In that way I think I'll continue to use ALPS for profile description, thanks!


--
С уважением,
Дмитрий Павлов

mca

unread,
Apr 8, 2014, 6:10:51 AM4/8/14
to api-...@googlegroups.com

Right. You've got the idea.

Would love to learn how your ste using ALPS. Always looking for feedback and real life use cases.

Cheers.

Reply all
Reply to author
Forward
0 new messages