[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.00,0:00:18.75,Default,,0000,0000,0000,,{\i1}36C3 Intro Musik{\i0} Dialogue: 0,0:00:19.57,0:00:23.30,Default,,0000,0000,0000,,Herald: Jetzt mit dem Talk 'Das nützlich-\Nunbedenklich Spektrum' Ich muss ihn, wie Dialogue: 0,0:00:23.30,0:00:26.62,Default,,0000,0000,0000,,gesagt, nicht vorstellen: Fefe. Dialogue: 0,0:00:26.62,0:00:30.48,Default,,0000,0000,0000,,{\i1}Applaus{\i0} Dialogue: 0,0:00:30.48,0:00:31.48,Default,,0000,0000,0000,,{\i1}Mikrofonklopfen{\i0} Dialogue: 0,0:00:37.08,0:00:40.11,Default,,0000,0000,0000,,Fefe: Ja guten Morgen. Freut mich, dass\Ndas alles hier so voll ist. Ein Glück, Dialogue: 0,0:00:40.11,0:00:44.34,Default,,0000,0000,0000,,dass das hier nicht Halle 1 ist. Das wäre\Nja schlimm, so viele Leute. Ja, dieser Dialogue: 0,0:00:44.34,0:00:46.77,Default,,0000,0000,0000,,Vortrag, ich muss gleich ein bisschen\NErwartungsmanagement machen. Ich habe Dialogue: 0,0:00:46.77,0:00:50.82,Default,,0000,0000,0000,,nämlich eigentlich letztes Jahr einen\Nanderen Vortrag eingereicht über TCB- Dialogue: 0,0:00:50.82,0:00:54.24,Default,,0000,0000,0000,,Minimierung und das wäre so ein bisschen\Ntechnisch gewesen. Was man denn machen Dialogue: 0,0:00:54.24,0:00:59.67,Default,,0000,0000,0000,,kann als Programmierer. Der ist abgelehnt\Nworden. Ich weiß nicht, warum. War voll. Dialogue: 0,0:00:59.67,0:01:02.52,Default,,0000,0000,0000,,Den habe ich dieses Jahr wieder\Neingereicht, aber es sollte nicht so Dialogue: 0,0:01:02.52,0:01:05.52,Default,,0000,0000,0000,,aussehen, als wenn ich die ärgern will,\Nalso habe ich noch einen Talk eingereicht. Dialogue: 0,0:01:05.52,0:01:10.80,Default,,0000,0000,0000,,Den haben die natürlich genommen.So, das\Nheißt, den musste ich jetzt schnell Dialogue: 0,0:01:10.80,0:01:12.81,Default,,0000,0000,0000,,vorbereiten.\N{\i1}Publikum lacht{\i0} Dialogue: 0,0:01:13.32,0:01:19.29,Default,,0000,0000,0000,,Ja, das Problem ist, das ist eher so ein\NGedankengang als eine strukturierte Dialogue: 0,0:01:19.29,0:01:23.49,Default,,0000,0000,0000,,Darstellung. Ich hoffe, es wird trotzdem\Nhilfreich. Aber es ist nicht so Dialogue: 0,0:01:23.49,0:01:27.72,Default,,0000,0000,0000,,strukturiert wie meine sonstigen Vorträge.\NIch fange einfach mal an. Also es gibt Dialogue: 0,0:01:27.72,0:01:32.31,Default,,0000,0000,0000,,mehrere Herleitungen, die im Grunde zum\Nselben Ergebnis führen und ich lasse euch Dialogue: 0,0:01:32.31,0:01:36.54,Default,,0000,0000,0000,,einfach mal teilhaben.Es fing relativ früh\Nin meiner Karriere an, da habe ich mich Dialogue: 0,0:01:36.54,0:01:40.98,Default,,0000,0000,0000,,entschieden: ich werde nie Software\Nschreiben, von der vielleicht Leben Dialogue: 0,0:01:40.98,0:01:45.78,Default,,0000,0000,0000,,abhängen könnten, so medizinische Geräte,\NAtomkraftwerke, war so meine Vorstellung, Dialogue: 0,0:01:45.78,0:01:51.12,Default,,0000,0000,0000,,Militär natürlich sowieso nicht. Und dann\Nhabe ich aber jemanden getroffen, der Code Dialogue: 0,0:01:51.12,0:01:54.45,Default,,0000,0000,0000,,für Atomkraftwerke schreibt. Und das war\Nso ein Typ: "Ey das ist doch ganz Dialogue: 0,0:01:54.45,0:02:00.30,Default,,0000,0000,0000,,einfach." Das heißt, wenn die Leute, die\Nihre Grenzen einschätzen können, das nicht Dialogue: 0,0:02:00.30,0:02:03.66,Default,,0000,0000,0000,,machen, dann machen es halt die anderen.\N{\i1}Publikum lacht{\i0} Dialogue: 0,0:02:04.63,0:02:08.98,Default,,0000,0000,0000,,Das soll jetzt nicht verallgemeinernd sein.\NIch habe tatsächlich noch einen anderen Dialogue: 0,0:02:08.98,0:02:12.16,Default,,0000,0000,0000,,getroffen, der war nicht so, aber ich\Nmeine, diese Art von Personen gibt es Dialogue: 0,0:02:12.16,0:02:18.22,Default,,0000,0000,0000,,halt. Die Problematik an der Stelle ist,\Nglaube ich, dass man Programmieren Dialogue: 0,0:02:18.22,0:02:23.35,Default,,0000,0000,0000,,explorativ lernt: das ist häufig nicht so\Neinen Kurs, den man durchgeht, sondern man Dialogue: 0,0:02:23.35,0:02:28.69,Default,,0000,0000,0000,,läuft halt rum und sucht Grenzen. Das\Nheißt aber auch, dass man per Definition Dialogue: 0,0:02:28.69,0:02:33.16,Default,,0000,0000,0000,,die Grenzen noch nicht kennt, denn die\Nwill man ja gerade finden. Das heißt aber Dialogue: 0,0:02:33.16,0:02:38.26,Default,,0000,0000,0000,,auch, dass alle Leute im Grunde immer\Ngerade an ihrer Grenze arbeiten. Wenn Dialogue: 0,0:02:38.26,0:02:41.20,Default,,0000,0000,0000,,Leute Software schreiben, dann gehen sie\Nso weit, wie sie glauben, dass sie gerade Dialogue: 0,0:02:41.20,0:02:47.32,Default,,0000,0000,0000,,noch können. Und das heißt aber im\NUmkehrschluss, dass die Technologie, die Dialogue: 0,0:02:47.32,0:02:50.53,Default,,0000,0000,0000,,da draußen ausgerollt wird, das sind\Nhauptsächlich eben nicht abgehangene Dialogue: 0,0:02:50.53,0:02:55.24,Default,,0000,0000,0000,,wohlverstandene Sachen, sondern das sind\Ngenau die Technologien, die der Typ gerade Dialogue: 0,0:02:55.24,0:03:01.45,Default,,0000,0000,0000,,noch verstanden hat. Das ist so ein\Nbisschen ein Problem, und das wird nochmal Dialogue: 0,0:03:01.45,0:03:04.66,Default,,0000,0000,0000,,verstärkt dadurch, dass wir eben heute so\Neine Modularisierungs- und Dialogue: 0,0:03:04.66,0:03:09.46,Default,,0000,0000,0000,,Abhängigkeitswelle haben, dass Leute\Neinfach noch Module von anderswo mit Dialogue: 0,0:03:09.46,0:03:16.54,Default,,0000,0000,0000,,reinziehen und sich einfach im Grunde ohne\NGrundlage in der Realität vorstellen, dass Dialogue: 0,0:03:16.54,0:03:20.65,Default,,0000,0000,0000,,derjenige schon wissen wird, was er tut.\NUnd so ist es eben häufig nicht, sondern Dialogue: 0,0:03:20.65,0:03:25.48,Default,,0000,0000,0000,,das sind genau so Leute wie du und ich,\Ndie eben auch explorativ gearbeitet haben. Dialogue: 0,0:03:25.48,0:03:30.07,Default,,0000,0000,0000,,Das kann man sich auch ganz gut selbst\Nüberlegen, wenn man so ein kurzes Dialogue: 0,0:03:30.07,0:03:34.21,Default,,0000,0000,0000,,Gedankenexperiment macht. Das konnte man\Nauch schon live beobachten. Also nehmen Dialogue: 0,0:03:34.21,0:03:37.84,Default,,0000,0000,0000,,wir mal an, jemand findet einen Weg, um\Nbesser mit Komplexität umzugehen. Zum Dialogue: 0,0:03:37.84,0:03:41.20,Default,,0000,0000,0000,,Beispiel Modularisierung oder\Nobjektorientierte Programmierung, als das Dialogue: 0,0:03:41.20,0:03:44.77,Default,,0000,0000,0000,,gerade frisch war. Und dann würde man ja\Nhoffen, dass wir die Software, die wir Dialogue: 0,0:03:44.77,0:03:47.56,Default,,0000,0000,0000,,davor geschrieben haben, jetzt besser\Nmachen, weil wir das besser im Griff Dialogue: 0,0:03:47.56,0:03:51.10,Default,,0000,0000,0000,,haben. Aber das passiert halt nicht,\Nsondern was passiert ist, dass wir dann Dialogue: 0,0:03:51.10,0:03:57.22,Default,,0000,0000,0000,,eben größere Software schreiben und wieder\Nam Limit arbeiten. Ich glaube, dass das Dialogue: 0,0:03:57.22,0:04:00.40,Default,,0000,0000,0000,,kein Problem der Softwareentwicklung oder\Ndes Programmierens ist, sondern generell Dialogue: 0,0:04:00.40,0:04:03.79,Default,,0000,0000,0000,,ein Problem mit Menschen. So hat uns die\NEvolution gemacht, und da müssen wir Dialogue: 0,0:04:03.79,0:04:07.82,Default,,0000,0000,0000,,lernen mit umzugehen. Und ich will das mal\Nillustrieren: Ich habe so eine Theorie, Dialogue: 0,0:04:07.82,0:04:14.87,Default,,0000,0000,0000,,die nenne ich die Gradienten-Theorie. Die\NThese ist, dass Menschen ihre Umgebung wie Dialogue: 0,0:04:14.87,0:04:18.11,Default,,0000,0000,0000,,ein Optimierungsverfahren betrachten in\Nder Mathematik. Das heißt, man hat Dialogue: 0,0:04:18.11,0:04:22.85,Default,,0000,0000,0000,,sozusagen ein Gelände und sucht den\Nhöchsten oder tiefsten Punkt - das ist so Dialogue: 0,0:04:22.85,0:04:29.36,Default,,0000,0000,0000,,ein Optimierungsproblem. Und dabei geht\Nman eben nicht gezielt vor, wenn man das Dialogue: 0,0:04:29.36,0:04:34.28,Default,,0000,0000,0000,,Gelände nicht kennt, sondern man muss\NAnnahmen treffen, und das kann man an sich Dialogue: 0,0:04:34.28,0:04:37.49,Default,,0000,0000,0000,,selbst beobachten. Wenn es zu kalt ist,\Ndann geht man ja zur Heizung und stellt Dialogue: 0,0:04:37.49,0:04:41.51,Default,,0000,0000,0000,,nicht so ein, wie man es haben will,\Nsondern man stellt heiß, und dann wartet Dialogue: 0,0:04:41.51,0:04:44.39,Default,,0000,0000,0000,,man, bis es zu warm wird, und dann geht\Nman wieder hin und stellt wieder runter. Dialogue: 0,0:04:44.39,0:04:47.51,Default,,0000,0000,0000,,Das heißt, wir haben so ein\NAnnäherungsverfahren, wie wir mit der Welt Dialogue: 0,0:04:47.51,0:04:50.03,Default,,0000,0000,0000,,umgehen. Und das ist nicht nur bei\NHeizungen. Das ist auch beim Autofahren, Dialogue: 0,0:04:50.03,0:04:53.84,Default,,0000,0000,0000,,wenn wir so eine Landkarte haben, dann\Ngucken wir uns an, was ist denn das Limit? Dialogue: 0,0:04:53.84,0:04:58.73,Default,,0000,0000,0000,,Wo müssen wir abbiegen? Und den Weg dahin\Nignorieren wir, obwohl der vielleicht ganz Dialogue: 0,0:04:58.73,0:05:03.41,Default,,0000,0000,0000,,schön ist. Viele Sachen, die wir machen,\Nauch die Geschwindigkeitsauswahl, ist so Dialogue: 0,0:05:03.41,0:05:06.32,Default,,0000,0000,0000,,ein Gradienten-Ding Wir beschleunigen, bis\Nwir uns unwohl fühlen. Dann gehen wir Dialogue: 0,0:05:06.32,0:05:11.39,Default,,0000,0000,0000,,wieder ein bisschen zurück. Oder wenn man\Nim Wörterbuch oder Telefonbuch Dialogue: 0,0:05:11.39,0:05:15.78,Default,,0000,0000,0000,,nachschlägt, dann macht man eine Annahme,\Nwo das ungefähr sein wird. Und wenn das zu Dialogue: 0,0:05:15.78,0:05:19.07,Default,,0000,0000,0000,,weit ist, geht man wieder zurück. Also der\Nelementare Teil ist jedenfalls: wir haben Dialogue: 0,0:05:19.07,0:05:22.58,Default,,0000,0000,0000,,die Annahme, dass das Gelände ungefähr so\Naussieht. Wir haben hier eine glatte Dialogue: 0,0:05:22.58,0:05:26.48,Default,,0000,0000,0000,,Übergänge, und dann funktioniert das\NVerfahren gut. Das heißt Gradient Descent Dialogue: 0,0:05:26.48,0:05:29.93,Default,,0000,0000,0000,,übrigens, dass man versucht, der\NSchwerkraft hinterherzulaufen und den Dialogue: 0,0:05:29.93,0:05:34.49,Default,,0000,0000,0000,,tiefsten Punkt zu suchen. Aber es\Nfunktioniert in zwei Fällen eben nicht Dialogue: 0,0:05:34.49,0:05:38.09,Default,,0000,0000,0000,,gut: Der eine ist, wenn es einen Abhang\Ngibt, über den ich rüberlaufe und dann Dialogue: 0,0:05:38.09,0:05:41.93,Default,,0000,0000,0000,,kann ich nichts zurück korrigieren. Und\Ndas läuft auch nicht gut, wenn man nicht Dialogue: 0,0:05:41.93,0:05:46.40,Default,,0000,0000,0000,,merkt, wenn man zu weit gegangen ist. Also\Nist so ähnlich wie der Abhang, und das Dialogue: 0,0:05:46.40,0:05:49.97,Default,,0000,0000,0000,,zweite Problem ist, wenn man nicht\Nzurückrollen kann, aus anderen Gründen. Dialogue: 0,0:05:49.97,0:05:53.81,Default,,0000,0000,0000,,Die gibts in der Softwareentwicklung eben\Nhäufiger, und es stellt sich heraus, sind Dialogue: 0,0:05:53.81,0:05:58.34,Default,,0000,0000,0000,,genau die Art von Problemen, die Menschen\Nhaben. Zum Beispiel, wenn wir so was haben Dialogue: 0,0:05:58.34,0:06:03.43,Default,,0000,0000,0000,,wie zwei Wochen Probeabo, dann vergessen\Ndie Leute halt, da wieder auszutreten, Dialogue: 0,0:06:04.03,0:06:09.58,Default,,0000,0000,0000,,oder Drogenabhängigkeit ist ein Klassiker,\NSpielesucht. Und in der Dialogue: 0,0:06:09.58,0:06:12.37,Default,,0000,0000,0000,,Softwareentwicklung oder überhaupt im\NProjektmanagement ist es häufig: Jetzt Dialogue: 0,0:06:12.37,0:06:17.26,Default,,0000,0000,0000,,haben wir schon so viel investiert, jetzt\Nkönnen wir nichts zurück. Security ist Dialogue: 0,0:06:17.26,0:06:22.24,Default,,0000,0000,0000,,kein Gradient, es sieht vielleicht aus wie\Nein Gradient, aber es ist keiner. Das ist Dialogue: 0,0:06:22.24,0:06:26.80,Default,,0000,0000,0000,,gerade, glaube ich, das Grundproblem von\Nder IT-Security. Man merkt nicht, wenn man Dialogue: 0,0:06:26.80,0:06:30.64,Default,,0000,0000,0000,,zu weit gegangen ist. Das merkt man erst,\Nwenn man gehackt wird. Und dann kann man Dialogue: 0,0:06:30.64,0:06:35.02,Default,,0000,0000,0000,,nicht mehr zurückrollen. Dann sind die\NDaten schon weg. Komplexität ist ähnlich Dialogue: 0,0:06:35.02,0:06:38.26,Default,,0000,0000,0000,,wie Security auch kein Gradient, aber es\Nfühlt sich an wie einer. Und das ist, Dialogue: 0,0:06:38.26,0:06:42.13,Default,,0000,0000,0000,,glaube ich, der Grund, warum wir damit so\Nschlecht umgehen können. Das fühlt sich Dialogue: 0,0:06:42.13,0:06:45.13,Default,,0000,0000,0000,,an, als würden wir alles unter Kontrolle\Nhaben. Und zu dem Zeitpunkt, wo wir Dialogue: 0,0:06:45.13,0:06:50.14,Default,,0000,0000,0000,,merken, dass es nicht mehr so ist, können\Nwir nicht mehr zurück. Übrigens ist auch Dialogue: 0,0:06:50.14,0:06:54.82,Default,,0000,0000,0000,,Daten rausgeben so an Facebook oder so ist\Ngenauso ein Pseudo-Gradient, nenne ich das Dialogue: 0,0:06:54.82,0:07:00.55,Default,,0000,0000,0000,,mal. Zu dem Zeitpunkt, wo man merkt, dass\Nman zu viel rausgegeben hat, ist es zu spät. Dialogue: 0,0:07:00.55,0:07:05.65,Default,,0000,0000,0000,,So die Schlussfolgerung ist eigentlich:\NKomplexität ist böse. Wir bemerken sie zu Dialogue: 0,0:07:05.65,0:07:09.61,Default,,0000,0000,0000,,spät und wir fangen sie uns auch zu leichtfertig\Nein. Und da muss man halt irgendwie Dialogue: 0,0:07:09.61,0:07:14.68,Default,,0000,0000,0000,,gegensteuern. Die Kosten dafür werden im\NMoment an unsere Kunden, wenn wir das Dialogue: 0,0:07:14.68,0:07:19.48,Default,,0000,0000,0000,,beruflich machen, externalisiert, an\Nunsere Benutzer und an unser zukünftiges Dialogue: 0,0:07:19.48,0:07:24.70,Default,,0000,0000,0000,,Selbst. Daher findet man relativ selten\Nglückliche ältere Softwareentwickler. Dialogue: 0,0:07:24.70,0:07:28.90,Default,,0000,0000,0000,,{\i1}Publikum lacht{\i0}\NSo, das war der erste Gedankengang, der Dialogue: 0,0:07:28.90,0:07:32.79,Default,,0000,0000,0000,,mich in die Richtung geführt hat. Der\Nzweite Gedankengang: Ich will jetzt mal Dialogue: 0,0:07:32.79,0:07:35.85,Default,,0000,0000,0000,,das GNU Manifesto herausgreifen.\NStellvertretend. Das ist kein GNU-Bashing Dialogue: 0,0:07:35.85,0:07:39.48,Default,,0000,0000,0000,,hier, aber am GNU Manifesto kann man das\Nganz gut zeigen. Das war die ursprüngliche Dialogue: 0,0:07:39.48,0:07:43.65,Default,,0000,0000,0000,,Ankündigung des GNU-Projekts von Richard\NStallman. Da hat er geschrieben: "Wir Dialogue: 0,0:07:43.65,0:07:47.94,Default,,0000,0000,0000,,machen Unix-Programme, und wir werden aber\Nnicht genau dasselbe sein wie Unix. We Dialogue: 0,0:07:47.94,0:07:53.04,Default,,0000,0000,0000,,will make all improvements that are\Nconvenient." Das ist ein ganz furchtbarer Dialogue: 0,0:07:53.04,0:07:58.47,Default,,0000,0000,0000,,Satz. Was heißt denn 'convenient', für wen\Ndenn? Aber das ist genau die Dialogue: 0,0:07:58.47,0:08:03.26,Default,,0000,0000,0000,,Herangehensweise, die viele Leute haben,\Ndie Software schreiben: "Oh, das können Dialogue: 0,0:08:03.26,0:08:07.28,Default,,0000,0000,0000,,wir noch schnell dazutun." Was fehlt, ist\Nso ein Korrektiv, dass man vorher drüber Dialogue: 0,0:08:07.28,0:08:11.30,Default,,0000,0000,0000,,nachdenkt: "Was hänge ich mir eigentlich\Ngerade für eine Legacy ans Bein?" Ich Dialogue: 0,0:08:11.30,0:08:15.77,Default,,0000,0000,0000,,glaube dieser Convenience-Gedanke beim\NErweitern von Software ist unsere Erbsünde Dialogue: 0,0:08:15.77,0:08:20.01,Default,,0000,0000,0000,,- um hier mal ein bisschen katholisch zu\Nwerden - in der Softwareentwicklung. Die Dialogue: 0,0:08:20.01,0:08:24.25,Default,,0000,0000,0000,,haben alle schon einmal begangen und das\Nkriegt man eben nicht nachkorrigiert. Dialogue: 0,0:08:24.25,0:08:27.26,Default,,0000,0000,0000,,Daher ist der einzige Weg, das\Nloszuwerden, wenn man die ganze Dialogue: 0,0:08:27.26,0:08:31.63,Default,,0000,0000,0000,,Software oder das ganze Modul wegschmeißt\Nund neu macht. Aber Software stirbt halt Dialogue: 0,0:08:31.63,0:08:36.59,Default,,0000,0000,0000,,nicht. Ich habe im Umgang mit Software\Nerst verstanden, dass es gut ist, dass Dialogue: 0,0:08:36.59,0:08:40.51,Default,,0000,0000,0000,,Menschen sterben, weil das ist ein\NKorrektiv, was gebraucht wird. Wenn System Dialogue: 0,0:08:40.51,0:08:44.03,Default,,0000,0000,0000,,besser werden soll, dann muss der alte\NScheiß auch irgendwann sterben können. Und Dialogue: 0,0:08:44.03,0:08:49.58,Default,,0000,0000,0000,,das passiert bei Software halt nicht. Es\Nist ein Feature, dass Dinge nicht ewig Dialogue: 0,0:08:49.58,0:08:55.27,Default,,0000,0000,0000,,halten. Man kann das allgemein beobachten,\Nwenn jemand seine Software erweitern will Dialogue: 0,0:08:55.27,0:08:58.48,Default,,0000,0000,0000,,und er hat die Wahl zwischen "Wir machen\Njetzt hier mal was, um das konkrete Dialogue: 0,0:08:58.48,0:09:01.90,Default,,0000,0000,0000,,Problem zu lösen" oder "Wir machen hier\Nwas, um ein allgemeineres Problem zu Dialogue: 0,0:09:01.90,0:09:06.64,Default,,0000,0000,0000,,lösen." Dann werden die Leute immer das\Nallgemeinere Problem zu lösen versuchen. Dialogue: 0,0:09:06.64,0:09:12.06,Default,,0000,0000,0000,,Viel Feind, viel Ehr. Und das kann man\Nfast flächendeckend beobachten. Es gibt Dialogue: 0,0:09:12.06,0:09:16.86,Default,,0000,0000,0000,,sehr wenige Ausnahmen davon. Und ich hatte\Nmeinen Aha-Moment, als ich eines Tages mal Dialogue: 0,0:09:16.86,0:09:21.22,Default,,0000,0000,0000,,gdb aufgerufen habe auf ein Projekt, also\Nich habe jetzt hier /tmp genommen, aber Dialogue: 0,0:09:21.22,0:09:26.14,Default,,0000,0000,0000,,das Projekt war irgendein Checkout. Ich\Nhabe in meinem eigenen Webserver Dialogue: 0,0:09:26.14,0:09:30.51,Default,,0000,0000,0000,,einen .gdbinit. Das ist eine Konfig-Datei\Nfür den GNU-Debuger, wo man zum Beispiel Dialogue: 0,0:09:30.51,0:09:33.40,Default,,0000,0000,0000,,sagen kann: "Ruf das Programm, wenn ich es\Ndebuggen will, mit diesen Dialogue: 0,0:09:33.40,0:09:36.81,Default,,0000,0000,0000,,Kommandozeilenargumenten auf!" Und da\Nschreibe ich dann rein: "Nimm nicht Port Dialogue: 0,0:09:36.81,0:09:41.39,Default,,0000,0000,0000,,80, weil das klappt nicht, sondern nimm\NPort irgendwie 8005 oder so, was-weiß-ich, Dialogue: 0,0:09:41.39,0:09:46.10,Default,,0000,0000,0000,,halt localhost zum debuggen." Und gdb hat\Neines Tages angefangen zu sagen: "Nee, die Dialogue: 0,0:09:46.10,0:09:50.55,Default,,0000,0000,0000,,.gdbinit-Datei, die nehme ich aber nicht,\Ndenn die liegt hier in einem Verzeichnis, Dialogue: 0,0:09:50.55,0:09:56.00,Default,,0000,0000,0000,,was du nicht freigeschaltet hast." Und das\Nwar genau so ein Versuch, diesen Fehler Dialogue: 0,0:09:56.00,0:10:01.10,Default,,0000,0000,0000,,nach Werk, nach der Tat zu korrigieren.\Ngdb hat festgestellt: "Unsere Konfig-Datei Dialogue: 0,0:10:01.10,0:10:05.81,Default,,0000,0000,0000,,ist so mächtig geworden, dass es ein\NSicherheitsproblem darstellt", und hat dann Dialogue: 0,0:10:05.81,0:10:11.04,Default,,0000,0000,0000,,halt die ganze Konfig-Sache zugenagelt für\Nrückblickend. Und das hat halt mehr Dialogue: 0,0:10:11.04,0:10:15.69,Default,,0000,0000,0000,,kaputtgemacht, als nötig gewesen wäre -\Nvielleicht, weiß ich nicht - aber es war Dialogue: 0,0:10:15.69,0:10:19.27,Default,,0000,0000,0000,,für mich sehr ärgerlich. Man kann hier so\Neinen Autopfad eintragen, aber da ist mir Dialogue: 0,0:10:19.27,0:10:22.22,Default,,0000,0000,0000,,das halt zum ersten Mal so richtig\Naufgefallen. Das war jetzt vor ein paar Dialogue: 0,0:10:22.22,0:10:25.94,Default,,0000,0000,0000,,Jahren. Ich weiß gar nicht, wann das genau\Nwar. Es gab so einen ähnlichen Fall Dialogue: 0,0:10:25.94,0:10:30.04,Default,,0000,0000,0000,,nochmal: mit vim, dem Editor, den ich\Nimmer benutze. Da kann man nämlich so Dialogue: 0,0:10:30.04,0:10:33.88,Default,,0000,0000,0000,,Sachen machen wie in einem Kommentar in\Nder zu editierenden Datei in den ersten Dialogue: 0,0:10:33.88,0:10:37.03,Default,,0000,0000,0000,,drei Zeilen oder in den letzten drei\NZeilen kann man so ein paar Konfig- Dialogue: 0,0:10:37.03,0:10:41.87,Default,,0000,0000,0000,,Settings ändern. Das ist gedacht, um zu\Nsagen: "Ich benutz' hier in Tabstop von 4 oder Dialogue: 0,0:10:41.87,0:10:46.16,Default,,0000,0000,0000,,so." Aber der Parser dafür hat ein\NSicherheitsproblem gehabt, und damit war Dialogue: 0,0:10:46.16,0:10:50.51,Default,,0000,0000,0000,,es dann möglich, sozusagen eine Datei zu\Nerzeugen, die ein Programm ausgeführt hat, Dialogue: 0,0:10:50.51,0:10:55.56,Default,,0000,0000,0000,,wenn sie in vim geöffnet wurde, was\Nnatürlich nicht gewollt war. Aber es ist Dialogue: 0,0:10:55.56,0:10:59.85,Default,,0000,0000,0000,,dasselbe Problem in grün. Und ich glaube,\Ndas Problem kann man ein bisschen Dialogue: 0,0:10:59.85,0:11:03.14,Default,,0000,0000,0000,,verallgemeinern, nachdem ich gerade gegen\NVerallgemeinern gewettert habe, aber in Dialogue: 0,0:11:03.14,0:11:06.54,Default,,0000,0000,0000,,der Betrachtung ist Verallgemeinern ja\Ngut, in der Software eher schlecht. Ich Dialogue: 0,0:11:06.54,0:11:10.78,Default,,0000,0000,0000,,will das mal ein Beispiel illustrieren.\NNehmen wir an, wir haben eine CSV-Datei Dialogue: 0,0:11:10.78,0:11:16.19,Default,,0000,0000,0000,,mit irgendwie Trouble-Tickets. Feld 4 ist\Ndas, an dem wir jetzt Interesse haben. Dialogue: 0,0:11:16.19,0:11:21.51,Default,,0000,0000,0000,,Nehmen wir an, die sieht so aus. CSV halt.\NSo, und jetzt möchte ich da gern die Summe Dialogue: 0,0:11:21.51,0:11:26.28,Default,,0000,0000,0000,,der vierten Felder haben. Dann mache ich\Nals erstes mal cut, wir sind halt unter Dialogue: 0,0:11:26.28,0:11:31.01,Default,,0000,0000,0000,,Unix. Der filtert es hier raus, die\Nerste Zeile muss noch weg, also mach ich Dialogue: 0,0:11:31.01,0:11:34.19,Default,,0000,0000,0000,,hier noch einen tail. Dann ist die\Nerste Zeile weg, jetzt muss ich noch eine Dialogue: 0,0:11:34.19,0:11:37.75,Default,,0000,0000,0000,,Summe bilden. Da gibt es auch ein Programm\Nfür: paste. Wie man das halt macht unter Dialogue: 0,0:11:37.75,0:11:43.44,Default,,0000,0000,0000,,Unix. Und dann muss ich das ausrechnen.\NSo! Aber was ist denn, wenn da jetzt nicht Dialogue: 0,0:11:43.44,0:11:49.38,Default,,0000,0000,0000,,1 stand, sondern fred? Dann können wir\Nfeststellen: cut hat damit kein Problem, Dialogue: 0,0:11:49.38,0:11:54.44,Default,,0000,0000,0000,,tail hat damit kein Problem, paste hat\Ndamit kein Problem, aber bc fällt auf die Dialogue: 0,0:11:54.44,0:12:01.97,Default,,0000,0000,0000,,Fresse. So, das heißt, schlimmer noch: bc\Nist programmierbar. Da könnte jetzt zum Dialogue: 0,0:12:01.97,0:12:05.21,Default,,0000,0000,0000,,Beispiel die Ackermann-Funktion stehen und\Ndann steht der Rechner für eine Stunde, Dialogue: 0,0:12:05.21,0:12:09.77,Default,,0000,0000,0000,,während er versucht, irgendeine Rekursion\Naufzulösen. Und ich glaube, das ist Dialogue: 0,0:12:09.77,0:12:14.82,Default,,0000,0000,0000,,sinnvoll, hier ein Konzept einzuführen und\Nzu sagen: cut, tail und paste sind Dialogue: 0,0:12:14.82,0:12:18.82,Default,,0000,0000,0000,,harmlos, bc nicht. Das war so einer der\NGedanken, wo ich dachte: "Okay, da kann Dialogue: 0,0:12:18.82,0:12:22.15,Default,,0000,0000,0000,,man eigentlich mal ein Vortrag drüber\Nmachen." Allerdings ist es nicht Dialogue: 0,0:12:22.15,0:12:27.24,Default,,0000,0000,0000,,hinreichend. Es gibt verschiedene Arten\Nvon Harmlosigkeit. Aber ich glaube, die Dialogue: 0,0:12:27.24,0:12:31.40,Default,,0000,0000,0000,,Unterscheidung ist schon mal hilfreich.\NJa, sagen wir mal, versuchen wir es einmal Dialogue: 0,0:12:31.40,0:12:35.20,Default,,0000,0000,0000,,zu formulieren: Software ist harmlos, wenn\Nunerwartete Eingaben kein unerwartetes Dialogue: 0,0:12:35.20,0:12:38.87,Default,,0000,0000,0000,,Verhalten oder unerwartete Arten von\NAusgabe erzeugen. Zum Beispiel, so eine Dialogue: 0,0:12:38.87,0:12:43.17,Default,,0000,0000,0000,,SHA-Checksumme ist immer harmlos:\NEgal, was ich dafür Daten rein tue, die Dialogue: 0,0:12:43.17,0:12:47.74,Default,,0000,0000,0000,,Ausgabe hat ein bekanntes Format.\NOder word count (wc) ist auch so ein Ding. Dialogue: 0,0:12:47.74,0:12:52.10,Default,,0000,0000,0000,,Jetzt könnte man sagen: "Okay, nimm\Ndoch noch awk!" Und in awk habe ich zum Dialogue: 0,0:12:52.10,0:12:55.96,Default,,0000,0000,0000,,Beispiel kein Problem, wenn da jetzt fred\Nsteht statt 4 und der Interpreter Dialogue: 0,0:12:55.96,0:13:00.54,Default,,0000,0000,0000,,interpretiert ja auch nicht Funktionen.\NDas sieht besser aus, aber es ist auch Dialogue: 0,0:13:00.54,0:13:05.40,Default,,0000,0000,0000,,harmlos, und es stellt sich heraus: awk\Nist eine andere Art von nicht harmlos, Dialogue: 0,0:13:05.40,0:13:09.38,Default,,0000,0000,0000,,denn man kann im Code im Dateisystem\Nrumschreiben. Da muss ich jetzt nicht auf Dialogue: 0,0:13:09.38,0:13:13.55,Default,,0000,0000,0000,,die Eingabe achten. Aber ich muss auf die\Nandere Eingabe achten, nämlich den Code, Dialogue: 0,0:13:13.55,0:13:17.28,Default,,0000,0000,0000,,den ich auf der Kommandozeile übergebe.\NUnd da kann man eigentlich auch sagen, Dialogue: 0,0:13:17.28,0:13:21.81,Default,,0000,0000,0000,,dass man die Unterscheidung haben möchte.\NDas ist in der Industrie übrigens ein Dialogue: 0,0:13:21.81,0:13:25.86,Default,,0000,0000,0000,,großes Problem: Die Spieleindustrie ist\Ndazu übergegangen, in großem Stil Dialogue: 0,0:13:25.86,0:13:30.86,Default,,0000,0000,0000,,irgendwelche Interpreter in ihre Spiele\Neinzubauen, um die Business-Logik, also Dialogue: 0,0:13:30.86,0:13:36.82,Default,,0000,0000,0000,,nicht die AI, sondern so kleine Skripte in\Neiner Skriptsprache machen zu können und Dialogue: 0,0:13:36.82,0:13:41.13,Default,,0000,0000,0000,,einer der beliebtesten Skript-Interpreter\Ndafür ist Lua. Und Lua wird vor allem Dialogue: 0,0:13:41.13,0:13:45.09,Default,,0000,0000,0000,,deswegen genommen, weil der halt nix kann,\Nwas man nicht freischaltet. Also der kann Dialogue: 0,0:13:45.09,0:13:48.93,Default,,0000,0000,0000,,nicht Datei öffnen, kann keine Sockets\Naufmachen. Das kann man alles nachreichen, Dialogue: 0,0:13:48.93,0:13:53.19,Default,,0000,0000,0000,,und dann hat man natürlich wieder ein\NProblem. Aber das ist ein reales Problem. Dialogue: 0,0:13:53.19,0:13:57.15,Default,,0000,0000,0000,,Viele Open-Source-Leute denken da nicht\Ndrüber nach, weil sie sich denken: "Ach, Dialogue: 0,0:13:57.15,0:14:00.36,Default,,0000,0000,0000,,ich liefer das aus und der Rest ist ja\Nnicht mehr mein Problem." Aber ich finde, Dialogue: 0,0:14:00.36,0:14:03.34,Default,,0000,0000,0000,,da müssen wir mal generell drüber\Nnachdenken, und zwar am besten vor dem Dialogue: 0,0:14:03.34,0:14:06.77,Default,,0000,0000,0000,,Ausliefern, am besten schon beim\NProgrammieren. Also das ist eine andere Dialogue: 0,0:14:06.77,0:14:11.23,Default,,0000,0000,0000,,Art von Harmlosigkeit. Vorher war die\NHarmlosigkeit: "Kann eine böse Eingabe böse Dialogue: 0,0:14:11.23,0:14:15.01,Default,,0000,0000,0000,,Ergebnisse erzielen?" Und jetzt ist: "Kann\Ndas Programm selbst böse Dinge machen?" Dialogue: 0,0:14:15.01,0:14:19.32,Default,,0000,0000,0000,,Und das ist eigentlich eine sehr moderne\NÜberlegung, weil wir heutzutage viel mit Dialogue: 0,0:14:19.32,0:14:23.87,Default,,0000,0000,0000,,Sandboxing arbeiten. Da geht es genau\Ndarum, zu verhindern, dass ein Programm Dialogue: 0,0:14:23.87,0:14:28.02,Default,,0000,0000,0000,,versehentlich oder absichtlich böse Dinge\Ntut. Und da gibt's wieder auch verschiedene Dialogue: 0,0:14:28.02,0:14:32.60,Default,,0000,0000,0000,,Sachen, die ein Programm anstellen kann.\Nbc konnte Rechenzeit verbraten. awk kann Dialogue: 0,0:14:32.60,0:14:37.10,Default,,0000,0000,0000,,im Dateisystem lesen und schreiben, und\Ndas geht natürlich weiter. Kommen wir Dialogue: 0,0:14:37.10,0:14:41.74,Default,,0000,0000,0000,,zurück zum GNU Manifesto: GNU awk ist eine\Nspezielle Version von awk und die kann Dialogue: 0,0:14:41.74,0:14:45.65,Default,,0000,0000,0000,,Sockets aufmachen, völlig ohne Not. Das\Nheißt, wenn wir einfach awk benutzen und Dialogue: 0,0:14:45.65,0:14:49.09,Default,,0000,0000,0000,,denken, ach awk kann im Dateisystem\Nschreiben, aber das hab ich read-only Dialogue: 0,0:14:49.09,0:14:53.46,Default,,0000,0000,0000,,gemountet, da passiert schon nichts. Dann\Nist aber GNU awk im Einsatz, ist es halt Dialogue: 0,0:14:53.46,0:14:57.80,Default,,0000,0000,0000,,doch wieder nicht harmlos. Bash kann\Nübrigens auch Sockets aufmachen! Ich weiß Dialogue: 0,0:14:57.80,0:15:02.79,Default,,0000,0000,0000,,nicht, wie viele Leute das wussten? Gut,\Ndie Sache geht natürlich noch weiter: Nach Dialogue: 0,0:15:02.79,0:15:06.45,Default,,0000,0000,0000,,awk kam Perl. Das ist noch viel schlimmer\Nund Perl kann eval(), das ist so das Dialogue: 0,0:15:06.45,0:15:11.42,Default,,0000,0000,0000,,schlimmste Übel, was man haben kann in einer\NProgrammiersprache aus meiner Sicht. Ein Dialogue: 0,0:15:11.42,0:15:15.98,Default,,0000,0000,0000,,bisschen näher am Endkunden kann man das\Nauch an Browsern betrachten. Also gucken Dialogue: 0,0:15:15.98,0:15:20.52,Default,,0000,0000,0000,,wir uns zum Beispiel mal Netscape an:\NNetscape hat auch mehrfach die Wahl gehabt Dialogue: 0,0:15:20.52,0:15:24.98,Default,,0000,0000,0000,,zwischen nützlich und harmlos und hat\Nimmer nützlich gewählt. Es ging dann los Dialogue: 0,0:15:24.98,0:15:29.44,Default,,0000,0000,0000,,mit den Plugins. Weiß nicht, wer sich hier\Nnoch an das Flash-Plugin erinnert, oder Dialogue: 0,0:15:29.44,0:15:33.76,Default,,0000,0000,0000,,vorher hatten wir alle den RealPlayer und\Ndas [Adobe] Acrobat-Plugin gab es auch Dialogue: 0,0:15:33.76,0:15:37.64,Default,,0000,0000,0000,,mal - und das war alles scheiße, weil\Ndiese Plugins Native Code waren: die Dialogue: 0,0:15:37.64,0:15:41.83,Default,,0000,0000,0000,,konnten alles tun, was das Betriebssystem\Nihnen erlaubt. Das heißt, das war zwar Dialogue: 0,0:15:41.83,0:15:45.64,Default,,0000,0000,0000,,sehr nützlich, aber es war eben auch sehr\Ngefährlich. Und das war eine bewusste Dialogue: 0,0:15:45.64,0:15:49.58,Default,,0000,0000,0000,,Entscheidung von den Browsern, das\Nzuzulassen. Das eigentliche Ziel von Dialogue: 0,0:15:49.58,0:15:54.20,Default,,0000,0000,0000,,diesem Vortrag ist, den Programmierern\Nunter euch so ein bisschen das Bewusstsein Dialogue: 0,0:15:54.20,0:15:58.93,Default,,0000,0000,0000,,dafür zu geben, dass man nicht einfach\Neine Plugin-Schnittstelle einbaut, die Dialogue: 0,0:15:58.93,0:16:04.56,Default,,0000,0000,0000,,alles kann. Die nächste Iteration war: Wir\Nmachen einfach alles in JavaScript. Das Dialogue: 0,0:16:04.56,0:16:09.56,Default,,0000,0000,0000,,war, sah erst mal besser aus, aber dieser\NJavaScript lief dann auch mit genügend Dialogue: 0,0:16:09.56,0:16:13.86,Default,,0000,0000,0000,,Rechten, um im System Mist anzustellen und\Nzumindest im Browser Mist anzustellen. Da Dialogue: 0,0:16:13.86,0:16:17.61,Default,,0000,0000,0000,,stellt sich heraus: Die Leute haben ihre\Nwichtigen Daten heutzutage im Browser, Dialogue: 0,0:16:17.61,0:16:21.06,Default,,0000,0000,0000,,weil sie Onlinebanking machen. Und das\Nreicht, um richtig doll Schaden Dialogue: 0,0:16:21.06,0:16:25.61,Default,,0000,0000,0000,,anzustellen. Da musste auch nachkorrigiert\Nwerden. Chrome limitiert jetzt noch weiter Dialogue: 0,0:16:25.61,0:16:29.38,Default,,0000,0000,0000,,aus Sicherheitsgründen, um den Adblocker\Nkaputtmachen zu können. Das ist eigentlich Dialogue: 0,0:16:29.38,0:16:32.60,Default,,0000,0000,0000,,immer dieselbe Falle, in die wir hier\Nreinlaufen. Ich weiß nicht, wer hier Dialogue: 0,0:16:32.60,0:16:37.28,Default,,0000,0000,0000,,Windows benutzt? Unter Windows gibt es ein\NTool, das von Mark Russinovich - der hat Dialogue: 0,0:16:37.28,0:16:41.30,Default,,0000,0000,0000,,sich inzwischen kaufen lassen von\NMicrosoft, ist jetzt also ein offizielles Dialogue: 0,0:16:41.30,0:16:44.68,Default,,0000,0000,0000,,Microsoft-Tool. Und die einzige Funktion\Nvon dem Tool ist, die verschiedenen Dialogue: 0,0:16:44.68,0:16:48.01,Default,,0000,0000,0000,,Plugins zu listen, die im System\Neingetragen sind. Und ich habe hier mal Dialogue: 0,0:16:48.01,0:16:52.28,Default,,0000,0000,0000,,ein relativ sauberes System genommen. Es\Ngeht jetzt nicht um das hier unten oder Dialogue: 0,0:16:52.28,0:16:56.55,Default,,0000,0000,0000,,die Größe von dem Scrollbalken, sondern\Neinfach, wie viele Tabs es oben gibt: Das Dialogue: 0,0:16:56.55,0:17:00.74,Default,,0000,0000,0000,,sind alles Möglichkeiten, wie sich Plugins\Nim System einnisten können, und das hat Dialogue: 0,0:17:00.74,0:17:04.44,Default,,0000,0000,0000,,einfach niemand mehr im Blick, weil\Neinfach immer in die falsche Richtung Dialogue: 0,0:17:04.44,0:17:08.80,Default,,0000,0000,0000,,entschieden wurde. Also, das ist, glaube\Nich, ein Kernproblem. Es gab noch eine Dialogue: 0,0:17:08.80,0:17:13.86,Default,,0000,0000,0000,,dritte Herleitung: Mein Security-Alltag\Nbesteht darin, dass sich Firmen gehe und Dialogue: 0,0:17:13.86,0:17:17.93,Default,,0000,0000,0000,,zeigen mir ihren Quellcode und dann suche\Nich nach Bugs. Und dann sage ich denen, Dialogue: 0,0:17:17.93,0:17:21.92,Default,,0000,0000,0000,,welche Bugs ich gefunden habe. Und da\Ngibts dann halt gelegentlich so Fälle, wo Dialogue: 0,0:17:21.92,0:17:25.81,Default,,0000,0000,0000,,man mitkriegt: Da gibt's ganz viele Bugs,\Nja gar nicht mal nur die, die ich finde, Dialogue: 0,0:17:25.81,0:17:30.04,Default,,0000,0000,0000,,sondern die haben schon eine eigene\NDatenbank, einen Bugtracker, und da sind Dialogue: 0,0:17:30.04,0:17:34.96,Default,,0000,0000,0000,,schon siebenstellig Bugs drin. Ja, sowas\Nkommt vor. Und weil das so ein Problem Dialogue: 0,0:17:34.96,0:17:39.36,Default,,0000,0000,0000,,ist, dass wir so viele Bugs haben, gibt's\Njetzt Gegenstrategien von den Entwicklern, Dialogue: 0,0:17:39.36,0:17:42.75,Default,,0000,0000,0000,,die dann anfangen zu sagen: "Okay, wenn\Nder Bug nicht wichtig ist, dann kann ich Dialogue: 0,0:17:42.75,0:17:46.83,Default,,0000,0000,0000,,ihn ja später fixen." Und das heißt in der\NRealität: nie. Der liegt dann halt rum. Dialogue: 0,0:17:46.83,0:17:52.13,Default,,0000,0000,0000,,Ich versuche seit einer Weile, den Begriff\NBug-Welle dafür zu etablieren, die man Dialogue: 0,0:17:52.13,0:17:58.09,Default,,0000,0000,0000,,vor sich herschiebt als großer Dampfer.\NAber Bugtracker sind in der Realität da Dialogue: 0,0:17:58.09,0:18:03.81,Default,,0000,0000,0000,,draußen häufig riesige Daten-Endlager: Ich\Nhabe zum Beispiel neulich einen Bug Dialogue: 0,0:18:03.81,0:18:08.15,Default,,0000,0000,0000,,bei Firefox gemeldet und habe die ID\N1.590.000 gekriegt. Das ist ja schon Dialogue: 0,0:18:08.15,0:18:11.88,Default,,0000,0000,0000,,ein schlechtes Zeichen, eigentlich. Aber\Nes ist ein gutes Zeichen, weil der Dialogue: 0,0:18:11.88,0:18:16.01,Default,,0000,0000,0000,,Bugtracker offen ist. Bei Microsoft kann\Nman das gar nicht sehen, wie viel Bugs die Dialogue: 0,0:18:16.01,0:18:19.50,Default,,0000,0000,0000,,haben. Das ist jetzt hier nur als\NIllustration gemeint. Mozilla ist nicht Dialogue: 0,0:18:19.50,0:18:23.17,Default,,0000,0000,0000,,besonders scheiße. Mozilla hat nur einen\Noffenen Tracker, an dem ich das schön Dialogue: 0,0:18:23.17,0:18:27.22,Default,,0000,0000,0000,,etablieren kann. Was ich jetzt noch zeigen\Nwollte - ich hab noch mal geguckt: "Was ist Dialogue: 0,0:18:27.22,0:18:31.02,Default,,0000,0000,0000,,denn der erste Bug, den ich da gefiled\Nhabe?" Der hatte noch eine sechsstellige Dialogue: 0,0:18:31.02,0:18:37.95,Default,,0000,0000,0000,,ID. Das war 2003. Wenn man sich den\NVerlauf anguckt, der Bugnummern, dann Dialogue: 0,0:18:37.95,0:18:43.05,Default,,0000,0000,0000,,stellt man fest: Das wächst exponentiell.\NUnd es ist nicht so, dass die Bugs dann Dialogue: 0,0:18:43.05,0:18:48.43,Default,,0000,0000,0000,,irgendwie irgendwann weggehen von\Nirgendwann. Ich habe zwei große Ereignisse Dialogue: 0,0:18:48.43,0:18:52.24,Default,,0000,0000,0000,,beobachtet, bei denen Bugs geschlossen\Nwerden: Das ist, wenn es ein neues Release Dialogue: 0,0:18:52.24,0:18:55.85,Default,,0000,0000,0000,,gibt, und da schmeißt man die alte\NJavaScript-Engine raus und macht eine neue Dialogue: 0,0:18:55.85,0:18:59.70,Default,,0000,0000,0000,,rein. Dann schließt man alle Bugs von der\Nalten Engine. Das sieht dann so aus, als Dialogue: 0,0:18:59.70,0:19:03.57,Default,,0000,0000,0000,,wenn man was geschafft hat. Und der\Nandere Weg ist dieser hier: Ich weiß nicht, Dialogue: 0,0:19:03.57,0:19:06.85,Default,,0000,0000,0000,,ob man das hinten lesen kann? Mozilla hat\Neinfach einen Bug von mir geschlossen. Da Dialogue: 0,0:19:06.85,0:19:10.03,Default,,0000,0000,0000,,steht drin: "This bug has been\Nautomatically resolved after a period of Dialogue: 0,0:19:10.03,0:19:14.01,Default,,0000,0000,0000,,inactivity". Die war jetzt\Nnicht von mir, die Inactivity. Ich hab den Bug gefiled, Dialogue: 0,0:19:14.01,0:19:17.75,Default,,0000,0000,0000,,und bei Mozilla hat sich keiner drum\Ngekümmert. Und dann haben die den halt Dialogue: 0,0:19:17.75,0:19:21.36,Default,,0000,0000,0000,,automatisch geschlossen, weil die\NStatistik so schlecht aussah. Das ist ein Dialogue: 0,0:19:21.36,0:19:24.38,Default,,0000,0000,0000,,Riesenproblem, nicht nur bei Mozilla. Wie\Ngesagt, das ist hier nur der Dialogue: 0,0:19:24.38,0:19:28.26,Default,,0000,0000,0000,,Blitzableiter, den ich zeigen kann, weil\Nes alles öffentlich ist bei denen. Aber Dialogue: 0,0:19:28.26,0:19:32.35,Default,,0000,0000,0000,,das führt zu so einer Kaskade aus\NVerhalten und Gegenverhalten. Zum Beispiel Dialogue: 0,0:19:32.35,0:19:36.09,Default,,0000,0000,0000,,sieht man dann: unwichtige Bugs werden\Nhalt gar nicht gefixt. Und dann schreiben Dialogue: 0,0:19:36.09,0:19:39.46,Default,,0000,0000,0000,,die Leute halt "wichtig" an ihre Bugs,\Nwenn sie wollen, dass die gefixt werden. Dialogue: 0,0:19:39.46,0:19:42.78,Default,,0000,0000,0000,,Und da haben die Leute gesagt: "Okay,\Ndie wichtigen Bugs bleiben dann Dialogue: 0,0:19:42.78,0:19:46.85,Default,,0000,0000,0000,,auch liegen, weil da gibt's zu viele\Nvon." Und dann schreiben die Leute Dialogue: 0,0:19:46.85,0:19:51.47,Default,,0000,0000,0000,,"Security" an ihre Bugs ran, und dann\Nhaben wir jetzt eine Welle von Security- Dialogue: 0,0:19:51.47,0:19:56.01,Default,,0000,0000,0000,,Bugs, und da wird dann verhandelt: "Ist das\Ndenn wirklich ein Problem?" Und da kommen Dialogue: 0,0:19:56.01,0:20:01.23,Default,,0000,0000,0000,,dann so Ausreden, wie: "Ist ja nur ein\NCrash." Und der Punkt daran ist, dass es Dialogue: 0,0:20:01.23,0:20:07.59,Default,,0000,0000,0000,,hier eine unheilige Allianz gibt mit einem\Nanderen Trend, nämlich, dass Firmen Dialogue: 0,0:20:07.59,0:20:11.48,Default,,0000,0000,0000,,einfach sehen: sie haben so viele Bugs\Noffen, dass es gar nicht das Ziel ist, sie Dialogue: 0,0:20:11.48,0:20:15.30,Default,,0000,0000,0000,,alle loszuwerden. Es gibt einfach zu\Nviele, das ist unrealistisch. Stattdessen Dialogue: 0,0:20:15.30,0:20:19.60,Default,,0000,0000,0000,,führt man Metriken ein, wie\Ndass man Fuzzing macht. Fuzzing ist Dialogue: 0,0:20:19.60,0:20:23.90,Default,,0000,0000,0000,,eigentlich keine doofe Idee, aber es ist\Neben nicht: "alle Bugs finden", sondern es Dialogue: 0,0:20:23.90,0:20:28.09,Default,,0000,0000,0000,,ist nur der erste Schritt auf einer langen\NStraße. Aber es ist halt eine schöne Dialogue: 0,0:20:28.09,0:20:33.01,Default,,0000,0000,0000,,Metrik, die da rausfällt. Wir haben so und\Nso viel Fuzz-Testcases gemacht, und jetzt... Dialogue: 0,0:20:33.01,0:20:37.40,Default,,0000,0000,0000,,Sind wir jetzt besser oder schlechter als\Nvorher? Ist alles schwer zu sagen. Dialogue: 0,0:20:37.40,0:20:41.77,Default,,0000,0000,0000,,Dann gibt es Bug Bounties, was ich\Npersönlich für Bullshit halte. Das macht Dialogue: 0,0:20:41.77,0:20:46.98,Default,,0000,0000,0000,,man, damit die PR-Abteilungen zeigen kann:\N"Guck mal, so viel wert sind Bugs bei uns, Dialogue: 0,0:20:46.98,0:20:51.64,Default,,0000,0000,0000,,weil wir so wenig Bugs haben." Das ist die\NIdee. Und der Rest der Industrie hat Dialogue: 0,0:20:51.64,0:20:55.37,Default,,0000,0000,0000,,einfach Mitigations gemacht. Da haben Sie\Ndann gesagt: "Okay, wir schließen die Bugs Dialogue: 0,0:20:55.37,0:20:58.37,Default,,0000,0000,0000,,nicht mehr, wir machen das Exploiten\Nschwieriger." Und das funktioniert. Ich Dialogue: 0,0:20:58.37,0:21:01.75,Default,,0000,0000,0000,,bin da immer dagegen gewesen. Ich musste\Nalso jetzt meinen Hut fressen, sozusagen. Dialogue: 0,0:21:01.75,0:21:05.93,Default,,0000,0000,0000,,Das funktioniert. Aber es hat halt\NNebeneffekte. Ich weiß nicht, ob ich Zeit Dialogue: 0,0:21:05.93,0:21:09.78,Default,,0000,0000,0000,,habe für Anekdoten. Ich bin nämlich\Nzeitlich sehr knapp dran. Aber ich hab mal Dialogue: 0,0:21:09.78,0:21:13.97,Default,,0000,0000,0000,,den Typ getroffen, der die Internet-\NExplorer-Bugs verwaltet, die reinkommen, Dialogue: 0,0:21:13.97,0:21:18.44,Default,,0000,0000,0000,,und ich habe den getroffen, weil ich 50\NBugs gefiled habe. Und er hat gesagt "35 Dialogue: 0,0:21:18.44,0:21:20.34,Default,,0000,0000,0000,,kenne ich schon".\N{\i1}Publikum lacht{\i0} Dialogue: 0,0:21:20.34,0:21:23.40,Default,,0000,0000,0000,,Und da hab ich gesagt: "Wie jetzt?" Der Dialogue: 0,0:21:23.40,0:21:28.69,Default,,0000,0000,0000,,Typ sah aus wie Gollum in so einer Cave.\NDer war irgendwie 30 und sah aus wie Ende 60. Dialogue: 0,0:21:28.69,0:21:33.66,Default,,0000,0000,0000,,{\i1}Gelächter{\i0} Und der meinte: "Es kommen so viele\NBugs hier rein, wir kommen gar nicht dazu, Dialogue: 0,0:21:33.66,0:21:37.34,Default,,0000,0000,0000,,irgendwelche zu schließen, wir verwalten\Ndie nur noch." Das war der Stand Dialogue: 0,0:21:37.34,0:21:41.93,Default,,0000,0000,0000,,damals. Das ist inzwischen besser\Ngeworden. Also Microsoft. Und wie gesagt, Dialogue: 0,0:21:41.93,0:21:47.85,Default,,0000,0000,0000,,das sind hier Beispiele, das ist in\Nanderen Firmen ähnlich. Man verwaltet die Dialogue: 0,0:21:47.85,0:21:51.78,Default,,0000,0000,0000,,Bugs, und man schließt sie nicht mehr, und\Nmemgc ist eine Sache, da habe ich lange Dialogue: 0,0:21:51.78,0:21:55.29,Default,,0000,0000,0000,,Jahre gar nicht drüber reden dürfen. Aber\Ninzwischen haben sie das selbst Dialogue: 0,0:21:55.29,0:21:58.91,Default,,0000,0000,0000,,veröffentlicht. Deswegen darf ich das\Njetzt doch erzählen. Da haben sie halt Dialogue: 0,0:21:58.91,0:22:03.16,Default,,0000,0000,0000,,festgestellt Wir haben lauter Memory\NCorruption Bugs, weil wir immer die Sachen Dialogue: 0,0:22:03.16,0:22:07.91,Default,,0000,0000,0000,,vom Heap free()n und dann aber noch\Nbenutzen. Da haben Sie jetzt einen Hack Dialogue: 0,0:22:07.91,0:22:12.54,Default,,0000,0000,0000,,gebaut, der die Sachen dann halt nicht\Nfree()t, sondern in eine Liste tut. Und Dialogue: 0,0:22:12.54,0:22:17.25,Default,,0000,0000,0000,,dann läuft ja über den Stack und guckt\Nnach Pointern, die in die Liste zeigen und Dialogue: 0,0:22:17.25,0:22:21.69,Default,,0000,0000,0000,,gibt die dann nicht frei. Das ist ein\Nfurchtbarer Hack. Wär' mir ja zu peinlich Dialogue: 0,0:22:21.69,0:22:26.24,Default,,0000,0000,0000,,gewesen, das irgendwo zu erwähnen. Aber\NMicrosoft macht jetzt PR damit, wie geil Dialogue: 0,0:22:26.24,0:22:30.21,Default,,0000,0000,0000,,memgc ist. Und die Chrome-Leute haben\Nsich das angesehen haben und gesagt: Dialogue: 0,0:22:30.21,0:22:33.100,Default,,0000,0000,0000,,"Boah, das ist ja geil."\N{\i1}Publikum lacht{\i0} Dialogue: 0,0:22:33.100,0:22:36.70,Default,,0000,0000,0000,,Das ist der Stand, wie die Industrie Dialogue: 0,0:22:36.70,0:22:41.01,Default,,0000,0000,0000,,funktioniert. Das Problem ist jetzt aber,\Ndass Bugs nur noch mit Exploit als Dialogue: 0,0:22:41.01,0:22:45.46,Default,,0000,0000,0000,,Security-Problem anerkannt werden. Also\Ndas ist nicht branchenübergreifend, aber Dialogue: 0,0:22:45.46,0:22:49.21,Default,,0000,0000,0000,,es ist bei vielen inzwischen so: Wenn man\Nkeinen Exploit liefert, wird es nicht Dialogue: 0,0:22:49.21,0:22:52.45,Default,,0000,0000,0000,,anerkannt. Aber wir haben ja vorhin\Ngesehen, dass überhaupt nur noch Dialogue: 0,0:22:52.45,0:22:56.31,Default,,0000,0000,0000,,anerkannte Security-Bugs gefixt werden.\NDas heißt, Bugs liegen einfach herum, weil Dialogue: 0,0:22:56.31,0:23:00.53,Default,,0000,0000,0000,,der Nachweis nicht erbracht werden konnte.\NUnd wenn das Ausnutzen von einem Bug durch Dialogue: 0,0:23:00.53,0:23:04.25,Default,,0000,0000,0000,,die Mitigations schwieriger wird, heißt\Ndas eben, dass immer mehr tatsächliche Dialogue: 0,0:23:04.25,0:23:07.80,Default,,0000,0000,0000,,Sicherheitsprobleme rumliegen, weil\Nniemand Bock hat, den Nachweis zu Dialogue: 0,0:23:07.80,0:23:12.32,Default,,0000,0000,0000,,erbringen, dass es ein Problem war. Das\Nheißt nicht, dass keiner von den Bugs Dialogue: 0,0:23:12.32,0:23:16.24,Default,,0000,0000,0000,,jemals geschlossen wird. Denn es stellt\Nsich heraus: Die Entwickler haben so etwas Dialogue: 0,0:23:16.24,0:23:20.48,Default,,0000,0000,0000,,wie einen Anspruch an ihren Code. Keiner\Nmöchte der Typ sein, der die Brücke in Dialogue: 0,0:23:20.48,0:23:24.30,Default,,0000,0000,0000,,Genua gebaut hat. Das heißt, die Leute\Nlaufen schon rum und schließen Bugs. Aber Dialogue: 0,0:23:24.30,0:23:27.68,Default,,0000,0000,0000,,sie möchten halt nicht gezwungen werden\Ndazu. Und sie möchten auch nicht Dialogue: 0,0:23:27.68,0:23:31.46,Default,,0000,0000,0000,,anerkennen, dass es ein Problem war. Und\Ndas hat so eine Kaskade an Problemen in Dialogue: 0,0:23:31.46,0:23:36.41,Default,,0000,0000,0000,,der Realität. Aber ich schließe daraus:\NErst mal reaktiv auf das Problem mit den Dialogue: 0,0:23:36.41,0:23:41.17,Default,,0000,0000,0000,,Bugs und der Softwarequalität zuzugehen,\Nhilft eigentlich nicht. Ich sage das schon Dialogue: 0,0:23:41.17,0:23:45.02,Default,,0000,0000,0000,,länger über Viren und Würmer und die\NAntiviren, die ich immer als Schlangenöl Dialogue: 0,0:23:45.02,0:23:48.80,Default,,0000,0000,0000,,bezeichne. Ich glaube, dass das bei Bugs\Nauch so ist: Viel zu viel Software wird Dialogue: 0,0:23:48.80,0:23:53.21,Default,,0000,0000,0000,,einfach entwickelt, und man denkt sich:\N"Ach naja, dann können wir das mal ausliefern, Dialogue: 0,0:23:53.21,0:23:57.58,Default,,0000,0000,0000,,und der Kunde testet das dann. Und dann\Nmelden die schon die Bugs und die fixen Dialogue: 0,0:23:57.58,0:24:03.98,Default,,0000,0000,0000,,wir dann halt." Es gibt so inzwischen das\Ngeflügelte Wort: Man liefert aus, wenn der Dialogue: 0,0:24:03.98,0:24:10.11,Default,,0000,0000,0000,,Updater funktioniert. Und da muss man ja\Nirgendwie mit umgehen als Industrie. Ich Dialogue: 0,0:24:10.11,0:24:13.62,Default,,0000,0000,0000,,versuche hier als Zielgruppe jetzt die\NEntwickler. Was machen wir denn jetzt? Das Dialogue: 0,0:24:13.62,0:24:17.25,Default,,0000,0000,0000,,ist jetzt so die Frage. Und da gibt es\Nnatürlich verschiedene Ideen: Der FDP- Dialogue: 0,0:24:17.25,0:24:21.13,Default,,0000,0000,0000,,Ansatz ist meines Erachtens gescheitert.\NDer Markt hat ja gar nichts geregelt. Die Dialogue: 0,0:24:21.13,0:24:24.96,Default,,0000,0000,0000,,Leute kaufen immer noch alle irgendwie\NWindows und macOS. Das funktioniert, Dialogue: 0,0:24:24.96,0:24:28.86,Default,,0000,0000,0000,,glaube ich, nicht. Dann kann man\Nversuchen, an die Moral zu appellieren. Dialogue: 0,0:24:28.86,0:24:33.04,Default,,0000,0000,0000,,Freiwillige Selbstkontrolle? Das\Nfunktioniert auch nicht aus meiner Sicht. Dialogue: 0,0:24:33.04,0:24:37.88,Default,,0000,0000,0000,,Dann gibt es den BSI-Ansatz: "Wir tun einfach\Nein paar Lagen Schlangenöl drüber..." Das Dialogue: 0,0:24:37.88,0:24:42.82,Default,,0000,0000,0000,,funktioniert leider auch nicht. Und es\Ngibt den Twitter-Ansatz: Ausgrenzung Dialogue: 0,0:24:42.82,0:24:48.10,Default,,0000,0000,0000,,und mit Dingen drohen. Heugabelmobs. Das\Nhat in meiner Beobachtung eher zu Dialogue: 0,0:24:48.10,0:24:52.50,Default,,0000,0000,0000,,Abandonware geführt, weil die Leute halt\Nweggerannt sind, und gesagt haben: Dialogue: 0,0:24:52.50,0:24:56.21,Default,,0000,0000,0000,,"Das ist mir doch egal. Das ist nicht mehr\Nmeine Software." Es gibt auch einen Dialogue: 0,0:24:56.21,0:24:59.87,Default,,0000,0000,0000,,Hybridansatz, den die katholische Kirche\Nseit vielen Jahren erfolgreich fährt. Dialogue: 0,0:24:59.87,0:25:03.72,Default,,0000,0000,0000,,Vielleicht ist das die Lösung. Dass man\Nsagt: "Nicht der Markt, aber Sankt Peter Dialogue: 0,0:25:03.72,0:25:08.63,Default,,0000,0000,0000,,regelt das." Und an Moral appellieren\Nfunktioniert so ein bisschen. Das müssen Dialogue: 0,0:25:08.63,0:25:13.26,Default,,0000,0000,0000,,wir vielleicht ausbauen. Und dann dachte\Nich mir: "Was machen wir jetzt konkret?" Ich Dialogue: 0,0:25:13.26,0:25:16.93,Default,,0000,0000,0000,,habe als erstes gedacht: "Wir müssen\Nvielleicht gucken, ob wir die explorative Dialogue: 0,0:25:16.93,0:25:19.91,Default,,0000,0000,0000,,Softwareentwicklung von der\Nzielorientierten Softwareentwicklung Dialogue: 0,0:25:19.91,0:25:23.92,Default,,0000,0000,0000,,trennen." Dass wir sagen, es ist gut und\Nrichtig, dass die Leute explorativ lernen. Dialogue: 0,0:25:23.92,0:25:27.95,Default,,0000,0000,0000,,Aber das ist dann nicht das Produkt, was\Ndu shippst. Da müssen wir irgendwie Dialogue: 0,0:25:27.95,0:25:31.97,Default,,0000,0000,0000,,hinkommen. Und ich appelliere seit Jahren\Nan die Firmen und sage: "Gebt den Leuten Dialogue: 0,0:25:31.97,0:25:35.44,Default,,0000,0000,0000,,Zeit, dass sie ein bisschen rumspielen und\NSachen lernen können!" Denn sonst lernen Dialogue: 0,0:25:35.44,0:25:39.42,Default,,0000,0000,0000,,sie das während der Produktentwicklung und\Ndann wird das Produkt halt scheiße. Aber Dialogue: 0,0:25:39.42,0:25:44.23,Default,,0000,0000,0000,,da kann ich so lange reden, bis ich blau\Nanlaufe. Der Effekt ist bisher nicht Dialogue: 0,0:25:44.23,0:25:48.83,Default,,0000,0000,0000,,vorzeigbar. Ich finde, man kann das gut\Nauf den Punkt bringen, wenn man sagt: Dialogue: 0,0:25:48.83,0:25:52.58,Default,,0000,0000,0000,,"Sei innovativ damit, was du tust, und\Nnicht, wie du es tust." Eine Firma soll ja Dialogue: 0,0:25:52.58,0:25:57.26,Default,,0000,0000,0000,,innovativ sein, soll Dinge probieren, neue\NProdukte machen, aber dann nicht Dialogue: 0,0:25:57.26,0:26:02.80,Default,,0000,0000,0000,,irgendeine Experimental-Datenbank-Tech\Nanwenden, die dann irgendwie mit den Daten Dialogue: 0,0:26:02.80,0:26:08.34,Default,,0000,0000,0000,,verloren geht, weil - war noch nicht\Nfertig. Ich glaube, es gibt da nicht nur Dialogue: 0,0:26:08.34,0:26:13.34,Default,,0000,0000,0000,,eine Ursache, sondern es gibt mehrere\NKomponenten und die muss man auch getrennt Dialogue: 0,0:26:13.34,0:26:16.68,Default,,0000,0000,0000,,betrachten. Die erste ist Unwissenheit.\N"Ich weiß einfach nicht, dass der Code Dialogue: 0,0:26:16.68,0:26:19.71,Default,,0000,0000,0000,,scheiße war, den ich da importiert habe."\NOder "Ich wusste nicht, wie man es besser Dialogue: 0,0:26:19.71,0:26:23.22,Default,,0000,0000,0000,,macht, deswegen habe ich es halt nicht gut\Ngemacht." Und dann gibt's, was ich mal Dialogue: 0,0:26:23.22,0:26:26.84,Default,,0000,0000,0000,,absichtliche Unwissenheit nenne: "Wir\Nhaben keine guten Leute gefunden." Das Dialogue: 0,0:26:26.84,0:26:30.90,Default,,0000,0000,0000,,halte ich für eine Ausrede. Wer möchte und\Nwer gut zahlt, findet auch gute Leute. Dialogue: 0,0:26:30.90,0:26:34.76,Default,,0000,0000,0000,,Solange das Projekt irgendwie so ein\Nbisschen was an sich hat, was man Dialogue: 0,0:26:34.76,0:26:38.62,Default,,0000,0000,0000,,vielleicht mal ausprobieren möchte. Das\Nhalte ich für eine Ausrede. Ich glaube, Dialogue: 0,0:26:38.62,0:26:42.10,Default,,0000,0000,0000,,das sagen Leute, die sagen: "Ach, es ging\Nhalt nicht anders, wir haben schlechte Dialogue: 0,0:26:42.10,0:26:46.02,Default,,0000,0000,0000,,Leute. Dann wird das Produkt halt nicht so\Ngut. Es macht ja nix. Also war nicht meine Dialogue: 0,0:26:46.02,0:26:49.07,Default,,0000,0000,0000,,Schuld." Halte ich für eine\NSchutzbehauptung. Und dann gibt es Dialogue: 0,0:26:49.07,0:26:53.42,Default,,0000,0000,0000,,natürlich Inkompetenz. Also so richtig.\N"Ach, das ging gar nicht anders." - ich habe Dialogue: 0,0:26:53.42,0:26:57.40,Default,,0000,0000,0000,,neulich so einen Kunden gehabt. Das\Nsieht häufig nicht aus wie Ausreden, Dialogue: 0,0:26:57.40,0:27:01.08,Default,,0000,0000,0000,,sondern wie Best Practices. Aber ich halte\Nes für Ausreden. Ich habe neulich so einen Dialogue: 0,0:27:01.08,0:27:03.52,Default,,0000,0000,0000,,Kunden gehabt, die meinen jetzt: "Wir\Nmachen jetzt eine Plattform für Dialogue: 0,0:27:03.52,0:27:06.25,Default,,0000,0000,0000,,Energiehandel", also kritische\NInfrastruktur, würde man eigentlich sagen. Dialogue: 0,0:27:06.25,0:27:09.80,Default,,0000,0000,0000,,Die haben gesagt: "Wir machen das in der\NCloud, weil selber hosten können wir gar nicht." Dialogue: 0,0:27:09.80,0:27:13.00,Default,,0000,0000,0000,,- "Ja, warum denn nicht?"\N- "Das ist so teuer." Dialogue: 0,0:27:13.90,0:27:17.25,Default,,0000,0000,0000,,{\i1}Publikum lacht{\i0} Dialogue: 0,0:27:17.25,0:27:22.28,Default,,0000,0000,0000,,Verstehe ich nicht. Ich glaube, wir haben\Nda so eine Kaskade aus Ausreden, die vor Dialogue: 0,0:27:22.28,0:27:26.83,Default,,0000,0000,0000,,uns hergeschoben werden. Der Ansatz, den\Nich jetzt gehen möchte, ist, dass ich Dialogue: 0,0:27:26.83,0:27:29.65,Default,,0000,0000,0000,,sage, wir versuchen vielleicht so eine Art\NLegacy-Faktor zu definieren, den man Dialogue: 0,0:27:29.65,0:27:33.35,Default,,0000,0000,0000,,an die Software dran schreibt. Und da\Ngeht es nicht darum: "Wie schlecht ist die Dialogue: 0,0:27:33.35,0:27:37.16,Default,,0000,0000,0000,,Software?", sondern "Wie negativ\Nbeeinträchtigt wird meine Software, wenn Dialogue: 0,0:27:37.16,0:27:41.16,Default,,0000,0000,0000,,ich das als Dependency reinnehme?". Also\Nwenn ich jetzt irgendeine Library Dialogue: 0,0:27:41.16,0:27:46.01,Default,,0000,0000,0000,,reinziehe, wieviel negative Auswirkungen\Nhat das? Das Problem ist aber: Wenn wir Dialogue: 0,0:27:46.01,0:27:49.88,Default,,0000,0000,0000,,das als Metrik machen und die wird\Nirgendeine Art von Erfolg im Markt haben, Dialogue: 0,0:27:49.88,0:27:53.43,Default,,0000,0000,0000,,dass die Leute dann natürlich bescheißen\Nwerden und werden nach der Metrik Dialogue: 0,0:27:53.43,0:27:56.74,Default,,0000,0000,0000,,optimieren und nicht nach dem\Ntatsächlichen Ziel der Metrik. Daher ist Dialogue: 0,0:27:56.74,0:28:00.95,Default,,0000,0000,0000,,das so ein bisschen schwierig, aber es\Ngibt ein Vorbild, was so ein bisschen Dialogue: 0,0:28:00.95,0:28:05.77,Default,,0000,0000,0000,,funktioniert, nämlich das CVSS - das das\NCommon Vulnerability Scoring System. Das Dialogue: 0,0:28:05.77,0:28:10.10,Default,,0000,0000,0000,,wird angewendet, um die Problematik\Nvon Bugs zu messen. Da haben sich also Dialogue: 0,0:28:10.10,0:28:14.46,Default,,0000,0000,0000,,Leute zusammengetan und versucht, eine\NMetrik zu definieren. Und die funktioniert Dialogue: 0,0:28:14.46,0:28:19.73,Default,,0000,0000,0000,,in der Industrie gut, die wird angenommen.\NDie Leute lieben das. Das funktioniert Dialogue: 0,0:28:19.73,0:28:24.46,Default,,0000,0000,0000,,grob so, wie eine historische\NRisikobewertung. Man guckt halt so, wie Dialogue: 0,0:28:24.46,0:28:28.77,Default,,0000,0000,0000,,wahrscheinlich ist, dass das passiert,\Ndass das jemand ausnutzt. Da gibt's dann Dialogue: 0,0:28:28.77,0:28:33.03,Default,,0000,0000,0000,,Kriterien wie: Ist das technisch\Naufwendig? Kommt man da ran, wenn man Dialogue: 0,0:28:33.03,0:28:38.28,Default,,0000,0000,0000,,lokal einen Account hat oder auch über\NNetzwerk? Und was macht man denn kaputt, Dialogue: 0,0:28:38.28,0:28:42.95,Default,,0000,0000,0000,,wenn man das ausnutzt? Kann man dann Daten\Nlöschen, oder kann man die verändern? Also Dialogue: 0,0:28:42.95,0:28:46.78,Default,,0000,0000,0000,,diese Art von Sachen klickt man an, und\Ndann kommt ein Score raus. Das finde ich Dialogue: 0,0:28:46.78,0:28:50.71,Default,,0000,0000,0000,,eigentlich eine gute Sache. Ich glaube,\Nwir brauchen so ein Risiko-Score - jetzt Dialogue: 0,0:28:50.71,0:28:54.29,Default,,0000,0000,0000,,nicht für Bugs. Bei Bugs ist es, glaube\Nich, einfacher zu machen, obwohl es auch Dialogue: 0,0:28:54.29,0:28:58.68,Default,,0000,0000,0000,,schon viele Detail-Schwierigkeiten hat.\NAber eigentlich brauchen wir so eine Art Dialogue: 0,0:28:58.68,0:29:03.70,Default,,0000,0000,0000,,Risiko-Score, entweder für das Management\Noder für die Entwickler. Und das sind Dialogue: 0,0:29:03.70,0:29:07.75,Default,,0000,0000,0000,,getrennte Probleme. Ich glaube, dass es\Nzielführender, sich an die Entwickler zu Dialogue: 0,0:29:07.75,0:29:10.94,Default,,0000,0000,0000,,halten. Denn ich habe bisher noch fast nie\Nerlebt, dass Management gesagt hat: "Das Dialogue: 0,0:29:10.94,0:29:14.24,Default,,0000,0000,0000,,muss jetzt besser werden. Und das war\Nnicht nur als PR gemeint." Sondern, aber Dialogue: 0,0:29:14.24,0:29:18.17,Default,,0000,0000,0000,,Entwickler haben so eine Art Anspruch an\Nihren Code. Und ich glaube, wenn man denen Dialogue: 0,0:29:18.17,0:29:21.91,Default,,0000,0000,0000,,hilft zu erkennen, ob sie gerade einen\NFehler machen, können wir was stemmen. Dialogue: 0,0:29:21.91,0:29:25.65,Default,,0000,0000,0000,,Dann habe ich mir gedacht: Welche\NDimensionen gibt's denn da? Das ist leider Dialogue: 0,0:29:25.65,0:29:29.81,Default,,0000,0000,0000,,ein mehrdimensionales Problem. Hier ist\Neine der Dimensionen, die ich mir überlegt Dialogue: 0,0:29:29.81,0:29:33.96,Default,,0000,0000,0000,,habe: Sicherheitslöcher. Gut, klar. Wenn\Nder Code Sicherheitslöcher hat, ist das Dialogue: 0,0:29:33.96,0:29:37.26,Default,,0000,0000,0000,,ein Problem. Aber das ist leider ein\Noffenes Forschungsfeld, wie man die Dialogue: 0,0:29:37.26,0:29:40.79,Default,,0000,0000,0000,,Sicherheitslöcher finden soll. Und vor\Nallem dafür eine Metrik zu haben. Jetzt Dialogue: 0,0:29:40.79,0:29:44.96,Default,,0000,0000,0000,,kann man sagen: "Wir haben jetzt 10 Bugs\Ngefunden, also war der Code wahrscheinlich Dialogue: 0,0:29:44.96,0:29:49.10,Default,,0000,0000,0000,,unsicher." Und da ist was dran. Aber wir\Nwissen ja nicht, ob das alle 10 Bugs in Dialogue: 0,0:29:49.10,0:29:53.35,Default,,0000,0000,0000,,dem Code waren. Ist der Rest von dem Code\Nvielleicht super, und das waren 10 Dialogue: 0,0:29:53.35,0:29:58.05,Default,,0000,0000,0000,,Ausrutscher? Das ist leider sehr schwer zu\Nmessen. Daher eignet sich das, glaub ich, Dialogue: 0,0:29:58.05,0:30:02.92,Default,,0000,0000,0000,,nicht als Metrik. In der Industrie gibt es\NVersuche, mit Code-Smells und statischer Dialogue: 0,0:30:02.92,0:30:07.07,Default,,0000,0000,0000,,Analyse zu arbeiten. Das ist eine Sache,\Ndie im Moment sehr viele Firmen Dialogue: 0,0:30:07.07,0:30:11.21,Default,,0000,0000,0000,,ausprobieren.Der Erfolg ist bisher eher\Nmäßig. Meine Beobachtung ist, dass man so Dialogue: 0,0:30:11.21,0:30:15.77,Default,,0000,0000,0000,,ein Tool ausrollt, und der wirft dann zehn\NMilliarden Warnungen. Und dann schaltet Dialogue: 0,0:30:15.77,0:30:20.24,Default,,0000,0000,0000,,man so lange die Sensibilität von dem Tool\Nrunter, bis die Menge verarbeitbar Dialogue: 0,0:30:20.24,0:30:24.74,Default,,0000,0000,0000,,ist. Und dann verteilt man das an die\NEntwickler, und die sagen: "Das sind aber Dialogue: 0,0:30:24.74,0:30:28.72,Default,,0000,0000,0000,,alles False-Positives", und dann ist das\NProjekt gescheitert. Dann lässt man das Dialogue: 0,0:30:28.72,0:30:33.34,Default,,0000,0000,0000,,weiterlaufen, damit es nicht so aussieht,\Nals wäre es gescheitert. Aber dass Dialogue: 0,0:30:33.34,0:30:38.56,Default,,0000,0000,0000,,tatsächlich was passiert, ist selten. Das\Nist zwar eine wichtige Dimension, aber ich Dialogue: 0,0:30:38.56,0:30:43.11,Default,,0000,0000,0000,,glaube, die können wir nicht ordentlich in\Neine Metrik abbilden. Ich wüsste jedenfalls Dialogue: 0,0:30:43.11,0:30:49.77,Default,,0000,0000,0000,,nicht, wie. Ich versuche das hier auch an\NBeispielen zu illustrieren, vielleicht ein Dialogue: 0,0:30:49.77,0:30:55.47,Default,,0000,0000,0000,,bisschen. Es gibt Extrema: es gibt einmal\Nqmail und sendmail. Das sind eigentlich Dialogue: 0,0:30:55.47,0:30:59.76,Default,,0000,0000,0000,,ganz gute Illustrationsbeispiele: Das sind\Nbeides MTAs, also Programme, die auf einem Dialogue: 0,0:30:59.76,0:31:04.52,Default,,0000,0000,0000,,Server laufen und Mails weiter verschicken\Noder annehmen.Und qmail ist gebaut worden Dialogue: 0,0:31:04.52,0:31:08.48,Default,,0000,0000,0000,,mit dem Ziel, eine sichere Software zu\Nhaben, da hat sich jemand erst das Design Dialogue: 0,0:31:08.48,0:31:12.36,Default,,0000,0000,0000,,überlegt und dann die Software so gebaut.\NUnd sendmail ist erst geschrieben worden, Dialogue: 0,0:31:12.36,0:31:18.02,Default,,0000,0000,0000,,dann kam jemand und meinte "Ja, vielleicht\Nbrauchen wir auch ein Design", und das Dialogue: 0,0:31:18.02,0:31:24.11,Default,,0000,0000,0000,,sieht man bis heute. qmail ist um 1993\Nveröffentlicht worden, ging bis Version Dialogue: 0,0:31:24.11,0:31:29.85,Default,,0000,0000,0000,,1.0.3, und danach gab es nie wieder einen\NPatch. Und ich setze das aber bis heute Dialogue: 0,0:31:29.85,0:31:36.53,Default,,0000,0000,0000,,ein, weil es da nie wirklich Probleme gab,\Ndas ist sozusagen fertige Software. Das Dialogue: 0,0:31:36.53,0:31:42.16,Default,,0000,0000,0000,,ist so das eine Ende. Auf der anderen\NSeite heißt es aber auch, dass neuere Dialogue: 0,0:31:42.16,0:31:46.17,Default,,0000,0000,0000,,Features einfach nicht drin sind. Es ist\Nimmer ein zweischneidiges Schwert. Das ist Dialogue: 0,0:31:46.17,0:31:49.83,Default,,0000,0000,0000,,das Spektrum, auf dem wir uns bewegen: auf\Nder einen Seite so ein alter Legacy- Dialogue: 0,0:31:49.83,0:31:53.22,Default,,0000,0000,0000,,Codehaufen, den keiner mehr wirklich\Nverwalten will, außer er wird bezahlt Dialogue: 0,0:31:53.22,0:31:56.58,Default,,0000,0000,0000,,dafür. Und selbst unter den Leuten, die\Nbezahlt wurden, sind die meisten Dialogue: 0,0:31:56.58,0:32:00.58,Default,,0000,0000,0000,,weggelaufen, übrigens. Das will einfach\Nniemand haben. Die zweite Dimension, über Dialogue: 0,0:32:00.58,0:32:05.11,Default,,0000,0000,0000,,die man nachdenken kann, ist: "Gibt es\Ndenn noch Wartung dafür?". Das kann man bei Dialogue: 0,0:32:05.11,0:32:08.99,Default,,0000,0000,0000,,Open-Source-Produkten glücklicherweise\Nganz gut erkennen. Bei kommerzieller Dialogue: 0,0:32:08.99,0:32:12.57,Default,,0000,0000,0000,,Software ist das ein bisschen schwieriger,\Nweil da gibts dann vielleicht Patches und Dialogue: 0,0:32:12.57,0:32:16.85,Default,,0000,0000,0000,,neue Versionen. Aber ob die auch\Ntatsächlich was ändern, ist halt nicht so Dialogue: 0,0:32:16.85,0:32:21.55,Default,,0000,0000,0000,,klar. Oder wie viel sie ändern. Und das ist\Nauch nicht so klar, wie man das jetzt Dialogue: 0,0:32:21.55,0:32:24.65,Default,,0000,0000,0000,,bewerten soll, denn wenn eine Software\Nkeine Updates kriegt, muss es ja nicht Dialogue: 0,0:32:24.65,0:32:28.78,Default,,0000,0000,0000,,heißen, dass sie scheiße ist. Kann ja auch\Nsein, dass die einfach fertig ist. Das ist Dialogue: 0,0:32:28.78,0:32:34.31,Default,,0000,0000,0000,,zwar sehr, sehr selten, aber es gibt\NBeispiele dafür: Zum Beispiel: TeX ist ein Dialogue: 0,0:32:34.31,0:32:39.45,Default,,0000,0000,0000,,Satzsystem von Donald Knuth. Das hat er\Ngeschrieben und ist jetzt fertig. Da gibt Dialogue: 0,0:32:39.45,0:32:44.57,Default,,0000,0000,0000,,es zwar immer noch Patches, gelegentlich,\Naber ganz selten. Und die ändern zwei Bits Dialogue: 0,0:32:44.57,0:32:49.30,Default,,0000,0000,0000,,irgendwo. Das ist im Wesentlichen fertig.\NOder libjpeg habe ich hier als Beispiel Dialogue: 0,0:32:49.30,0:32:52.79,Default,,0000,0000,0000,,genommen, das ist irgendwann geschrieben\Nworden von der Independent JPEG Group um Dialogue: 0,0:32:52.79,0:32:56.07,Default,,0000,0000,0000,,Tom Lane und das hat eigentlich nie\Nirgendwelche Updates gebraucht. Das war Dialogue: 0,0:32:56.07,0:32:59.47,Default,,0000,0000,0000,,einfach. Hat auch keine Sicherheitslücken\Ngehabt. Das ist deswegen jetzt nicht Dialogue: 0,0:32:59.47,0:33:03.34,Default,,0000,0000,0000,,schlecht. Das heißt, dass es nicht so\Neinfach zu sagen: "Es gibt keine Patches Dialogue: 0,0:33:03.34,0:33:08.72,Default,,0000,0000,0000,,mehr - also ist die Software scheiße." Die\NMetrik ist also auch sehr schwierig. Wie Dialogue: 0,0:33:08.72,0:33:13.60,Default,,0000,0000,0000,,machen wir das? Gute Frage. Gut, das hab\Nich jetzt schon erzählt. Auf der anderen Dialogue: 0,0:33:13.60,0:33:17.87,Default,,0000,0000,0000,,Seite ist es so: Wenn eine Software sehr\Nhäufig geupdatet wird, ist das auch nicht Dialogue: 0,0:33:17.87,0:33:22.41,Default,,0000,0000,0000,,unbedingt ein gutes Zeichen. Ich habe\Neinen Kunden, der hat eine Software von Dialogue: 0,0:33:22.41,0:33:26.84,Default,,0000,0000,0000,,einem Drittanbieter, und der releast per\NGitHub. Und da kommen dann pro Tag fünf Dialogue: 0,0:33:26.84,0:33:31.97,Default,,0000,0000,0000,,Updates, und da steht aber jedes Mal\NRelease dran. Und gelegentlich brechen die Dialogue: 0,0:33:31.97,0:33:37.35,Default,,0000,0000,0000,,was, gelegentlich nicht. Da hast du nie\Nirgendeinen Ansatzpunkt, um auch nur zu Dialogue: 0,0:33:37.35,0:33:41.89,Default,,0000,0000,0000,,beurteilen, ob die Software jetzt gut ist\Noder nicht. Weil in dem Moment, wo deine Dialogue: 0,0:33:41.89,0:33:47.11,Default,,0000,0000,0000,,Untersuchung fertig ist, gibts schon\Nwieder 20 neue Versionen. Ja, das ist Dialogue: 0,0:33:47.11,0:33:52.36,Default,,0000,0000,0000,,eigentlich auch nicht gut. Eine weitere\NDimension ist die Dependency-Hölle, die Dialogue: 0,0:33:52.36,0:33:56.95,Default,,0000,0000,0000,,kennt ja fast jeder, der schon mal\NSoftware entwickelt hat. Besonders krass Dialogue: 0,0:33:56.95,0:34:01.70,Default,,0000,0000,0000,,ausgebildet bei JavaScript, die ein paar\NMal sehr öffentlich auf die Fresse Dialogue: 0,0:34:01.70,0:34:05.39,Default,,0000,0000,0000,,geflogen sind, als zum Beispiel jemand ein\NModul zurückgerufen hat, von dem sich dann Dialogue: 0,0:34:05.39,0:34:10.02,Default,,0000,0000,0000,,herausstellte, dass das irgendwie über\Ntransitive Abhängigkeiten in fast allen Dialogue: 0,0:34:10.02,0:34:15.05,Default,,0000,0000,0000,,Projekten irgendwie drin war. Das müsste\Nman dann transitiv anwenden. Wie gesagt: Dialogue: 0,0:34:15.05,0:34:20.11,Default,,0000,0000,0000,,Wenn ich eine Software reinlade und die\Nhat 50 andere Dependencies, dann muss ich Dialogue: 0,0:34:20.11,0:34:25.64,Default,,0000,0000,0000,,die Summe davon nehmen. Die Extrema dabei\Nwären auf der einen Seite so eine Cloud- Dialogue: 0,0:34:25.64,0:34:29.84,Default,,0000,0000,0000,,Lock-in-Hölle, wo man die Abhängigkeiten\Ngar nicht sieht, sondern man hat halt Dialogue: 0,0:34:29.84,0:34:34.68,Default,,0000,0000,0000,,irgendwie irgendeine Pipeline, aus der\Nfällt irgendwas raus, und der resolvt am Dialogue: 0,0:34:34.68,0:34:39.11,Default,,0000,0000,0000,,besten die Abhängigkeiten noch\Nautomatisiert während des Bauens und zieht Dialogue: 0,0:34:39.11,0:34:43.66,Default,,0000,0000,0000,,sich irgendwas aus dem Internet - das ist\Ndas eine Extrem. Und das andere Extrem ist Dialogue: 0,0:34:43.66,0:34:48.53,Default,,0000,0000,0000,,wieder qmail. Der hat halt überhaupt keine\NAbhängigkeiten, der benutzt die C-Library, Dialogue: 0,0:34:48.53,0:34:54.22,Default,,0000,0000,0000,,das C-Runtime, das drauf ist und braucht\Neinen C-Compiler zum Bauen, und das war's. Dialogue: 0,0:34:54.22,0:34:59.20,Default,,0000,0000,0000,,Da gibt es auch ein Spektrum, was sich ja\Neigentlich für eine Metrik eignen würde. Dialogue: 0,0:34:59.20,0:35:02.58,Default,,0000,0000,0000,,Aber wie gesagt, es gibt halt mehrere\NDimensionen. Wir kommen weiter. Nächste Dialogue: 0,0:35:02.58,0:35:07.26,Default,,0000,0000,0000,,Dimension ist Codequalität, und das ist so\Nein bisschen wie Security, aber ich möchte Dialogue: 0,0:35:07.26,0:35:11.81,Default,,0000,0000,0000,,das verallgemeinern, und zwar unter\Nanderem deswegen, weil es eine relativ Dialogue: 0,0:35:11.81,0:35:16.71,Default,,0000,0000,0000,,starke Korrelation zwischen vielen Bugs\Nund schlechter Security gibt. Alle Dialogue: 0,0:35:16.71,0:35:21.63,Default,,0000,0000,0000,,Security-Probleme sind auch ein Bug. Wenn\Njemand viele normale Bugs hat oder Bugs, Dialogue: 0,0:35:21.63,0:35:25.56,Default,,0000,0000,0000,,von denen wir nicht wissen oder nicht\Nnachgewiesen haben, dass es ein Dialogue: 0,0:35:25.56,0:35:30.45,Default,,0000,0000,0000,,Sicherheitsproblem ist, dann ist das im\NAllgemeinen ein Zeichen dafür, dass da Dialogue: 0,0:35:30.45,0:35:34.46,Default,,0000,0000,0000,,auch viele Sicherheitslücken drin\Nsein werden. Daher ist es wichtig als Dialogue: 0,0:35:34.46,0:35:39.44,Default,,0000,0000,0000,,Metrik, selbst wenn es nicht um Sicherheit\Ngeht. Wie gesagt, die Trends dazu sind Dialogue: 0,0:35:39.44,0:35:44.79,Default,,0000,0000,0000,,statische Code-Analyse und Code-Smells.\NIch wäre noch dafür hundert Prozent Dialogue: 0,0:35:44.79,0:35:50.34,Default,,0000,0000,0000,,Coverage beim Unit-Testing zu erwarten.\NAber das ist halt auch schwierig, weil da Dialogue: 0,0:35:50.34,0:35:55.01,Default,,0000,0000,0000,,gibt es verschiedene Messverfahren. Zum\NBeispiel: Was macht man, wenn mehr als ein Dialogue: 0,0:35:55.01,0:35:59.62,Default,,0000,0000,0000,,Statement auf einer Zeile steht?\NWas ist die Granularität des Testens? Dialogue: 0,0:35:59.62,0:36:04.08,Default,,0000,0000,0000,,Ja, es ist alles nicht so einfach. Aber\Nwir sollten zumindest mal anfangen, Dialogue: 0,0:36:04.08,0:36:07.87,Default,,0000,0000,0000,,darüber nachzudenken.Und mein Vorschlag\Nwäre, aus den eben erklärten Gründen, dass Dialogue: 0,0:36:07.87,0:36:11.96,Default,,0000,0000,0000,,wir einfach gucken, welche bekannten Bugs\Ngibt's denn? Wie ist denn so...? Wie viele Dialogue: 0,0:36:11.96,0:36:16.78,Default,,0000,0000,0000,,Bugs werden bekannt, pro sagen wir mal,\NJahr? Und daraus kann man extrapolieren. Dialogue: 0,0:36:16.78,0:36:21.63,Default,,0000,0000,0000,,Die nächste Näherung wäre, dass man alle\NCompiler-Warnungen anschaltet, was Dialogue: 0,0:36:21.63,0:36:26.42,Default,,0000,0000,0000,,erschütternd wenige Software-Hersteller\Nmachen in ihren internen Builds. Das ist Dialogue: 0,0:36:26.42,0:36:30.55,Default,,0000,0000,0000,,wirklich erschreckend.Und was auch viele\NLeute, die irgendwelche Pipelines in der Dialogue: 0,0:36:30.55,0:36:34.34,Default,,0000,0000,0000,,Cloud benutzen, gar nicht mitkriegen, wie\Nviele Warnungen da eigentlich rausfliegen. Dialogue: 0,0:36:34.34,0:36:38.22,Default,,0000,0000,0000,,Das ist eine der wichtigsten Metriken, die\Nihr als Entwickler habt, und ordentlichen Dialogue: 0,0:36:38.22,0:36:41.82,Default,,0000,0000,0000,,Code zu produzieren. Also schmeißt\NCompiler-Warnungen nicht weg, lest sie und Dialogue: 0,0:36:41.82,0:36:46.80,Default,,0000,0000,0000,,versucht, sie weg zu machen. Und zwar\Nnicht mit einem Pragma. Die nächste Dialogue: 0,0:36:46.80,0:36:53.31,Default,,0000,0000,0000,,Dimension ist: Welchen Anspruch hat der\NTyp überhaupt? Das ist mir aufgefallen - Dialogue: 0,0:36:53.31,0:36:58.92,Default,,0000,0000,0000,,es gab, ich glaube, libexiv2. Das ist so\Neine Software, um Metadaten in Digital- Dialogue: 0,0:36:58.92,0:37:04.90,Default,,0000,0000,0000,,Kamera-Bildern zu lesen. Da steht so drin,\Nirgendwie GPS-Koordinaten und was das für Dialogue: 0,0:37:04.90,0:37:09.33,Default,,0000,0000,0000,,eine Linse war, und so. Und das ist halt so mehr\Noder weniger wohl definiert, wie dieser Dialogue: 0,0:37:09.33,0:37:12.46,Default,,0000,0000,0000,,Standard aussieht. Und es gibt eine\NOpenSource-Library dafür und da gab's es Dialogue: 0,0:37:12.46,0:37:15.76,Default,,0000,0000,0000,,einen Haufen Bugs drin und dann hat der\NAutor von dieser Software irgendwann Dialogue: 0,0:37:15.76,0:37:19.00,Default,,0000,0000,0000,,einfach geschrieben: "Ja, das dürft ihr\Nhalt nicht anwenden auf Dialogue: 0,0:37:19.00,0:37:23.26,Default,,0000,0000,0000,,unvertrauenswürdige Dateien." Das heißt,\Nder hat nie den Anspruch gehabt, dass Dialogue: 0,0:37:23.26,0:37:26.80,Default,,0000,0000,0000,,das sicher ist. Aber das stand halt nicht\Ndran, und die Leute haben seine Software Dialogue: 0,0:37:26.80,0:37:30.96,Default,,0000,0000,0000,,benutzt und angenommen: "Ja, der wird\Nschon darauf geachtet haben." Daher glaube Dialogue: 0,0:37:30.96,0:37:35.49,Default,,0000,0000,0000,,ich, dass Erste und Beste, was wir machen\Nkönnen, was tatsächlich eine Auswirkung Dialogue: 0,0:37:35.49,0:37:39.21,Default,,0000,0000,0000,,hat, ist, wenn wir anfangen, an die\NSoftware zu schreiben, was eigentlich der Dialogue: 0,0:37:39.21,0:37:42.60,Default,,0000,0000,0000,,Anspruch war. Also was glauben wir, was\Nwir erreicht haben? Was haben wir Dialogue: 0,0:37:42.60,0:37:47.26,Default,,0000,0000,0000,,überhaupt versucht. So das ist, glaube\Nich, wichtig. Eine andere Sache, die es Dialogue: 0,0:37:47.26,0:37:52.20,Default,,0000,0000,0000,,hier gab, war, dass Leute Features machen,\Ndie nach Sicherheit klingen. So, das war Dialogue: 0,0:37:52.20,0:37:55.82,Default,,0000,0000,0000,,eine Sache, die ich bei Microsoft mal\Nerlebt habe. Da gab es eine Feature namens Dialogue: 0,0:37:55.82,0:37:59.21,Default,,0000,0000,0000,,"Network Access Protection", und dann bin\Nich da hingegangen für Thread Modelling Dialogue: 0,0:37:59.21,0:38:02.63,Default,,0000,0000,0000,,und wollte wissen: "Was sind eure eure\NSecurity Guarantees? Was sagt ihr denn Dialogue: 0,0:38:02.63,0:38:06.30,Default,,0000,0000,0000,,zu?" Und da meinten die so: "Ja, gar\Nnichts. Wir sind kein Security-Feature." Dialogue: 0,0:38:06.30,0:38:10.51,Default,,0000,0000,0000,,Meinte ich so: "Ja, dann ist der Name\Nvielleicht ein bisschen verwirrend." Aber Dialogue: 0,0:38:10.51,0:38:14.69,Default,,0000,0000,0000,,sowas passiert halt, weil es einen\NDisconnect gibt zwischen den Leuten, die Dialogue: 0,0:38:14.69,0:38:20.12,Default,,0000,0000,0000,,das Projekt machen, und denen, die den\NNamen wählen und das Marketing machen. Ja, Dialogue: 0,0:38:20.12,0:38:25.19,Default,,0000,0000,0000,,gut, da gibts auch nochmal Abstufungen. Es\Ngibt halt so explorative Software. Dialogue: 0,0:38:25.19,0:38:28.81,Default,,0000,0000,0000,,Übrigens, fast alle Open Source Software,\Ndie ich so veröffentlicht habe, ist auch Dialogue: 0,0:38:28.81,0:38:32.66,Default,,0000,0000,0000,,explorativ. Das ist nicht negativ gemeint\N- im Gegenteil, das ist der beste Weg, wie Dialogue: 0,0:38:32.66,0:38:36.06,Default,,0000,0000,0000,,man Programmieren lernen kann. Ich habe\Netwas verstanden, wenn ich es einmal Dialogue: 0,0:38:36.06,0:38:40.54,Default,,0000,0000,0000,,implementiert habe. Das heißt nicht, dass\Ndie Implementation dann gut war. Das Dialogue: 0,0:38:40.54,0:38:45.74,Default,,0000,0000,0000,,versuche ich natürlich. Aber es ist\Nwichtig, das zu kommunizieren: "Dieser Code Dialogue: 0,0:38:45.74,0:38:50.29,Default,,0000,0000,0000,,war explorativ." Der ist jetzt vielleicht\Ngut genug abgehangen und hat genug Dialogue: 0,0:38:50.29,0:38:55.40,Default,,0000,0000,0000,,Real-Life-Tests gemacht und Interoperabilität,\Ndass man ihm trauen kann. Aber der Dialogue: 0,0:38:55.40,0:39:00.86,Default,,0000,0000,0000,,Anspruch war explorativ. Oder es gibt\Ndieses Szenario: "The guy left." Dialogue: 0,0:39:00.86,0:39:04.59,Default,,0000,0000,0000,,Das erlebt man gelegentlich bei großen\NFirmen. "Ja, wir haben hier noch ein Stück Dialogue: 0,0:39:04.59,0:39:07.37,Default,,0000,0000,0000,,Code, aber wir wissen gar nicht, wer das\Ngeschrieben hat." Oder: "Wir wissen schon, Dialogue: 0,0:39:07.37,0:39:11.37,Default,,0000,0000,0000,,wer das geschrieben hat, aber das war\Neiner der Gründer, und der hat jetzt keine Dialogue: 0,0:39:11.37,0:39:16.05,Default,,0000,0000,0000,,Zeit mehr für sowas." Oder: "Der Typ, der\Nist in Ruhestand gegangen", oder Dialogue: 0,0:39:16.05,0:39:20.07,Default,,0000,0000,0000,,so. Das kommt alles vor. Und das finde\Nich aber wichtig, dass man das Dialogue: 0,0:39:20.07,0:39:24.69,Default,,0000,0000,0000,,kommuniziert, weil die Leute, die das\Nbenutzen, die wissen, dass halt nicht. Dialogue: 0,0:39:24.69,0:39:29.36,Default,,0000,0000,0000,,Oder was üblicherweise das beste Szenario\Nist, vom Anspruch her, ist, dass der Typ, Dialogue: 0,0:39:29.36,0:39:33.26,Default,,0000,0000,0000,,der das entwickelt, auch der aktuelle\NMaintainer ist und am Besten versucht, das Dialogue: 0,0:39:33.26,0:39:36.73,Default,,0000,0000,0000,,kommerziell zu vermarkten, weil der hat\Ndann wirklich ein Interesse daran, dass es Dialogue: 0,0:39:36.73,0:39:40.25,Default,,0000,0000,0000,,ordentlich wird in den meisten Fällen.\NGut, es gibt immer noch mehr Dimensionen, Dialogue: 0,0:39:40.25,0:39:42.61,Default,,0000,0000,0000,,tut mir leid, dass es so ein komplexes\NProblem ist. Dialogue: 0,0:39:42.61,0:39:45.74,Default,,0000,0000,0000,,Es gibt auch das Problem, dass der Typ, Dialogue: 0,0:39:45.74,0:39:51.61,Default,,0000,0000,0000,,der das umsetzt, die besten Intentionen\Nhatte und die besten Techniken Dialogue: 0,0:39:51.61,0:39:56.65,Default,,0000,0000,0000,,benutzt, die es gibt, aber dass die Spec,\Ndie er umsetzt, scheiße ist. Zum Beispiel Dialogue: 0,0:39:56.65,0:40:00.43,Default,,0000,0000,0000,,ist XML eine Spec, die richtig scheiße\Nist. Da stehen Sachen drin, wie, dass man Dialogue: 0,0:40:00.43,0:40:03.86,Default,,0000,0000,0000,,eine Entity-Expansion machen muss, und\Ndamit kann man einen ganz trivial einen Dialogue: 0,0:40:03.86,0:40:07.92,Default,,0000,0000,0000,,DoS-Angriff machen - auf, im Grunde jeden\Nstandardkonformen XML-Parser. Und dann Dialogue: 0,0:40:07.92,0:40:11.88,Default,,0000,0000,0000,,haben die alle angefangen, irgendwie\NKonfiguration nachzurüsten, wo man das Dialogue: 0,0:40:11.88,0:40:15.61,Default,,0000,0000,0000,,ausschalten kann. Aber damit ist man\Neigentlich nicht mehr standardkonform. Dialogue: 0,0:40:15.61,0:40:19.10,Default,,0000,0000,0000,,Das kommt häufiger vor, dass Specs\Nschlecht sind. Das ist kein Einzelfall. Dialogue: 0,0:40:19.10,0:40:23.06,Default,,0000,0000,0000,,Ich will jetzt nicht auf XML zeigen,\Nandere sind auch nicht gut. Oder JSON- Dialogue: 0,0:40:23.06,0:40:27.14,Default,,0000,0000,0000,,Parser: Da gab es jetzt ein paar Versuche,\Nda sind die Leute einfach herumgegangen Dialogue: 0,0:40:27.14,0:40:31.79,Default,,0000,0000,0000,,und haben ganz viele Rekursionstiefen\Naufgemacht und plötzlich platzten die Dialogue: 0,0:40:31.79,0:40:36.45,Default,,0000,0000,0000,,Parser alle. Oder Window-Messages bei\NWindows ist ein ganz altes Problem. Das Dialogue: 0,0:40:36.45,0:40:40.59,Default,,0000,0000,0000,,ist halt erfunden worden, bevor es mehr\Nals einen User gab. Oder so Message-Bus Dialogue: 0,0:40:40.59,0:40:45.69,Default,,0000,0000,0000,,allgemein, ist so eine Sache, die häufig\Nin so Cloud-Installationen und in großen Dialogue: 0,0:40:45.69,0:40:49.75,Default,,0000,0000,0000,,Firmen gesehen werden kann. Dass die Leute\Nsagen: "Okay, wenn wir das über die Dialogue: 0,0:40:49.75,0:40:53.95,Default,,0000,0000,0000,,Datenbank machen, ist es zu langsam. Also\Nbauen wir hier noch ein Message-Bus drum Dialogue: 0,0:40:53.95,0:40:58.11,Default,,0000,0000,0000,,rum." Und dann kann aber jeder, der\NZugriff auf den Message-Bus hat, Dialogue: 0,0:40:58.11,0:41:03.00,Default,,0000,0000,0000,,auch spoofen oder kann alle anderen Daten\Nsehen. Das ist die Idee schon schlecht Dialogue: 0,0:41:03.00,0:41:06.21,Default,,0000,0000,0000,,und es ist egal, wie gut ich das\Numsetze - das wird dadurch nicht Dialogue: 0,0:41:06.21,0:41:11.46,Default,,0000,0000,0000,,besser. Dann gibt's noch so Lock-In-\NProbleme. Da weiß ich nicht, ob die hier Dialogue: 0,0:41:11.46,0:41:14.43,Default,,0000,0000,0000,,wirklich rein gehören, aber ich finde das\Nwichtig genug, dass, wenn wir schon dabei Dialogue: 0,0:41:14.43,0:41:19.74,Default,,0000,0000,0000,,sind, hier Labels zu vergeben, das\Nauch erwähnen sollten. Zum Beispiel Dialogue: 0,0:41:19.74,0:41:23.46,Default,,0000,0000,0000,,irgendeine Library, die eigentlich genau\Ndas tut, was ich haben will. Aber sie Dialogue: 0,0:41:23.46,0:41:29.31,Default,,0000,0000,0000,,läuft nur in der Amazon-Cloud. Dann hab\Nich meine Freiheit, welche Plattform ich Dialogue: 0,0:41:29.31,0:41:32.40,Default,,0000,0000,0000,,verwende, eingeschränkt, wenn ich diese\NLibrary reinziehe. Das ist eigentlich auch Dialogue: 0,0:41:32.40,0:41:40.08,Default,,0000,0000,0000,,eine Sache, die man vorher kommunizieren\Nmüsste - und zwar klar. Oder bei Cryptocode Dialogue: 0,0:41:40.08,0:41:44.07,Default,,0000,0000,0000,,war lange Zeit ein Problem, dass der\Nassembler-handoptimiert war für die Intel- Dialogue: 0,0:41:44.07,0:41:48.30,Default,,0000,0000,0000,,Architektur. Aber wenn man dann so\NRandgruppen-Plattformen wie Dialogue: 0,0:41:49.02,0:41:54.66,Default,,0000,0000,0000,,PowerPC, MIPS oder sogar ARM hatte, dann\Nlief das halt nicht gut. Das ist jetzt ist keine Dialogue: 0,0:41:54.66,0:42:01.48,Default,,0000,0000,0000,,harte Abhängigkeit, aber es schränkt\Nden Benutzer ein. Wenn wir schon Dialogue: 0,0:42:01.48,0:42:04.99,Default,,0000,0000,0000,,dabei sind, dann können wir auch gleich\Nnoch den Ressourcen-Footprint reinziehen. Dialogue: 0,0:42:04.99,0:42:08.17,Default,,0000,0000,0000,,Es gibt ja häufig so Sachen: "Ja, wir\Nmüssen hier sortieren, aber wir rechnen Dialogue: 0,0:42:08.17,0:42:12.07,Default,,0000,0000,0000,,nur mit zehn Elementen - also machen wir\NBubbelsort." Und dann kommt jemand Dialogue: 0,0:42:12.07,0:42:16.06,Default,,0000,0000,0000,,und tut mehr Elemente rein und\Nplötzlich platzt das. Das ist eigentlich Dialogue: 0,0:42:16.06,0:42:19.24,Default,,0000,0000,0000,,auch eine Sache, die man kommunizieren\Nsollte: "Mit welchen Größenordnungen gehen Dialogue: 0,0:42:19.24,0:42:25.81,Default,,0000,0000,0000,,wir hier eigentlich um? Worauf ist das\Nausgelegt?" Und Achtung! Es geht nicht nur Dialogue: 0,0:42:25.81,0:42:29.02,Default,,0000,0000,0000,,um CPU, es geht auch um den RAM-Bedarf.\NUnd es geht auch darum, dass zum Beispiel Dialogue: 0,0:42:29.02,0:42:33.16,Default,,0000,0000,0000,,eine Library ständig auf der Platte\Nrumschreibt und I/O-Bandbreite frisst oder Dialogue: 0,0:42:33.16,0:42:39.31,Default,,0000,0000,0000,,versucht, aus dem Netz irgendwas\Nnachzuladen. Also nehmen Dialogue: 0,0:42:39.31,0:42:42.04,Default,,0000,0000,0000,,wir mal an, das sind die\NDimensionen. Es ist ein bisschen Dialogue: 0,0:42:42.04,0:42:44.95,Default,,0000,0000,0000,,schwierig, da eine Metrik daraus zu bauen,\Ndenn eine gute Metrik ist ja immer Dialogue: 0,0:42:44.95,0:42:48.07,Default,,0000,0000,0000,,zwischen 0 und 1 oder, sagen wir, 0 und\N10, das heißt, man hat eine Dialogue: 0,0:42:48.07,0:42:51.88,Default,,0000,0000,0000,,Vergleichbarkeit. Aber wenn ich sage, wir\Nmüssen transitiv die Probleme der Dialogue: 0,0:42:51.88,0:42:55.12,Default,,0000,0000,0000,,Dependencies mit reinziehen,\Ndann haben wir die Skala nicht, Dialogue: 0,0:42:55.12,0:42:58.42,Default,,0000,0000,0000,,weil die kann dann beliebig groß werden,\Nwenn ich mehr Dependencies reinziehe. Dialogue: 0,0:42:58.42,0:43:05.53,Default,,0000,0000,0000,,Daher glaube ich, von diesem Metrik- bzw.\NScoreproblem müssen wir weg. Und es gibt Dialogue: 0,0:43:05.53,0:43:08.68,Default,,0000,0000,0000,,das Problem, wenn ich eine Metrik habe,\Ndass die Leute dann Gaming betreiben, um Dialogue: 0,0:43:08.68,0:43:13.15,Default,,0000,0000,0000,,die Metrik zu schönen und nicht das\NProblem zu lösen. Da dachte ich mir: Dialogue: 0,0:43:13.15,0:43:17.98,Default,,0000,0000,0000,,"Nennen wir es mal Legacy-Score...\Naber Score geht eigentlich nicht... hmm... Dialogue: 0,0:43:17.98,0:43:23.38,Default,,0000,0000,0000,,was kann man denn noch machen? Und vor\Nallem wofür gilt denn die Metrik dann? Da gibt's Dialogue: 0,0:43:23.38,0:43:26.74,Default,,0000,0000,0000,,eigentlich auch verschiedene Ansätze, was\Nman sagen kann..." Man könnte sagen für die Dialogue: 0,0:43:26.74,0:43:31.57,Default,,0000,0000,0000,,gesamte Software, dass sich so eine Art\NScore ausrechne. Und das ist wie, sag ich Dialogue: 0,0:43:31.57,0:43:35.26,Default,,0000,0000,0000,,mal, bei einer Versicherung, dass sie halt\Nguckt, wie viel, wie wahrscheinlich ist Dialogue: 0,0:43:35.26,0:43:39.82,Default,,0000,0000,0000,,es, dass ich hier zahlen muss? So in der\NRichtung Risikobewertung. Oder ich kann Dialogue: 0,0:43:39.82,0:43:43.42,Default,,0000,0000,0000,,das für ein Modul machen. Oder\Nfür Manager, dass der Manager sagt: Dialogue: 0,0:43:43.42,0:43:47.98,Default,,0000,0000,0000,,"Das Modul ziehen wir nicht rein, das ist\Nzu riskant." Oder für Entwickler. Oder Dialogue: 0,0:43:47.98,0:43:52.21,Default,,0000,0000,0000,,vielleicht sogar pro Funktion? Und da hab\Nich mir gedacht: "Okay, gucken wir doch Dialogue: 0,0:43:52.21,0:43:55.09,Default,,0000,0000,0000,,mal, was es da für Prior Art gibt, was\Nhaben die Leute denn bisher gemacht?" Und Dialogue: 0,0:43:55.09,0:43:58.57,Default,,0000,0000,0000,,ich habe einen schönen Standard gefunden\Nvon 1993: Kompakte Darstellung Dialogue: 0,0:43:58.57,0:44:01.93,Default,,0000,0000,0000,,mehrdimensioneller Daten, nämlich, den\NGeek Code. Wer hier kennt den Geek Code? Dialogue: 0,0:44:01.93,0:44:08.48,Default,,0000,0000,0000,,Das jetzt für die älteren unter euch. Das\Nsah so aus: die Formatierung Dialogue: 0,0:44:08.48,0:44:13.31,Default,,0000,0000,0000,,war so ein bisschen als als Scherz auf\NPGP. Die Idee war, dass man sich selbst Dialogue: 0,0:44:13.31,0:44:17.99,Default,,0000,0000,0000,,beschreibt. Also GED heißt zum Beispiel\NGeek Education Sector. Und danach? Das Dialogue: 0,0:44:17.99,0:44:22.46,Default,,0000,0000,0000,,sind alles irgendwelche Dimensionen. Und\Ndann eine Bewertung. Zum Beispiel: s heißt: Dialogue: 0,0:44:22.46,0:44:28.37,Default,,0000,0000,0000,,"Wie groß bin ich?" Und das haben die Leute\Nin ihre Signature getan und im Usenet Dialogue: 0,0:44:28.37,0:44:31.37,Default,,0000,0000,0000,,verbreitet. Und dann konnte man so grob\Nsich eine Vorstellung machen, was der Dialogue: 0,0:44:31.37,0:44:34.70,Default,,0000,0000,0000,,andere Typ ist, welche Interessen er hat.\NIch finde das nicht gut für Typen. Das war Dialogue: 0,0:44:34.70,0:44:38.87,Default,,0000,0000,0000,,sozusagen der Vorgänger von Facebook\Nkönnte man aus heutiger Sicht sagen. Die Dialogue: 0,0:44:38.87,0:44:42.32,Default,,0000,0000,0000,,Leute haben freiwillig alles Mögliche über\Nsich verraten. Aber die Idee ist ja Dialogue: 0,0:44:42.32,0:44:44.48,Default,,0000,0000,0000,,vielleicht nicht schlecht und habe ich mir\Ngedacht: "Jetzt versuchen wir Dialogue: 0,0:44:44.48,0:44:48.50,Default,,0000,0000,0000,,doch mal, die Dimensionen, die ich hier\Nformuliert habe, auf so eine Art Score Dialogue: 0,0:44:48.50,0:44:53.81,Default,,0000,0000,0000,,abzubilden." Und das ist gar nicht so\Neinfach, deswegen habe ich auch den Dialogue: 0,0:44:53.81,0:44:56.36,Default,,0000,0000,0000,,Vortrag hier erst einmal auf deutsch\Ngemacht, bevor ich das international Dialogue: 0,0:44:56.36,0:44:59.63,Default,,0000,0000,0000,,vortrage, weil ich glaube, da muss noch\Ngefeilt werden. Ich würde mich über euer Dialogue: 0,0:44:59.63,0:45:03.44,Default,,0000,0000,0000,,Feedback da auch wirklich freuen, wenn ihr\Nnoch Vorschläge habt. Ich zeig jetzt mal Dialogue: 0,0:45:03.44,0:45:07.94,Default,,0000,0000,0000,,den Entwurf, den ich gemacht habe bisher.\NDie Idee wäre, dass man es als Autor Dialogue: 0,0:45:07.94,0:45:11.57,Default,,0000,0000,0000,,von einer Library in einen Kommentar\Nreinschreibt, oben. Und dann hat man so Dialogue: 0,0:45:11.57,0:45:15.77,Default,,0000,0000,0000,,eine Art, ich sage mal, Hundepfeife. Der\Nandere Entwickler kann es lesen und Dialogue: 0,0:45:15.77,0:45:21.80,Default,,0000,0000,0000,,versteht, was gemeint ist. Das hier ist\Njetzt noch relativ klar: "Wer besitzt Dialogue: 0,0:45:21.80,0:45:26.69,Default,,0000,0000,0000,,eigentlich den Code?" Und da ist der\Nschlimmste Fall natürlich: man sieht Dialogue: 0,0:45:26.69,0:45:29.96,Default,,0000,0000,0000,,den gar nicht. Man hat nicht mal eine\NKopie davon, sondern das läuft irgendwo in Dialogue: 0,0:45:29.96,0:45:33.77,Default,,0000,0000,0000,,der Cloud. Das wäre hier klar die\NDimension. Dann... das ist so ein bisschen Dialogue: 0,0:45:33.77,0:45:37.07,Default,,0000,0000,0000,,verwandt, aber nicht genau dasselbe:\N"Ich habe den Code, und ich kann ihn Dialogue: 0,0:45:37.07,0:45:41.21,Default,,0000,0000,0000,,ändern." Oder: "Ich kann ihn nur lesen",\Nsowas. Oder: "Der ist verloren gegangen." Oder Dialogue: 0,0:45:41.21,0:45:51.53,Default,,0000,0000,0000,,so das Huawei Modell: "Wir lassen die\NRegierung reingucken." Ja, das ist jetzt so Dialogue: 0,0:45:51.53,0:45:54.32,Default,,0000,0000,0000,,ein bisschen mit dem scherzenden Auge\Nnatürlich, aber ich finde die Idee Dialogue: 0,0:45:54.32,0:45:59.72,Default,,0000,0000,0000,,eigentlich, muss ich sagen, ganz\Nattraktiv. Ich werde das bei meinem Dialogue: 0,0:45:59.72,0:46:05.15,Default,,0000,0000,0000,,eigenen Code mal einbauen. Das\NProblem bei sowas ist natürlich, dass man Dialogue: 0,0:46:05.15,0:46:08.75,Default,,0000,0000,0000,,gucken muss, dass das obere Ende auch\Ntatsächlich das obere Ende ist und nur von Dialogue: 0,0:46:08.75,0:46:13.08,Default,,0000,0000,0000,,wenigen erreicht werden wird. Dass jemand\Ntatsächlich Sicherheitszusagen macht, ist Dialogue: 0,0:46:13.08,0:46:19.02,Default,,0000,0000,0000,,sehr selten. Eigentlich fast nie. Dann\Ngibt es so Leute, die machen seit 20 Dialogue: 0,0:46:19.02,0:46:22.20,Default,,0000,0000,0000,,Jahren immer nur dasselbe. Zum Beispiel\Nder Typ, der Zstandard macht, das so eine Dialogue: 0,0:46:22.20,0:46:26.13,Default,,0000,0000,0000,,Kompressions-Library, die jetzt über\NFacebook released wurde, der hat vorher Dialogue: 0,0:46:26.13,0:46:30.78,Default,,0000,0000,0000,,LZ4 gemacht und macht seit Ewigkeiten\NKompressosions-Algorithmen. Da kann man Dialogue: 0,0:46:30.78,0:46:35.25,Default,,0000,0000,0000,,annehmen, der weiß grob, was er tut. Das geht\Naber runter bis zu: "Ich bin ja nicht Dialogue: 0,0:46:35.25,0:46:38.49,Default,,0000,0000,0000,,der Typ, der das geschrieben hat, sondern\Nich muss es hier nur verwalten. Ich hab Dialogue: 0,0:46:38.49,0:46:42.99,Default,,0000,0000,0000,,das geerbt, ich bin hier der Azubi." Das\Nmüsste eigentlich dran stehen, finde ich. Dialogue: 0,0:46:44.34,0:46:48.39,Default,,0000,0000,0000,,Wie sieht es denn mit der Korrektheit aus?\NDas ist ja auch ein Problem. Und das geht Dialogue: 0,0:46:48.39,0:46:51.42,Default,,0000,0000,0000,,halt von: "Ich habe einen Beweis, und den\Nkannst du nachvollziehen." Bis über: "Ich Dialogue: 0,0:46:51.42,0:46:56.46,Default,,0000,0000,0000,,habe einen Beweis, und den kannst du nicht\Nnachvollziehen." Oder: "Naja, wir versuchen Dialogue: 0,0:46:56.46,0:47:00.48,Default,,0000,0000,0000,,immer, alle Bugs zu schließen", wobei\Nschließen und fixen ein Unterschied ist. Dialogue: 0,0:47:00.48,0:47:05.85,Default,,0000,0000,0000,,Also aufgepasst! Immer schön in den\NBugtracker gucken. Und dann gibt's halt die Dialogue: 0,0:47:05.85,0:47:09.00,Default,,0000,0000,0000,,Leute, die argumentieren: "Ja, das ist\Ndoch gar kein Security Problem, der crasht Dialogue: 0,0:47:09.00,0:47:14.67,Default,,0000,0000,0000,,doch bloß." Also Leute, die entweder keine\NAhnung haben oder böswillig sind. Und das Dialogue: 0,0:47:14.67,0:47:18.81,Default,,0000,0000,0000,,finde ich wichtig, das zu kommunizieren.\NDie meisten Leute sind hier bei Stand C-, Dialogue: 0,0:47:18.81,0:47:24.09,Default,,0000,0000,0000,,da draußen, oder sie haben überhaupt\Nkeinen Bugtracker. Das gibt's auch noch Dialogue: 0,0:47:24.09,0:47:28.92,Default,,0000,0000,0000,,vereinzelt. Dann hab ich mir gedacht:\N"Vielleicht müssen wir noch sagen: Dialogue: 0,0:47:28.92,0:47:33.54,Default,,0000,0000,0000,,'Welche Art von Design ist denn in die\NEntwicklung eingeflossen?'" Das geht halt Dialogue: 0,0:47:33.54,0:47:37.47,Default,,0000,0000,0000,,los mit: "Ja, alle Buzzwords angeklickt.\NWir haben hier Least Privilege usw." Dialogue: 0,0:47:37.47,0:47:42.54,Default,,0000,0000,0000,,Dann gibt es einen relativ großen\NSprung zu: "Naja, wir validieren unsere Dialogue: 0,0:47:42.54,0:47:48.07,Default,,0000,0000,0000,,Inputs." Das ist schon mal gut, aber es\Ngeht halt bis runter zu so Dialogue: 0,0:47:48.07,0:47:51.23,Default,,0000,0000,0000,,Bullshit-Blabla, von wegen: "Ja, wir haben\Ndoch einen Anti-Virus." Dialogue: 0,0:47:51.23,0:47:53.58,Default,,0000,0000,0000,,{\i1}Publikum lacht{\i0} Dialogue: 0,0:47:53.58,0:47:59.18,Default,,0000,0000,0000,,Und ich finde, das wäre eigentlich schön,\Nwenn man es an der Software hätte. So eine Dialogue: 0,0:47:59.18,0:48:06.10,Default,,0000,0000,0000,,Art Label. Die Idee kam mir\Neigentlich, als ich mal in Amerika so eine Dialogue: 0,0:48:06.10,0:48:10.15,Default,,0000,0000,0000,,Multi-Vitamin-Tabletten-Packung gekauft\Nhabe, denn da ist hinten so eine riesige Dialogue: 0,0:48:10.15,0:48:14.26,Default,,0000,0000,0000,,Tabelle drauf, mit den Supplement Facts\Nund da steht drauf: "Dieses Vitamin, so Dialogue: 0,0:48:14.26,0:48:18.01,Default,,0000,0000,0000,,und so viel Prozent der Recommended Daily\NAllowance." Und da kann man dann sehen: Dialogue: 0,0:48:18.01,0:48:22.57,Default,,0000,0000,0000,,"Okay, die wollen mich verarschen." Weil da\Nsteht dann sowas wie: "Vitamin C: 5000%" Dialogue: 0,0:48:22.57,0:48:27.43,Default,,0000,0000,0000,,So: "Viel hilft viel." Also ich\Nmeine, da muss man natürlich trotzdem, als Dialogue: 0,0:48:27.43,0:48:31.61,Default,,0000,0000,0000,,der, der dieses Label liest, ein grobes\NVerständnis haben, was das bedeutet. Aber Dialogue: 0,0:48:31.61,0:48:36.54,Default,,0000,0000,0000,,immerhin. Ich glaube, das ist ein Weg, den\Nwir mal ausprobieren können. Übrigens das Dialogue: 0,0:48:36.54,0:48:42.13,Default,,0000,0000,0000,,hier unten: "The author left" und "project\Nabandoned" ist häufiger, als man glaubt. Dialogue: 0,0:48:42.13,0:48:46.67,Default,,0000,0000,0000,,Volatility: das versucht, so ein\Nbisschen dieses Agilitätsproblem Dialogue: 0,0:48:46.67,0:48:51.04,Default,,0000,0000,0000,,anzugehen. Dass Leute einfach häufiger\Nreleasen, als man prüfen kann, ob das Dialogue: 0,0:48:51.04,0:48:55.16,Default,,0000,0000,0000,,jetzt ordentlich ist oder nicht. Aber so\Nrichtig eine gute Lösung gibt es Dialogue: 0,0:48:55.16,0:48:59.74,Default,,0000,0000,0000,,eigentlich nicht. Was ich so persönlich\Nals am entspanntesten empfinde, ist Vim. Dialogue: 0,0:48:59.74,0:49:04.34,Default,,0000,0000,0000,,Vim bringt im Grunde täglich Updates raus,\Naber man merkt nie, dass sich irgendwas Dialogue: 0,0:49:04.34,0:49:08.89,Default,,0000,0000,0000,,verändert hat. Weil die Software compiled\Nvorher und nachher, alle Sachen, die ich Dialogue: 0,0:49:08.89,0:49:13.71,Default,,0000,0000,0000,,benutzt habe, gehen noch. Das ist, glaube\Nich, das Optimalziel, was man da erreichen Dialogue: 0,0:49:13.71,0:49:17.20,Default,,0000,0000,0000,,kann bei Software, dass der Kunde gar\Nnicht merkt, ob gepatcht wurde oder nicht, Dialogue: 0,0:49:17.20,0:49:20.88,Default,,0000,0000,0000,,weil das einfach alles weiter\Nfunktioniert. Die Spec hatte ich ja schon Dialogue: 0,0:49:20.88,0:49:26.27,Default,,0000,0000,0000,,erwähnt. Die müssen wir auch irgendwie\Nabbilden, ob die Spec was taugt. Und da Dialogue: 0,0:49:26.27,0:49:31.93,Default,,0000,0000,0000,,gibt es auch ein großes Spektrum: Dass die\NSpec offen, kurz und verständlich ist, ist Dialogue: 0,0:49:31.93,0:49:36.01,Default,,0000,0000,0000,,leider auch selten. Häufig kommt es vor,\Ndass die Spec hinter einer Paywall ist, Dialogue: 0,0:49:36.01,0:49:39.84,Default,,0000,0000,0000,,und das ist dann so gut, als wenn es gar\Nkeine Spec gäbe, weil ich als Open-Source- Dialogue: 0,0:49:39.84,0:49:44.03,Default,,0000,0000,0000,,Typ werde jetzt nicht zur ISO laufen und\Nmir für ein paar tausend Euro irgendwie Dialogue: 0,0:49:44.03,0:49:49.42,Default,,0000,0000,0000,,die MPEG-Spec runterladen um zu gucken, ob\Nder MPEG-Player ordentlich ist, den ich da Dialogue: 0,0:49:49.42,0:49:54.22,Default,,0000,0000,0000,,gerade runtergeladen hab. Dann haben\Nwir noch Dependecies. Das müsste man Dialogue: 0,0:49:54.22,0:49:57.72,Default,,0000,0000,0000,,eigentlich transitiv machen, da ist mir\Njetzt auch nicht klar, wie man das auf den Dialogue: 0,0:49:57.72,0:50:01.82,Default,,0000,0000,0000,,Score abbildet. Wenn einer von euch eine\NIdee hat, bin ich da gerne für zu haben. Dialogue: 0,0:50:01.82,0:50:06.64,Default,,0000,0000,0000,,Also wie sieht das in der Praxis\Naus? Ich habe hier mal versucht, ein paar Dialogue: 0,0:50:06.64,0:50:10.66,Default,,0000,0000,0000,,Beispiele zu machen - ungefähr so. Das\NProblem ist halt, dass die Dimensionen Dialogue: 0,0:50:10.66,0:50:15.33,Default,,0000,0000,0000,,jeweils auf beiden Seiten subjektiv sind.\NDas heißt, für den einen oder anderen ist Dialogue: 0,0:50:15.33,0:50:20.77,Default,,0000,0000,0000,,es vielleicht okay, wenn er den Quellcode\Nnicht hat, solange es noch Wartungen gibt. Dialogue: 0,0:50:20.77,0:50:25.26,Default,,0000,0000,0000,,Also Leute, die Windows einsetzen, zum\NBeispiel. Für die ist es okay, Dialogue: 0,0:50:25.26,0:50:29.07,Default,,0000,0000,0000,,wenn es den Quellcode nicht\Ngibt. Aber das heißt eben, dass der Dialogue: 0,0:50:29.07,0:50:33.40,Default,,0000,0000,0000,,Score auch nicht einfach eine Zahl sein\Nkann, sondern er muss pro Dimensionen Dialogue: 0,0:50:33.40,0:50:38.30,Default,,0000,0000,0000,,einen Wert haben. Das sieht jetzt irgendwie\Nschwer zu lesen aus - und ist es auch. Dialogue: 0,0:50:38.30,0:50:43.17,Default,,0000,0000,0000,,Aber bei dem Geek Code hat sich\Nherausgestellt: wenn man so ein paar Tage Dialogue: 0,0:50:43.17,0:50:47.64,Default,,0000,0000,0000,,macht, dann gewöhnt man sich dran. Und ich\Nglaube, das ist eine ganz gute Idee. Ich Dialogue: 0,0:50:47.64,0:50:51.56,Default,,0000,0000,0000,,hab mir dann noch überlegt: "Eigentlich\Nbrauchst du jetzt noch eine schöne Domain." Dialogue: 0,0:50:51.56,0:50:56.08,Default,,0000,0000,0000,,Habe mir überlegt: "legacyco.de wäre\Nsuper!", aber die hat schon Xing gekauft. Dialogue: 0,0:50:56.08,0:50:59.11,Default,,0000,0000,0000,,{\i1}Publikum lacht{\i0} Dialogue: 0,0:51:00.04,0:51:05.85,Default,,0000,0000,0000,,Ja gut, das war so mein Vorschlag. Ich hoffe,\Nich kriege jetzt eine Menge gute Ideen, Dialogue: 0,0:51:05.85,0:51:09.89,Default,,0000,0000,0000,,was man da noch verbessern kann oder\Nvielleicht auch andere Vorschläge, die Dialogue: 0,0:51:09.89,0:51:14.28,Default,,0000,0000,0000,,keinen Score beinhalten. Vielleicht ist ja\Nauch der ganze Ansatz schon falsch. Aber Dialogue: 0,0:51:14.28,0:51:18.24,Default,,0000,0000,0000,,ich bin mir sicher, dass wir als Industrie\Njetzt mal loslegen müssen. Ich glaube, Dialogue: 0,0:51:18.24,0:51:22.55,Default,,0000,0000,0000,,reaktiv funktioniert das nicht, sondern\Nwir müssen gucken, wie wir im Dialogue: 0,0:51:22.55,0:51:26.82,Default,,0000,0000,0000,,Entwicklungsprozess erstens dafür sorgen,\Ndass die Leute die Entscheidungen, welche Dialogue: 0,0:51:26.82,0:51:30.65,Default,,0000,0000,0000,,Produkte sie reinziehen, welche\NDependencies sie reinziehen, auf Dialogue: 0,0:51:30.65,0:51:36.67,Default,,0000,0000,0000,,informierter Grundlage treffen können. Ich\Nhätte gern, dass es so einen Score gibt, Dialogue: 0,0:51:36.67,0:51:41.51,Default,,0000,0000,0000,,wo man dann auch als Entwickler einen\NAnreiz hat, das besser werden zu lassen, Dialogue: 0,0:51:41.51,0:51:46.43,Default,,0000,0000,0000,,weil man sehen kann: "An der Stelle\Nbin ich noch nicht der Standard, Dialogue: 0,0:51:46.43,0:51:49.61,Default,,0000,0000,0000,,der ich sein möchte." Ansonsten,\Nwir haben jetzt die Dialogue: 0,0:51:49.61,0:51:53.65,Default,,0000,0000,0000,,Saal-Mikrofone. Ich hoffe, die Signal-\NEngel sind schon so weit. Ansonsten, Fragen Dialogue: 0,0:51:53.65,0:51:58.07,Default,,0000,0000,0000,,nehme ich auch gern per Mail entgegen.\NVielen Dank für die Aufmerksamkeit. Dialogue: 0,0:51:58.07,0:52:09.90,Default,,0000,0000,0000,,{\i1}Applaus{\i0} Dialogue: 0,0:52:10.56,0:52:13.51,Default,,0000,0000,0000,,Herold: Dann können jetzt alle an die\NMikrofone gehen, die noch Fragen haben. Dialogue: 0,0:52:13.51,0:52:16.68,Default,,0000,0000,0000,,Wir haben direkt eine Frage aus dem\NInternet. Bitte! Dialogue: 0,0:52:16.68,0:52:20.78,Default,,0000,0000,0000,,Anonym: Gibt es Projekte im echten Leben,\Nwo das Problem mit der Komplexität deiner Dialogue: 0,0:52:20.78,0:52:24.50,Default,,0000,0000,0000,,Meinung nach richtig gemacht wurde? Und\Nwenn ja, wo findet man die? Dialogue: 0,0:52:24.50,0:52:30.91,Default,,0000,0000,0000,,Fefe: Sehr selten. Es gab einmal\Nvor ein paar Jahren gab es so einen Push, Dialogue: 0,0:52:30.91,0:52:34.66,Default,,0000,0000,0000,,wo viele Leute angefangen haben, Software\Nzu veröffentlichen und damit zu bewerben, Dialogue: 0,0:52:34.66,0:52:40.99,Default,,0000,0000,0000,,dass sie besonders klein oder minimal sein\Nsoll. Da bin ich auch einer von. Aber es Dialogue: 0,0:52:40.99,0:52:44.44,Default,,0000,0000,0000,,stellt sich halt raus, dass es auch andere\NProjekte gibt, die halt minimal dran Dialogue: 0,0:52:44.44,0:52:47.11,Default,,0000,0000,0000,,schreiben, weil sie finden, es sei\Nminimal, und das ist dann aber nicht Dialogue: 0,0:52:47.11,0:52:52.03,Default,,0000,0000,0000,,minimal. Zum Beispiel gab es neulich ein\NAnnouncement von einem Systemd-Clone in Dialogue: 0,0:52:52.03,0:52:56.83,Default,,0000,0000,0000,,Rust, und ich bin eigentlich ein Fan von\NRust und kein Fan von Systemd. Deswegen Dialogue: 0,0:52:56.83,0:53:01.99,Default,,0000,0000,0000,,fände ich da ein Ersatz schon\Ngut. Aber Rust erzeugt keine kleinen Dialogue: 0,0:53:01.99,0:53:06.37,Default,,0000,0000,0000,,Binaries, sondern da fallen so große\NMonster raus. Das heißt, das ist dann zwar Dialogue: 0,0:53:06.37,0:53:11.62,Default,,0000,0000,0000,,minimal im Sinne von, wie viel Features es\Nimplementiert, aber das Endprodukt ist Dialogue: 0,0:53:11.62,0:53:15.28,Default,,0000,0000,0000,,halt riesig groß. Da kann jetzt der Typ\Nnichts für, der das geschrieben hat. Das Dialogue: 0,0:53:15.28,0:53:19.18,Default,,0000,0000,0000,,ist im Moment noch ein Rust-Problem,\Nund da arbeiten die auch dran. Dialogue: 0,0:53:19.18,0:53:24.31,Default,,0000,0000,0000,,Aber "minmal", "Komplexität", "gering", \Nist eine subjektive Sache. Ich Dialogue: 0,0:53:24.31,0:53:28.36,Default,,0000,0000,0000,,persönlich habe immer die Software von\NDan[iel] Bernstein sehr gut gefunden, also Dialogue: 0,0:53:28.36,0:53:32.98,Default,,0000,0000,0000,,qmail und djbdns sind gute Beispiele\Ndafür, wie ein Code aussieht, der Dialogue: 0,0:53:32.98,0:53:38.80,Default,,0000,0000,0000,,Komplexität gut managed und klein hält.\NAber es ist ein kleines Feld. Man findet Dialogue: 0,0:53:38.80,0:53:44.97,Default,,0000,0000,0000,,da nicht so viele Beispiele von Software,\Ndie gut gemacht und unterkomplex ist. Dialogue: 0,0:53:46.50,0:53:52.17,Default,,0000,0000,0000,,Herold: Dann, am Mikrofon 10 hatte ich\Ngesehen. Kann das sein? Ich habe gerade Dialogue: 0,0:53:52.17,0:53:56.28,Default,,0000,0000,0000,,ein Signal bekommen... Nein? Alles klar.\NDa machen wir weiter mit Mikrofon zwei. Dialogue: 0,0:53:56.28,0:53:59.57,Default,,0000,0000,0000,,Bitte!\NAnonym: Vielen Dank für die spannenden Dialogue: 0,0:53:59.57,0:54:04.83,Default,,0000,0000,0000,,Ideen! Meine Frage geht so ein bisschen\Nauf: Ist das nicht zu freiwillig und zu Dialogue: 0,0:54:04.83,0:54:08.15,Default,,0000,0000,0000,,selbst auferlegt? Ist das nicht zu CDU-\Nmäßig als Lösung? Dialogue: 0,0:54:08.15,0:54:11.45,Default,,0000,0000,0000,,{\i1}Fefe lacht{\i0}\NWas hält nicht davon ab, einfach zu sagen Dialogue: 0,0:54:11.45,0:54:15.16,Default,,0000,0000,0000,,Ich bin M+++, obwohl ich das vielleicht\Ngar nicht bin? Dialogue: 0,0:54:15.16,0:54:20.40,Default,,0000,0000,0000,,Fefe: Das ist in der Tat ein Problem, und\Nich bin mir auch nicht sicher, wie und ob Dialogue: 0,0:54:20.40,0:54:24.60,Default,,0000,0000,0000,,man das lösen kann. Ich glaube aber, wenn\Nman anfängt und das so ein bisschen Dialogue: 0,0:54:24.60,0:54:29.62,Default,,0000,0000,0000,,losgeht, dass es dann auch ein Druck gibt\Naus der Community, der die Leute davon Dialogue: 0,0:54:29.62,0:54:34.83,Default,,0000,0000,0000,,abhält zu lügen. Also meine Erfahrung mit\NEntwicklern ist, dass die meisten Leute Dialogue: 0,0:54:34.83,0:54:38.85,Default,,0000,0000,0000,,eigentlich gute Menschen sind. Die\Nmöchten keinen Scheiß machen, niemand Dialogue: 0,0:54:38.85,0:54:43.16,Default,,0000,0000,0000,,möchte lügen. Das heißt, wenn du denen\Neine Gelegenheit gibst darzustellen, dass Dialogue: 0,0:54:43.16,0:54:46.94,Default,,0000,0000,0000,,das noch nicht fertig ist, dann werden sie\Ndas auch tun, im Allgemeinen. Außer du Dialogue: 0,0:54:46.94,0:54:50.27,Default,,0000,0000,0000,,hast jemanden, der es wirklich nicht\Nbeurteilen kann. Das Risiko kriegst du mit Dialogue: 0,0:54:50.27,0:54:54.46,Default,,0000,0000,0000,,dem Label nicht weg. Aber ich glaube, es\Nist schon mal ein guter Schritt, wenn wir Dialogue: 0,0:54:54.46,0:54:58.68,Default,,0000,0000,0000,,den den Entwicklern, die gerade dabei\Nsind, sich eine Dependancy ins Projekt zu Dialogue: 0,0:54:58.68,0:55:02.98,Default,,0000,0000,0000,,ziehen, irgendwas in die Hand geben, woran\Nsie erkennen können: "Ist das denn jetzt Dialogue: 0,0:55:02.98,0:55:07.26,Default,,0000,0000,0000,,ernst gemeint, oder war das hier nur so\Nein Spielprojekt?" Und ich glaube, das ist Dialogue: 0,0:55:07.26,0:55:10.89,Default,,0000,0000,0000,,ein guter Anfang. Aber ich weiß es\Nnatürlich auch nicht. Müssen wir Dialogue: 0,0:55:10.89,0:55:17.55,Default,,0000,0000,0000,,ausrollen, müssen wir gucken.\NHerold: Dann am Mikrofon 6, war zuerst. Dialogue: 0,0:55:17.55,0:55:24.45,Default,,0000,0000,0000,,Anonym: Das geht vielleicht auch jetzt in\Ndieselbe Richtung wie der Fragende vor Dialogue: 0,0:55:24.45,0:55:31.29,Default,,0000,0000,0000,,mir. Vielleicht. Könnte man wie so eine\NArt Rechtsprechungs-Instanz installieren? Dialogue: 0,0:55:31.29,0:55:37.70,Default,,0000,0000,0000,,Ich meine, kein Entwickler-Team aus Indien\Nwird das als Malus akzeptieren, wenn da Dialogue: 0,0:55:37.70,0:55:43.14,Default,,0000,0000,0000,,dran steht: Entwickler-Team in Indien hat\Njetzt das gemacht. Hältst du das für eine Dialogue: 0,0:55:43.14,0:55:46.84,Default,,0000,0000,0000,,sinnvolle Idee? Wie könnte man das\Numsetzen? Dialogue: 0,0:55:47.36,0:55:51.36,Default,,0000,0000,0000,,Fefe: Also es ging jetzt nicht um Indien,\Ndas hätte auch Massachusetts sein können, Dialogue: 0,0:55:51.36,0:55:54.72,Default,,0000,0000,0000,,sondern es geht darum, dass das Team halt\Nnicht der ist, der das geschrieben hat, Dialogue: 0,0:55:54.72,0:55:58.95,Default,,0000,0000,0000,,sondern irgendjemand hat es jetzt halt am\NBein, weil wir brauchten einen Maintainer. Dialogue: 0,0:55:58.95,0:56:04.29,Default,,0000,0000,0000,,Das ist immer ein Problem. Und natürlich\Nwird es auch irgendwie Betrüger geben. Dialogue: 0,0:56:04.29,0:56:09.63,Default,,0000,0000,0000,,Aber ich hoffe, dass man die dann erkennt,\Nweil die halt in allen Feldern das Beste Dialogue: 0,0:56:09.63,0:56:13.61,Default,,0000,0000,0000,,jeweils anklicken. Aber ich weiß es halt\Nauch nicht, das muss man ausprobieren. Dialogue: 0,0:56:13.61,0:56:17.48,Default,,0000,0000,0000,,Also meine Erfahrung ist, dass an anderer\NStelle Communities schon helfen, den Dialogue: 0,0:56:17.48,0:56:21.81,Default,,0000,0000,0000,,Standard hochzuziehen, wenn man zumindest\Neinfach mal anfängt und sagt: "Das Dialogue: 0,0:56:21.81,0:56:26.14,Default,,0000,0000,0000,,hier ist wichtig, da müssen wir drüber\Nreden." Und das ist, glaube ich, ein Dialogue: 0,0:56:26.14,0:56:31.40,Default,,0000,0000,0000,,Zeichen, wenn es so einen Code gibt, wo es\Nein Feld gibt, für: "Wie volatil ist denn Dialogue: 0,0:56:31.40,0:56:35.43,Default,,0000,0000,0000,,das?", und supervolatil ist nicht der\Nhöchste Score, dass man vielleicht Dialogue: 0,0:56:35.43,0:56:39.72,Default,,0000,0000,0000,,irgendwie auf die Art auch Ideen\Ntransportiert kriegt? Dass man sagt: Dialogue: 0,0:56:39.72,0:56:44.16,Default,,0000,0000,0000,,"Vielleicht musst du nochmal drüber\Nnachdenken, wie du dein Projekt aufziehst." Dialogue: 0,0:56:45.81,0:56:50.31,Default,,0000,0000,0000,,Herold: Dann bitte am Mikrofon 1.\NAnonym: Ich hab grad drüber Dialogue: 0,0:56:50.31,0:56:54.07,Default,,0000,0000,0000,,nachgedacht, ob das nicht so etwas\Nähnliches ist, wozu die Dialogue: 0,0:56:54.07,0:56:57.72,Default,,0000,0000,0000,,Lebensmittelindustrie so ein bisschen\Ngenötigt werden musste: Alle Inhaltsstoffe Dialogue: 0,0:56:57.72,0:57:02.27,Default,,0000,0000,0000,,reinzuschreiben, Allergene reinzuschreiben\Nund so. Und deshalb die Frage: Sollten wir Dialogue: 0,0:57:02.27,0:57:06.51,Default,,0000,0000,0000,,nicht möglichst bald als Follow-Up\Nentwickeln, so eine Art Software Code- Dialogue: 0,0:57:06.51,0:57:10.08,Default,,0000,0000,0000,,Ampel einzuführen. Und dann rot, gelb und\Ngrün daraus zu machen. Dialogue: 0,0:57:10.08,0:57:12.82,Default,,0000,0000,0000,,{\i1}Lacht{\i0}\NFefe: Ja, genau. Das war ja eigentlich die Dialogue: 0,0:57:12.82,0:57:16.16,Default,,0000,0000,0000,,Idee. Aber ich glaube, du kannst es nicht\Nrunterbrechen auf einen Score, weil Dialogue: 0,0:57:16.16,0:57:19.25,Default,,0000,0000,0000,,einige Teile davon subjektiv sind. Das ist\Nja bei Lebensmitteln eher nicht so, Dialogue: 0,0:57:19.25,0:57:22.93,Default,,0000,0000,0000,,sondern da vertraust du der Behörde. Die\NBehörde sagt irgendwie so und so viel Dialogue: 0,0:57:22.93,0:57:26.62,Default,,0000,0000,0000,,Quecksilber ist Maximum. Und wenn mehr,\Nist es nicht gut. Da fängst du nicht Dialogue: 0,0:57:26.62,0:57:30.08,Default,,0000,0000,0000,,an zu verhandeln. Aber wenn jetzt die\NSoftware kommt und sagt: "Wir ziehen Dialogue: 0,0:57:30.08,0:57:33.92,Default,,0000,0000,0000,,hier noch ein MySQL rein", und du weißt es\Nnicht besser, dann sagst du halt: Dialogue: 0,0:57:33.92,0:57:38.38,Default,,0000,0000,0000,,"Okay". Das ist eine Sache, die muss man\Nauch dem Endbenutzer überlassen. Weil du Dialogue: 0,0:57:38.38,0:57:43.38,Default,,0000,0000,0000,,willst ja auch nicht, zum Beispiel,\NOCaml benachteiligen, weil Dialogue: 0,0:57:43.38,0:57:46.96,Default,,0000,0000,0000,,da noch keiner von gehört hat. Und dass\Ndie Leute sagen: "Ja wie, da gibts jetzt Dialogue: 0,0:57:46.96,0:57:51.14,Default,,0000,0000,0000,,keinen Score für?" Das ist halt nicht\NC. Ist es jetzt besser oder nicht? Das Dialogue: 0,0:57:51.14,0:57:55.22,Default,,0000,0000,0000,,muss ja offen genug bleiben. Deswegen\Nglaube ich auch nicht an Schiedsgerichte Dialogue: 0,0:57:55.22,0:57:58.89,Default,,0000,0000,0000,,und irgendwie Organisationen, die\NLabels vergeben. Das ist doch nie gut Dialogue: 0,0:57:58.89,0:58:02.85,Default,,0000,0000,0000,,ausgegangen, in meiner Erfahrung. Ich glaube,\Ndas muss aus der Community kommen, Dialogue: 0,0:58:02.85,0:58:06.42,Default,,0000,0000,0000,,und das muss so laufen, dass man das\NGefühl hat, ich tue jetzt hier etwas Dialogue: 0,0:58:06.42,0:58:09.75,Default,,0000,0000,0000,,Besseres, und ich kann den Erfolg sehen,\Nweil mein Score jetzt hier besser wird. Dialogue: 0,0:58:09.75,0:58:12.76,Default,,0000,0000,0000,,Ich kann jetzt hier ++ schreiben. Ist\Njetzt die Hoffnung. Ich weiß auch nicht, Dialogue: 0,0:58:12.76,0:58:17.68,Default,,0000,0000,0000,,ob es geht.\NHerold: Dann bitte nochmal Mikrofon 2. Dialogue: 0,0:58:17.68,0:58:22.13,Default,,0000,0000,0000,,Anonym: Mir hat eine Dimension gefehlt,\Ndie ein bisschen in Wartungen passt, aber Dialogue: 0,0:58:22.13,0:58:26.17,Default,,0000,0000,0000,,nicht perfekt. Wir sind ja hier ein Raum\Nvoller Leute, die Sachen selbst in die Hand Dialogue: 0,0:58:26.17,0:58:29.49,Default,,0000,0000,0000,,nehmen. Wie leicht ist es denn\Nmitzumachen? Wie leicht ist es Bugs selbst Dialogue: 0,0:58:29.49,0:58:33.35,Default,,0000,0000,0000,,im Upstream zu fixen? Muss man erstmal einen\NVertrag unterschreiben, wo man alle Rechte Dialogue: 0,0:58:33.35,0:58:37.14,Default,,0000,0000,0000,,abtritt, oder? Das ist, glaube ich,\Nauch noch eine wichtige Dimension. Dialogue: 0,0:58:37.14,0:58:41.25,Default,,0000,0000,0000,,Fefe: Das stimmt. Ich habe das versucht\Nabzubilden, über den: "Ich hab den Code Dialogue: 0,0:58:41.25,0:58:45.46,Default,,0000,0000,0000,,und darf ihn ändern." Aber das Problem\Nist, dass das derjenige, der das Projekt Dialogue: 0,0:58:45.46,0:58:49.02,Default,,0000,0000,0000,,verwaltet, üblicherweise nicht gut\Nbeurteilen kann, sondern der wird immer Dialogue: 0,0:58:49.02,0:58:53.01,Default,,0000,0000,0000,,sagen: "Ja, ist alles total offen hier".\NDas geht, glaube ich, nicht über so einen Dialogue: 0,0:58:53.01,0:58:55.98,Default,,0000,0000,0000,,Score. Aber man kann es natürlich\Nversuchen. Dialogue: 0,0:58:57.22,0:59:01.80,Default,,0000,0000,0000,,Herold: Dann bitte Mikrofon 8.\NAnonym: Ist fehlendes IPv6 für dich ein Dialogue: 0,0:59:01.80,0:59:04.100,Default,,0000,0000,0000,,Bug oder ein nicht implementiertes\NFeature? Dialogue: 0,0:59:04.100,0:59:10.34,Default,,0000,0000,0000,,Fefe: Das ist eine der subjektiven Fragen.\NFür mich persönlich ist es ein Fehler, Dialogue: 0,0:59:10.34,0:59:13.82,Default,,0000,0000,0000,,wenn kein IPv6 drin ist. Aber es gibt\Ngenug Firmen da draußen, die sagen: "Das Dialogue: 0,0:59:13.82,0:59:17.27,Default,,0000,0000,0000,,haben wir eh nicht."\NAnonym: Danke. Dialogue: 0,0:59:17.27,0:59:21.80,Default,,0000,0000,0000,,Herold: Dann bitte Mikrofon 7.\NAnonym: Die Intention, dass die Community Dialogue: 0,0:59:21.80,0:59:26.94,Default,,0000,0000,0000,,das schon richten wird. Du hattest CVSS\Nals relativ positives Beispiel Dialogue: 0,0:59:26.94,0:59:31.62,Default,,0000,0000,0000,,dargestellt. Vor fünf Jahren war\NHeartbleed in OpenSSL, das hat einen CVSS- Dialogue: 0,0:59:31.62,0:59:36.52,Default,,0000,0000,0000,,Bug von 5,0 gehabt, und Bruce Schneier\Nkommentierte: "Auf einer Skala von 1 bis 10 Dialogue: 0,0:59:36.52,0:59:42.04,Default,,0000,0000,0000,,ist das Wert 11." CVSS ging gerade bis 10.\NIch sehe nicht, dass das so klappen kann, Dialogue: 0,0:59:42.04,0:59:48.44,Default,,0000,0000,0000,,und ich finde es gut, dass du aufgezeigt\Nhast, wie komplex das ist, denn wir haben Dialogue: 0,0:59:48.44,0:59:54.31,Default,,0000,0000,0000,,halt keinen Standard. Was bedeutet denn\Nzum Beispiel eben "minimal"? Oder wenn eine Dialogue: 0,0:59:54.31,0:59:59.23,Default,,0000,0000,0000,,Zwei-Faktor-Authentifizierungs-Umgehung\Nein Sicherheitsbug ist, ist dann jede Dialogue: 0,0:59:59.23,1:00:01.97,Default,,0000,0000,0000,,Anwendung mit einer Ein-Faktor-\NAuthentifizierung automatisch ein Dialogue: 0,1:00:01.97,1:00:05.16,Default,,0000,0000,0000,,Sicherheitsbug?\NFefe: Ja, du hast völlig recht, das sind Dialogue: 0,1:00:05.16,1:00:10.75,Default,,0000,0000,0000,,offene Forschungsfragen, wie man\Ndas lösen soll. Ich habe da auch keine Dialogue: 0,1:00:10.75,1:00:15.68,Default,,0000,0000,0000,,guten Antworten. Die die Heartbleed Sache\Nhätte man vielleicht klären können, indem Dialogue: 0,1:00:15.68,1:00:19.08,Default,,0000,0000,0000,,man sagt: "Welche Zusagen machen wir\Ndenn?" Wenn die Zusagen gebrochen sind, Dialogue: 0,1:00:19.08,1:00:22.79,Default,,0000,0000,0000,,dann ist automatisch Totalschaden. Aber\Nwir haben halt häufig - ich habe das ja auf Dialogue: 0,1:00:22.79,1:00:25.73,Default,,0000,0000,0000,,einer Folie gehabt - Projekte,\Ndie klingen so, als wenn sie ein Dialogue: 0,1:00:25.73,1:00:29.39,Default,,0000,0000,0000,,Security Feature implementieren. Und wenn\Ndu sie dann fragst, welche Zusagen sie Dialogue: 0,1:00:29.39,1:00:33.53,Default,,0000,0000,0000,,machen, kommt dann halt: "Ja ne, gar\Nkeine. Wer mich einsetzt, ist selber Dialogue: 0,1:00:33.53,1:00:37.31,Default,,0000,0000,0000,,schuld." Und da müssen irgendwie von\Nwegkommen. Ich glaube, das geht nur, wenn Dialogue: 0,1:00:37.31,1:00:41.63,Default,,0000,0000,0000,,man bei den Leuten so ein bisschen das\NEmpfinden schärft dafür, dass sie gerade Dialogue: 0,1:00:41.63,1:00:45.65,Default,,0000,0000,0000,,die Legacy von morgen schreiben. Die Leute\Ntun immer so, als wenn Legacy vom Himmel Dialogue: 0,1:00:45.65,1:00:49.43,Default,,0000,0000,0000,,fällt. Das haben wir geerbt. Ne, du\Nschreibst gerade halt nicht von heute die Dialogue: 0,1:00:49.43,1:00:54.38,Default,,0000,0000,0000,,Legacy, sondern die von morgen.\NHerold: Dann gab es noch eine Frage aus Dialogue: 0,1:00:54.38,1:00:57.56,Default,,0000,0000,0000,,dem Internet, bitte!\NAnonym: Ja, bei deinem Bewertungsschema: Dialogue: 0,1:00:57.56,1:01:02.15,Default,,0000,0000,0000,,Wie soll das bei Projekten funktionieren,\Nbei denen es gar keinen Owner mehr gibt, Dialogue: 0,1:01:02.15,1:01:08.03,Default,,0000,0000,0000,,der das dranschreiben könnte?\NFefe: Naja, irgendwann, wenn sich das gut Dialogue: 0,1:01:08.03,1:01:11.21,Default,,0000,0000,0000,,genug durchsetzt, ist die Abwesenheit\Neines Labels an sich schon ein schlechtes Dialogue: 0,1:01:11.21,1:01:16.28,Default,,0000,0000,0000,,Zeichen. Aber das wird natürlich ewig\Ndauern, bis wir so weit sind. Also ist nur Dialogue: 0,1:01:16.28,1:01:20.00,Default,,0000,0000,0000,,ein Ansatz. Das kann ich auch nicht lösen.\NWenn es niemanden gibt, der das Label dran Dialogue: 0,1:01:20.00,1:01:24.08,Default,,0000,0000,0000,,klebt, kann man vielleicht irgendwie eine\NCommunity-Entscheidung auf GitHub machen. Dialogue: 0,1:01:24.08,1:01:27.47,Default,,0000,0000,0000,,Eine Verurteilung durch den Mob?\N{\i1}Lachen{\i0} Dialogue: 0,1:01:28.69,1:01:33.53,Default,,0000,0000,0000,,Herold: Dann bitte am Mikrofon 4.\NAnonym: Das sind jetzt doch relativ grobe Dialogue: 0,1:01:33.53,1:01:36.38,Default,,0000,0000,0000,,Kategorien. Und gerade bei Enterprise\NSoftware als Entwickler wirst du es jetzt Dialogue: 0,1:01:36.38,1:01:39.53,Default,,0000,0000,0000,,schwer schaffen, irgendwie bei "Lizenz" eine\NKategorie hochzukommen. Ist denn deine Dialogue: 0,1:01:39.53,1:01:42.80,Default,,0000,0000,0000,,Hoffnung, dass tatsächlich Entwickler dazu\Nangeregt werden, existierende Software zu Dialogue: 0,1:01:42.80,1:01:45.99,Default,,0000,0000,0000,,verbessern oder mehr in die Richtung, wenn\Nich jetzt eine neue Software mach, dass Dialogue: 0,1:01:45.99,1:01:48.83,Default,,0000,0000,0000,,ich mir mal Gedanken mach: "Was will ich\Nüberhaupt erreichen und was für Garantien Dialogue: 0,1:01:48.83,1:01:52.07,Default,,0000,0000,0000,,gebe ich?"\NFefe: Das richtet sich vor allem an Dialogue: 0,1:01:52.07,1:01:57.26,Default,,0000,0000,0000,,Hobbyisten im Moment, weil im Enterprise\NUmfeld sind die sind die Einschränkungen Dialogue: 0,1:01:57.26,1:02:01.22,Default,,0000,0000,0000,,der Umgebung andere. Da wirst du halt\Nbezahlt von der Firma. Und der Typ, der Dialogue: 0,1:02:01.22,1:02:05.18,Default,,0000,0000,0000,,dich bezahlt, entscheidet, wofür du deine\NZeit ausgibt. Und da hast du gar nicht die Dialogue: 0,1:02:05.18,1:02:08.03,Default,,0000,0000,0000,,Option, jetzt rumzulaufen und den alten\NCode besser zu machen, weil es einen Dialogue: 0,1:02:08.03,1:02:11.96,Default,,0000,0000,0000,,riesigen Backlog an Sachen gibt, die du\Nnoch machen musst. Besonders so in Agile Dialogue: 0,1:02:11.96,1:02:17.27,Default,,0000,0000,0000,,Umfeldern wird ja sozusagen jede freie\NMinute noch rausoptimiert. Und da stellt Dialogue: 0,1:02:17.27,1:02:20.24,Default,,0000,0000,0000,,sich die Frage gar nicht, ob ich jetzt\Nrumlaufe und alten Code besser mache. Dialogue: 0,1:02:20.24,1:02:23.27,Default,,0000,0000,0000,,Daher glaube ich, wir müssen über Open\NSource kommen, und da hätte ich früher Dialogue: 0,1:02:23.27,1:02:27.50,Default,,0000,0000,0000,,nicht viel Hoffnung gehabt. Aber Open\NSource hat gewaltigen Einfluss ausgeübt Dialogue: 0,1:02:27.50,1:02:32.76,Default,,0000,0000,0000,,auf Enterprise Umgebung. Das merkt man\Nvielleicht aus der Open Source Seite noch Dialogue: 0,1:02:32.76,1:02:37.50,Default,,0000,0000,0000,,nicht so. Aber wenn du in Enterprise\NUmgebungen unterwegs bist. Fast alle Dialogue: 0,1:02:37.50,1:02:41.91,Default,,0000,0000,0000,,größeren Projekte sind alle irgendwie\Ninternetbasiert inzwischen. Selbst Dialogue: 0,1:02:41.91,1:02:46.92,Default,,0000,0000,0000,,Appliances haben alle Internet,\Nund das ist dann zu bestimmt Dialogue: 0,1:02:46.92,1:02:52.05,Default,,0000,0000,0000,,60-80% Open Source, je nachdem, in\Nwelcher Branche man da unterwegs ist. Open Dialogue: 0,1:02:52.05,1:02:55.98,Default,,0000,0000,0000,,Source hat einen großen Einblick, und als Open\NSource anfing zu sagen: "Okay, wir Dialogue: 0,1:02:55.98,1:02:59.67,Default,,0000,0000,0000,,müssen agile werden", hat Enterprise\Nnachgezogen. Daher, glaube ich, werden wir Dialogue: 0,1:02:59.67,1:03:03.21,Default,,0000,0000,0000,,es schaffen, als Open Source hier\NStandards zu setzen, dass es auch in Dialogue: 0,1:03:03.21,1:03:06.11,Default,,0000,0000,0000,,Enterprise rüberschwappt, das ist die\NHoffnung... Dialogue: 0,1:03:06.82,1:03:11.86,Default,,0000,0000,0000,,{\i1}36C3 Musik{\i0} Dialogue: 0,1:03:11.86,1:03:40.00,Default,,0000,0000,0000,,Untertitel erstellt von c3subtitles.de\Nim Jahr 2020. Mach mit und hilf uns!