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

-- 
devel mailing list
[email protected]
http://lists.deepamehta.de/mailman/listinfo/devel-lists.deepamehta.de

Reply via email to