This is a list of scenarios where WebDescription might be useful. Each scenario should show how a description file might be used, but should not go into details of the format syntax or semantics; see WebDescriptionExamples for that level of detail.
Please identify scenarios with a header, and feel free to discuss them here; if this page gets to big, it may be refactored into a page per scenario.
A description is used to communicate, in a well-understood format, the layout and capabilities of resources on a Web server, between people, removing the necessity for prose descriptions of Web sites (as is often seen today). Stylesheets might be used to present them, and Visio or Omni Outliner-like tools might be able to create and manipulate them easily.
I think this is potentially the most important scenario for use of a description format. -- MarkNottingham
Scenario: Client Generation
Software tools and IDEs use a description to facilitate generation of client-side code; e.g., creating classes, informing users of available methods.
Scenario: Server Code Generation
Software tools and IDEs use a description to facilitate generation of server-side code; e.g., creating classes, skeletons.
Scenario: Client Configuration
At runtime (although potentially at design time), a description is used to configure the details of communication to resources; e.g., whether the client should compress POST bodies optimistically, or if a server supports a pattern of use (e.g., POE) that the client can usefully abstract out.
Scenario: Server Configuration
At runtime (although potentially at design time), a description is used to configure resources; e.g., whether the server should compress response body content if the client advertises with Accept-Encoding; how the request should be authenticated.
Scenario: Intermediary Configuration
A description is used to dynamically configure an intermediary (proxy or gateway). E.g., whether authentication should be layered in, where the origin server for a request is, how cachable a response is.
Scenario: Client-side Automation
Similar to Semantic Web Services, with the use of semantic annotations, the client may be able to discover and rank services automatically, negotiate with them (for some definitions of negotiation) and invoke them. The terms change somewhat for RESTful services and applications, but the gist stays the same.