Hallo,

der Andy vertritt mich hier [Anmerkung: zuerste auf Facebook gepostet] ja großartigst(!), dennoch dachte ich, melde ich mich hier auch mal zu Wort.

Zuerst möchte ich den zahlreichen Leuten danken, die sich als Tester registriert haben. Auch die Likes hier und drüben bei Twitter (Schaut vorbei, da bin ich gesprächiger: https://twitter.com/GC_Wizard) sind ein guter Motor.

In den letzten Wochen habe ich sehr viel Zeit in dieses Projekt gesteckt. Dabei rausgekommen sind etwa 20.000 Zeilen mehr oder weniger handgeschriebener Code in ca. 250 Dateien. Doch warum eigentlich das Ganze?

Der GeoCache Calculator, der GCC, ist von Daniel („Eisbehr“) und mir vor einigen Jahren entwickelt worden. Doch leider steht die Entwicklung seit über 6 Jahren still. Mehrfache Versuche, das Projekt wiederzubeleben, schlugen fehl. So habe ich mich entschieden, ein neues Projekt zu starten. Dadurch ist es möglich, neue Funktionen zu ergänzen, Fehler zu beheben und ggf. sogar auf die Apple-Welt zuzugehen.

Ok, und was genau tue ich da so? Wer auf Twitter mitliest, hat eine ungefähre Vorstellung, woran ich jeweils aktiv sitze und auch grob, wie lange es dauert und welche Probleme so entstehen. Ich möchte das hier gern einmal zusammenfassen:

– Ich bin weit weg davon, den bereits im GCC vorhandenen Code direkt zu übernehmen. Der Code wurde z.T. vor fast zehn (10!) Jahren geschrieben. Damals habe ich tatsächlich in der dort genutzten Programmiersprache Java erst erste Erfahrungen gesammelt. Heute habe ich mich (auch beruflich bedingt) diesbezüglich weiter entwickelt, aber auch die Technologien sind ja stetigem Wandel unterstellt. So kann ich vieles damals „verbrochene“ heute schlicht nicht mehr gutheißen. Auch habe ich bislang bei fast jeder nicht-trivialen Funktion den einen oder anderen Fehler entdeckt. So ist es also notwendig, die Logik zum großen Teil neu zu durchdenken, in jedem Fall aber neu zu schreiben, moderner, sauberer.
– Die Oberfläche, das sogenannte Frontend, muss in jedem Fall neu geschrieben werden. Bei GCC haben Daniel und ich viele Anfragen seitens der iPhone-Community bekommen, GCC auch dorthin zu portieren. Das war aber für keinen von uns machbar, da dies zum damaligen Zeitpunkt bedeutet hätte, alles zweifach zu programmieren, in komplett unterschiedlichen Programmiersprachen. Heute ist es möglich, geeignete Technologien vorausgesetzt, für beide Plattformen gleichzeitig zu entwickeln. Eine dieser Technologien ist die noch relativ junge, von Google entwickelte Technologie „Flutter“. Doch diese benötigt für die Oberflächen einen grundlegend anderen Code als das frühere Basic-Android-Zeug, um beides, iOS und Android, gleichermaßen unterstützen zu können. Nun bin ich weder ein Frontend-Experte, noch habe ich wirklich Spaß daran, mir Gedanken über gutes Aussehen (Design) oder tolle und intuitive Benutzerführung und Bedienbarkeit (User Interface UI/ User Experience UX) zu machen. Das können andere besser. Daher dauert die Frontend-Entwicklung sehr viel länger als ich eigentlich möchte.
– Meine Lieblingsfunktionen, die Koordinatenberechnungen haben mir sehr viel Zeit weggenommen, und das obwohl ich überzeugt davon bin, dass die jeweiligen Funktionen vermutlich niemals von einem klassischen Geocacher eingesetzt werden. Doch als Programmierer ist es mir ein Bedürfnis, möglichst viele noch so abgefahrene Fälle abbilden zu können, den Code also für so viele Eingaben wie möglich korrekt rechnen zu lassen und ggf. bei falschen Eingaben zumindest nicht abstürzen zu lassen (Robustheit). Viele von diesen Funktionen sind auf Mathematik aufgebaut, die ich damals mehr oder weniger irgendwo abgeschrieben habe, heute aber durchaus besser verstehe. Auch haben sich in den letzten Jahren in der theoretischen Informatik bzw. der Algorithmik für mich nutzbare Ansätze ergeben, die ich implementiert habe und damit die Koordinatenberechnungen noch einmal genauer und zum Teil auch deutlich effizienter machen konnte.
– Einige Sachen, die ich früher geschrieben habe, konnte ich komplett gar nicht mehr nachvollziehen. So bspw. die Berechnung der Enigma. Ich habe bis heute keinen Schimmer, was ich da zusammenprogrammiert habe, auch wenn es nachweislich funktionierte. So musste ich hier wieder komplett von vorn anfangen und die Logik neu erlernen, viel recherchieren, ausprobieren, testen.

Nun, mit der aktuellen Testversion 0.5.1 bin ich an einem Punkt angekommen, wo ich glaube, dass der entstandene Code professionell genug aussieht, trotz für mich komplett neuer Technologien (Flutter bzw. die dahinter liegende Programmiersprache Dart), um ihn veröffentlichen zu können. Der GCWizard war für mich von anfang an als Community-, als Gemeinschaftsprojekt gedacht: Von Geocachern für Geocacher. Ich hatte und habe die Vision, dass wir alle uns daran beteiligen können, das alle geben und nehmen können. Es gibt so viele sehr ähnlich gelagerte Projekte in dem Bereich, ähnliche Tools, zahlreiche Webseiten. Alle programmieren die gleichen Funktionen immer und immer wieder. Wie schön wäre es, bspw. für die kryptografischen Funktionen eine zentrale Anlaufstelle zu haben, von der jeder andere Entwickler profitieren könnte? Oder eine zentrale Stelle für Grafiken, beispielsweise die MyGeoTools-Tabellen. Der GCWizard soll da mit gutem Beispiel voran gehen. Deswegen habe ich mich entschieden, hier den Code OpenSource zu machen. Dies ist gestern geschehen, der Code steht für alle zur Einsicht bereit auf GitHub (https://github.com/S-Man42/GCWizard). Code Reviews sind gern gesehen! Jeder, der kann und mag, darf gern Änderungen oder Erweiterungen beisteuern. Ein weiterer Vorteil: Wenn ich mal keine Lust oder Zeit mehr habe, dann kann das Projekt jemand anderes fortführen – anders als jetzt beim GCC, der allein schon aus urheberrechtlichen Gründen allein beim „Eisbehr“ liegt.

Die Ersetzung von GCC ist noch lange nicht abgeschlossen, es fehlen noch so einige Funktionen. Aber das Grundgerüst steht jetzt einigermaßen fix, denke ich. Ich wollte eigentlich den GCWizard nicht freigeben, bevor er dem alten GCC funktionsmäßig mindestens ebenbürtig ist. Denn wie soll bitte ein Wechsel der Apps begründet werden, wenn nachweislich die alte in manchen Bereichen noch besser ist? Doch mittlerweile überlege ich, damit auch früher an die Öffentlichkeit zu gehen. Für die aktuellen Tester bin ich dankbar, doch leider kommt da nur wenig richtiges Feedback zurück. Meine Hoffnung wäre, dass mit der Öffnung und Publizierung des GCWizards in den PlayStore mehr Nutzer Zugang bekämen und damit das Feedback eventuell steigt.
Nun könnte das aber eben auch den gegenteiligen Effekt erreichen: Potentielle Nutzer laden sich das Programm, sehen, dass es weniger Funktionen hat, als der GCC und dass manche von den bestehenden vielleicht noch Fehler aufweisen. Fällt dann nicht das Vertrauen in die App schon im Vorhinein, bevor sie eigentlich wirklich gestartet ist? Das würde all unsere Mühen zerstören. Wie seht ihr das?

Vielleicht zuletzt noch einmal zum Thema „Community“ und Mitarbeit: Nicht jeder hier ist ambitionierter Softwareentwickler. Klar. Was könnten denn noch so für Aufgaben übernommen werden? Nun, beispielsweise möchten wir die Tabellen/MyGeoTools-Funkionen erweitern. Es sollen nicht mehr nur stare Tabellen sein, sondern interaktive Tools. Dafür brauchen wir beispielsweise Hilfe dabei, die Tabellen in die einzelnen Symbole zu zerstückeln. Genaueres wurde gerade drüben im Geoclub diskutiert und erste Zuarbeiten eingereicht: Danke dafür!(https://geoclub.de/forum/viewtopic.php…)
Übersetzer wären auch gern gesehen. Sowohl für neue Sprachen in der App, als auch für Dinge wie hier: Keine Ahnung, ob ich nachher die Muße habe, diesen Text ernsthaft ins Englische zu übersetzen 😉 Auch für Grafiker und Designer haben wir die eine oder andere Aufgabe. Ansonsten freut Andy sich sicher auch über jegliche Hilfe beim Community Support in Foren oder hier in den sozialen Medien. Und nicht zuletzt kann ich immer wieder sagen: Wir brauchen Tests, Tests und nochmehr Tests. Ich bin davon überzeugt, dass der GCWizard noch vor Fehlern nur so strotzt (wie das eigentlich bei jeder noch so professionellen Software, insbesondere einer neuen, der Fall ist!). Malträtiert die App, versucht sie aktiv kaputt zu kriegen, gebt Dinge ein, die nicht einzugeben sein sollten! Nur so kann die App robuster werden und am Ende für mehr Freude als Frust sorgen.

Ich würde mich auf jeden Fall sehr über euer Feedback freuen!

Bis bald,
// Mark (S-Man42)