{"id":677,"date":"2010-05-30T13:27:29","date_gmt":"2010-05-30T11:27:29","guid":{"rendered":"http:\/\/blog.benny-baumann.de\/?p=677"},"modified":"2010-07-12T00:43:50","modified_gmt":"2010-07-11T22:43:50","slug":"standards-setzen-mit-closed-source-software","status":"publish","type":"post","link":"https:\/\/blog.benny-baumann.de\/?p=677","title":{"rendered":"Standards setzen mit Closed Source Software"},"content":{"rendered":"<p>Die Tage ergab sich eine doch recht bizarre Situation mit einem Kumpel. Er hatte, wieder einmal, eine durchaus recht gute Idee f\u00fcr ein Programm bzw. Produkt, was es in der Form so noch nicht gibt und was daher durchaus Neuheitswert hat &#8211; ich werde daher nichts \u00fcber die Projekt-Details selber schreiben. Au\u00dfer halt die Situation, wie sie sich die Tage darstellte.<!--more--><\/p>\n<p>Vorweg sollte ich aber ggf. noch etwas zu meinem Kumpel erkl\u00e4ren: Er studiert im Fachbereich Medien und wann immer er eine Idee hat, schreibt er diese in ein kleines B\u00fcchlein, was er theoretisch ununterbrochen mit sich tr\u00e4gt. Dieses Buch hat durchaus schon eine gewisse Dicke erreicht &#8211; von mangelnder Kreativit\u00e4t 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.<\/p>\n<p>Zu seinem Projekt hat er, da es sich um etwas Gr\u00f6\u00dferes handelte nat\u00fcrlich auch eine Skriptsprache ausgedacht, die zwar keine sauberen Schleifen beherrscht, aber daf\u00fcr Goto-Statements &#8211; oder anders formuliert: H\u00e4tte er ComeFrom-Statements implementiert, h\u00e4tte man wenigstens vom Programmierstil her \u00c4hnlichkeiten mit einer esotherischen Programmiersprache attestieren k\u00f6nnen. So handelt es sich bei seiner Skriptsprache um eine Art Batch-Verschnitt mit an einigen Stellen durchaus obskurer Syntax &#8211; die \u00fcber das Ma\u00df 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.<\/p>\n<p>Womit wir dabei w\u00e4hren, 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\u00fcr sein Tool verwenden wollte, habe ich mein Engagement auf rein beratende T\u00e4tigkeit beschr\u00e4nkt. Wenn man ihm gegen\u00fcber n\u00e4mlich erw\u00e4hnt (und ich wei\u00df, dass ich daf\u00fcr sicherlich Pr\u00fcgel kassieren werde, dass ich es auch noch einmal \u00f6ffentlich vertrete), dass VisualBasic f\u00fcr das Programmieren plattform-unabh\u00e4ngiger Anwendungen etwa so gut geeignet ist, wie Brainfuck f\u00fcr das Schreiben der Steuerung eines Airbags, dann wei\u00df man, dass mindestens ein gro\u00dfer konzeptueller Fehler vorhanden ist, wenn man \u00fcberhaupt von einem Konzept reden kann.<\/p>\n<p>Da ich also ihm gegen\u00fcber 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.<\/p>\n<p>An sich soweit auch kein Problem. Also kurz nach &#8222;seiner Programmstruktur&#8220; bzw. den &#8222;ben\u00f6tigten Datenstrukturen&#8220; gefragt &#8211; und danach neben der (10 mal wiederholten) Frage &#8222;Wozu?&#8220; eine etwa 3-st\u00fcndige Diskussion dar\u00fcber gef\u00fchrt, dass in seinem Projekt mindestens 3 Sachen fehlen, die es mir unm\u00f6glich machen, eben diesen Viewer zu schreiben.<\/p>\n<p>Was da w\u00e4re:<\/p>\n<ol>\n<li>Fehlende Dokumentation des Datenformates<\/li>\n<li>Fehlende Dokumentation der Programm-Architektur<\/li>\n<li>Fehlende Interoperatibilit\u00e4t der verwendeten Programmier-Systeme<\/li>\n<\/ol>\n<p>Auch hier schlie\u00dft sich noch eine Diskussion \u00fcber etwa eine Stunde an, deren wesentlicher Inhalt darum schwebte, dass Dokumentation das Nachprogrammieren seiner Anwendung erm\u00f6glichen w\u00fcrde. Ja und nein. PDF ist auch dokumentiert und ich habe bisher noch kein OpenSource-Tool gesehen, was den gesamten Standard (\u00fcber 1.4 hinausgehend &#8211; Anm.: Der ist inzwischen >10 Jahr alt) vollst\u00e4ndig implementiert. Mit ausreichender Komplexit\u00e4t lohnt es also nicht, selbst wenn man die Dokumentation dazu hat, ein Format vollst\u00e4ndig nachzubauen. Zumal es mir nicht darum ging, dass er die genannten Dokumente der gesamten Welt zur Verf\u00fcgung h\u00e4tte stellen sollen (mehr dazu sp\u00e4ter). Ein wenig Dokumentation dessen, was er sich vorstellt (auch unter der Haube) w\u00e4re also durchaus ein Gewinn f\u00fcr eine Kooperation gewesen. So h\u00e4tte meine Arbeit im Wesentlichen aus stupidem Reverse-Engineering bestanden, f\u00fcr Dinge, die in einem guten Programm nunmal zu dokumentieren sind. Aber gut: In meiner Architektur h\u00e4tte ich mir wahrscheinlich eh nicht reinreden lassen, da die Programmierweise zwischen VB (sorry daf\u00fcr, dass ich das grad &#8222;Programmierung&#8220; genannt habe) und Java so ungef\u00e4hr gef\u00fchlte 15 Jahre liegen &#8211; also f\u00fcr die J\u00fcngeren unter uns: Das ist in etwa der Zeitrahmen zwischen &#8222;Microsoft ver\u00f6ffentlicht ein Betriebssystem mit 32 Bit-Kernel&#8220; und &#8222;Jetzt&#8220;.<\/p>\n<p>Bliebe also die Frage des Datenformates. Also: Er m\u00f6chte gerne einen freien Standard etablieren &#8230; Dazu verwendet man am Besten was? Ja, richtig: ein propriet\u00e4res 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\u00f6nnte, ohne eine nachweisbare Ver\u00e4nderung der Dateigr\u00f6\u00dfe in Richtung <img decoding=\"async\" src=\"http:\/\/upload.wikimedia.org\/math\/b\/e\/4\/be4c703ed73456618ed283b892c6715a.png\" alt=\"Aleph 0\" \/> zu sp\u00fcren. Das Speichern in XML w\u00e4re hier nicht nur &#8230; \u00e4hhhhm &#8230; plattformunabh\u00e4ngig, sondern um einiges besser portabel. Ganz davon abgesehen, dass es sich f\u00fcr einen offenen Standard besser eignet. Ich schlie\u00dfe mich in Bezug auf sein Dateiformat daher der gew\u00e4hlten Dateierweiterung an: toll! \ud83d\ude09<\/p>\n<p>Achja: Ich sollte nen Viewer bauen. Da ich nun, mit dem Wunsch nach einem offenen Standard seinerseits im Hinterkopf das Wort &#8222;OpenSource-Lizenz&#8220; in den Mund genommen hatte, donnerte die n\u00e4chste Lavine auf mich ein, dass er doch damit Geld verdienen w\u00f6llte. 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\u00fcr ClosedSource zumindest noch nicht geh\u00f6rt. Bei OpenSource geschieht das alle Nase lang. Aber gut, lassen wir ihn in seinem Traum.<\/p>\n<p>Als n\u00e4chstes Argument war da n\u00e4mlich noch, dass die Leute mit OpenSource sein Programm einfach kopieren oder was Eigenes Nachbauen und dann damit Geld verdienen. Passiert durchaus &#8211; wenn mir ein kommerzielles Tool seinen Preis nicht Wert ist, macht man das aber auch nicht anders; oder sucht sich Alternativen.<\/p>\n<p>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 <a href=\"http:\/\/gagne.homedns.org\/~tgagne\/contrib\/unskilled.html\">Rat suchen, um ihn dann zu ignorieren<\/a>.<\/p>\n<p>Abschluss dieser Diskussion bildete dann die Feststellung, dass er das Programm &#8222;f\u00fcr die Menschen&#8220; implementiert. Gut, dass ich bei einer Implementierung darauf schaue, dass es \u00fcberhaupt funktioniert, ist bei so heeren Zielen wahrscheinlich einfach nur st\u00f6rend.<\/p>\n<p class=\"wp-flattr-button\"><a href=\"https:\/\/blog.benny-baumann.de\/?flattrss_redirect&amp;id=677&amp;md5=c3c5206fd785ee95e0a56e6bd828c4a3\" title=\"Flattr\" target=\"_blank\"><img src=\"http:\/\/blog.benny-baumann.de\/wp-content\/plugins\/flattr\/img\/flattr-badge-large.png\" srcset=\"http:\/\/blog.benny-baumann.de\/wp-content\/plugins\/flattr\/img\/flattr-badge-large.png\" alt=\"Flattr this!\"\/><\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Die Tage ergab sich eine doch recht bizarre Situation mit einem Kumpel. Er hatte, wieder einmal, eine durchaus recht gute Idee f\u00fcr ein Programm bzw. Produkt, was es in der Form so noch nicht gibt und was daher durchaus Neuheitswert hat &#8211; ich werde daher nichts \u00fcber die Projekt-Details selber schreiben. Au\u00dfer halt die Situation, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[29],"tags":[280,98,128,264,282,281],"class_list":["post-677","post","type-post","status-publish","format-standard","hentry","category-software","tag-closedsource","tag-developement","tag-meinung","tag-opensource","tag-projekt","tag-xml"],"_links":{"self":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/677","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=677"}],"version-history":[{"count":3,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/677\/revisions"}],"predecessor-version":[{"id":749,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/677\/revisions\/749"}],"wp:attachment":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=677"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=677"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=677"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}