Hi Seref,
I appreciate that perspective, and I totally agree that openEHR should remain technology-agnostic. However, I believe there is a vital distinction between implementation details (how a machine manages logic and runs memory ) and semantic behavior (how a language guarantees results).
When we move from the Reference Model (RM) into the territory of the “Basic Meta-Model (BMM)” and “Expression Languages”, we are effectively designing a Domain-Specific Language (DSL). For a DSL to be truly agnostic, the result of an expression must be identical regardless of the underlying technology it is implemented in.
Diving into these “technicalities” isn’t an abandonment of agnosticism; rather, it is the process of rectifying ambiguity. Consider these industry specs:
-
Java itself: The specification is technology-agnostic (implemented by HotSpot, OpenJ9, etc.), yet it strictly defines primitive behavior and memory semantics to ensure “Write Once, Run Anywhere.”
-
ECMAScript (JavaScript): Whether implemented in C++ (Node.js/V8), Zig (Bun), or C++ (WebKit), the specification dictates exactly how strings and objects behave. Without this “technical” specification, the web would break across different browsers.
In all these languages and specs it defines a solid foundation that all implementers should abide by, like typing(which BTW, is greatly defined in BMM), core syntax primtives, and objects, etc. and none specify how underlying machinery work like their garbage collector for example. I know OpenEHR puropse isn’t like general purpose languages but sematic consistency still essential.
Similarly, if the BMM/EL remains silent on mutability or variance, we risk a “fragmented truth” where a clinical validation passes on a Java-based server but fails—or worse, causes a side effect—on a C++ or C# implementation.
In my view, specifying that a “String is immutable” or defining “variance rules” isn’t over-stepping into implementation; it is defining the contract that implementers must fulfill. To ensure uniform clinical safety, the “what” (the result) must be standardized, even if the “how” (the code) remains entirely up to the developer.
But, also not an engineer, and I may be looking at this with POV of a developer (and an M.D. who values predictable outcomes!), but I believe that for openEHR BMM and Expression Language to function as a reliable computational environment, these semantic foundations need to be solid.
and thank you for your efforts.