Fatalismus bei Marvin Minsky

Der AI-Vordenker Marvin Minsky kommt in seinem Vortrag auf,

zu der ernüchternen Erkenntnis, dass er seine Lebenszeit mehr oder weniger verschwendet habe und trotz aller Versuche es ihm und seinen Kollegen nicht gelungen sei, eine denkende Maschine zu bauen. Somit sind alle Änsätze die im Laufe der Jahre entstanden sind, mehr oder weniger falsch gewesen. Hat Minsky recht mit seiner deprimierenden Erkenntnis?

Wenn man Artificial Intelligence als Ziel definiert vielleicht. Denn was soll das sein? Niemand kann es definieren und niemand kann es erreichen. Aber wenn man etwas bescheidener von Narrow AI spricht und diese zu erreichen gedenkt, dann gibt es sehr wohl Möglichkeiten es zu tun. Das bedeutet konkret: wenn man in einem Computerspiel wie OpenRA eine Künstliche Intelligenz haben möchte, wird vermutlich Marvin Minsky und auch sonst keiner der Vordenker wissen wie man sowas implementiert. Es gibt zwar einige Ansätze wie Neuronale Netzen, Expertensysteme usw. von denen weiß man aber das sie sich in der Praxis nicht bewähren. Aber wenn man hingegen etwas bescheidener lediglich eine Software möchte, die in der Lage ist mit den Ore-Harvestern auszuschwärmen, die Basis autonom zu vergrößern, die Verteidigung sicherzustellen und am Ende das Spiel zu gewinnen, dann gibt es in der Tat sehr viele erfolgversprechende Ansätze sowas zu implementieren.

Und was für Ingame gilt, das gilt auch im real Live. Wenn man ganz allgemein einen intelligenten Roboter bauen will, dann dürfte es schwierig werden dieses Ziel zu erreichen. Wenn man sich aber mit einer vollautonomen Fabrik zufriedengibt wo drinnen Fahrzeuge herumfahren, wo Laufroboter die Maschinen warten und wo das ganze auch noch mit hoher Effizienz stattfindet, für solche Aufgaben gibt es einige Vorschläge es zu erreichen.

Von einem philosophischen Standpunkt aus betrachtet ist es verständlich wenn einige ehrenvolle Leute die schon alles gesehen haben als Quintessenz über die AI-Forschung sagen, dass sie vergeblich war. Weil man es so ja auch sehen kann. Im Grunde äußern diese Leute sich jedoch nicht objektiv über die AI-Forschung sondern lediglich über ihre eigene Rolle darin. Kurz gesagt, es ist anzunehmen dass Minsky einfach keinen Bock hat (anders kann man es nicht sagen) konkrete Probleme aus der Praxis zu lösen und auch nicht gefragt werden möchte, wie man beispielsweise Expertensysteme dafür einsetzt um eine Fabrik zu automatisieren. Und natürlich ist auch die Haltung verständlich angesichts von selbstfahrenden Autos, autonomer Ingame AI oder von Bin Picking Robotern auf dem Standpunkt zu verharren, dass nichts davon etwas mit Künstlicher Intelligenz zu tun habe, sondern lediglich unwichtige Optimierungsaufgaben aus der Praxis lösen würde. Aber genau darum geht es doch: Probleme zu lösen, die Automatisierung voranzutreiben, Roboter zu bauen, cognitive Maschinen zu entwickeln.

Es ist schlichtweg Selbsttäuschung wenn man sagt, dass die AI-Forschung der letzten 50 Jahren nichts relevantes entwickelt habe, und das schlichtweg alle Probleme die etwas mit Denken zu tun haben, nicht von Maschinen gelöst werden könnten. Das ist eine dreiste Lüge. Es ist vor allem eine moralische Haltung bei der die Kritik am Technikeinsatz von jenen Leuten formuliert wird, die eigentlich die Aufgabe haben, die Technik voranzutreiben.

Wahr ist hingegen folgendes: es gibt unterschiedliche AI-Wettbewerbe aus den Bereichen Robotik, Textverständnis oder Ingame AI. Und jeder dieser Wettbewerbe ist mit AI-Systeme prinzipiell lösbar. Der Standpunkt, dass die AI insgesamt nichts zu bieten habe, bedeutet im Grunde dem Wettbewerb auszuweichen. Es ist Feigheit vor dem Feind.

