"original EWD" and "EWD Classic" are one and the same thing, just a different way of referring to the same product
"EWD Lite" and "EWD.js" are also one and the same thing. EWD Lite was the original working name for what I then re-branded EWD.js
So there are just 2 products in the EWD stable and not 4 as John implies:
- The original EWD is a "server page" technology, which generates all the HTML, JavaScript etc from Mumps routines which, in turn, are generated by a compiler from files of XML & HTML
- The newer and more modern 100% JavaScript-based EWD.js which uses Mumps as a database (and a database that is abstracted to appear to be a JSON persistence engine), but which also allows legacy Mumps code to be executed from within JavaScript.
Regarding Ben's posting, essentially the original EWD was designed to do was to make his kind of approach more scalable, sustainable and maintainable. Let me give some historical and technical background and perspective:
The original use of the web with Mumps started in about 1995 and quickly centred around a Mumps gateway product called WebLink (developed by my company M/Gateway but sold to InterSystems) - such early development used Ben's approach of writing Mumps routines that generated the HTML, JavaScript etc.
For anyone developing large applications, it soon became clear that this approach was unsustainable and pretty much unmaintainable as you had a horrible mix of massive amounts of inter-twined Mumps code, HTML, JavaScript etc. Additionally, every developer had to figure out a way of maintaining state and controlling security - it turned out that in general either they didn't (leaving horribly insecure applications), or did it badly and/or inconsistently, leaving gaping security holes in places. For this reason, a number of frameworks developed whereby the developer created what appeared to be pages of HTML and these were converted into Mumps code by a compiler - those generated routines consisted largely of Mumps write commands that spat back the originally-specified HTML (very like the hand-crafted examples that Ben has shown elsewhere). The other key feature of such frameworks was an automated and consistently-applied solution for security and session management, meaning less code and logic for the developer to worry about. Such frameworks reduce the actual Mumps coding that a developer has to physically write to the bits that really matter - getting, validating and saving data and performing the "business logic" of the application. All other Mumps code was either generated or run by the framework itself.
The earliest serious example of these frameworks was WebLink Developer (I was its author back in 1995/96, again it was sold to InterSystems). InterSystems attempted to replace WebLink Developer with their Cache Server Pages (CSP) technology. For a number of reasons I won't bore you with, I never liked their CSP concept, but one key feature was its dependence on Cache Objects and therefore its complete proprietary lock-in (actually, to this day the largest internet-facing web applications based on Cache still use WebLink Developer, not CSP - a little-known fact!).
EWD was eventually my response, taking what I felt were the best aspects of WebLink Developer, but resolving a number of deficiencies that I'd become aware of over the years and adopting new, modern techniques. EWD was originally written when I was consulting for a UK company called Mtivity, and provided a means of migrating them from an unmaintainable mess of hundreds of hand-crafted CSP pages to a sustainable, easily maintainable set of HTML pages from which CSP pages could be generated. It turned out that hand-crafted CSP was little better than hand-crafted Mumps code in terms of maintainability - CSP does nothing to discourage an inevitable descent into an inter-twined spaghetti of Cache ObjectScript/Mumps, JavaScript, HTML and CSS. So EWD was originally a framework for generating CSP pages from a higher-level abstraction that enforced separation of front-end and back-end code.
EWD evolved to work with any Mumps technology including GT.M - for this it makes use of an Open Source Apache gateway product called m_apache. EWD (the original one) is now a mature and thoroughly tried and tested and secure product - it's what runs Quest Diagnostics' EzOrder interface to their Internet-facing Care360 application, for example.
If, like Ben, you prefer to do your work in Mumps code, I'd strongly recommend using the original EWD - there's absolutely nothing to be gained by writing all that Mumps code yourself, other than gaining an understanding of just what frameworks such as EWD do for you in terms of saving you a ton of work, creating a maintainable code-base and looking after security and session management in a consistent way. Don't underestimate the importance and complexity of security in web applications - trust me, it's not something you want to roll yourself. If you use EWD you get the benefit of a security solution that has been tested and audited thoroughly by the likes of Quest Diagnostics.
EWD.js moves the state of the art a long way forward, dropping the now old-fashioned "server pages" concept (as is happening elsewhere in the industry) and moving to a 100% JavaScript approach and using static HTML and JavaScript pages for the application front-end. You can, in fact, still write your back-end business logic in Mumps code if you wish, and wrap it so that it can be invoked as a JavaScript function. EWD.js retains much of the security and state management techniques and concepts of the original EWD, and once again looks after all of it automatically.
However, the key concept behind EWD.js is to provide a strategic future for legacy Mumps applications against a backdrop of what everyone in this community needs to understand (whether they like it or not) is a dwindling population of developers who know or want to learn the Mumps language. EWD.js provides a realistic way of allowing the huge and growing population of JavaScript developers to be harnessed and provide a new generation of developers who can be the torch-bearers for VistA (and other such legacy Mumps applications). EWD.js means that VistA's Mumps code doesn't have to be thrown away or rewritten before it can be used and developed upon by the new generation of developers - but it makes that Mumps code accessible by JavaScript developers in their terms, not those of a Mumps developer. It sets the scene for a controlled and measured migration away from the Mumps language to JavaScript without throwing out the huge benefits of the massively and still relevant Mumps database. EWD.js harnesses that NoSQL database capability by projecting the database as a JSON persistence engine - once again allowing the JavaScript developer to use the Mumps database in their terms, not those of a Mumps guy, whilst allowing the Mumps development community to continue working as normal - the best of both worlds.
I therefore see no benefits or strategic future whatsoever in raw Mumps development for web-enablement of VistA. Neither do I see the original EWD as providing a long-term solution. The strategic future is EWD.js: it has been designed on the belief that VistA is a product and heritage worth preserving and passing on to the next generation, and is based on coming to terms with the fact that it's not going to be possible to build and retain the numbers of Mumps developers needed to sustain VistA into the future. Making it possible for the new generation of JavaScript developers to become VistA's future custodians, however, is, in my opinion, the sensible, right and proper thing to be doing.
Rob