Freie Software organisiert die Arbeit in Gruppen: phpGroupWare
In mehrfacher Hinsicht ist phpGroupWare eine Ausnahme unter den verfügbaren Groupware-Systemen. Zunächst einmal ist es unter den Open-Source-Lösungen eine recht alte Lösung: Das Projekt existiert bereits seit über sechs Jahren. Darüber hinaus ist es nicht „nur“ freie Software, sondern ein offizieller Teil des GNU-Projekts. phpGroupWare ist unter GPL/LGPL lizenziert und ist ein reines Community-Projekt – eine weitere Besonderheit gegenüber anderen Open-Source-Projekten, die von Firmen getragen und weitestgehend kontrolliert werden. Hinter phpGroupWare steht keine Firma, das Projekt wird von Einzelpersonen und Freiberuflern getragen und die Protagonisten sind über mehrere Kontinente verteilt. Eine weitere Besonderheit: Bedingt durch den stark modularen Aufbau existieren etwa 50 verschiedene Module (also Anwendungen) für phpGroupWare, von denen etwa zwei Dutzend aktiv gepflegt werden. Diese Breite an Anwendungen bietet kaum ein anderes System, abgesehen von eGroupWare, das als Abspaltung von phpGroupWare entstanden ist.
Anfang November 2006 wurde auf einer internationalen Konferenz [1] die weitere Entwicklung des Projekts besprochen. Wie die meisten Community-getriebenen Projekte ist phpGroupWare immer auf der Suche nach neuen Teilnehmern, entweder als Entwickler oder auch in anderen Bereichen wie Übersetzung, Qualitätssicherung und Dokumentation.
Die Features
Die Feature-Liste von phpGroupWare ist lang und kann hier nur in Auszügen wiedergegeben werden. Alle klassischen Groupware-Funktionen wie Adressbuch, Kalender, Webmailer, Aufgaben und Notizen sind vorhanden und können mit einem fein granulierten Rechtesystem gemeinsam genutzt werden. Darüber hinaus gibt es ein voll ausgereiftes Projektmanagement, ein HelpDesk-/TroubleTicket-System und weitere Module wie Chat, Forum, Voting-Booth, Wiki, Wetterabfrage, zentrale Bookmarks,
Liegenschaftsverwaltung, Web-Filemanager, CRM-Komponenten (InfoLog), eine zentrale Bookmark-Verwaltung, die Anzeige von Börsenkursen und vieles mehr. Auch ein eigenes Content Management System ist integriert, auf dem auch die phpGroupWare-Website aufgebaut ist. Die Anwendungen sind nicht alle auf demselben Entwicklungsstand: Einige, wie das Projektmanagement und die Liegenschaftsverwaltung, sind sehr tief ausgebaut, andere, wie die Aufgabenverwaltung und der Instant Messenger, eher einfach gehalten. Zusätzlich zu den eigenen Anwendungen gibt es noch weitere, unabhängige 3rd-Party-Erweiterungen [2].
Besonders stark wird an den Stellen entwickelt, für die ein Entwickler besonderes Interesse zeigt – entweder weil es ihn privat interessiert oder weil ein Kunde die Entwicklung in diesem Bereich bezahlt. Die verschiedenen Funktionen stehen auf Online-Demosites zur Verfügung und können dort ausprobiert werden [3].
API, XML-RPC & SOAP
Eigene Entwicklungen werden entweder über das dokumentierte phpGroupWare-API in das System integriert oder über die vorhandene XML-RPC-Schnittstelle. Ab der kommenden Version 0.9.18 wird darüber hinaus eine SOAP-Schnittstelle angeboten. Damit kann der phpGroupWare Server auch als Basis für Web-Services eingesetzt und mit anderen Systemen gekoppelt werden.
Der Code von phpGroupWare ist auf Savannah beheimatet, dem Gegenstück des GNU-Projekts zu SourceForge. Lediglich die Release-Packages werden zusätzlich auf SourceForge zum Download angeboten, weil dort durch die bessere Netzanbindung der Download für die Interessenten schneller vonstatten geht. Der Code ist als Tarball, als ZIP-Archiv, als RPM-Paket und als Debian-Paket über einen CVS-Zugang erhältlich.
Technisch ist das Projekt in zwei Teile geteilt: Die API stellt ein eigenes Projekt dar, die Module hingegen die verschiedenen Anwendungen. Dadurch ist es möglich, neue Anwendungsentwickler schnell zu integrieren, ohne ihnen sofort Zugriff auf die sensiblen Teile der API geben zu müssen. Die API ist sehr umfangreich und innerhalb des Quelltexts gut dokumentiert. Alle Anwendungen und die API sind in PHP geschrieben, wobei ein möglichst strikt objektorientierter Ansatz verfolgt wird. Es existiert ein eigenes Template-/Skin-System, das zurzeit durch XSLT ergänzt wird. Als Datenbank werden hauptsächlich MySQL und PostgreSQL eingesetzt. Auch andere Datenbanken sind möglich, sie werden aber nicht offiziell unterstützt. Einen eigenen Mailserver (MTA) bringt phpGroupWare nicht mit, arbeitet aber mit den allermeisten IMAP/SMTP-Servern zusammen und unterstützt außerdem LDAP. Eine Gruppe deutscher Entwickler hat eine SyncML-Synchronisation [4] als Ergänzung für phpGroupWare geschaffen, die auf JBoss und Sync4J aufbaut und zurzeit implementiert wird.
phpGroupWare aufsetzen
Das Projekt phpGroupWare ist grundsätzlich in PHP4 geschrieben. Derzeit werden die letzten Inkompatibilitäten mit PHP5 beseitigt. Um phpGroupWare zu betreiben, wird ein PHP4-fähiger Webbrowser (mind. PHP 4.1.2) benötigt, empfohlen wird ein Apache Server. Um E-Mail vollständig nutzen zu können, sollten die php-imap-Extensions im verwendeten PHP-Modul vorhanden sein. Aus Sicherheitsgründen wird empfohlen, in der php.ini „register_globals“ auf „OFF“ zu setzen. Da phpGroupWare wie erwähnt keinen eigenen Mailserver mitbringt, wird der Einsatz von Courier, Cyrus und UWash für IMAP und POP3 empfohlen. Der Mercury32 IMAP Server ist nicht uneingeschränkt zu empfehlen, da bei diesem Server Probleme in der Anbindung aufgetreten sind. Die Mailauslieferung erfolgt über SMTP, eine spezielle Empfehlung für einen bestimmten Server gibt es nicht. Grundsätzlich kann jedes Betriebssystem verwendet werden, das diese Voraussetzungen erfüllt, neben Linux (32 und 64bit) also auch diverse UNIX-Derivate und Windows. Allerdings setzt der integrierte Zeit-Service, der zum Beispiel Alarmmails verschickt, ohne dass der Benutzer eingeloggt ist, einen Unix-artigen „cron“-Daemon voraus.
Bevor das phpGroupWare-eigene Setup aufgerufen werden kann, muss zunächst mit den entsprechenden Datenbank-Tools ein Datenbank-Benutzer angelegt werden. Als wichtiger Schritt vor dem eigentlichen Setup muss zudem ein Verzeichnis für den Dateimanager der Groupware angelegt werden. Aus Sicherheitsgründen muss dieses Verzeichnis außerhalb des Webserver-Verzeichnisbaums liegen. Nach dem Entpacken des PHP-Codes in ein Verzeichnis innerhalb der DocumentRoot des Webservers kann das Setup mit http://www.your_server.whatever/phpgroupware/setup gestartet werden. Dort wird unter anderem der eben angelegte Datenbank-Nutzer eingetragen. Außerdem werden weitere Defaults wie ein Temp-Verzeichnis, Servernamen, ein Admin-Account mit Passwort sowie weitere Einstellungen festgelegt. Wenn die genannten Schritte erfolgreich abgearbeitet sind und die Datenbankverbindung als OK markiert wird, kann die Groupware über das Web-Interface eingerichtet werden. Zunächst werden die gewünschten Lokalisierungen nachgeladen (als Default ist Englisch installiert). Anschließend folgt die Installation der einzelnen Anwendungen. Später ist es möglich, für jeden Nutzer oder auch für Nutzergruppen separat festzulegen, welche der Anwendungen jeder einzelne Nutzer sieht – nicht jedem Nutzer stehen immer alle Anwendungen zur Verfügung. Als letzter Schritt der Basis-Einrichtung folgt die Abmeldung vom Setup-Programm und die Anmeldung mit dem eben definierten Admin-Account an der Groupware. Dort werden abschließend über die Anwendung „Administration“ alle gewünschten Standardeinstellungen wie Sprache, Skin/Template oder Mail-Anbindung gesetzt sowie die Nutzerkonten und deren individuelle Rechte eingerichtet. Damit ist die phpGroupWare-Installation betriebsbereit. Weitere Hinweise zur Installation gibt es auch im Internet [5].
Für eine gute Performance ist wie üblich unbedingt auf genügend Hauptspeicher zu achten und darauf, dass die Cache-Größen sowohl in der Datenbank als auch für PHP (in php.ini) entsprechend hoch angesetzt sind. Wenn der Server viel Swap-Space benutzt, hat er definitiv zu wenig Hauptspeicher. Als sehr hilfreich hat es sich erwiesen, einen PHP-Cache zu benutzen, beispielsweise den Turck-MMCache.
Support für phpGroupWare gibt es je nach Bedarf kommerziell und nicht kommerziell. Der nicht-kommerzielle Support funktioniert, wie bei freier Software üblich, über Mailinglisten und IRC [6]. Außerdem ist ein Bugtracker [7] eingerichtet.
Fazit
phpGroupWare bietet ein sehr breites Spektrum an Einsatzmöglichkeiten und ist einfach erweiterbar. Dadurch wird phpGroupWare zu einer Art „Schweizer Messer“ für (fast) alle Bedürfnisse kleiner bis mittlerer Firmen. In Teilbereichen gilt das auch für größere Organisationen. Geboten werden neben klassischen Groupware-Funktionen auch Projektmanagement, Trouble-Ticket-System, Content Management und vieles mehr. Allerdings handelt es sich prinzipbedingt um eine rein webbasierte Lösung. Es existiert kein eigener Stand-alone-Client und die Lösung ist daher nicht offline-fähig. Sofern ein ständiger Netzzugang besteht, ist dies kein Nachteil. Eine PDA/MDA-Synchronisation für SyncML existiert, ist aber noch nicht vollständig in das Projekt integriert. Als Freie Software kann die Lösung jederzeit individuell angepasst werden.