Es geht doch nicht darum, auf dem Gebiet der Künstlichen Intelligenz zu brillieren oder gar eine neue Theorie des Denkens zu erfinden. Sondern Künstliche Intelligenz ist nur Mittel zum Zweck. Eigentlich geht es um etwas anderes, eigentlich geht es darum einen besseren Roboter ins Rennen zu schicken als die 20 anderen Teams, die ebenfalls versuchen Fußball zu spielen. Ob dieser Roboter nun mit Künstlicher Intelligenz, mit schwarzer Magie oder mit einem stinknormalen C++ Programm angetrieben wird ist egal. Er muss lediglich Punkte holen für das eigene Team, nichts anderes.

Im Grunde spielt es keine Rolle, wenn die AI-Forschung nichts wichtiges erfunden hat. Das kann nur von Vorteil sein, weil dann die gegnerischen Teams ebenfalls keine AI einsetzen können. Dann herscht zumindest gleichstand und man kann sich überlegen mit welcher herkömlichen Programmiermethode man gewinnen möchte.

Interessanterweise kann man sogar eine Robot Challange veranstalten, wenn man gar keine Ahnung von Robotern hat. Man kämpft ja immer gegen andere Leute die ebenfalls keine Ahnung haben und kann deshalb prinzipiell gewinnen. Und das sieht man einigen Wettbewerben auch an, wo die Leute nicht nur keine Ahnung von Expertensystemen haben, sondern auch keine Ahnung von sonstiger Informatik. Aber ist das Grund freiwillig aufzugeben? Im Gegenteil, die Leute haben Spaß, vor allem wenn sie es schaffen am Ende den ersten Platz zu gewinnen. Wen stört es, wenn das ganze wissenschaftlich betrachtet wertlos ist?

Advertisements

Bug: Mario AI startet nicht

Das Mario AI Projekt mag als Youtube-Video vielleicht ganz spannend klingen, wenn man das ganze jedoch selbst einmal ausprobieren möchte ist es schon deutlich anstrengender. Zunächst einmal gibt es gleich zwei unterschiedliche Webseiten auf denen auch noch unter verschiedenen Bezeichnungen Wettbewerbe abgehalten werden. Weiterhin verweißt der Downloadlink auf ein Google Code Konto, wozu gesagt sei, dass Google Code inzwischen gar nicht mehr online ist. Aber das beste ist, in der Anleitung wird auf nicht weniger als 4 unterschiedliche Programmversionen verwiesen die teilweise nur Source-Code enthalten und nicht fertig kompilierte Java-Dateien. Irgendwo gibt es im Sourcecode zwar eine build.xml Datei, doch wie man damit aus dem Quelltext die fertige Java-Class-Files erzeugt ist mehr oder weniger nicht dokumentiert (es sei denn man kennt sich mit Eclipse/Ant aus). Wie auch immer, eine dieser Versionen kann gestartet werden, allerdings war das leider nicht das richtige Mario AI Spiel, sondern nur jene Version mit der man Levels erstellen kann nicht jedoch eigene AI Bots entwickeln.

Insgesamt drängt sich der Eindruck auf, dass Mario AI eines von diesen „messy“ Java Projekten ist wo ferne Verwandte der Collyer Brüder mal wieder zu Gange waren und irgendwas angesammelt haben, was bei näherer Betrachtung dringend mal entrümpelt werden müsste. Zusätzlich kommt noch die ungeklärte Rechtslage hinzu, die sich darin äußert, dass zwar am Ende von Level 1 ein wunderhübscher Kopf von Mario zu sehen ist, der aber mit Sicherheit keine offizielle Genehmigung von Nintendo Inc. besitzt und auch die Duddelmusik im Hintergrund klingt zwar angenehm, aber leider ein wenig zu gut, als das sie selber komponiert sein dürfte. Wie auch immer, bleiben bei Mario AI zu viele Fragen unbeantwortet.

Modernes C++ als Alternative zu Python

C++ besitzt noch immer das Image einer schwer zu erlernenden Programmiersprache. Aber in den letzten 5 Jahren hat sich da einiges zum besseren gewandelt. Aktueller Soucecode in C++ lässt sich fast so simpel schreiben wie Python Code. Beispielsweise kann man als Rückgabewert für eine Methode einen Array-Vektor angeben. Anders als in C ist es also möglich, mehrere Werte zurückzugeben. Man speichert die Werte einfach in das std::array hinein und übergibt das am Ende der Funktion mit „return result“, also ungefähr so wie man es auch in Python machen würde. Weiterhin ist es möglich in vielen Fällen auf eine Variablendeklaration zu verzichten, stattdessen nutzt man das Auto Keyword und lässt den Compiler entscheiden ob es ein Integer oder ein String ist. Wenn man dann noch berücksichtigt, dass man über repl.it sogar eine interpretierte Ausführung erhält so ist modernes C++ schon ziemlich dicht dran am Komfort den Python bietet. Einiges vermisst man aber trotzdem. Das iPython Notebook oder die matplotlib gibt es in C++ nicht. Was man jedoch erhält ist eine Sprache die sich ausgezeichnet eignet um Bibliotheken zu schreiben, was aus Effizienzgründen in größeren Projekten wichtig ist. Auch erhält man mit Doxygen einen ausgezeichneten Dokumentengenerator, so dass ich alles in Allem sagen würde dass C++ besser ist als Python.

