Could VistA be (hypothetically) implemented using only standard M (ANSI X11.1-1995)?

131 views
Skip to first unread message

Rochus Keller

unread,
Apr 4, 2025, 9:34:33 AMApr 4
to Hardhats
I'm trying to understand which language and database features a huge and proven system like VistA requires.

As far I've learned, VistA's codebase depends on legacy constructs and implementation-specific features (e.g. specific to GT.M or InterSystems Caché).

So my hypothetical question for experts who have an overview of all the VistA code (if that's even possible): could VistA be implemented only using the features provided by the ANSI M 1995 standard, or would the use of implementation-specific features be unavoidable? If the latter, which would be the most important required features that go beyond the standard? 

Can you recommend a document where this is discussed?

Sam Habiel

unread,
Apr 5, 2025, 7:13:06 PMApr 5
to hard...@googlegroups.com
This is a strange question: It's at least 40 years too late to ask this! Most of this discussion took place in the early 80's.

> [C]ould VistA be implemented only using the features provided by the ANSI M 1995 standard, or would the use of implementation-specific features be unavoidable?

The M Standard leaves a lot of features to be done by the implementer: Job command, how devices work, etc. And even in the best case scenario, none of the implementations that run VistA today completely implements the M standard. I think Cache/IRIS comes closest because it has SSVNs. Add to that that you need many features not specified in the standard in any case. The solution that VistA came up with is to isolate the commands that are different by implementation in %Z routines that are interchangeable. By and large though most %Z* routines have now converged, and we only really have a handful that ZTMGRSET renames that make any difference.

In today's world though, a bunch of work is done by implementer libraries (like HTTP requests, TLS handling). So avoiding them is hard, and these are now the most common issue with porting VistA code today. You can theoretically rewrite them on your own, but at least for HTTP, I am concluding that that's a losing battle.

> If the latter, which would be the most important required features that go beyond the standard?

Not sure I can come up with a list off the top of my head. Why are you asking?

> Can you recommend a document where this is discussed?

This was probably discussed in the 1970's and early 80's. I don't know if I have any documents that tell you what the discussions were.

--Sam


--
--
http://groups.google.com/group/Hardhats
To unsubscribe, send email to Hardhats+u...@googlegroups.com

---
You received this message because you are subscribed to the Google Groups "Hardhats" group.
To unsubscribe from this group and stop receiving emails from it, send an email to hardhats+u...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/hardhats/af205124-a785-4c39-b168-1ef7ea31de52n%40googlegroups.com.

Rochus Keller

unread,
Apr 5, 2025, 8:01:05 PMApr 5
to Hardhats
Thanks for your response.

I conclude from it that the ANSI M 1995 standard would not be sufficient to implement VistA, and that the use of implementation-specific features is unavoidable, even if a system like VistA would be implemented today. I'm actually surprised to hear that, since I would have assumed that even if VistA has a long history predating the 1995 standard, the latter would still be powerful enough to implement such a system. The fact that libraries are reused by third parties does not detract from the standard if these libraries can be implemented with the means of the standard (or possibly via a foreign function interface provided for by the standard).

> Why are you asking?

I am thinking about what a modern version of MUMPS might look like. If the 1995 standard would have been sufficient to represent a system like VistA, I could have focused on that regarding the required language scope. Instead, I now have to look for other suitable sources, and it is becoming difficult to get a representative overview.

> This was probably discussed in the 1970's and early 80's.

Perhaps there are some protocols or proposals in the course of the 1995 standardization, or a review after publication about the usability of the standard. But apparently I overestimated the standard's practical significance.

Nancy Anthracite

unread,
Apr 5, 2025, 9:17:39 PMApr 5
to Hardhats, Rochus Keller

I think it is a wonderful thing that there are at least two open source, and maybe a another version of MUMPS you can use to implement VistA and the IRIS that the VA uses.  It seems you are asking something that doesn't much matter.


--

Nancy Anthracite

> >> ---

> >> You received this message because you are subscribed to the Google Groups

> >> "Hardhats" group.

> >> To unsubscribe from this group and stop receiving emails from it, send an

> >> email to hardhats+u...@googlegroups.com.

> >> To view this discussion visit

> >> https://groups.google.com/d/msgid/hardhats/af205124-a785-4c39-b168-1ef7ea31de52n%40googlegroups.com

Coty Embry

unread,
Apr 5, 2025, 10:17:46 PMApr 5
to hard...@googlegroups.com, Rochus Keller, Hardhats
Anything is possible if you put your mind to it ;) oh and lots and lots of time >.>


On Apr 5, 2025, at 8:17 PM, Nancy Anthracite <nanth...@earthlink.net> wrote:


---
You received this message because you are subscribed to the Google Groups "Hardhats" group.
To unsubscribe from this group and stop receiving emails from it, send an email to hardhats+u...@googlegroups.com.

David Whitten

unread,
Jun 14, 2025, 10:40:45 PMJun 14
to hard...@googlegroups.com
There are multiple things that the M standard does not specify, which every implementation has to include in order to do particular kinds of work.
As am example, almost all of the I/O device specifications must be included and extended by an M implementation.  
The M standard specifies a particular syntax and behavior for Input and Output devices, but how to differentiate a 
TCP/IP device from an ANSI 3.64 terminal device depends on the implementor..

If you browse the Annotated M Standard at http://71.174.62.16/Demo/AnnoStd you will see more details

Dave Whitten
Reply all
Reply to author
Forward
0 new messages