Revolution, Evolution oder Stillstand?
Schon öfter habe ich über übertriebene Abwärtskompatibilität in Software geschimpft und Stillstand kritisiert. Jetzt bin ich selbst zum Opfer von Stillstand geworden. Jetzt wurde schon mein zweiter Patch für NSPR abgelehnt. Die Begründung sieht in etwa so aus: Der Code ist veraltet und kaum jemand kennt sich aus. Aus irgendwelchen Gründen funktioniert der Code aber man sollte ihn lieber unberührt lassen damit das so bleibt. Falls trotzdem Fehler auftreten werden diese notdürftig geflickt. Dabei waren meine Änderungen nur Codevereinfachungen und Fehlerkorrekturen. Einige Warnungen wurden beseitigt damit diese nicht mehr von wirklichen Fehlern ablenken. Und entfernen von nicht mehr benutzten Makros, was das allgemeine programmieren vereinfacht. Dadurch wäre der Einstieg von möglichen Programmierern einfacher. Aber scheinbar wollen die Entwickler nicht das neue Leute einsteigen und die Software verbessern. Schade. Ich zumindest werde mich demnächst von NSPR Code fernhalten. Aber jetzt zur Frage, was ist eigentlich NSPR? NSPR ist die NetScape Portable Runtime. Ein Relikt aus den Anfangszeiten von Mozilla. Über zehn Jahre alt. NSPR definiert Plattform unabhängige Typen wie z.b. PRBool, PRInt64 uvm. Dinge die es schon seit Jahren im C99 Standard gibt. Darüberhinaus bietet es Funktionen zur Arbeit mit Threads, Speicherverwaltung, Dateizugriffe, dynamisches Linken und Zeitmanagement. Dinge die es schon im C++ Standard gibt oder bald geben wird. Oder Dinge die z.b. in Boost enthalten sind. Mit anderen Worten: NSPR ist obsolet.
Oder doch nicht? Denn einige Compiler unterstützen selbst den fast 10 Jahre alten Standard C99 nicht vollständig. Allen voran Microsofts Visual Studio. Aber hier ist es die Aufgabe von Microsoft den Standard zu unterstützen und nicht die Aufgabe der anderen um den fehlenden Standard herumzuprogrammieren. Genauso wie es die Aufgabe des IE Teams ist, richtig programmierte Webseiten richtig anzuzeigen. Es ist nicht die Aufgabe der Webentwickler ihre Webseiten absichtlich falsch zu programmieren nur damit eine obsolete Rendering Engine diese korrekt anzeigt.
Ich bewundere Leute die sich dafür einsetzen Code sauber und modern zu halten. Und irgendwie habe ich mitleid mit Leuten die eigentlich aus einem 3*3 Problem ein 1*1 Problem machen wollten aber am Schluss trotzdem dazu genötigt werden es zu einem 4*4 Problem auszuweiten. Im Klartext: Wir nehmen an es gibt 3 verschiedene Software Projekte die alle das selbe machen. Und irgendwie müssen sie auch miteinander arbeiten. Also enthält jedes Projekt Unterstützung für die anderen beiden. Damit kann es an 9 stellen zu Problemen kommen. Inkompatibilität und dergleichen. Einige der Projekte sind schon lange tot und werden daher nicht mehr gepflegt. Aber trotzdem programmiert jeder Unterstützung dafür ein. Man könnte aufräumen indem man eine einheitliche Lösung entwickelt und jeder wäre Glücklich. Leider nicht so ganz. Denn es gibt immer noch so viel tote Software die auf andere tote Software aufgebaut ist. Also wenn man ein totes Stück ersetzen möchte muss man trotzdem dessen Platz einnehmen und das tun was die tote Software getan hat. Man fügt also eine weitere Quelle möglicher Fehler hinzu und macht es damit zu einem 4*4 Problem.
Ich selbst bin sehr dafür Software so einfach wie möglich zu halten. Deswegen programmiere ich auch an Mozilla rum und nicht an Webkit. Weil Mozilla solche revolutionären Kräfte nötiger hat. Damit der Code mehr vereinfacht wird damit es zukünftige Programmierer einfacher haben wirklich wichtige Funktionen einzubauen. Leider ist es sehr schwer, wie mein Beispiel zeigt. Und leider habe ich auch eine zu schwache Persönlichkeit um dagegen anzukämpfen. Lieber gebe ich auf als noch aktiver darum zu kämpfen das die Software erneuert wird. Aber das ist nicht nur bei Mozilla so sondern bei vielen open-source Projekten. Möglicherweise ist das der Grund warum ich beruflich unbedingt in Richtung open-source gehen will. Weil ich so vieles verbessern könnte.
Allgemein bin ich auch einer ein Revolutionär als ein Evolutionär. Ich bin der Auffassung, das Revolution zu besseren Ergebnissen führt als Evolution. Man kann vor allem eine veraltete Software immer minimalst verbessern. Aber irgendwann ist eine Grenze erreicht wo es nicht mehr sinnvoll weiter geht. Der Code ist zu kompliziert geworden. Selbst die normale Pflege wird ungemein erschwert. Es ist Zeit für komplett frisches Denken. Wenn ein komplett neues Konzept erschaffen wird, hat dieses um einiges mehr Potential, auch wenn es einiger Detailverbesserungen bedarf bis ein neues Konzept das alte überholt. Im Endeffekt ist es das dennoch wert.
Politisch bin ich auch eher Revolutionär. Stillstand wie unter der CSU Diktatur in Bayern ist sowieso schlecht. Auch diese langsame Evolution unter der großen Koalition bringt es nicht fertig das System an sich umzukrempeln und obsolete Gedanken zu verwerfen. Ein mehr revolutionäres System würde mir gefallen. Wo man Mut zu Änderung hat und nicht immer mit der Angst rumläuft die Großkonzerne oder Wohlhabenden könnten abwandern. Mit solch einer Einstellung wird es nie wirklich besser. Der Kern muss neu entwickelt werden um mehr Optimierungspotential zu ermöglichen. Genau wie bei Software.
Psychologisch ist dieses ganze Revolution oder Stillstand Thema sehr interessant. Denn in Wirklichkeit habe ich extreme Angst vor Unbekanntem und Fremdem. Ich bin nicht mal bereit neues unbekanntes Essen auszuprobieren. Ich kenne ein paar Dinge die mir schmecken und die esse ich. Neues probiere ich nicht aus. Auch im Urlaub kotzt mich die fremde Umgebung nach kürzester Zeit an. Ich will auch nicht von Zuhause wegziehen weil ich Angst vor Neuem habe. Es ist für mich auch sehr schwer neue Freundschaften zu knüpfen. Ich habe die selben Freunde seit Jahren. Auch neue Freunde seitdem ich an der FH studiere, aber das ist eine kleine Ausnahme von meiner neophoben Einstellung. Auch habe ich Angst irgendwann mal arbeiten zu gehen. Denn das ist auch etwas neues für mich. Und dann auch noch Steuern und sowas. Oh Nein!
Irgendwie ist es sehr interessant. Könnte es denn sein das meine extrem neophile Einstellung in der digitalen Welt als Kompensation meiner sehr neophoben Einstellung in der realen Welt dient?