UPDATE
Matplotlib gibt es inzwischen auch für C++: https://github.com/lava/matplotlib-cpp Der Sourcecode bis man ein fertiges Diagramm erzeugt ist fast identisch mit dem was Python User verwenden. Wieder ein Grund mehr auf C++ umzusteigen. Genau genommen ist C++ eine unterschätzte Sprache, deren einzige Schwäche darin besteht, dass es nur wenig gute Tutorials gibt. Python, Java und C# sind hingegen ein Hype. Technologisch handelt es sich um Sackgassen, dafür gibt es auszeichnete Bücher die Einsteigern erklären wie man damit schnelle Erfolge erzielt. Im Grunde müsste mal jemand zu C++ ein Buch schreiben wo erstens nur die neusten Features vorgestellt werden, und zweitens die obige Matplotlib und SFML verwendet wird um in aufregend wenige Sourcecode komplette GUI Applikationen hochzuziehen. Das man also C++ explizit als Konkurrenz zu Python positioniert und sich an die Zielgruppe Anfänger wendet.

Vererbungshierarchien in C++

Zugegeben, in Python ist vieles leichter. Es ist dort relativ schwer einen Fehler zu erzeugen. Man kann aber durchaus auch in C++ eine Vererbungshierachie aufbauen. Die dabei auftretenden Hindernisse werden im folgenden erläutert. Fangen wir mit einem simplen Beispiel an: wir haben zwei Klassen und die eine Klasse soll auf die andere zugreifen. Der einfachste Weg wäre natürlich alles in eine Klasse zu schreiben. Aber, das führt häufig zu überlangen Klassen und die best-practice Methode im Refactoring besteht darin, die Klassenlänge stur auf 100 Lines of Code zu begrenzen. Daher brauchen wir unbedingt zwei Klassen, eine Hauptklasse für die GUI und eine GUIaddon Klasse welche weitere Funktionen bereitstellt:

#include <iostream>

class GUIplugin {
public:
  void show() {
    std::cout << "show\n"; 
    //std::cout <<temp<< "\n"; 
  }
};

class GUI : public GUIplugin {
public:
  int temp = 0;
  GUI() {
    temp = 10;
    show();
  }
};

int main() 
{
  GUI mygui;
  return 0;
}

Soweit der Code. Die Klassen wurden vorbildlich mittels Vererbung zusammengeschaltet und der Aufruf der „show()“ Methode ruft Code aus der Super-Class auf. Wer sich den Kommentar näher angeschaut hat, ahnt vermutlich was jetzt kommt. Weil eigentlich soll ja nicht nur Hello World ausgegeben werden, sondern eigentlich wollen wir auf die Variablen der Subclass zugreifen, also einen Downcast machen. Doch oh weh, wenn man man die Zeile auskommentiert und die Variable „temp“ ausgeben will gibt es einen bösen Compilerfehler. Genauer gesagt lautet er: „error: use of undeclared identifier ‚temp'“. Was kann man da machen? Die naheliegenste Antwort wäre auf Vererbung zu verzichten und stattdessen Komposition zu verwenden. Man trennt also die Klassen physisch und übergibt im Konstruktur einen Pointer auf die temp Variable. Aber, erstens sind Pointer nicht unbedingt das, was Einsteiger an C++ zu schätzen wissen und zweitens gehören die Klassen inhaltlich ja zusammen und ein Compositor Pattern würde keinen Sinn machen. Was man stattdessen tun sollte ist, eine Art von Abstrakter Klasse zu verwenden. Nicht eine richtige laut Lehrbuch, sondern nur die Idee als solche. Eine abstrakte Klasse bedeutet, dass dort zwar Attribute gespeichert sind, diese aber von rangniederen Klassen verwendet werden. Genau sowas brauchen wir hier, der abgeänderte Sourcecode sieht so aus, dass man die Variable hochzieht in die Superklasse:

#include <iostream>

class GUIplugin {
public:
  int temp = 0;
  void show() {
    std::cout << "show\n"; 
    std::cout <<temp<< "\n"; 
  }
};

class GUI : public GUIplugin {
public:
  GUI() {
    temp = 10;
    show();
  }
};

int main() 
{
  GUI mygui;
  return 0;
}

