The HOPE Backstory
Article on the Organic Programming Environment (OPEN) is published. OPEN is a C++ implementation of data driven processes:
OPEN is a prototype development exploring a different paradigm for data management. Instead of applications being process-centric, in which processes drive data transfer, the Organic Programming environment uses a data-centric approach. In this paradigm, data initiates processes.
Underlying the implementation is the concept (though not explicitly stated as such) of semantic data.
Three articles on a framework called the Application Automation Layer:
- Introduction and Design
- Design and Implementation of the Bootstrap Loader and Component Manager
- The Data Hub
The code base became the basis for several proprietary products as well as the progenitor of Interacx in 2007.
2004 marked the year of shifting from C++ to C# development. One of the major advantages of C# at that time was its reflection capability, which created a variety of opportunities to create separation of concerns between various aspects of an application--user interface, data model, domain agnostic vs. domain specific code, etc.
MyXaml, a declarative instantiation engine, and MycroXaml, a lightweight version, are introduced. These are core technologies that enable runtime user interface declaration and data binding. In addition, MyXaml allows for the creation of application agnostic infrastructure and separate application-specific functionality into modular components interacting with each other through customizable scripts.
Marc Clifton develops Interacx, a closed-source n-tier server application. The key features of Interacx are its schema-centric and declarative-centric approaches to middle tier and client-side implementation. The middle tier dynamically generates all SQL operations based on an extended relational schema. The client-side consists of a core framework in which domain-specific behaviors are implemented as loadable modules. MyXaml is leveraged for user interface development with a custom Form Designer which includes a proprietary scripting language.
Marc Clifton introduces two articles on "CX", a prototype on component loose coupling.
From the article:
- You have components, such as UI elements, business logic, persistent storage interfaces, services, and so forth.
- These all implement consumer methods (event handlers) that are discoverable via Reflection or attributes decorating the methods.
- As well, there are events that the components (producers) can fire. A UI event will typically be something like a button click, list selection, or textbox change. A business component event will typically be a data value change. A data layer event will typically be a transaction response or "here's some data" event.
- Now, what we should be able to do, by drawing it, is wire up producer events to consumer methods, thus connecting the components, and implement the application-specific functionality.
Many of the concepts in CX are incorporated in HOPE.
Marc Clifton publishes a series of articles on Relationship Oriented Programming:
- Romeo and Juliet
- Relationship Oriented Programming
- Do You Really Want To Be Agile?
- Relationship Oriented Programming - The IDE plus More on Agile Project Management
Using somewhat whimsical but real-world issues with relationship mapping acquired from experiences in the record management and aeronautical industries, the articles explore a run-time dynamic relationship system. The concepts explored here, along with the experiences gained in schema-driven database interactions developed in 2007 drive the dynamic relationship engine of HOPE.
Marc Clifton meets Eric Harris-Braun who introduced Marc Clifton to concepts such as the MetaCurrency Project and his work on Ceptr, "a new computing stack for semantic self-describing data, and protocols."
Over the next two years, and from many discussions on Ceptr with Eric and also with Arthur Brock, Marc Clifton builds a prototype in 2014 (see the page Developer Articles) of semantic-driven computational systems, realizing and integrating the concepts developed over the last 12 years, specifically:
- Semantic data
- Data-driven processes
- Graphical user interface for creating computational systems
- Dynamic relationship mapping
- Modularity of processing components
There is a significant sharing of knowledge between the Ceptr and HOPE projects. While Ceptr is being developed in C for cross-platform compatibility and "provides mostly low-level functionality for our distributed receptors...[and] is primarily a tool for developers" (reference), HOPE approaches the concepts of distributed semantic processing from the non-programmer user perspective, leveraging many of the high-level implementations of the Microsoft .NET framework and C# language features. The result is a synergy of ideas and experiences that guide each project that continues to provide guidance and a sharing of implementation and best practices, benefiting both for developers and end-users alike.