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