[deepamehta-devel] DeepaMehta 3 ist gestartet!

Jörg Richter jri at deepamehta.de
So Okt 4 03:41:10 CEST 2009


On 02.10.2009, at 14:33, Urs Lerch wrote:

> Hallo Jörg,
>
> da ich jetzt meine Dissertation abgegeben habe würde ich gerne meine
> Java Skills aktualisieren. (Nicht nur!) Deshalb würde ich gerne an DM3
> mit entwickeln, möglichst von Beginn weg und mit Verantwortung in einem
> klar eingegrenzten Bereich. Hast du da was für mich? Ist der Code - du
> hast ja anscheinend schon was - öffentlich zugänglich (Subversion?). 
> Ich
> fände es zudem auch gut, wenn wir für DM3 eine eigene Mailliste hätten.
> Ich hoffe, du findest bald möglichst Zeit für eine Antwort!
>
> Gruss,
> Urs


Liebe DeepaMehta-Freunde,

@Urs: Vielen Dank für Deinen Anstoß!

Vor 5 Wochen habe ich mit der DeepaMehta 3 Entwicklung begonnen. Es 
gibt bereits eine nutzbare Version.

DeepaMehta 3 ist eine komplette Neuentwicklung. Es gibt keine 
gemeinsame Codebasis zu DeepaMehta 2.

In dieser Mail:
- Technischer Überblick
- Aus Nutzersicht
- Der Community-Plan
- Was können interessierte Entwickler und Anwender jetzt tun?
- Wo findet die DeepaMehta 3 Kommunikation statt?


=> Technischer Überblick:

DeepaMehta 3 ist bisher komplett in JavaScript geschrieben und läuft 
als AJAX- und jQuery getriebene Webanwendung direkt im Browser (ohne 
Java). Die Topicmap-Darstellung übernimmt das HTML 5 Canvas Element. Im 
Backend gibt es CouchDB, eine (JSON-)Dokument-basierte Datenbank mit 
REST-Schnittstelle. DeepaMehta 3 benutzt derzeit keine Middleware. Die 
komplette Anwendung (JavaScripts, CSS-Layouts) wird direkt aus CouchDB 
heraus serviert und läuft clientseitig im Webbrowser. Weitere 
serverseitige Funktionalität, z.B. Mailversand, wird von CouchDB 
Extensions erledigt. CouchDB Extensions können in beliebigen 
Programmiersprachen geschrieben werden und kommunizieren mit CouchDB 
per Standard-I/O. In DeepaMehta 3 ist derzeit die (Java-basierte) 
Lucene Volltext-Suchmaschine auf diese Weise an CouchDB angekoppelt.

Das Besondere an CouchDB (ein Apache-Projekt) ist, daß es aus der 
Lotus-Tradition kommt, und Versionierung und Replikation bereits 
eingebaut hat. Damit ist CouchDB prädestiniert für kollaborative 
Anwendungen, und auch für Online-Offline-Betrieb. CouchDB arbeitet 
nicht mit SQL, sondern mit einem Map-Reduce-Verfahren (das auch die 
Google-Suchmaschine einsetzt). Dezentralität und Skalierbarkeit wird 
dadurch besonders gut unterstützt. Wo der klassische DB-Entwickler 
Tabellen und Indizes definiert und dann SQL-Anfragen darauf formuliert, 
tut der CouchDB-Entwickler nichts von alledem. Der CouchDB-Entwickler 
definiert hauptsächlich Funktionen die den Index aktiv erstellen -- 
Performance ist sozusagen vorprogrammiert. Der CouchDB-Entwickler 
erstellt die Index-Funktonen in JavaScript (das serverseitig läuft). 
D.h. daß es für alle 3 Ebenen -- DB-Logik, Anwendungslogik, und 
Client-Logik -- nur noch eine einzige Sprache (JavaScript) und ein 
einheitliches Datenmodell (JSON) gibt. Das macht CouchDB auch aus 
Entwicklersicht meiner Meinung nach sehr attraktiv.