Wie schon gesagt, ist das keine echte abstrakte Klasse, aber das Kompilieren funktioniert einwandfrei. Und jetzt haben wir das was wir wollten: zwei sich ergänzende Klassen, und beide können auf alle Variablen zugreifen. Wer es perfekt machen will und eine echte abstrake Klasse erstellen möchte muss eine Pseudofunktion mit virtual deklarieren und diese in der Subklasse dann nochmal daklarieren. Darüber wird verhindert, dass man die GUIplugin Klasse einzeln instanzieren kann. Sie ist absofort nur noch ein Bauplan von der man andere Klassen ableiten kann:

#include <iostream>

class GUIplugin {
public:
  int temp = 0;
  virtual void f() = 0; // force abstract class
  void show() {
    std::cout << "show\n"; 
    std::cout <<temp<< "\n"; 
  }
};

class GUI : public GUIplugin {
public:
  GUI() {
    temp = 10;
    show();
  }
  void f() {}; 
};

int main() 
{
  GUI mygui;
  mygui.temp = 11;
  mygui.show();
  return 0;
}

Jetzt mag man sich als Einsteiger verdutzt fragen wozu das jemand einsetzen möchte. Die Antwort hat erneut etwas mit „Lines of Code“ zu tun, bei einem C++ Programm was maximal 1000 Zeilen lang ist, braucht man mit Sicherheit keine abstrakten Klassen, ja ein solches Programm kann man sogar komplett ohne Klassen programmieren und einfach 4-5 Methoden untereinander schreiben. Interessant wird es hingegen wenn größere Projekte anstehen mit 10k oder nochmehr Lines of Code. In solchen Fällen haben die Programmierer ein großes Bedürfnis nach Klassen die maximal 100 Lines of Code lang sind, das Zauberwort hier lautet Refactoring. Also das Aufsplitten von langen Klassen in kurze Klassen. Wenn man ein 10k Programm derartig aufteilt ergibt sich rechnerisch 10000/100=100 Klassen. Und die hängen irgendwie alle zusammen in einem riesigen Vererbungsnetz. Dort sind mehrere Klassen hinterinander geschaltet und bei solchen Ketten benötigt man abstrakte Klassen. Ganz oben an der Spitze sowieso, aber m anchmal auch mittendrin um Informationen zu bündeln.

Warum Programmierer gerne kurze Klassen haben anstatt Lange hat damit zu tun, dass üblicherweise Sourcecode einer permanenten Veränderung unterliegt. Damit ist gemeint, dass wenn das Projekt richtig betrieben wird, praktisch jede Codezeile im Laufe der Zeit ausgetauscht wird gegen besseren Code. Um diesen permanente Überarbeitung zu realisieren darf man sich immer nur eine Klasse auf einmal vornehmen. Man ändert nur einen abgegrenzten Bereich, und wenn der Bereich überschaubar ist, geht das umso leichter.

Online Question Answering Systeme

Die schlechte Nachricht vorneweg: außer START vom MIT http://start.csail.mit.edu/index.php habe ich kein einziges Question Answering System gefunden, dessen Server online ist und wo man tatsächlich etwas eingeben kann. Alles was ich finden konnte sind ehemalige Projekte die inzwischen wieder offline sind, Sourcecode auf github für mögliche Chatbots die ontop von DBpedia laufen, sowie jede Menge Paper die RDF erläutern. Doch schön der Reihe nach: worum geht es eigentlich? Die Grundidee lautet, Informationen nicht als Volltext sondern als Datenbank zu speichern, genauer gesagt als RDF Triple wodurch man leichter Anfragen stellen kann. Wenn so ein System korrekt konfiguriert ist, funktioniert es so wie IBM Watson. Das heißt, man postet eine Frage wie „Wer ist Albert Einstein?“ und das System beantwortet diese Frage. Genauer gesagt wird die Frage zuerst in eine SPARQL Anfrage übersetzt, diese an die RDF Datenbank gesendet, und dann die Antwort zurückübersetzt in natürliche Sprache.

Warum es derzeit keine Online-Demos hat weniger technische Gründe (die Technologie funktioniert ausgezeichnet) sondern das Problem sind patentrechtliche Fragestellungen. Firmen wie Google, Microsoft, IBM könnten sehr wohl derartige Portale freischalten, nur wollen sie es nicht, weil diese Technologie ziemlich mächtig ist. Genauer gesagt, ist Question Answering mit Semantic Networks leistungsfähiger als die heutige Google Suchmaschine. Man kann damit vorhandene Datenbestände sehr viel effizienter auswerten als mit einer simplen Volltextsuche plus Pagerank Algorithmus womit derzeit die Massen abgespeist werden.

