EWD 3: The Next Generation


Today I’m announcing the latest evolution in my EWD products.  I’m calling it EWD 3.

Unlike the original “legacy” “server-pages” version o EWD (EWD 1) and the Node.js-based EWD.js (EWD 2), EWD 3 isn’t a single product, but a suite of Node.js modules, each of which does just one specific job. The core EWD 3 modules are designed to cleanly interoperate, but can also be used as standalone modules that can be integrated with other Node.js modules. EWD 3 takes the core ideas of and lessons learnt from EWD.js and creates a new, modern and extremely powerful suite of building blocks.


EWD 3 modules can be used to construct different environments such as a REST-based system or to run interactive, browser-based applications that communicate by Ajax and/or WebSockets.

The main aim of the previous generation (EWD.js) was to provide an  application run-time container, allowing the simultaneous execution of multiple Node.js applications, backed by a Cache or GT.M database.

In EWD 3, this is just one option: where EWD.js was a set menu, EWD 3 is a buffet – you decide what components and building blocks you need and put them together in the way that meets your needs.

For example, the ewd-xpress module is built using the core EWD 3 modules to create an application run-time container environment that is very similar to EWD.js.  However, if you look at the ewd-qoper8-vistarpc module, it uses a different assembly of the core EWD 3 modules to create a REST interface for the VA’s VistA Electronic Healthcare Record (EHR).

One key design aim of the ewd-xpress module was to ensure that it could be used with the latest and most commonly-used JavaScript frameworks such as Angular.js, but in particular the immensely powerful and increasingly popular React.js framework from Facebook. As part of the task of ensuring React.js-compatibility, the ewd-xpress-monitor module provides the equivalent of the EWD.js ewdMonitor application. ewd-xpress-monitor has been developed using React.js and incorporates a Flux-like design pattern for separating concerns and making the secure EWD 3 messaging APIs available to all the React modules that make up the application.  The design patterns used in ewd-xpress-monitor have proven to be very effective, and can be used as the basis for your own React.js applications if you wish.

In order to support modern JavaScript application development techniques, the browser-side EWD JavaScript is now also packaged as a Node.js module – ewd-client – which allows it to be used with bundling tools such as Browserify and WebPack. The EWD 3 client code has been rewritten from the ground up and is much simpler and cleaner than in EWD.js.

However, EWD 3 doesn’t force you to use these big-name JavaScript frameworks – the same client-side JavaScript module can also be used as a standard JavaScript script file for traditional hand-crafted HTML/JavaScript applications that can make use of the ewd-xpress back-end.

The current full set of EWD 3 modules is as follows:

Core Modules:

  • ewd-qoper8: this provides the core master / worker process infrastructure for EWD 3
  • ewd-qoper8-express: Express middleware interfacing for ewd-qoper8
  • ewd-qoper8-cache: this provides the interface between ewd-qoper8 worker processes and Cache, via the cache.node interface
  • ewd-qoper8-gtm: this provides the interface between ewd-qoper8 worker processes and GT.M, via the NodeM interface
  • ewd-document-store: abstracts Cache and GT.M as persistent JavaScript Objects and a uniquely fine-grained document database
  • ewd-session: builds on ewd-document-store to provide a Session Management environment for EWD 3 REST and interactive applications

Application-layer Modules (layered on the EWD 3 Core Modules)

  • ewd-qoper8-vistarpc: provides REST access to the RPCs within the VistA EHR
  • ewd-xpress: Express middleware and back-end, creating a run-time container environment for Ajax and WebSocket applications

Client-side Modules:

  • ewd-client: allows registration of ewd-xpress applications and provides the messaging APIs for communication with ewd-xpress

Development Tools:

  • ewd-xpress-react: React.js-specific client modules for ewd-xpress applications
  • ewd-react-tools: Tools for managing and documenting React.js-based ewd-xpress applications

Management Tools:

  • ewd-xpress-monitor: React.js-based ewd-xpress application for monitoring and managing an ewd-xpress / ewd-qoper8 environment

You’ll find all these modules in my Github repository at:


They’re also all available as NPM modules. Some of the more recent modules currently only have minimal documentation. Expect that to change over coming months.

Over coming weeks, in the EWD Community Forum  I’ll be describing how to build Cache and GT.M based ewd-xpress systems, and how to build React.js-based ewd-xpress applications

Expect to see further enhancement to the EWD 3 modules in coming months, and additional new application layer modules. I’m hoping others will also build new modules on top of the EWD 3 core – it’s now a very powerful, modern, flexible, scalable and highly-performant set of building blocks.

It really is the next EWD generation!



  1. wolfgang magnus · · Reply

    Open Mind from Hamburg / Germany

    Very constructive Future-directions for M.
    I like M, … i can thing like M … and M like me too…

    F.e. for “mashine-learning” via a structure like
    Bayes-Net, ( with intern weighted Vectors ) and with Neural-Net architectures.
    Recursions do@use^last(dialog,hirarchy, .. .. can learn rules.

    So i did with the Datatree – mumps in the global “Piazza virtuale” project 1992.
    ( http://scarabaeus.org/www.ponton.de/archive/archive_piazza.html )
    The “World-Knowledge” came from a daily Newspaper. in Berlin.

    Your Js-Tool -Connection is a good idea to generate Graphic-structure
    of a MindMapp- Input/Output Editor
    for a learnig or directed Knowledge-System.
    A quasi “Neuero-Bayes-Net” with M.
    We can start a mystery M-project.
    But with Mumps from ?? An after Datatree variant ?

    I hope G.T.M -mumps is a save and flexible Mumps in the Linux world ?
    Learning by dooing.

    Best Regards from Hamburg
    Wolfgang Werner Magnus

  2. […] JavaScript with Caché and Node.js using the latest technologies, I can also recommend reading the blog post about EWD 3 and the excellent EWD 3 Node.js training courses (click on the “training” link at the […]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: