Die Tage ergab sich eine doch recht bizarre Situation mit einem Kumpel. Er hatte, wieder einmal, eine durchaus recht gute Idee für ein Programm bzw. Produkt, was es in der Form so noch nicht gibt und was daher durchaus Neuheitswert hat – ich werde daher nichts über die Projekt-Details selber schreiben. Außer halt die Situation, wie sie sich die Tage darstellte.
Vorweg sollte ich aber ggf. noch etwas zu meinem Kumpel erklären: Er studiert im Fachbereich Medien und wann immer er eine Idee hat, schreibt er diese in ein kleines Büchlein, was er theoretisch ununterbrochen mit sich trägt. Dieses Buch hat durchaus schon eine gewisse Dicke erreicht – von mangelnder Kreativität kann man also bei Weitem nicht sprechen. Und eine dieser Ideen war halt das aktuelle Projekt, weshalb er mich um Hilfe bat, da er noch nicht so viel Erfahrung mit Programmierung hat.
Zu seinem Projekt hat er, da es sich um etwas Größeres handelte natürlich auch eine Skriptsprache ausgedacht, die zwar keine sauberen Schleifen beherrscht, aber dafür Goto-Statements – oder anders formuliert: Hätte er ComeFrom-Statements implementiert, hätte man wenigstens vom Programmierstil her Ähnlichkeiten mit einer esotherischen Programmiersprache attestieren können. So handelt es sich bei seiner Skriptsprache um eine Art Batch-Verschnitt mit an einigen Stellen durchaus obskurer Syntax – die über das Maß der Windows-Shell hinaus geht -, was aber nicht weiter schlimm ist, solange seine angestrebte Zielgruppe damit zurecht kommt; ich hege daran aber meine durchaus berechtigten Zweifel. Aber das nur am Rande.
Womit wir dabei währen, wie es zu meiner Involvierung in diesem Projekt kommt: Da er beim Parser (wie zu erwarten) so seine Probleme hatte, fragte er mich um eine Reihe von Tipps, die ich ihm auch durchaus gegeben habe. Da er aber unbedingt VB für sein Tool verwenden wollte, habe ich mein Engagement auf rein beratende Tätigkeit beschränkt. Wenn man ihm gegenüber nämlich erwähnt (und ich weiß, dass ich dafür sicherlich Prügel kassieren werde, dass ich es auch noch einmal öffentlich vertrete), dass VisualBasic für das Programmieren plattform-unabhängiger Anwendungen etwa so gut geeignet ist, wie Brainfuck für das Schreiben der Steuerung eines Airbags, dann weiß man, dass mindestens ein großer konzeptueller Fehler vorhanden ist, wenn man überhaupt von einem Konzept reden kann.
Da ich also ihm gegenüber eine Alternative bzgl. der Programmiersprache vorgeschlagen habe, die neben Schokolade, Kaffee, einer Insel u.a. auch eine Programmiersprache benennt, meinte er, ich solle doch den Viewer-Part seiner Anwendung in Java schreiben, wenn das damit doch so gut ginge.
An sich soweit auch kein Problem. Also kurz nach „seiner Programmstruktur“ bzw. den „benötigten Datenstrukturen“ gefragt – und danach neben der (10 mal wiederholten) Frage „Wozu?“ eine etwa 3-stündige Diskussion darüber geführt, dass in seinem Projekt mindestens 3 Sachen fehlen, die es mir unmöglich machen, eben diesen Viewer zu schreiben.
Was da wäre:
- Fehlende Dokumentation des Datenformates
- Fehlende Dokumentation der Programm-Architektur
- Fehlende Interoperatibilität der verwendeten Programmier-Systeme
Auch hier schließt sich noch eine Diskussion über etwa eine Stunde an, deren wesentlicher Inhalt darum schwebte, dass Dokumentation das Nachprogrammieren seiner Anwendung ermöglichen würde. Ja und nein. PDF ist auch dokumentiert und ich habe bisher noch kein OpenSource-Tool gesehen, was den gesamten Standard (über 1.4 hinausgehend – Anm.: Der ist inzwischen >10 Jahr alt) vollständig implementiert. Mit ausreichender Komplexität lohnt es also nicht, selbst wenn man die Dokumentation dazu hat, ein Format vollständig nachzubauen. Zumal es mir nicht darum ging, dass er die genannten Dokumente der gesamten Welt zur Verfügung hätte stellen sollen (mehr dazu später). Ein wenig Dokumentation dessen, was er sich vorstellt (auch unter der Haube) wäre also durchaus ein Gewinn für eine Kooperation gewesen. So hätte meine Arbeit im Wesentlichen aus stupidem Reverse-Engineering bestanden, für Dinge, die in einem guten Programm nunmal zu dokumentieren sind. Aber gut: In meiner Architektur hätte ich mir wahrscheinlich eh nicht reinreden lassen, da die Programmierweise zwischen VB (sorry dafür, dass ich das grad „Programmierung“ genannt habe) und Java so ungefähr gefühlte 15 Jahre liegen – also für die Jüngeren unter uns: Das ist in etwa der Zeitrahmen zwischen „Microsoft veröffentlicht ein Betriebssystem mit 32 Bit-Kernel“ und „Jetzt“.
Bliebe also die Frage des Datenformates. Also: Er möchte gerne einen freien Standard etablieren … Dazu verwendet man am Besten was? Ja, richtig: ein proprietäres Datenformat, was nicht nur plattformspezifisch an Windows gekoppelt ist, sondern sogar so aufgeblasen, dass man in jeder Datei den Full-History-Dump der englischen Wikipedia unkomprimiert ablegen könnte, ohne eine nachweisbare Veränderung der Dateigröße in Richtung zu spüren. Das Speichern in XML wäre hier nicht nur … ähhhhm … plattformunabhängig, sondern um einiges besser portabel. Ganz davon abgesehen, dass es sich für einen offenen Standard besser eignet. Ich schließe mich in Bezug auf sein Dateiformat daher der gewählten Dateierweiterung an: toll! 😉
Achja: Ich sollte nen Viewer bauen. Da ich nun, mit dem Wunsch nach einem offenen Standard seinerseits im Hinterkopf das Wort „OpenSource-Lizenz“ in den Mund genommen hatte, donnerte die nächste Lavine auf mich ein, dass er doch damit Geld verdienen wöllte. Dass es eine ganze Reihe von OpenSource-Anwendungen gibt, die kommerziell Geld verdienen, sei jetzt einmal dahingestellt, weil er den Viewer eh als Freeware herausgeben wollte: Was zu OpenSource als einzigen Unterschied aufweist, dass ich bei OpenSource einen Mehrwert neben dem Binary geliefert bekomme und daher wahrscheinlich eher bereit sein werde, das Tool einzusetzen, oder Verbesserungen einzubringen. Dass Menschen auf einer geschlossenen Plattform dem Plattform-Betreiber die Arbeit in Bezug auf das Verbessern der Plattform abnehmen, habe ich für ClosedSource zumindest noch nicht gehört. Bei OpenSource geschieht das alle Nase lang. Aber gut, lassen wir ihn in seinem Traum.
Als nächstes Argument war da nämlich noch, dass die Leute mit OpenSource sein Programm einfach kopieren oder was Eigenes Nachbauen und dann damit Geld verdienen. Passiert durchaus – wenn mir ein kommerzielles Tool seinen Preis nicht Wert ist, macht man das aber auch nicht anders; oder sucht sich Alternativen.
Oder um es kurz zusammenzufassen: Wenn er das Teil implementiert, dann wird es Ruck-Zuck (freie) Nachimplementierungen von dem Teil geben, und sei es von mir aus Protest gegen ClosedSource-Anwendungen, die meinen einen Standard setzen zu wollen. Wenn ich was nicht leiden kann, dann sind das Fachfremde, die sich Rat suchen, um ihn dann zu ignorieren.
Abschluss dieser Diskussion bildete dann die Feststellung, dass er das Programm „für die Menschen“ implementiert. Gut, dass ich bei einer Implementierung darauf schaue, dass es überhaupt funktioniert, ist bei so heeren Zielen wahrscheinlich einfach nur störend.
Klingt jedenfalls Interessant! Btw Beitrag geflattrd – sozusagen als Gegenleistung für deinen Flattr-Invite 😉
Grüße
Tilman
Kommentar by Tilman — 23.06.2010 @ 01:46:58
Jap. Und das Projekt an sich ist auch interessant: insbesondere, wenn man die Details kennt, was es werden soll. Blöd ist halt nur, dass viele sich absichtlich bei solchen Dingen ihre Chancen so grundlos verbauen müssen.
Kommentar by BenBE — 23.06.2010 @ 11:15:37