Aber das Nichtvorhandensein von Q&A Demoseiten kann man zugleich als Ansporn verstehen sich auf theoretischem Gebiet damit näher zu beschäftigen. Denn zumindest Paper wo das Konzept näher erläutert wird gibt es. Es ist nur so, dass sie keiner ließt, weil die Leute zuviel Zeit auf Abnehmblogs und mit Filme schauen vertrödeln.

Bug: Intransparente Qualitätsstandard bei akademischen Journalen

Rund um OpenAccess wird eine Qualitätsdebatte geführt, in der Art dass zwischen hoher und niedriger Qualität eine Grenze gezogen wird, allerdings ohne genau zu definieren was die Grenze ausmacht. Schaut man ein wenig hinter die Kulissen ist der Quaitätsstandard der angelegt wird erstaunlich banal. Als qualitativ hochwertiges akademisches Journal gelten jene welche mit der Software Adobe Indesign entstanden sind, und wo die Paper keinerlei Rechtschreibfehler enthalten. Das ist deswegen erstaunlich, weil das absolut nichts mit dem Inhalt zu tun hat, und eigentlich die Verwendung einer konkreten Layoutsoftware das unwichtigste überhaupt ist. Aber das ist nicht so. Auf https://www.quora.com/What-software-do-academic-journals-such-as-Nature-or-Cell-use-to-format-their-articles wird nochmal explizit darauf hingewiesen, dass die Zeitung Nature selbstverständlich Indesign verwendet, um wie es heißt den höchsten Qualitätsstands zu erfüllen. Aber was passiert eigentlich, wenn man eine andere Software nutzt, wie MS-Word oder sogar Lyx? Nun die Folge ist ein merkliches Absenken der Qualität und zwar der äußerlich wahrnehmbaren.

Der Maßstab wonach aktuell Qualität beurteilt wird hat etwas mit der investierten Arbeitszeit zu tun. Einem Konferenzband der mit Indesign erstellt wurde, merkt man den hohen Aufwand an. Wer schonmal mit Indesign gearbeitet wird wissen, dass seine Wurzeln im Layouten von Zeitschriften. Also ein handwerklich ausgeführter Vorgang bei dem man die Spalten verschiebt, Buchstaben anordnen, vielleicht sogar Kapitalien und Kerning verwendet und im Bereich wissenschaftlichen Publishing auch noch Fußnoten setzt. Seine Wurzeln hat die Software in der Buchdruckkunst, es ist zwar ein digitaler Workflow aber einer der Bücher als Unikate betrachtet. Anders formuliert, Indesign ist kein txt2pdf Generator der automatisiert das Layout erzeugt, womöglich aus einer XML Datei heraus, sondern Indesign hat Ähnlichkeit mit einem Malprogramm.

Das Merkwürdige ist, dass der extrem hohe Aufwand der getrieben wird bis das akademische Paper fertig gesetzt wurde, nirgendwo notiert wird. Sondern das ganze gilt als selbstverständlich, also nicht zu hinterfragende Bestpractice Methode von der auf keinen Fall abgerückt werden darf. Vergleichen wir jetzt dazu Lyx. Lyx ist eine Software welche mit einem anderen Hintergrund antritt. Es wurde entwickelt um den manuellen Aufwand zu minimieren. Böse formuliert ist Lyx nichts anderes als ein txt2pdf Generator. Man kopiert den Nurtext ins Fenster, drückt auf Generate PDF unf fertig ist das zweispalten Paper. Das kommt selbstverständlich nicht an die Standards von Indesign heran, es sieht so aus, als wenn da jemand genau 5 Minuten Zeit ins Layout investiert hat und keine Minute länger. Komischerweise ist Lyx im Bereich des professionellen Publishing verpönt. Ich habe schon ziemlich viele Paper von google Scholar untersucht, aber kein einziges davon wurde mit Lyx erzeugt. Überall steht im Header etwas von einer Adobe Software welche für den PDF Output verantwortlich war.

Bei einem Diskurs rund um OpenAccess ist es an der Zeit einmal die Frage der Layoutsoftware in den Mittelpunkt zu stellen. Selbst das von vielen eingesetzte MS-Word ist nicht als effizient zu bezeichnen, ähnlich wie Indesign ist es visuell orientiert, in dem Sinne dass man manuell vorgibt wo die Seite zuende ist, und wo die Abbildungen positioniert werden. Das hat zur Folge dass bis ein fertiges Dokument erzeugt ist, unglaublich viel Zeit verloren geht. Zeit die üblicherweise mit hoher Qualität gleichgesetzt wird, in Wahrheit jedoch vergeudete Zeit ist. Die meisten Leute die etwas publizieren glauben, sie hätten die Ressourcen um sich mit MS Word oder Indesign zu beschäftigen. Sie glauben es ist vertretbar wenn man 1000 US$ nur für die Software ausgibt, und dann nochmal 200 Stunden für das Layouten investiert. Weil, so die Annahme, das Paper eben perfekt sein muss. Aber genau diese Ressourcen sind nicht vorhanden. Nur haben es die gängigen Publisher noch nicht ganz verstanden. Sie erkennen nicht, dass sie ein Kostenproblem haben und das es dazu eine Abhilfe gibt: technischer Forschritt.

