Der Grundstein

In der ersten Hälfte des Jahres 2006 hatte ich Besuch von einer meiner Schwestern und meinen Eltern. Wir tranken in Ruhe Kaffee und unterhielten uns über die verschiedensten Themen.

Nach einiger Zeit kamen wir zu der Vergesslichkeit einiger Menschen, insbesondere auch meiner Wenigkeit. Es ging um die Geburtstage. Da ich eine große Familie habe, ist die Anzahl der Geburtstage nicht umbedingt gering, so kann es schon mal passieren, das ich den einen oder anderen vergesse. Wäre da nicht mein Paps. Er erinnert mich an viele Geburtstage und ruft mich rechtzeitig an. Doch kennt er kaum die Daten meiner Bekannten, somit ist die Gefahr des Vergessens noch lange nicht gebannt.

Meine Schwester erzählte uns, das sie auch ihre Schwierigkeiten hat und eine Erinnerung auch bei ihr nützlich sei. Wärend wir uns unterhielten dachte ich: “Wäre es nicht möglich, das ganze über ein PHP Programm laufen zu lassen?

Und so entstand die Idee für einen virtuellen Jahrestagskalender.

 

Die Suche

Da ich mit Sicherheit nicht der Erste mit einer solchen Idee war, ging ich auf die Suche.

Kurze Zeit nach diesem Gespräch machte ich einen Streifzug durch das Internet. Ich suchte nach einer schon fertigen Lösung, da ich mir sicher war, das es so etwas schon hundertfach geben müsste. Ich fand ein kleineres Script, welches aber nicht so Recht funktionieren wollte. Ich testete verschiedene GroupWares und scheiterte entweder bei der Kompatibilität zu meinem Testsystem oder, wenn die Installation erfolgreich war, bei der Bedienung. Scheiterte ich auch nicht an der Bedinung, dann funktionierte irgend etwas nicht oder die Funktionen waren nicht so, wie ich sie gern gesehen hätte.

Kurz um, ich entschloss mich dazu, dieses Programm selber zu schreiben. Man wächst ja an seinen Herausforderungen.

 

Das erste Modul

Also machte ich mich an die Arbeit.

Ich baute ein kleines Grundgerüst. Nach dem ich den Kopfteil, den Fußteil und andere Programmteile fertig hatte, kümmerte ich mich um einen Login, da das ganze nur für registrierte Mitglieder gedacht war. Nach dem der Login mit allem fertig war, konnte ich das erste Modul in Angriff nehmen.

Ich erstellte das Jahrestagemodul, welches im Grunde ganz einfach ist. Jedes Mitglied sollte die Möglichkeit haben, sowohl öffentliche als auch private Jahrestage einzutragen. Wie die Namen schon vermuten lassen, sind die öffentlichen Einträge für alle Mitglieder und die privaten Einträge nur für den Eintragenden selbst gedacht. Der vorteil an den öffentlichen Einträgen ist, das man in der Gemeinschaft die Jahrestage pflegen kann. Jeder der einen Jahrestag kennt, der z. B. für die Familie wichtig ist, kann ihn eintragen.

Als das Modul selber fertig war, baute ich ein Script, welches auch per E-Mail an die Jahrestage erinnert. Zu Anfangs war dieses Script allgemein gehalten, es bekam jeder alle Jahrestage, egal ob er wollte oder nicht, egal ob der Eintrag privat oder öffentlich war.

Als das soweit funktionierte, baute ich ein Modul, womit die User die Einstellungen ihres Accounts ändern konnten. Zusätzlich schrieb ich eine kleine Statistik und eine Übersicht aller registrierten Mitglieder. Als diese Programmteile soweit fertig und durch meine privaten Tests gelaufen waren, gab ich die Version 1.0.0 zum Test an meine Familie weiter.

Natürlich hatte ich beim Erstellen dieser ersten Module schon die nächsten im Kopf. Ein Adressbuch, ein E-Mail Modul, Terminkalender, Foto Album und noch vieles mehr. Irgendwie sprudelten die Ideen nur so aus mir raus.

Und so entstand die Family GroupWare.

 

Und so ging es weiter

Mit neuen Features kommen oft auch neue Fehler.

Wie beim programmieren üblich, zumindestens bei mir, schleichen sich Fehler ein, die einen total unlogisch und irrsinnig erscheinen. Um so mehr Funktionen die GroupWare bekam, um so seltsamer wurden die Fehler.

Ich erinnere mich daran, das sich Mitglieder beschwerten, sie hätten auf einmal die Daten von einem ganz anderem Mitglied. Ich konnte dies - wie sollte es auch anderst sein - auf meinem Testsystem nicht rekonstruieren. Irgendwann wurde mir klar, warum auch immer, das ich die Session Variablen nicht gleich normaler benutzter Variablen nennen durfte. Wenn also im Quellcode irgendwo $_SESSION['uid'] verwendet wurde, so gab es Probleme, wenn irgendwo im Quellcode ein $uid auftauchte. Somit wurde die Session Variable überschrieben, was ich nicht lustig fand. Also gewöhnte ich mir an, den Session Variablen einen eindeutigen Namen wie $_SESSION['sid_uid'] zu geben. Fortan beschwerte sich keiner mehr über eine fremde Identität.

Neben zahlreichen Änderungen und Verbesserungen baute ich nun mein zweites Modul, das Adressbuch. Ich orientierte mich am Jahrestagemodul, baute also die Möglichkeit ein, sowohl öffentliche, als auch private Einträge erstellen zu können. Auf diese Idee brachte mich eine Datei, welche bei uns in der Familie umging. In dieser Datei standen die Adressdaten eines Großteiles der Familie. Jedes Mal wenn Änderungen vorgenommen wurden, machte die veränderte Datei per E-Mail einen Rundgang. Dieses Adressbuch sollte es also möglich machen, das man gemeinsam die Adressen pflegen und verwalten konnte. Jeder aus der GroupWare sollte die Möglichkeit haben, die öffentlichen Einträge zu ändern und neue hinzuzufügen.

Es folgten Kleinigkeiten wie das ändern der Benachrichtigungsfunktionen. Dies gab jedem User die zu entscheiden, ob und wann er an Jahrestage erinnert werden soll. Ich stellte die GroupWare auf CSS um, erweiterte die Accessbox, beseitigte Fehler und schuf neue, baute neue Funktionen für die Accountverwaltung ein, suchte mir ein kleines Beta-Test-Team, baute eine Demo Version, erstellte ein E-Mail Modul und noch einiges mehr.

Und das war erst der Anfang.