GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Einige schlagen vor, dass der Open-Source-Treiber von Nvidia nicht ausreicht. Sie liegen falsch, und hier ist der Grund

Kommentar:Nvidia hat Wellen geschlagen, indem es die Open Source des Linux-Kernel-Treibers für seine GPUs ankündigte, obwohl das Unternehmen den größten Teil seines Treibercodes als Closed Source behielt. Warum das immer noch ein Gewinn ist.

In einem klassischen halbleeren/halbvollen Glas-Moment veröffentlichte Nvidia einen Open-Source-Kernel-Treiber für seine GPUs. Chris Duckett von ZDNet hat detailliert erklärt, warum Nvidias Open-Source-Moment gut für Linux und gut für Nvidia war, aber ich möchte auf die Beschwerde des Linux-Entwicklers Hector Martin eingehen, dass „ihr ,Treiber' nicht quelloffen gemacht wurde“, weil Nvidia „die meisten [der Driver Smarts] in die Firmware und machte den Aufruf des Open-Source-Treibers darin.“ Selbst wenn wir Martins negative, halbleere Sicht auf die Nachrichten akzeptieren (und Jens Axboe, Linux-Block-IO-Subsystem-Maintainer, nicht), gibt es auch eine positivere, halbvolle Art, sie zu lesen.

Open Source:Unbedingt lesen

Die positivere Einstellung ist, dass Open Source nicht einfach ist und Unternehmen, die neu in Open Source sind, Zeit brauchen, um es zu beherrschen. Geduld ist gefragt.

Was ist also passiert?

Andere haben intelligenter als ich über Nvidias Geschichte mit Open Source geschrieben, aber hier ist ein tl;dr:es ist nicht gut. Zumindest nicht mit der Linux-Community. Sie verdienen sich nicht ohne Grund einen „schlimmstes Einzelunternehmen, mit dem wir je zu tun hatten“ von Linux-Schöpfer Linus Torvalds. Angesichts der unruhigen Vergangenheit ist es vielleicht nicht verwunderlich, dass Michael Larabel über „diesen superaufregenden Meilenstein, auf den viele von uns seit vielen Jahren hoffen“ jubelte.

Aber was genau hat Nvidia Open Source?

Christian Schaller, Director for Desktop, Graphics, Infotainment bei Red Hat, lieferte einen kritischen, objektiven Rückblick. Aber kein desinteressierter. Wie er schrieb, „[A] ist der einzige Linux-Anbieter mit einem bedeutenden technischen Fußabdruck bei GPUs, wir [Red Hat] arbeiten seit einigen Jahren eng mit Nvidia zusammen und versuchen nun, den Boden für den Wechsel von Nvidia zu einem Modell mit vorzubereiten ein Open-Source-Kernel-Treiber.“ Mit anderen Worten:Das war keine Entscheidung, die an einem Tag getroffen wurde.

Es war auch keine Entscheidung, alles Open Source zu machen. Wie Schaller einräumte, „ist [ein] großer Teil eines modernen Grafiktreibers in der Firmware und den Userspace-Komponenten zu finden, und diese sind immer noch Closed Source.“ Martin nimmt sich Zeit, um die relative Größe dessen zu katalogisieren, was Open Source war und was zurückgehalten wurde, aber für Schaller ist die wesentliche Neuigkeit, dass „es bedeutet, dass wir jetzt einen Nvidia-Kerneltreiber haben, der in der Lage sein wird, nur die GPL zu nutzen APIs im Linux-Kernel.“ Nein, es gilt nicht für ältere Nvidia-GPUs vor 2018. Und ja, es wird Jahre dauern, bis die Auswirkungen dieser Entscheidung (und ihrer Richtung) bei den meisten Entwicklern wirklich angekommen sind.

In all dem hat Martin vielleicht sachlich Recht („es wurde keine Freiheit gewonnen, für Leute, die sich darum kümmern. Die ~gleiche Menge an Code ist geschlossen“), auch ohne in den Implikationen richtig oder zumindest nicht optimistisch zu sein ( z. B. bemerkte Schaller, dass „es im Laufe der Zeit einen Weg bietet, die Unterstützung von Nvidia-Hardware radikal zu vereinfachen“.) Diese Implikationen sind, dass Nvidia gerade einen bedeutenden Schritt in Richtung gemacht hat Open Source, anstatt davon weg.

Gutschrift für Absichten

Denken Sie an Schallers Kommentar, dass dieser Schritt seit Jahren diskutiert wird zwischen Red Hat und Nvidia? Wenn es für Nvidia ein leichter Sprung wäre, wäre er nach diesem ersten Treffen erledigt gewesen. Daher war Axboe aufschlussreich, als er darauf hinwies:„Hat [es] das Öffnen der Treiberquelle unterstützt, indem mehr Bits in die Firmware geschoben wurden? Sicher ja, offensichtlich.“ Martin erwartete nicht überraschend, dass mehr Treiber aus Open Source stammen würden, aber Axboe hat mit ziemlicher Sicherheit recht, wenn es nicht vorschlägt Die Beibehaltung des gesamten Codes im Treiber hat es Nvidia erleichtert, überhaupt den Open-Source-Schritt zu gehen.

Warum nicht alles Open Source? Timur Kristóf, Mitarbeiter von Linux-Grafiksystemen, nannte einen Grund:„Die Hauptsorge besteht normalerweise darin, dass Konkurrenten „Geschäftsgeheimnisse“ von Open-Source-Treibern oder anderen Implementierungsdetails erfahren können, die das Unternehmen lieber geheim halten möchte.“ Wir können zustimmen oder nicht zustimmen, dass Unternehmen diese Bedenken haben sollten, aber für ein Unternehmen wie Nvidia, das traditionell außerhalb von Open Source operiert, muss der interne Kampf, um den Treiber geschlossen zu halten, kolossal gewesen sein.

Auf jeden Fall ist es fair, von Nvidia und anderen Unternehmen mehr zu verlangen. Aber lassen Sie uns auch dem Menschen gegenüber empathisch sein Faktoren hinter den Kulissen:Angst, Konkurrenten einen Vorteil zu schenken (ob wir glauben, dass dies eine begründete Sorge ist oder nicht), Angst vor schlechtem Open-Sourcing (Unternehmen werden regelmäßig von Open-Source-Zuschauern verärgert, weil sie ihre bevorzugten Lizenzierungs- und Governance-Modelle nicht befolgen , etc.) und jede Menge anderer Ängste. Anstatt Nvidia dafür zu tadeln, dass es nicht weit genug geht, sollten wir feiern, wie weit es gekommen ist.

Offenlegung:Ich arbeite für MongoDB, aber die hier geäußerten Ansichten sind meine .





Quelllink


Linux
  1. Passwort-Hashing und warum wir es brauchen

  2. Linux – Warum verwenden wir Su – und nicht nur Su?

  3. Laufendes Skript mit „. “ Und mit „Quelle“?

  4. $bashpid und $$ unterscheiden sich in manchen Fällen?

  5. Nvidia-Treiber aktualisiert – Mischversionen von 304.88 und 319.32?

Warum sich meine öffentliche Bibliothek für Linux und Open Source entscheidet

Eine Einführung in Diffs und Patches

Warum sind einige Emoji B&W und andere zu groß?

Wann wird ein Signal behandelt und warum frieren einige Informationen ein?

Warum ist Port 1111 offen und ist das sicher?

Warum und wie sind einige gemeinsam genutzte Bibliotheken lauffähig, als wären sie ausführbar?