Warum Layout-Programme für OpenAccess wichtig sind, hat damit zu tun, dass man ja nicht einfach nurtext ins Internet hochladen kann. Weil irgendwie wollen die Leser die Paper in ihrem Browser anzeigen. Und als HTML zu formatieren geht meist auch nicht, weil man dann die Abbildungen verliert. Wirklich schwer zu bedienen ist der Spitzenreiter Lyx eigentlich nicht. Er steht für alle Betriebssysteme kostenlos zur Verfügung, nach ca. 1 Woche ist man darin Profi. Worum es geht sind vielmehr kulturelle Traditionen. Also wie die Community funktioniert der man sich zugehörig fühlt. Üblicherweise gibt es im akademischen Publishing noch die Vorstellung dass die best practice Methode eine Linotype Maschine wäre, man in jüngerer Zeit jedoch auf Desktop-Publishing gewechselt sei und man dort dann Indesign einsetzt, weil das für Qualität steht. Nur leider ist dieser Vorstellung komplett veraltet. Es beschreibt eher die Vergangenheit und steht nicht für Effizienz. Genährt wird ein Unbehagen gegenüber möglichen Alternativen durch Leute, welche OpenAccess ohnehin als Sackgasse bezeichnen und für die selbst electronic Publishing zu innovativ ist. Das ist dann jene Fraktion, welche am liebsten noch immer mit ener Linotype Maschine arbeitet, es also gerne sieht, wenn echte Druckerschwärze verwendet wird und echtes Papier. Man mag es kaum glauben, aber das ist das Selbstverständnis von ca. 90% der academic Community. Und wenn die Elseviers, Nature und sonstigen Publisher das tun wofür sie bezahlt werden, also schön auf Buttons in den Adobe Programmen klicken um vermeintlich High-Quality zu erzeugen dann flüchten sie sich gedanklich in ein Rollenmodell des seriösen Publishing, stellen sich also vor, sie wäre ein moderner Gutenberg der die Technologie des Buchdrucks jetzt im Internet anwendet. Aber genau so funktioniert es leider nicht. Das Internet ist eine eigene Domäne, die alten Regeln aus dem Buchdruck haben dort keine Relevanz mehr, das einzige was zählt sind die Kosten.

Das wirklich wirklich erstaunliche ist, dass offenbar diese Ineffizienzen bis heute niemandem aufgefallen sind. Normalerweise müsste ein knallharter Markt dafür sorgen, dass die antiquierten Indesign Liebhaber von alleine verschwinden weil sie zu teuer sind. Aber offenbar haben wir es mit Marktversagen zu tun indem Sinne dass sich ineffiziente Verfahren erstaunlch lange bewähren und es zuwenig Druck gibt von außen. Offenbar hat man sich gut in Nischen eingerichtet und verteidigt diese gegen jeden technischen Fortschritt. Das es da ein Problem gibt wird deutlich wenn man einmal objektiv Indesign mit Lyx gegenüberstellt und zu dem Schluss kommt dass es eigentlich nur einen Sieger gibt. Wer böses im Schilde führt könnte sogar auf den Gedanken kommen dass man indesign vorzuglich dafür einsetzen kann um OpenAccess zu verhindern. Wenn das Erstellen eines PDF Papers so aufwendig ist, kann man nicht unbegrenzt viele davon herstellen, folglich bleibt der Preis hoch und OpenAccess fällt wie ein Kuchen in sich zusammen.

Eine vergleichbare Attitüde gibt es im deutschen Sprachraum in der Fixierung auf rein englischsprachliche Publikationen. Als gute wissenschaftliche Praxis zählt, entweder ein Paper in perfektem Native English zu veröffentlichen oder alternativ gar nicht. Da das Schreiben eines Papers auf English inkl. Korrekturlesen extrem aufwendig ist, wenn man Deutsch als Muttersprache spricht führt das ebenfalls zu einer künstlichen Verknappung. Das heißt, es gibt zahlenmäßig extrem wenige Paper die veröffentlicht werden. Vorgeblich um hohe Qualitätsanforderungen zu erfüllen doch in Wahrheit um den technischen Fortschritt zu blockieren. Es ist eine Art von Dogma, dass man immer in English publizieren muss und immer Indesign zum Layout verwenden muss. Diese Dogmen haben keine objektiven Gründe außer dass es schon immer so gemacht wurde. Ihre Einhaltung ist keine echte Notwendigkeit sondern zeigt auf wie wissenschaftliche Communities funktionieren. Anders gesagt, wer gegen diese Regeln verstößt landet im Abseits. Und derjenige der die Einhaltung der Regeln fordern und durchsetzen kann hat die Macht.