Besonderes Augenmerk bei der DeepaMehta 3 Entwicklung wird auf einen 
schlanken Kern in Verbindung mit einem Modul/Plugin Konzept gelegt. 
3rd-Party Entwickler können sowohl "vertikale" Anwendungsmodule, z.B. 
Kalender oder Kontaktverwaltung entwickeln, als auch "horizontale" 
Module, deren Funktionalität sich durch alle Anwendungen zieht, z.B. 
"Time Machine" oder "Access Control". Auch spezifische GUI-Komponenten 
werden durch Module bereitgestellt, z.B. das Canvas-basierte Topic Map 
Widget oder ein Tree-Renderer/Editor.

Derzeit stehen bereits 4 Plugins zur Verfügung, die optional 
installiert werden können:
1) "DM3 Time" - Fügt Dokumenten Zeitstempel hinzu und bietet eine 
zeitbasierte Suche, quer durch alle Anwendungen.
2) "DM3 Workspaces" - Strukturierungsmittel für die Knowledge Base. 
Jedes Topic ist von vornherein einem oder mehreren Workspaces 
zugeordnet. Dienen später auch als Shared Workspaces (Arbeitsgruppen), 
wie in DeepaMehta 2.
3) "DM3 Contacts" - Anwendung zur Kontaktverwaltung.
4) "DM3 Email" - Mail Client. Rundmail-Funktion in Verbindung mit dem 
DM3 Workspaces Plugin. Das Versenden von Mails wird in Kürze 
funktionieren. Das Empfangen von Mails steht noch aus.


=> Aus Nutzersicht:

Es können Topics und Relationen angelegt werden, und mit Inhalten 
gefüllt werden. Navigieren entlang der Relationen. Informationen sind 
nicht mehr so stark fragmentiert wie bei DeepaMehta 2: wenn man z.B. 
einen Contact-Topic anklickt, sieht man auf einen Blick alle relevanten 
Angaben wie Adresse, Email, Telefon usw.

Kollaboration. Zugriff und Bearbeiten einer Knowledge Base in den 
Grundzügen bereits möglich. Konflikterkennung (noch keine -Auflösung) 
beim gleichzeitigen Editieren eines Topics. Abgleich einer lokalen 
Knowledge Base mit einer zentralen Knowledge Base.

Volltextsuche in allen Feldern eines Topics. Wortanfangssuche, 
Phrasensuche. Zu Topics können Dateien (Attachments) hochgeladen 
werden. Volltextsuche auch in PDF, Word, Powerpoint, Excel-Dateien! 
(via Lucene-Tika und Apache POI).

Autocompletion. Je nach Anwendung macht DeepaMehta 3 beim Ausfüllen von 
Eingabefeldern Vorschläge. Wenn z.B. in das "To" Feld einer Email 
geschrieben wird, und die DM3 Contacts und DM3 Workspaces Plugins 
installiert sind, werden Einzelkontakte und Arbeitsgruppen 
vorgeschlagen.

Es gibt noch keine Online-Installation, wo man DeepaMehta 3 einfach 
ausprobieren kann. Derzeit ist die lokale Installation der einzige Weg 
DeepaMehta 3 zu benutzen. Die Installation ist derzeit nicht einfach, 
da einige Pakete (CouchDB, CouchApp, couchdb-lucene, Python, Java, Git) 
installiert und z.T. konfiguriert werden müssen.


=> Der Community-Plan:

