I'd like to see a lightweight generic technology-agnostic API that gave access to the functionality of domain-driven applications.
Generic, because it would provide generic abstractions for doing CRUD and invoking actions and queries, based on sufficient schema metadata. Technology-agnostic because it would be purely specification, the actual behavior would need to be provided by supporting implementations (Isis, OpenXava, Grails etc). Also, being easy to translate to other languages would be a primary design goal. Think Restful Objects but without hitting the network. Think Isis without the runtime support and user's domain-specific Java classes. I have seen the isis-metamodel-core component, but it seems much richer/more complex than necessary. Exposing similar functionality as RO would require a much simpler spec I believe. Agreed? Then, if instead of Isis-specific viewers we had viewers built on this API, we could run them against a much wider range of stacks that Isis will ever provide. Since they would be used in many different contexts, it would be easier to get more people on-board to develop them (not only those interested in Isis, or Grails etc). Disclaimer: I develop a service that while not Isis or RO-based, is also domain-driven. I developed a couple of "viewers" (Qooxdoo UI and a REST API), and am considering an Android one, and I wish I didn't have to, or at least that they were reusable in other contexts. I published a similar API that I built for using in Cloudfier here: http://bitbucket.org/abstratt/kirra-api/ See how small it is. Yet it allows me to build generic clients that don't know what kind of runtime the accessed functionality is running on. Please don't get hung up on details - I'd be happy to drop it in favor of something new (built collaboratively with folks from Isis, OpenXava, Naked Objects etc). I decided to publish it as open-source just to get the conversation started. So, pipe dream, or a doable endeavor? Cheers, Rafael