Ich will damit andeuten dass es beim wissenschaftlichen Publizieren keineswegs um inhatliche oder formale Dinge geht sondern eigentlich ist es ein „social Game“, dessen Regeln sehr vergangenheitsorientiert konservativ funktionieren. Am ehesten kann man die Attitüde mit einem Künstleratterlie vergleichen bei dem ein bestimmter Stil von allen eingehalten wird. Das heißt, irgendwer hat mal entschieden, dass alle impressionistisch malen müssen und aus Angst vor Gruppenausschluß wagt niemand mehr zu experimentieren. Sowas nennt die Sozialwissenschaft auch sektenähnliche Zustände, wo also eine Gemeinschaft sehr auf Konformität achtet insbesondere dann wenn die inneren Widersprüche zunehmen.

Der bessere weil objektive Maßstab besteht darin, die ökonomischen Kosten für das Publizieren von wissenschaftlichen Papern auf Null zu senken und jede Technologie zu adaptieren die dabei behilflich ist. Es geht keineswegs darum, ob man nun Lyx einsetzt, sondern man sollte jene Software einsetzen, die am wenigsten kostet.

SCIGEN
Im Jahr 2005 wurde das berühmt berüchtige Scigen Paper veröffentlicht. Das Projekt wurde nachträglich als Versuch gedeutet, ein Unsinnspaper in einem wissenschaftlichen Journal unterzubringen und einen Fake-Vortrag darüber zu halten. Doch was Jeremy Stribling et al. wirklich versucht haben, war ihre eigenen Kosten zu senken. Es ging keineswegs darum bewusst Unsinn zu erzählen oder sich als Wissenschaftler zu verkleiden sondern es ging darum, lowprofile Wissenschaft zu machen, also möglichst lowquality Science zu produzieren als Gegenentwurf zu dem was normalerweise üblich ist. Selbstverständlich hat es Stribling dabei übertrieben, er hat ein wenig zuviel weggelassen was dazu führte dass er tatsächlich nur noch Fake-Science ohne Substanz betrieben hat, die Stoßrichtung ist jedoch zu begrüßen. Es wurde hinterfragt ob man am wissenschaftlichen Publishing Prozess und beim Halten von Vorträgen nicht irgendwas weglassen kann, was möglicherweise keinien Sinn ergibt.

Ganz sicher kann man mit Scigen keine wissenschaftlichen Paper erzeuen, aber mit dem zugrundeliegenden Tex-System schon. Und ganz sicher kann man mit angeklebtem Bart keine Fachvorträge halten, aber mit einem preiswerten Second Hand Kittel schon. Ich will damit sagen, dass es im wissenschaftlichen System mehrere Punkte gibt, an denen man Ressourcen einsparen kann und wenn man das macht man eine andere bessere Wissenschaft erhält. Eine bei der man buchstäblich irgendjemanden von der Straße wegcastet und der dann den Vortrag hält ohne dass er einen richtigen Doktortitel hat oder seine Arbeit gepeerreviewed wurde.

FORTSCHRITT WIRD VERSCHLEPPT
Das die Umstellung auf hocheffiziente Workflows zur Erzeugung von wissenschaftlichen Dokumenten bisher noch nicht zum Standard gehört kann man erklären. Die Geschichte des Publizierens insgesamt ist dadurch geprägt, dass zwar technische Innovationen angestoßen wurden, eine breite Adaption jedoch Jahrzehnte und länger brauchten. Das älteste halbwegs effiziente Druckverfahren ist der Bleisatz. Dieser wird heutzutage noch bei Stempeln angewendet wo man die Buchstaben einsortiert und dann auf einem Kissen mit Farbe betupft. Der Bleisatz wurde im Mittelalter erfunden und laut Wikipedia war er bis in die 1970’er Jahre hinein das dominierende Druckverfahren. Zeitgleich dazu wurde ab 1890 schon die erste Linotype Machine erfunden, bei dem nicht der Setzer sondern eine Maschine die Buchstaben zusammenstellte, später kam dann der Fotosatz und ab Mitte der 1980’er das Desktop Publishing hinzu. Heute werden die meisten wissenschaftlichen Dokumente mittels Desktop Publishing erstellt, also so wie es Mitte der 1980’er Jahre erfunden wurde wo man schön auf einem Apple Computer und mit kommerzieller Adobe Software das Layout erstellt und zwar möglichst in einer Druckerei die sich darauf spezialisiert hat. Nur, wie ein Blick auf den Kalaneder verrät ist das System inzwischen schon über 30 Jahre alt, inzwischen gab es mehrere technische Innovationen die wichtigste davon war das Internet. Bis heute haben die Verlage darauf jedoch nicht umgestellt und es ist zu befürchten, dass sie es niemals machen werden. Ihr Selbstverständnis orientiert sich an einem Publishing Verlag, also an einer Insitution die entweder für Print oder für Digital arbeitet.

Was ist wissenschaftliches Arbeiten?

Die meisten verstehen unter wissenschaftlichem Arbeiten einen Workflow der in ein Paper mündet. Doch eigentlich geht es um soziale Fragen. Einen guten Eindruck erhält man wenn man sich die Webseite https://academia.stackexchange.com anschaut. Die Mehrheit der Fragen orientiert sich keineswegs an der Schriftgröße die man als Überschrift festlegt oder welche Literatur man zitieren soll sondern die Standardfrage geht mehr in Richtung „Ist es meiner Karriere zuträglich wenn ich bei dem Journal einen Artikel einsende?“ oder „mein Professor verhält sich so und so, wie soll ich reagieren?“. Genau genommen bezeichnet „wissenschaftliches Arbeiten“ das Verhalten in einem sozialen Kontext, also was man in der Community der man sich zugehörig fühlt tun sollte und was lieber nicht. Interessant wird es auch, wenn über Textprogramme philosophiert wird. Man erhält auf https://academia.stackexchange.com/questions/30160/why-do-some-journals-prefer-ms-word/30169#30169 einen guten Einblick darin, wie die Praxis aussieht. Dort wird ein Workflow beschrieben, bei dem Phd Doktoranden einen Text in MS-Word vorschreiben, sie dann zu einem Journal hinschicken, wo dann das Word Dokument in das Adobe Indesign Format konvertiert wird. Das ist kein Einzelfall sondern eigentlich machen das 100% aller Journale so. Der Fragesteller wollte wissen, warum die Journale MS Word präferieren. Wiederum ist das eine soziale Frage, weil es dafür keinen anderen Grund gibt außer den, dass es alle so machen.

Macht es aus Kostengründen Sinn, zuerst Word zu nutzen (was ein kommerzielles Produkt ist, nicht im Sourcecode vorliegt, und sehr umständlich zu bedienen ist) um danach dann der Publisher mühsam mittels import Filter und manueller Nachbearbeitung daraus ein Indesign-PDF Paper erzeugt, was dann womöglich hinter einer Paywall verschwindet? Allein die Frage ist schon ketzerisch. Der Sinn ergibt sich daraus, dass es sich um den Ist-Zustand handelt. Und das jeder der davon abweicht, wissenschaftliche Regeln verletzt. Anders gesagt, wenn man das Paper nicht als MS Word Dokument einsendet oder wenn ein Journal nicht indesign für das Layouten nutzt, dann ist das ein Fehler. In dem Sinne, dass die Leser, die Universität oder sonstwer von den Peers damit ein Problem hat.

Das wichtigste Merkmal des kaputten wissenschaftlichen Publikatonssystem besteht darin, dass es sehr zeitaufwendig ist. Die Qualität der Paper wird daran gemessen wieviel Aufwand jemand treibt. Objektiv betrachtet kann man mit dem beschriebenen Workflow eben nicht mal auf die schnelle ein Paper erstellen und veröffentlichen, sondern man muss viele Monate einplanen. Der imense Aufwand der getrieben wird gilt als Ausdruck besonders hoher Güte. So nach dem Motto, wenn man ein Dokument handschriftlich mit einem Federkelch schreibt ist es deswegen automatisch besser. Die Arbeit ist einmalig und ein Kunstwerk. Kein Zweifel, die heutigen Elsevier Journale sind Kunstwerke. Aber kann die inhaltliche Güte mithalten? Diese Frage wird nicht gestellt, weil die meisten Zeitschriften über kein Peer-Review System verfügen, das heißt es gibt niemanden der das Paper lesen und bewerten würde. Vielmehr ist das Veröffentlichen reiner Selbstzweck. Man hat einen Schonraum geschaffen der keine Leistungsbewertung besitzt und freut sich, wenn Studenten versuchen sich darin zurechtzufinden.