Messaging encompases a set of media types and interactions for implementing publish and subscribe and point-to-point protocols. The key use cases are:
- event notification
- real-time feeds
- job processing
- work distribution
The specification will need to support both pull and push models for message consumption. In a pull model, a message consumer continually queries the server for new messages to consume. Pull models tend to require less book keeping for message providers. They also work very well with message consumers that cannot be posted to, i.e. a client are sitting behind a firewall or a browser (think AJAX). In a push model, message consumers register themselves with a message provider. When a message is available the provider sends the message to the consumer. Push models are much more efficient for message delivery especially when messages are only sporadically posted to the message provider. The specification will define interactions for each of these models for each of the ease cases defined above.
The Atom Syndication Format has become a very popular way to not only publish blogs, but also as a message distribution format. While the REST-* organization does see Atom as a useful format, it was originally designed for blog feeds and thus has a few drawbacks. A lot of its Atom metadata is completely unnecessary for machine-based interactions and sometimes even the entire format is overkill. Also, Atom is an XML format. While many distributed systems do use XML, there are many that need to exchange binary formats and non-XML based data. Therefore, this working group will define a replacement format for Atom. We'll define new HTTP headers as well as use the Link header specification to define relationships so that an envelope format like Atom can be avoided altogether. We'll also define a new media type that is more data-format agnostic.
This specification is currently in draft so we welcome all participation. Check out our collaboration page for more information.