Bislang ist die Web-Version von uns eher stiefmütterlich behandelt. Einige Features gehen nicht, manche sehen etwas seltsam aus. Bei einigen Funktionen ist uns absolut unklar, warum sie nicht funktionieren und teils aus Zeitmangel, oft aber auch aus Mangel an technischer Kompentenz werden diese Sachen einfach ignoriert. Wenn es in den App-Versionen läuft, passt das. Disclaimer vorne ran und gut.

An einigen Sachen wird sich zwar immernoch nichts ändern, dennoch wird der Web-Version ab der neuen Major-Version eine größere Bedeutung zukommen.

Nutzung durch Dritte

Eigentlich schon von Anfang an, war die Überlegung, den GC Wizard nicht nur als eigenständige App zu betrachten, sondern auch Dritten die Möglichkeit zu geben, auf die zahlreichen internen Tools zugreifen zu können. Wie wäre es, wenn man einer Webseite sagen könnte: „Bitte den markierten Text vom GC Wizard mal eben entschlüsseln!„; oder wenn Apps wie c:geo sofort den Code im Listing lösen könnte?

Der eine Weg wäre, dass die Apps eben eine eigene Tool-Sammlung implementieren und man darauf wartet, dass sich der x-te Programmierer findet, der ROT-13 zum aberhundertsten Male programmiert, diesmal eben spezifisch für jene Webseite. Der GC Wizard war immer als Community-Projekt gedacht. Und damit ist nicht nur die Kostenfreiheit und das OpenSource-Ding gemeint, sondern auch, die Nutzung durch Dritte. Doch der Weg dahin erwies sich als viel viel steiniger als ich es anfangs erwartete.

App-Anbindungen

Es gibt zahlreiche Diskussionen auf diversen Plattformen, auf denen wir bereits untersuchten, wie wir mit Apps wie c:geo direkt kommunizieren könnten. Früher wäre das alles gar nicht so kompliziert gewesen, doch mit den Jahren wurde aus Gründen der Sicherheit von Google und Apple ein einfacher Kommunikationsweg immer mehr verbaut. Es gibt zwar noch immer Möglichkeiten, zwei Android-Apps miteinander interagieren zu lassen, aber wir haben es beim GC Wizard eben nicht mit einer klassischen Android-App zu tun. Der GC Wizard basiert auf einer Technologie, die Android und iOS (und natürlich Web irgendwie) unterstützt, welche sich somit, grob gesagt, als eine Art Zwischenschicht vor das Betriebssystem setzt. Das macht alles ungleich komplizierter. Nun könnte man sagen, man schreibt eben getrennt einen Kanal für Android und einen für iOS, aber wir haben weder Zeit für zweigleisige Entwicklung noch entsprechendes iOS-Knowhow.

Der Weg, den wir jetzt sehen, ist, dass wir die Web-Version so ertüchtigen, dass Dritte nicht unsere App, sondern unsere Webseite um Hilfe bitten.

Deep Links

Nun wird den meisten von euch schon aufgefallen sein, dass die Web-Version gerade dann Probleme hat, wenn man auf spezifische Tools direkt zugreifen möchte. Es fehlt schlicht die Möglichkeit, ein solches via URL im Browser direkt anzusteuern. Wenn man das als normaler menschlischer User nicht schafft, wie sollte dann der Entwickler einer App das schaffen?

Somit ist der erste Schritt, endlich die so genannten Deep Links einzuführen, also die URLs für konkrete Funktionen. Wir haben es bisher deswegen nicht gemacht, da uns ein nachträglicher Einbau sehr kompliziert schien. Vor allem hieß dies, dass wir jedes einzelne Tool direkt anfassen mussten, was bei der schieren Menge einfach keiner machen wollte.

Mike hat jetzt allerdings einen Weg gefunden, diese Arbeit mehr oder weniger im Code zu automatisieren und konnte vor einigen Tagen mit einer Testversion aufwarten, die eine direkte Ansteuerung der einzelnen Funktionen erlaubt.

Web-API

Nun ist es also möglich, die URL für das entsprechende Tool als bekannt voraus gesetzt, von jeder beliebigen Stelle, einer App oder anderen Webseite, mit einem Klick das Tool aufzurufen. Eine Installation der App ist (obwohl natürlich gewünscht 😉 ) hier nicht einmal mehr notwendig. Allerdings natürlich dann ein Internet-Zugang. Das ist leider ein möglicher Nachteil.

Der nächste Schritt ist dann, dass der zu entschlüsselnde Code auch gleich mit übertragen wird, damit man nach einem Webseitenaufruf des GC Wizards nicht noch manuell den Text in das Feld eingeben muss.

Mittels sogenannter Query-Parameter ist auch dieser Schritt bereits erfolgt. In der URL kann alles mitgegeben werden, was das entsprechende Tool zum Arbeiten benötigt. Allerdings ist hier tatsächlich viel manuelle Arbeit zu leisten. Jedes GC Wizard-Tool ist in seiner Funktion sehr unterschiedlich. Jedes Tool benötigt andere Optionen und Parameter. Somit lässt sich hier leider nur wenig automatisieren. Deshalb haben wir uns dazu entschieden, diesen Schritt erst einmal nur mit einem beschränkten Set an Tools zu gehen und dann bei Bedarf Schritt für Schritt zu erweitern.

Nun ist es also möglich, von außen die GC Wizard-Webseite direkt mit dem gewünschten Tool aufzurufen, es mit Werten zu bestücken und das Ergebnis anzeigen zu lassen. Nach diesem Schritt haben wir die ursprüngliche App verlassen und starren auf einen Browser. Für die Benutzbarkeit der ursprünglichen App ist dies eher unschön, da man das Ergebnis a) nicht in dieser App direkt sieht und b) der Nutzer gezwungen ist, zwischen Browser und App hin und her zu wechseln. Eine richtig schöne Schnittstelle sollte eigentlich den Weg der Informationsgewinnung verschleiern. Klick – und schon steht der entschlüsselte Text da. Dass intern der GC Wizard um Hilfe gebeten wurde, sollte für den Nutzer eigentlich unsichtbar bleiben. Auch wenn wir uns dabei irgendwie um den eigenen Ruhm bringen, zugegeben 😉

Der letzte Schritt ist also, eine Schnittstelle anzubieten, die bei entsprechendem Aufruf einfach nur die Berechnung durchführt und die Daten – anstelle sie auf der eigenen Webseite anzuzeigen – direkt wieder an das Dritt-Tool zurück sendet. Dies wäre dann eine echte Web-Schnittstelle, eine sogenannte API.

Erste Tests von Mike sehen vielversprechend aus. Ob die Version 3.0 gleich eine entsprechende Reife dafür hat, werden wir sehen, aber sicherlich sind wir auf einem sehr guten Weg!

Erste Abnehmer für solch eine Schnittstelle stehen schon in den Startlöchern. So hat @capoaira schon vor vielen Monaten angefangen, ein Firefox-Plugin zu bauen, das es erlaubt, von beliebigen Webseiten aus den GC Wizard direkt ansprechen. Ich bin selbst sehr sehr gespannt, wie das wird!