Replacing ZEN - Part 1 - Introduction
Tags: fronted, zen, json, angular
Published: 2021-09-28 18:01:50

<p style="text-align: center;">
  <a href="https://community.intersystems.com/post/replacing-zen-index-articles">Index to Articles</a>
</p>

Hi All

I am an avid user of ZEN for over 10 years now and it works for me.  
But it seems that Intersystems are no longer actively developing it (or ZEN Mojo), the only published reference to this  is [here](https://community.intersystems.com/post/intersystems-iris-data-platform-201810-release#comment-43716)

<p style="margin-left: 40px;">
  <em>As an aside, Intersystems makes fine products (I have been using the technology for 35 years) and has great support BUT they are not good at being open with their product road map/retirement plans.  This is very embarrassing  to me when talking with my end user clients.</em>
</p>

So I am looking at how to replace ZEN - this is not a short term project, at one client I have over 800 ZEN pages.  
And it's such a shame as ZEN works and, most importantly, I and the team know how to make it "sing and dance".

I work in back office business apps so do not need some of the fancy stuff that is the modern web;

  * **Responsive pages**  - nope my users work on PC's only - having the page layout jump around would be confusing  
  * **Band width** - not a problem -my clients will all have good/excellent connectivity
  * **Cross browser/device** - not so important - I can design for a subset and insist on that
  * **Synchronous XHTTP** - Is crucial for me - if a user posts an invoice (say) I want them to see the result and not  be clicking elsewhere
  * **Back button, bookmarking and general navigation** - don't want this - there is a business process flow that I need to insist on - it makes no sense to me to go back to a display a record that has just been deleted
  * **Fancy transitions** - not really, my users are in front of a screen most of the day - using these would be tiring on the eyes

Also as a developer I want to have:-

  * **Longevity of the development environment** - I have seen many web development tool kits be the favourite of the month/year only to be discontinued after a short time.
  * **Minimise the development stack** - with ZEN you have COS, HTML, CSS, JS, XSLT (for FOP but I have got round having to learn that) more than enough.  I want to devote my intellectual effort to the business processes not learning the latest buzz technology.

So I have all of these in ZEN, and to re-iterate we know how to do make it "sing and dance"

However.....  
I need to have a strategy to replace ZEN over the coming years.

<p style="margin-left: 40px;">
  <em>Let me give you a real example of the issue with ZEN....<br />Recently I needed to implement (for the first time) printing bar charts - no problem, use the ZEN reporting chart component.  Spent 2 days trying to make it work - looking at the code in the component I could see that the programming for  css styling was just not finished (comments in the code 'TBD' (To Be Done)).  I could have attempted to sub-class and make it work, but instead did some Googling and found chart.js (open source) got the first chart up and running in 1/2 day and the second took only a couple of hours.</em>
</p>

Some principles:-

  * **Decoupling** the  web UI development from the back end is the way forward.
  * **Communication** between font and back end via JSON.
  * **Leverage the ecosystem** (where appropriate)  there's a wealth of stuff out there.
  * **Incremental development** ideally I would like to find  a strategy that allows me to have a single UI that runs the existing ZEN pages and the New UI together - this would allow me to develop new business modules in the New that work seamlessly with the Old.  Also to move the Old to the New one by one over a period of time.
  * **Programmatic Conversion** of the ZEN page definitions to the New.  This should be possible (at least to some high %) by scanning the globals ^oddDEF and ^oddCOM (%Dictionary.* classes) parse the XML/COS/JS and create definitions for the new.

So I plan this to be a series of articles documenting the journey.  
Hopefully I will be able to find time to keep it going

Peter

<p style="text-align: center;">
  <a href="https://community.intersystems.com/post/replacing-zen-index-articles">Index to Articles</a>
</p>