I’m pleased to announce the launch of REST-*.org (http://rest-star.org). REST-*.org is dedicated to bringing the architecture of the Web to traditional middleware services. While REST has gained huge momentum in the SOA community, there hasn’t been a lot of standardization of traditional middleware services. The REST-* community aims to introduce new REST-based standards for these traditional services where none exist and provide well-defined guidelines where protocols do exist.
Architecturally we aim to be lightweight and pragmatic with a heavy emphasis on avoiding envelope formats and leveraging the full capabilities of the HTTP protocol. From a community point of view, we have a totally open process and open source IP. Anybody can contribute and join the fun.
We’re starting off with two specifications: Transactions and Messaging. We’ll be expanding it to other areas as the community permits.
Mark Little defined an initial design of RESTful transactions 8 years ago at HP of both 2pc, ACID model as well as a forward-compensation engine. Michael Musgrove recently used RESTEasy to implement this for the JBoss Transaction Manager. Some consider REST + Transactions an oxymoron but there are some systems that may require a two-phase-commit protocol. Compensating Transactions though fit quite nicely in the RESTful paradigm as in the end a TM is really just a coordination service.
For messaging we’re building off of the ideas of both JBoss and others in the open source community. While Atom has become a popular mechanism for pub/sub in the REST community, it is dependent on an envelope format and was really meant for publishing blogs. We feel that something simpler is needed to satisify the variety of data formats exchanged between intra and inter business machine-based applications.
Both of these specifications are very raw right now. We feel that launching with something that is incomplete will allow us to build a set of contributors that have a vested interest in the specifications.
Why are we doing this?
The thing is SOAP has failed as an interoperability protocol. It is too complex to implement both from a vendor point of view and from an application point of view. Yet, the REST world still lacks many of the core services that enterprise developers have grown accustomed to (rightly or wrongly). REST-*.org will attempt to fill in the gaps.
Is this vendor driven?
Yes, Red Hat is a vendor. Yes, we want big vendors to get involved as this will help out with adoption. But all REST-* specifications are and will be run using open source processes. This means anybody can participate. Yes, the organization will have to have some structure.
How will we avoid the mistakes of SOAP and WS-*?
Blind idealism. 😉 Red Hat has a good track record for developing software that is community and user driven and then bringing these efforts to standards bodies (Hibernate and Seam are great examples of this). In this case though, we will be the ones jumpstarting and founding the standards body itself. We are battle tested in specifications efforts at the JCP and other bodies. We’ve often been frustrated by the closed and inflexible attributes of these organizations. We feel our open source roots and ideals make us an excellent candidate to drive and host standardization efforts.
Sep 16, 2009 @ 15:00:21
A great summary of what brought us to this point! As Sacha would say: Onward!!
Sep 16, 2009 @ 15:58:48
Can you please not choose Transactions. They just aren’t a real problem for distributed systems where you should be designing those things out and using compensations.
Other element please is if you are doing this then adopt Atom, lots of people are already using it and it does seem to work. We don’t need another wheel.
Otherwise I like the idea 😉
Sep 16, 2009 @ 17:55:16
I’ll blog about why I don’t like Atom later. Its not just me that doesn’t like it as a messaging protocol BTW. I think you should ask yourself “Why do I have to create an envelope document or parse a document just to receive a message?”
Sep 16, 2009 @ 23:13:59
Bill,
I hated WSDLs way of structuring ports and the nonsense of allowing the document exchange format to be embedded in rather than separated like any sane interface specification. However when it was standardised and tools helped people work in more sensible ways I never saw WSDL again.
If you are coding and using a REST framework why do you need to worry that it creates an envelope document?
What are the reasons for REST-TX? I’ve never seen an in the wild use of WS-TX or indeed distributed multi-system transactions that wouldn’t have been better done with compensations.
Steve
Service-Oriented Architecture mobile edition
Sep 16, 2009 @ 16:33:39
Sep 17, 2009 @ 00:06:07
@Steve Jones
Why is it important not to have an envelope document? For one your client (or server) may need to consume something other than XML. HTTP provides some nice facilities to negotiate this.
Also, why does WSDL matter if you never see it because of tooling? If your architecture requires tooling, then your architecture probably too complicated.
For REST-TX? 2pc is an edge case. I also rarely see it. +1 on compensations.
Sep 17, 2009 @ 17:52:59
Bill EVERYTHING in computing requires tooling. If you use HTTP then you will probably be using
A Web-Server which converts your IP requests into HTTP requests
A client side HTTP library which does the opposite
An IDE to develop in
A compiler to turn your code into something executable
A virtual machine to execute that code on the specific CPU you are running on
These are all tools that industrialise part of the process. Saying that having something that requires tooling is too complicated doesn’t make sense as the whole point of tooling is to increase the abstraction and enable more complicated tasks to be done more simply.
APP/Atom do not have to be used for EVERY request, if you need to dump video you’ll need to also dump the meta-data so having an initial Atom request with the meta-data which then gives you a URI to which you can dump the binary data wouldn’t (IMO) violate using Atom and would also mean that binary and non-XML elements can be incorporated. It does assume that the primary content and meta-data language is XML, which surely isn’t a big push?
I know REST-TX is an edge case (IMO one that REALLY indicates a failed architecture) and I think that by starting with two technical cases (TX and Messaging) you’ve inhibited some of the bits that would make REST-* better, namely standardising how we describe REST interfaces and providing a mechanism for the standardised extension of MIME types.
Sep 17, 2009 @ 20:21:36
Steve, as I mentioned on your blog post, the REST-TX specification that Bill references includes two models: one for traditional ACID transactions and the other for compensations. Don’t fixate on the former 😉 I think we all agree that the latter is the way to go.
Sep 17, 2009 @ 20:57:58
I think the two should be separated out into separate bullet points/specifications on the site.
Sep 18, 2009 @ 09:20:07
Yes, that might make it clearer.
Sep 18, 2009 @ 11:07:40
I’d say that for now I’d be inclined to take it off and concentrate elsewhere, focusing on TX isn’t helping the overall ambitions.
Steve
Sep 18, 2009 @ 14:43:47
I certainly don’t have time to work on it. I already have a few ideas for suggestions that I’ll mention to Mark Little and Michael Musgrove, but they are gonna have to drive it.
Sep 18, 2009 @ 14:36:19
It’s compensations. You need them and they are RESTful.
Sep 18, 2009 @ 14:44:24
But are they the first thing you need? Aren’t there other bits that should go first?
Sep 18, 2009 @ 15:06:15
We are focusing on middleware and middleware services. We are not trying to define what REST is. As I said in a previous comment, Little and Musgrave are gonna have to drive the transaction stuff. I’m more interested in how REST interacts with messaging, workflow, management, and general BPM.
Sep 18, 2009 @ 15:54:35
Bill, I think this is the problem that you are having with the REST community. You are focusing on middleware pieces and very vendor specific elements. If you started with some of the agreed challenges (e.g. description and documentation) then people might be more open.
By concentrating on middleware there is the risk that it will be perceived as simply a product flogging exercise rather than a developer enabling one.
Sep 18, 2009 @ 17:18:27
Steve,
I this “description and documentation” is better served being defined outside of REST-* and then used within REST-* when it becomes available. I want to focus on things that we have experience with, namely middleware. It is our expertise. Again, I don’t want REST-*.org to become a site that defines “What REST is.” I want it to be a site that defines middleware services.
Sep 25, 2010 @ 21:46:00
I’ve been reading RESTful Java hoping that it would answer a question I had that I didn’t find addressed in RESTful Web Services by Richardson and Ruby. RESTful Java addressed the question with an example that left me more confused.
I didn’t find anywhere that RESTful Web Services talked about services that we not resource oriented. For example, lets say you had a service that returned a weight in kilograms if you provided a weight in pounds.
On page 25 in RESTful Java it models a purge operation as a resource on a GET. This is close to more process oriented service. However, I don’t understand how a GET which is supposed to be idempotent and safe can be used for purge which is neither. A second purge might delete objects that had been added since an earlier purge was sent.
Mar 31, 2011 @ 16:27:55
Any idea if it will address the issue of a token post authentication? For critical appl, the user is not expected to be authenticated for every rsrc it touches. So, a token is issued after successful authentication. How is this token generated? Or are there other paradigms for this situation.
Mar 31, 2011 @ 17:29:04
A token is just another kind of authentication minus the user interaction. FYI, basic auth + TLS works just fine as well. Also no reason you can’t use form security and send the cookie every request too