Release per Januari 12, 2024: MyContexts v0.22.0 (PDR version 0.24.0)
This release features some very visible changes against a background of encryption and a slew of minor improvements.
MyContexts Version v0.22.0 delivers the following milestones in the project Perspectives: Making Models as supported by NLnet:
- Encryption (Milestone 1)
- Various Small Improvements (Milestone 3)
Collectively with Milestone 2, these three have been described in the project proposal as: "To bring the basic part of the Perspectives system – the Perspectives Distributed Runtime – completely up to the task of hosting an application for actual end users, some finishing touches have to be applied. We include a collect-them-all category that includes, a.o., visible version numbers, encryption of stored data, a different user identifier format and making InPlace into a WebApp with a proper manifest. These will be reported on in detail in the release notes."
This work comprises the following points:
- Make InPlace version number accessible (now both the PDR and the MyContexts versions are visible in the System context on their own tab).
- Configure Apache such that only the GET verb is allowed on read databases - actually this is implemented differently in Couchb itself.
- On installation, by default there will be a single user, so no logon.
- Model versioned models
- Implement manifests for all models as public contexts.
- Remove the CRL compiler
- A mechanism for public/private keypairs:
- Model public and private keys in model:System
- Model a signing handshake
- Generate keypairs
- Store the keys in a PFX file in IndexedDB - not stored as PFX file, but following the recommended best practices on MDN
- Require a strong password on starting the application to access the PFX file - this turned out to be not in line with the security assumption that one's own devices require authentication.
- Delta encryption.
- User identifiers are now CUID2 identifiers, replacing GUIDs, in accordance to the ROS report.
- Create a Manifest for the MyContexts app and handle automatic updates.
- Catch all raised errors and continue the PDR.
- The System model has been updated to enable
- distinguishing between Users (participants to the Perspectives Universe) and Persons (who are more like objects, but still represent humans)
- The default installation no longer requires a separate step, nor a password, but is automatic.
The video below shows MyContexts as it runs on a MacBook mid 2015, 2,5 GHz quad core, 16 Mb internal memory. The current version has been shown to run on macOS Monterey 12.6.9 in Chrome and in FireFox.
Major changes
Other changes, apart from the above:
- Managing an installation. Over the course of the development of MyContexts, several utilities have been constructed to facilitate maintenance of one's installation (program and data). For example: removing an installation, and re-creating instances on the basis of locally available models. Access to these utilities have now been collected in a single page: https://mycontexts.com/manage.html.
- Speed. Various factors have contributed to improved performance: a much faster way of serialising resources before they are stored in the external database; reduction of the (generated) code base by at least 25%; intermittent writing to the database (changed resources are cached and only periodically stored all at once).
- A facelift for the graphical user interface. Among other things: new theming, more status indications for the user while he waits (for the application to load, to start, for a context to be loaded).
- Synchronizing multiple installations. A user may have an installation on several devices. We now have a mechanism to synchronize those devices (NOTE: this is a first version of such functionality; it will evolve in releases to come).
Selected minor changes
- runtime options. A mechanism to add option values to the installation process, such as the System model version that should be the base of the installation.
- Normal form conversion of ADT. The conversion of Abstract Syntax Trees to a canonical normal form proved faulty.
- Inversion of
individual
query steps. Queries may contain a named (indexed) individual (role or context), to provide a new starting point. However, I could not conceive of inversion of such query steps. This turns out to be really necessary, though and the current version fixes this omission.
- Database views complemented with cache search. We deploy database views (aka Couchdb queries) to retrieve multiple instaces. Usually, resource retrieval is strictly indexed, but occasionally we need access resources that are not directly linked. This facility worked well as long as all resources were immediately saved, In order to preserve functionality, we now complement view results with similar search on cached resources.