Release per Februari 3, 2021: InPlace v0.8.0
InPlace Version v0.8.0 delivers the following milestones in the project Practical Tools to Build the Context Web as supported by NLnet:
- Error boundaries (milestone T20)
- Deploy InPlace in the browser (milestone T0)
This release does not come with an installable product, because
- we're in the process of moving towards running InPlace in the browser;
- the Electron-based application would not show many changes.
The next release will see a full-blown browser version that one can install as a WebApp. In the meantime, check out this Demonstration of InPlace in the browser.
Note: the InPlace client code now is stored in a new github repository.
Major changes
- Error boundaries (milestone T20). Error boundaries have been placed around the PDR to protect it from failure in services it depends on, like the database and message broker service. Error boundaries have been added in the client code, as well. This ensures unbroken sessions for the end user (albeit possibly semantically compromised, depending on the error) and better error condition logging for debugging.
- Deploy InPlace in the browser (milestone T0). Up till this version, InPlace ran as an Electron application. From v0.8.0 on, it runs in all major browsers. It still relies on Couchdb for data persistence, however, which complicates its usage. As we rely on shared workers (most browsers) or have to connect pages through a service worker (Safari: it does not support shared workers), we have to use https rather than http. As a consequence, the application must approach Couchdb through https as well and that has proven to be cumbersome as Couchdb seems not to implement SSL protocol negotiation in such a way that it can interact with browsers. Consequently, we have to use an Apache proxy - clearly not a situation suited for end users. Moreover, we have to make the browser accept Couchdb's cookies, which it regards as third-party cookies (the domain of InPlace being first). For Safari, that requires us to make it stop blocking cookies altogether - again not very desirable. All this will go away with the next release, where we will switch Couchdb for IndexedDB. Browser integration encompasses:
- login once, for multiple tabs and windows
- drag role cards from window to window
- put a card on the card clipboard in one window, apply it in another window
- add an indexed name in the address bar to open a context straight away
- navigate back within a window over nested contexts using the browser back button
- open a link in another window.
Minor changes
- Fixed bug that prevented query updates for unlinked roles. This could be seen in the Chat app: when a new Chat arrives from a peer, it would not show up in the list of Chats until the perspective-screen was refreshed.
- Several smaller bugs with respect to authorization and indexed names.
- We no longer include documents in the indices in Couchdb. This is an optimisation.
- A new implementation of the card clipboard.
- The Purescript module AffJax had been adapted before to make version of the PDR run in node (the original version does not handle cookies). With this release comes a new adaptation that relies on the Fetch api rather than on XmlHttpRequest. This adaptation is available in this Affjax project clone. It contains a complete re-implementation of the foreign module.
Documentation
New documents have been added:
- Unlinked roles. Unlinked roles solve the problem of prohibitive memory cost of roles with very large numbers of instances.
- Model versions and compatibility. A model is not a static thing: it evolves over time. However, models depend on each other and data depends on models. This raises the question of compatibility.
- Error handling in the PDR. In this document we expose how we have protected the PDR against errors arising from interaction with services and peers.
- Configuring Couchdb for Inplace 8. Starting with version 8.0, the screens that provide a perspective on contexts are run as ordinary webpages in a browser. InPlace is heading to being a Web App . This has many advantages, one of them being able to have multiple windows open side by side. Each page communicates with the same Perspectives Distributed Runtime and this PDR executes in a service worker. Standards require PWA’s to be served over the secure protocol https and as a consequence, the PDR can now only make https calls.
The PDR stores data in Couchdb, which operates as a local webserver. Consequently, starting with version 8.0, Couchdb must be accessible over the https protocol (otherwise the PDR cannot reach it). This requires some extra configuration.
Updated documents: