[deepamehta-devel] DeepaMehta 5 is coming

Jörg Richter jri at deepamehta.de
Sat Jan 19 22:45:26 CET 2019


Dear DeepaMehta aficionados,

after 2 years of development DeepaMehta 5.0-beta.1 is scheduled for release at Jan 30, 2019.

Dramatic changes include both, frontend and backend.

Frontend: the all-new DM5 webclient delivers all the missing features wanted in DM4 for a long time. It features a modern look and feel and provides developers a comfortable development experience.

Backend: new identity/value data model. For the first time the DM Core solves the problem of updating highly connected semantic data structures without generating semantic side effects.

WEBCLIENT FEATURES

* Topic/association details are displayed directly in the Topicmap Panel. The Detail Panel is only visible when needed. Despite detailed in-map information display, no information is ever obscured. A clever animation algorithm solves the problem of moving things in order to avoid overlaps while at the same time maintaining a stable overall geometry.

* DM5 uses the extended graph model known from DM4, that is: edges can not only connect nodes but other edges too. This model is known as the Associative Model of Data [1]. For the first time DM5 makes edge connected edges visible and controllable by the user.

* Multi selection: you can select multiple topics/associations at once and apply bulk operations like move, hide, delete.

* Client-sync: a user sees immediately the changes done by other collaborating users (server push).

* Integrated Search/Create dialog: ensures you'll never create a topic that exists already. Searching existing things and creating new things is basically the same operation.

* Zoomable Topicmap Panel.

* 675 professionally designed vector icons provided (from the Font Awesome library) to be used for your custom topic types.

* Auto-suggestion/completion in all input fields.

* Dedicated widgets for date, time, color.

FRONTEND TECHNOLOGY

* Modern frontend libraries (bye bye jQuery!):
	- Vue.js reactivity system (binds views to data)
	- Vuex state management (central app state like React/Flux)
	- Vue-Router (route management)
	- Element UI (GUI widgets)
	- Cytoscape (graph rendering/interaction)
	- Leaflet (geomap rendering)
	- Quill (richtext editor)

* Modern frontend tooling:
	- Webpack (bundling, asset management)
	- Webpack Dev Server (hot module replacement)
	- Babel (Javascript transpiler)
	- Node.js (Javascript platform outside the browser)
	- npm (Node Package Manager)

* Component architecture:
	* You can write DM5 plugins to extend the webclient: hook in your own panels / renderers as Vue.js components.
	* The DM5 Webclient components (e.g. topicmap renderer, form renderer and processor) are reusable Vue.js components, published at npm, so you can reuse them in your own DM5 based frontend projects [2].
	* On-demand loading: components are only loaded when needed. E.g. if a user lacks edit permission there is no need to load the rich text editor.

* In contrast to DM4 all DM5 requests perform asynchronously, for better responsiveness.

BACKEND

The most notable feature of the DM5 backend is the new identity/value data model. By differentiating between identity types and value types, for the first time the problem of updating highly connected semantic data structures without generating semantic side effects is solved at the DM5 Core level. E.g. when a person moves to another place you don't want change her's Address topic in-place as this would cause unwanted semantic side effects in the other contexts where that address topic is connected to. At the other hand in terms of semantic storage you don't want create a new address topic when that address is known in the DB already. The duties of DM5 Core comprises both, managing references in the face of change, and storing unique semantic values.

In DM5 values are *immutable*. Immutable values never change. Instead their connections to the specific usage contexts do change. Immutable values can be simple or composite. Examples for (immutable) values are date, time, postal address, or geo coordinate. At the other hand in DM5 there are *identities*. Identities *are* changed in-place while keeping their identity. Examples for Identities are person or organization.

In DM4 if no special effort was taken unwanted semantic side effects may occur. In DM5 all references are maintained and updated at DM5 Core level, that is at server-side. Clients just send values. This simplifies the development of DM5 based webclients dramatically.

With 7.5 MB the current DM5 distro is still very compact (DM4's weight is 7.2 MB).

DM5's identity/value data model is inspired by Rich Hickey's talks [3][4].

Cheers,
Jörg


[1] Resources about the Associative Model of Data:
https://github.com/jri/cytoscape-edge-connections#the-associative-model-of-data

[2] Reusable DM5 components:
https://www.npmjs.com/~jri

[3] Talk "The Value of Values":
https://www.youtube.com/watch?v=-6BsiVyC1kM

[4] Talk "Persistent Data Structures and Managed References":
https://www.infoq.com/presentations/Value-Identity-State-Rich-Hickey



More information about the devel mailing list