Jawas 2 : part 2

While Jawas 2 won't support server side document processing in the PHP or web framework sense, it will support extending the HTTP/1.1 protocol itself. The rationale here is that it is better to define new HTTP methods that can operate upon URIs in new ways than it is to define adhoc behaviors to individual URIs. This turns HTTP into an extensible messaging protocol with which one can build applications. JAWAS 2 will take the "web application server" par more seriously.

So what sort of plugins do I have in mind? Take COLLECT as an example, which will aggregate an entire directory tree into a single http response. Or a ZIP method that produces a zip or tgz archive of an entire URL. Another method could be SYNC which tells the server to synchronize all of the nodes in a peer group. A friend suggested VALIDATE which would check the physical integrity of all entities in ram or on disk. It seems possible to even specify a method like MAP which could post a program to execute over each document at a URL, or REDUCE which applies a binary function to each element and the aggregate. EVAL could run the document as a script in a sandbox context.

Key to this concept is one of access control. OPTIONS support may return only the methods a particular client may access. Permission escalation will require both secure socket layer and basic authentication support be present. Making file permission acessible match can also be an effective strategy. But each permission operation could also be represented by a method. CHOWN and CHGRP and CHMOD could all be methods as well. ADDUSER and PASSWD methods would allow for managing those resources via URIs as well.

The end result is a highly flexible CURL friendly application server. When combined with a proxy layer and smart clients the possibilities are nigh endless.