Derzeit gehe ich davon aus, daß ich den DeepaMehta 3 Kern zunächst 
alleine entwickle. Wesentlich dabei ist das Design der 
Plugin/Modul-Schnittstellen. Als Grundlage für den Community-Prozeß 
sehe ich das beschriebene Plugin/Modul-Konzept. Jedes 
Community-Mitglied kann Plugins/Module entwickeln. In Kommunikation mit 
den Plugin/Modul-Entwicklern werde ich die Schnittstellen des 
DeepaMehta 3 Kerns nach Bedarf erweitern oder anpassen, immer im 
Hinblick auf zukünftige Anwendungsfälle. Mit der Zeit (das kann in 
einigen Monaten soweit sein) werden sich stabile Schnittstellen 
herausbilden, auf deren Grundlage zukünftige Plugin/Modul-Entwickler 
aufsetzen können, ohne Kontakt mit mir aufnehmen zu müssen. Damit werde 
ich nicht zum Flaschenhals, und das Projekt kann im großen Maßstab 
skalieren. Voraussetzung ist natürlich eine vollständige Dokumentation 
der Schnittstellen des DeepaMehta 3 Kerns.

Weitere Aspekte des Community-Prozesses, müssen sich noch finden, z.B. 
nach welchen Regeln die Kommunikation mit dem Kernentwickler abläuft. 
Später ist denkbar, daß langjährige Plugin/Modul-Entwickler in die 
Kernentwicklung einbezogen werden.

Ein Bereich, in dem Entwickler sofort, und völlig unabhängig vom 
DeepaMehta 3 Kern arbeiten können, ist die Entwicklung von CouchDB 
Extensions, z.B. für den Zugriff auf LDAP-Repositories oder andere 
Netzwerkdienste. Diese CouchDB Extensions werden wahrscheinlich in der 
DeepaMehta 3 Entwicklung noch eine größere Rolle spielen, denn 
bestimmte Funktionalität kann clientseitig nicht realisiert werden: 
JavaScript hat z.B. keinen beliebigen Netzwerkzugriff.
(Möglicherweise wird auch in DeepaMehta 3 doch wieder eine Middleware 
eingeführt werden, aber das ist aus meiner Sicht im Moment noch völlig 
unklar. Ich finde es spannend zu erfahren, wie weit der schlanke 
Middleware-lose Ansatz von DeepaMehta 3 in Verbindung von CouchDB 
Extensions trägt.)


=> Was können interessierte Entwickler und Anwender jetzt tun?

Entwickler könnten sich überlegen, welche Art von DeepaMehta 3 
Plugin/Modul bzw. welche Art CouchDB Extension sie entwickeln wollen. 
Dazu wäre es zunächst notwendig sich ggf. in die Basistechnologien 
einzuarbeiten: CouchDB, JavaScript, jQuery, DeepaMehta 3.

Anwender (und Entwickler) müßten als erstes die DeepaMehta 3 
Installation durchführen. Die Erfahrungen, die sie dabei machen, wären 
hilfreich, um die DeepaMehta 3 Installationsanweisungen für die 
verschiedenen Plattformen zu ergänzen.


=> Wo findet die DeepaMehta 3 Kommunikation statt?

Die DeepaMehta 3 Git-Repositories finden sich auf GitHub:
http://github.com/jri
Dort finden sich auch Installationsbeschreibungen und die 4 erwähnten 
Plugins. Die HEAD Revision ist direkt installier- und nutzbar. In etwa 
einem Monat wird es die 0.2 Release geben. Dann wird es dort im GitHub 
Wiki auch die erste Dokumentation der DeepaMehta 3 Kern-Schnittstellen 
geben. Auch der Issue-Tracker zu DeepaMehta 3 ist dort auf GitHub.

Die Google Group zur weiteren Diskussion rund um DeepaMehta 3 gibt es 
hier:
http://groups.google.com/group/deepamehta3
Zu dieser Gruppe kann jeder beitreten. Sobald man beigetreten ist, kann 
man über die Website Postings machen, oder direkt per Mail an 
deepamehta3 at googlegroups.com (diese erscheinen dann ebenfalls auf der 
Website).

Alle weiteren Infos und Diskussionen zu DeepaMehta 3 werden dort auf 
GitHub und in der Google Group stattfinden. Bitte schickt in der Regel 
keine Mails an mich persönlich.

Und nun bin ich gespannt auf das was kommt :)

Grüße
Jörg

www.deepamehta.de




Mehr Informationen über die Mailingliste devel