Beim Blick über den Tellerrand liegt der Fokus nicht auf der Funktionalität der Software, sondern auf der Organisation der Entwicklung und am Aufbau des Sourcecodes. Hier geht es darum von anderen Projekten zu lernen und die eigene Organisation zu verbessern. Daher erfolgt der hier präsentierte Blick auf die Software protokollartig durch meine Augen und entlang meiner Lernkurve.
Überblick
RSS Owl versteht sich selbst als komfortable Software um RSS, RDF und Atom News Feeds zu organisieren, zu suchen und zu lesen. Als besondere Stärken führt man die gemerkten Suchen, die Benachrichtigung aus dem Tray, schnelle Volltextsuche und die übersichtliche und saubere GUI ins Feld.
Auch ich hatte RSS Owl bereits eingesetzt und kann diese Stärken bestätigen. Damit steht es in direkter Konkurrenz zu dem Google Reader, der plattformunabhängig übers Web jederzeit den aktuellen Datenbestand zur Verfügung stellt.
Erhältlich ist RSS Owl unter der Eclipse Public License unter folgender URL: http://www.rssowl.org
Nun aber schnell mal per SVN die zuletzt veröffentlichte Version 2.0.6 auf die Platte ausgechecken!
Facts
Während das passiert, ein paar Facts rund um die Entwicklung. RSS Owl ist seit Juli 2003 ein Projekt auf Sourceforge unter der Leitung von Benjamin Pasero. Neben Benjamin Pasero entwickelt derzeit noch ein weiterer Entwickler an dem Programm mit. Es hatte bereits Anfang 2005 die 10.000 Downloads/Monat Marke durchbrochen, welche es seither verteidigt. Letztes Jahr wuchs das Projekt mit 359 Commits (also fast täglich) und es wurden 3.310 Files dabei hochgeladen. Insgesamt steht RSS Owl zum Zeitpunkt des Verfassens meines Artikels bei 7538 Commits. Macht fast 95 Commits je Monat.
Organisation
Homepage
Die Homepage ist einfach gehalten, was ich als durchaus positiv werte. Als Benutzer kommt man so schnell zu dem was einem interessiert. Interessanter versteckter Hinweis: RSSOwl nutzt den YourKit Java Profiler um die eigene Software zu analysieren und Schwachstellen aufzudecken. Auch den RSS Feed zur Verfolgung der Veränderungen im Source finde ich eine gute Sache.
Bugtracker
Bei der Suche nach einem BugTracker stößt man leider auf kleinere Hürden, der alte Link http://dev.rssowl.org der immernoch in der Wiki zu finden ist, sperrt uns mit einer Passwortfrage aus. Der neuere Link http://project.rssowl.org auf dem die Software Ratioal Team Concert zur Verwaltung der Entwicklung diente ist mittlerweile ebenfalls nicht mehr erreichbar. Bei den Entwicklern nachgefragt stellte sich heraus, dass der RTC Server nicht mehr in Verwendung ist. Um trotzdem einen kleinen Überblick zu erhalten konnte ich auf Youtube ein Video entdecken, in dem der Entwickler das Zusammenspiel zwischen Projekt Verwaltung, User und Entwickler aufzeigt.:
Da es sich hierbei vermutlich nur um ein temporäres Problem handelt, würde es sich lohnen später nochmal vorbeizusehen um einen persönlichen Eindrück zu gewinnen.
Source
Build
Das Ding das erste mal selbst zu bauen wirkt gar nicht so trivial wie erhofft. Und schon bin ich auch in die erste kleine Falle gelaufen. Selbst Schuld kann man sagen, haben die Entwickler doch in der Wiki den Build Prozess von RSSOwl ausreichend erklärt, wie man an ein funktionierendes Projekt Set kommt. Der vorgeschlagene Weg ist flott eingeschlagen und schon ist man mit einer Liste an Projekten konfrontiert. Noch die Launch Konfiguration für mein Eclipse angepasst und schon ist das Programm von Eclipse aus zu starten. Ein Problemloser Einstieg, eigentlich.
Tests
Auch die JUnit Tests laufen wie geschmiert. 842 Tests überprüfen die Funktionstüchtigkeit von RSSOwl, von denen 2 Failures gemeldet wurden. Mit einem raschen Blick auf die Fehler Ursache stellt sich heraus, dass hier die unterschiedliche Zeitzone die Schuld trägt. Mehrere Tests wurden auch ignoriert, viell. in Zusammenhang mit den Nullpointer Exceptions die beim Zugriff auf das Plugin „org.eclipse.equinox.common“ geworfen wurden. Dem gehe ich nun aber nicht weiter nach.
Die Tests sind umfangreich, großes Lob meinerseits! Auch sind die Testfälle ausreichend beschrieben und weisen Verweise auf gemeldete Bugs auf. Wie mit JUnit üblich existiert eine TestSuite mit mehreren Untergruppen. Dabei lässt sich bereits etwas über die Struktur des Programmes herauslesen. So gibt es Gruppen für den Core, für Funktionen die das Netzwerk benötigen und für welche die es nicht tun, für die Performance und für Spezialbereiche wie der PasswordProvider oder die JobQueue.
Packages/Module
Die eigentliche Anwendung selbst wurde aufgeteilt in die Komponenten Core und UI. Innerhalb der jeweiligen Subprojekte wurden die Klassen nach Funktionalität in verschiedenste Packages aufgeteilt. Hier sieht alles recht normal aus. Die relativ geringe Modularisierung wurde durch Programmierung gegen Interfaces ausgeglichen.
Das Projekt setzt auf SWT zur GUI Erzeugung. Im Speziellen wird hier Eclipse als Rich Client Plattform eingesetzt und die Ähnlichkeit im laufenden Betrieb lässt sich auch kaum leugnen. Vorteil davon ist ein professionelles Erscheinungsbild, und viele Sorgen die einem die Plattform abnimmt.
Alleine der Core von RSS Owl umfasst 365 Klassen, und so ist die Einstiegshürde bereits recht hoch. Um dennoch einen Einblick zu gewinnen, liefern einem die Authoren eine entsprechende Übersicht: Architecture and Extension Points
Comments
Die Authoren haben ihren Code durchgehend mit Kommentaren (Javadoc und andere Erklärungen) versehen. Zahlreiche Kommentare dienen als Lesestütze für den Sourcecode. Dabei haben sie gute Arbeit getan, die die Einstiegshürde für weitere helfenden Hände verringert und auch den alten Hasen dienlich ist.
Libs
RSSOwl nutzt db4o als Datenbank, greift auf die RSS Feeds mithilfe von Apaches httpclient zu und wertet sie mittels JDOM aus. Die angepriesene flotte Volltextsuche realisiert RSSOwl mithilfe von Lucene, ebenfalls ein Apache Projekt.
Da ich bisher noch kein Eclipse RCP Projekt gesehen habe sind die Abhängigkeiten zwischen den Projekten noch etwas undurchsichtig für mich. Prinzipiell bleibt zu sagen dass für jede genutzte fremde Library ein eigenes (Sub-)Projekt, ein sogenanntes Plugin, angelegt wurde, in dem neben der Binary Jar und den Sourcen noch richtigerweise die Lizenz der jeweiligen Bibliothek. In dem Zusammenhang stellt sich mir unabhängig von RSSOwl die Frage, wie in Maven derartiges mit Open Source Abhängigkeiten behandelt wird, schließlich ist je nachdem mindestens die Lizenz ein muss!?
Distribution
Dank der Nutzung von Eclipse RCP steht einer Veröffentlichung für die gängigen Plattformen Linux, Windows und Mac OS X nichts im Wege, außer vielleicht die Suche nach dem wie. Hier lässt die Wiki aus und der Haufen an XML Datein ist nicht sprechend genug. Meine Vermutung ist, dass ich eines der Goals aus der build.xml des Projekts org.rssowl.build verwenden müsste. Auch hier hilft mir der Author weiter, und meine Vermuting war nahe dran. In org.rssowl.build liegt eine rssowl.product Datei über die man den Eclipse Export Wizard anschmeißen kann. Auch das ist recht schnell geschehen.
Fazit
Für meinen nächsten Tellerrand muss ich mir mehr Zeit nehmen. Eine Eclipse RCP Anwendung nur aus flüchtigen Blicken in einen Source heraus zu verstehen ist nicht so einfach, mehr Basics müssen her.
Trotzdem hat sich gezeigt, dass RSSOwl sehr gut organisiert ist. Strukturierter gut kommentierter Code helfen einem sich im Projekt zurecht zu finden. Wirkt nach einer soliden Basis, die das Programm auch in Zukunft gut dastehen lassen wird.
Schreibe einen Kommentar