The spec is on github, anyone is free to fork it and raise a pull
request. Afaik, there's a relatively large organisation using HAL in a
30+ dev project to replace their legacy system, there are various
others who are using it and have been for a while now.
There is a 'working group' - it's the 80+ people on the google group
mailing list who raise issues and receive emails from me asking for
feedback on new features/changes I'm making.
I mean "official" working group sponsored by W3C or IETF? IMO there needs to be a body to sanction it.HTML because a widely used standard without lots of competing alternatives because of the standardization process that W3C arose to provide for HTML. HAL will be just another person's approach until there is a group that comes together to standardize it.
I disagree, I can't see any significant chance for 'harm' -
The harm is in how hypermedia can impede adoption for a public API.
It's really easy to compose a URL and easy to CURL that URL but it's harder for a lot of web developers to go beyond that.
I think
(hopefully) the fittest will survive and we'll end up with the best
option(s) left standing.
Without active management it's unlikely because few people are currently motivated to use hypermedia. Beyond the REST true believers most people don't see the benefits (and I say "most" based on empirical evidence of percent of public APIs that don't support URL construction.)
With respect that is incredibly nieve, there are many different views
about how such a type should look it's unlikely that such a committee
of conflicting view points would come to any agreement on anything.
There were many, many conflicting views about what HTML5 should contain but because they knew there was value to only 1 HTML the stakeholders agreed to make only 1 spec.Looking back on the original HTML, I feel strongly we would not have had a web had a bunch of different people all decided to create something like HTML and all start publicly advocating for people to use their version. Instead TBL designed HTML and promoted it when nobody else had the vision, and fortunately he got HTML evolved enough before companies started trying to take control of it, and then he created the W3C to allow collaboration with those stakeholders and subsequent establishment of standards (yes, I've simplified things, but the point is the same.)REST hypermedia is currently still-borne for public APIs because nobody is currently actively reconciling the various visions that different advocates have.
I think the way it works now is ok, each individual author/community
publishes their design and tries to generate some traction - once some
decent traction is reached then I think it makes sense to look towards
fancy (painful) things like writing specs for RFCs and setting up
'proper' working groups.
I agree that's the natural evolution and that we might eventually evolve to a standard. But it won't happen quickly if nobody actively pushes for reconciliation.
So in the mean time we need people like me to say: "Wait, hypermedia ain't the panacea you may have heard, at least not for public APIs." If ya'll are okay with me pointing that out to new posters on the list, then it's all good. :)
Fwiw, I think HAL is getting to the stage
where it makes sense to write a proper spec aimed at becoming an RFC,
if you or anyone sharing this point of view is interested then please
join hal-discuss on google groups as this is likely where I will be
looking for input on this.
I'd be highly interested, but since working on a spec wouldn't generate revenue for my consulting business given our current focus I unfortunately can't spend any more time than an occasion comment on this list. Even though I wish I could be more involved.
To be clear I don't actually think there can be one content-type to rule them all (I actually believe that is anti REST) but I do believe for JSON there can be a common base they all extend (think like Atom links for XML) with common concepts that can be shared among all other formats that want "hypermedia" embedded in them.
Great points.To clarify my earlier posts, it's not so much "one true media type" (which was Mike Kelly's title :) but instead a "standard." The standard should enable the development of open source libraries for Javascript, PHP, Ruby, Python, .NET, Java, etc. for working with REST level 3 web services and allow companies like Apigee to update their API consoles to simplify testing and interaction. That might be one true media type, or if might be a common base like you suggest, with several well-known extensions.I do think radical simplicity will be important for this. The more people will have to learn to "do it right", the fewer likely people will adopt it so the common base may be what's needed by definition.
This seems like a great idea to me. As someone who bears the scars of being on both the customer and vendor side during standards developments/wars, I am no longer a big believer in IETF/OASIS/W3C as the place to solve things.
I think you are in a great position to drive this kind of thing. You are a vendor with a business reason drive adoption but not a vendor with a proprietary axe to grind (as far as I know.) And you've got the industry clout to gain the respect and attention of key stakeholders. Maybe RESTFest would be a good place for a kickoff meeting?What do you think?
My reservations are not about the spec, they are about the fact that not everyone on this list agrees that HAL is the one way to do hypermedia in REST. [...] Mark Nottingham thinks is should be home-json.
This seems like a great idea to me. As someone who bears the scars of being on both the customer and vendor side during standards developments/wars, I am no longer a big believer in IETF/OASIS/W3C as the place to solve things.
Someone (not sure, it was copied from another thread) said:My reservations are not about the spec, they are about the fact that not everyone on this list agrees that HAL is the one way to do hypermedia in REST. [...] Mark Nottingham thinks is should be home-json.To be clear: I'm not positioning json-home as the One True (or even "a") solution to hypermedia in REST; that's way too broad of a problem to tackle, and personally I think you're getting to diminishing returns by trying. At most, some conventions for linking are what's required.
-MikeI believe that someone was me.And the point was not to argue for a "One True" solution (someone else titled the thread) but instead that the hypermedia constraint that purists argue for is a non-starter for most public web APIs because IMO it puts too much burden on the client developer. Most (almost all?) public web APIs prescribe URL construction because IMO there isn't a standard enough method for hypermedia that few if any browsers/libraries/languages/open-source projects have implemented clients for interacting with hypermedia-based web services.Hypermedia puts the burden on the client developer to architect, build, and test to an acceptable level of robustness which 1.) significantly increases costs and time-to-market for the client developer and 2.) almost certainly retards API adoption. So IMO because the benefits of hypermedia are not immediately obvious to many people it remains a still-bourne concept.So my point was that those who so strenuously advocate for hypermedia should really corral their efforts to make consuming hypermedia web APIs as trivially easy as consuming web APIs that prescribe URL construction. The "One True" media type was just one such discussion that evolved from that idea.And serendipitously, you IMO are one of the few people who has the credentials to drive an industry solution to this problem, if you were so inclined.
And the point was not to argue for a "One True" solution (someone else titled the thread) but instead that the hypermedia constraint that purists argue for is a non-starter for most public web APIs because IMO it puts too much burden on the client developer. Most (almost all?) public web APIs prescribe URL construction because IMO there isn't a standard enough method for hypermedia that few if any browsers/libraries/languages/open-source projects have implemented clients for interacting with hypermedia-based web services.Hypermedia puts the burden on the client developer to architect, build, and test to an acceptable level of robustness which 1.) significantly increases costs and time-to-market for the client developer and 2.) almost certainly retards API adoption. So IMO because the benefits of hypermedia are not immediately obvious to many people it remains a still-bourne concept.So my point was that those who so strenuously advocate for hypermedia should really corral their efforts to make consuming hypermedia web APIs as trivially easy as consuming web APIs that prescribe URL construction. The "One True" media type was just one such discussion that evolved from that idea.
Don't disagree on any point.
I made a lot of assertions above, like that hypermedia increases costs and time-to-market, that hypermedia retards API adoption, that hypermedia places too much burden on the developer, that most public APIs prescribe URL construction, that there is no standard for hypermedia, that browsers/libraries/languages/open-source projects have implement a standard for hypermedia, or that URL construction is prescribed for more reasons than there being few browsers/libraries/languages/open-source projects? Or something else I didn't mention?So may I ask, did you disagree with all, including things which I think are fact (i.e. that few web APIs prescribe hypermedia?) For those you disagree with, might I ask for to please explain why? I respect your opinion and really want to know.
I'd also like to see less hand-waving and more software, more tangible benefit.
Agreed. But hopefully you'd agree that few people are in a position to actually affect a standard? I know that I am not; I'm self-employed and not sponsored by an industry heavy weight and have no prior standards experience to speak of.
Thanks. I'm inclined to give it a good go; json-home is a start, next is some software to show how / why.
Cool.
P.S. I also think that whatever standard might emerge, it would need to be able to layered on top of an existing mostly-RESTful web API instead of requiring the API and all existing client software to be redeveloped.
Yep, that's one of my primary goals too. Big question is how much bad practice to accommodate.
My opinion, which is only my opinion, is that if an API is mostly RESTful and JSON-based then it would be helpful if only a small, backward compatible addition would be required to enable hypermedia such as one top-level object property, or much better IMO, a link that returns a response defines hypermedia for the API using keys and values where one of the URIs would be specified as URI templates. That would be the lightest weight possible. The API docs could specify the hypermedia reference resource so that the existing APIs could optional not have to reference it. Again, just my opinion.
Don't disagree on any point.I made a lot of assertions above, like that hypermedia increases costs and time-to-market, that hypermedia retards API adoption, that hypermedia places too much burden on the developer, that most public APIs prescribe URL construction, that there is no standard for hypermedia, that browsers/libraries/languages/open-source projects have implement a standard for hypermedia, or that URL construction is prescribed for more reasons than there being few browsers/libraries/languages/open-source projects? Or something else I didn't mention?So may I ask, did you disagree with all, including things which I think are fact (i.e. that few web APIs prescribe hypermedia?) For those you disagree with, might I ask for to please explain why? I respect your opinion and really want to know.
I think that the costs are real, and that the burden needs to be justified / mitigated. I think it *presently* puts too much burden on the client; hopefully that can be addressed.
The low rate of adoption is due to people only recently understanding it, and only partially at that, and also because simple APIs (such as Twitter's, etc.) don't see as much benefit. See: <http://www.mnot.net/blog/2012/06/25/http_api_complexity_model>
That said, I see the number of APIs using linking growing; I've come across a fair number that don't define static URIs, but instead have the client fetch something with links first.
I'll be blogging more about this (hopefully) soon, in the context of json-home.
Damn you write fast! Thanks for elaborating.
Nope, just another day in Australia :)
If it's all the same, wish I were there. :)