I'm turning Marshall McLuhan on his head.

In 2013, the message is now the medium! :)

Design your message (the xsd schema) and let it be the Driver of Change. Generate all other artifacts from your messages and then your bug count, inconsistencies and maintenance plummet. The simplicity of Node.js lends itself to this approach. In theory, your labor-intensive areas become ( in yellow highlights ):

  • Schema design (the xsd)
  • Top-half of UI code
  • Business logic
  • Integration points

The theory looks promising with the ModelDrivenNode project. I've done similar java projects but Websphere, Weblogic, Tomcat, etc, are more complicated to template and have legacy issues.

Node.js was designed for the modern Web and for this project I'm using the MEAN stack. There's less impedance-mismatch, less transformation (json<->json), less configuration. The application becomes more dynamic but less complex.

Even integration points are simpler because they share common language and design contraints.

Imagine a commercial e-commerce system with 1000+ database tables (aka Websphere Commerce Suite, SAP or Oracle ATG) which is regenerated after custom schema changes. No more five-year projects, no more armies of minions hand-coding bugs year after year...

The template engine is generic. Drop a CRM schema into it. Drop an ERP schema into it and create a full enterprise system with much less complexity. The control points are the schema and templates, it's a level of abstraction above the code and a goal that companies desired but fell short of.

Part 1: Model Driven Node
Part 2: Multi-Tenant
Part 3: Object Graph Impedance
Part 4: Extending XSD Schema
Part 5: XJC Compiler
Part 6: Scalability
Part 7: Reference Implementation
Part 8: Tags and Queues
Part 9: URL Namespacing
Part 10: JSON Editor and Angular

Source Code