[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