Wie trägt die GNU-Softwareentwicklung wirtschaftlich bei?


10

Ich entschuldige mich, wenn diese Frage nicht zum Thema gehört, aber gleichzeitig eine Wirtschafts- und eine Programmierfrage ist. Wenn es zu einer anderen SE-Gemeinde gehen sollte, geben Sie mir bitte an.

Theoretisch wird GNU-Software ausschließlich von Freiwilligen in ihrer Freizeit oder von Unternehmen entwickelt, die freiwillig Programmierer finanzieren, um GNU-Software zu entwickeln (indem sie Einnahmen aus einem anderen Sektor ihrer Tätigkeit verwenden).

Ich verstehe, wie es für kleine Projekte, die an ein paar regnerischen Wochenenden von einer einzelnen Person durchgeführt werden können (sagen wir zum Beispiel ein Sudoku-Spiel), perfekt funktionieren kann, denn schließlich ist Computerprogrammierung ein äußerst lustiges und lohnendes Hobby. und ich habe kein Problem damit, Leute zu sehen, die in ihrer Freizeit kleine oder mittlere Programme entwickeln und sie der Welt mitteilen.

Das Problem ist, dass dies für größere Programme aus folgenden Gründen extrem schlecht skaliert:

  1. So unterhaltsam das Programmieren auch ist, je größer das zu implementierende Projekt wird, desto schneller wächst die Zeit für die Implementierung der gewünschten Funktionalität. Die Entwicklung eines größeren Programms nimmt unglaublich viel Zeit in Anspruch. Beispielsweise kann es leicht 15 Jahre Freizeit und Urlaubszeit dauern, bis eine Person ein Betriebssystem programmiert, und wenn seine Software veröffentlicht wird, ist es völlig veraltet .
  2. Da andere Leute Programme auf eine andere Weise schreiben, als Sie es getan hätten, nimmt das Lesen und Verstehen des Codes eines anderen viel Zeit in Anspruch, in den meisten Fällen genauso viel wie das Schreiben Ihres eigenen Codes von Grund auf neu. Das Ändern des Codes einer anderen Person und der Versuch, ihn zu verbessern, wie es durch die GNU-Philosophie gefördert wird, ist fast genauso zeitaufwändig wie das Entwickeln eines eigenen Klons des genannten Programms mit der Funktionalität, die Sie hinzufügen möchten.
  3. Sobald zwei oder mehr Personen zusammenarbeiten müssen, um ein größeres Programm zu entwickeln, entstehen viele Entscheidungsprobleme, die bei einem Projekt mit nur einem Entwickler niemals auftreten würden. Das Ergebnis ist, dass zum Beispiel, wenn eine Gruppe von 2 Programmierern für ein Projekt zusammenarbeitet, dessen Erstellung für einen einzelnen Mann 10 Jahre dauern würde, sie es in 5 Jahren nicht schaffen, aber wahrscheinlich in 8 Jahren.
  4. Wenn sich Personen, die für dasselbe Projekt zusammenarbeiten, ausschließlich im Internet treffen, kann ein Mitglied des Projekts leicht plötzlich verschwinden (entweder weil er das Interesse verloren hat oder weil er physisch nicht mehr im Internet sein kann), wodurch die Zusammenarbeit gleichmäßig wird Schwerer

Obwohl ich genau verstehe, wie einfache Programme mit der GNU-Denkweise entwickelt werden können, sehe ich absolut nicht, wie so große Programme wie GNU / Linux oder gcc mit diesem Modell möglich sind. gcc besteht aus rund 7 Millionen Codezeilen. Ich weiß, dass Codezeilen nicht viel bedeuten, da in einer späteren Phase eines Projekts der produktivere Programmierer tatsächlich Codezeilen entfernt (Vereinfachung und / oder Optimierung des Projekts), aber dies gibt einen Überblick darüber, wie umfangreich Code ist ein projekt gcc ist.

Theoretisch kann also jeder in seiner Freizeit gcc frei modifizieren, aber in der Praxis? Es wurde von sehr professionellen Leuten als Job entwickelt, nicht als Hobby. Jeder, der einen Compiler zum Hobby macht, wird irgendwann aufgeben, da sich Kosten / Nutzen nicht lohnen:

  • Die Entwicklung eines großen Programms ist ein langfristig so großes Projekt, dass sie ihre Freizeit lieber für andere Aktivitäten nutzen möchten, die kurzfristig lohnender oder angenehmer sind
  • Wenn sie sowieso ein großes Programm entwickeln würden, würden sie es lieber für ein Unternehmen tun, das sie bezahlt, als es kostenlos zu tun

Um die Leute langfristig für die Entwicklung eines Programms wie GNU / Linux, gcc oder Open Office zu interessieren, sollte es sich lohnen. Meine Frage lautet also: Warum tragen Menschen zu einem großen GNU-Projekt bei, wenn sie kein Gehalt dafür bekommen?


Könnten Sie einige Beweise für die Punkte 2, 3 und 4 liefern? Ich bin mit Punkt 2 am meisten nicht einverstanden, aber 3 und 4 sind auch interessante Gesichtspunkte, die ich bei der Entwicklung von Open-Source-Software nicht wirklich erlebt habe. Ich werde mit meinen eigenen Erfahrungen aktualisieren, wenn ich Zeit habe
christopherlovell

Nun 2 hängt stark von der Programmiersprache und dem Aufwand für die Dokumentation der Programmarchitektur ab. Was die Beweise
betrifft

@Bregalad zwei Ihrer Beispiele in Ihrem Kommentar sind über 9 Jahre alt. Open-Source-Software hat seitdem einen langen Weg zurückgelegt, der durch die Weiterentwicklung des Webs und die Popularisierung von Tools wie Git ermöglicht wurde, die das Teilen und Entwickeln von gutem, lesbarem Code erheblich erleichtern.
Christopherlovell

1
@Bregalad In Ihrem anderen Beispiel von SE / Programmers bestreitet fast jede hoch bewertete Antwort Ihren zweiten Grund für eine größere Komplexität, nämlich dass das Lesen von Code nicht unbedingt schwieriger ist als das Schreiben. Der letzte Satz unter diesem Punkt, dass das Klonen eines Projekts von Grund auf einfacher sein könnte als das Hinzufügen, setzt voraus, dass Sie wissen, ohne den Code zu lesen, wie es funktioniert und wie der Algorithmus neu erstellt wird. Ich kann Ihnen aus Erfahrung sagen, dass es viel schwieriger ist, einen eleganten und performanten Algorithmus für ein Problem zu erfinden, als ihn zu codieren :)
christopherlovell

Antworten:


5

Zunächst möchte ich sagen, dass ich kein Programmierer bin und noch nie zu einem Open Source-Projekt beigetragen habe. Ich habe mich jedoch schon lange für Open Source interessiert und glaube, dass ich die allgemeinen Konzepte von Open Source und deren Funktionsweise verstehe.

Zunächst möchte ich sagen, dass Open Source nicht bedeutet, dass Sie mit der Software kein Geld verdienen können. Es bedeutet nur, dass der Code öffentlich verfügbar sein muss. Unternehmen wie Red Hat und Canonical verdienen Geld nicht mit dem Verkauf der Software, sondern mit dem Verkauf ihres Fachwissens. Wenn ich nicht möchte, dass meine Firma einen Linux-Server betreibt, kann ich die Software kostenlos herunterladen. Aber ich brauche jemanden, der es installiert, einrichtet und unterstützt. Hier kommt der Spezialist von zB Red Hat ins Spiel und verdient Geld. Für das Unternehmen ist dies sinnvoll, da die Einstellung eines eigenen Spezialisten wahrscheinlich viel teurer wäre. Dies gibt diesen Unternehmen auch einen Anreiz, den Kodex beizutragen. Sie möchten, dass ihr Produkt gut ist, damit die Menschen es und ihre Dienste nutzen können.

Aber lassen Sie uns über Ihre Punkte zur Skalierbarkeit sprechen.

  1. Das Coole an Open Source ist, dass Sie nicht alles von Grund auf neu entwickeln müssen. Ein Betriebssystem wie Ubuntu wurde nicht von einer einzelnen Person erstellt. Stattdessen haben viele Leute zu verschiedenen Teilen des Systems beigetragen (eigentlich denke ich, dass es schwierig wäre, eine Person mit allen Fähigkeiten zu finden, um ein effektives Betriebssystem zu erstellen). Zum Beispiel entwickeln die Ubuntu-Leute den Linux-Kernel nicht. Sie verwenden nur eine von anderen entwickelte. Was ohne Open Source wahrscheinlich unmöglich war, ist jetzt möglich, weil man auf die Arbeit anderer Menschen aufbauen kann.

  2. Das Lesen und Verstehen anderer Codes ist nicht zeitaufwändiger als das Schreiben eigener Codes. Zumindest nicht in vielen Fällen. Darüber hinaus müssen Sie nicht den gesamten von Ihnen verwendeten Code verstehen. Wenn ich ein Programm für Linux schreiben möchte, muss ich nicht verstehen, wie alle Teile in diesem Programm im Detail funktionieren. Ich muss nur wissen, was sie tun. Ich kann diese Teile dann nehmen und mit anderen Teilen zusammenfügen, um mein Programm zu erstellen. Oder ich kann ein vorhandenes Programm nehmen und es an meine Bedürfnisse anpassen.

  3. Tools wie Git und Github machen die Zusammenarbeit unglaublich einfach. Sie erhalten nur den Code und nehmen Änderungen vor. Sie senden sie dann an die für das Projekt verantwortliche Person. Wenn es gut ist, wird es akzeptiert.

  4. Menschen gehen die ganze Zeit in Projekte hinein und aus ihnen heraus. Aber wenn das Projekt beliebt ist, wird genug daran arbeiten.

Hier sind einige Gründe, warum Open Source funktioniert.

  1. Ich denke, der Hauptgrund, warum Open Source-Software so gut geworden ist, ist, dass die große Anzahl von Leuten, die an einem Projekt arbeiten, ein Maß an Fachwissen sicherstellt, das ich in einem kleinen Entwicklerteam nur schwer archivieren kann. Obwohl es seltsam erscheinen mag, scheint diese einzige Tatsache alle negativen Probleme aufzuwiegen, die bei Open Source auftreten können.

  2. In der kommerziellen Programmierung stirbt das Projekt mit der Firma. Nehmen wir an, Sie haben eine Software von einem Unternehmen, das dann schließt. Dann sind Sie fertig, da Sie keine Updates und Fehlerbehebungen erhalten und neue Software benötigen, um Schritt zu halten. Mit Open Source können Sie einfach ein anderes Unternehmen finden, das Ihre Software unterstützt oder selbst entwickelt.

Wenn Sie immer noch interessiert sind, empfehle ich Ihnen, die Kathedrale und den Basar zu lesen


Ich bin mit nichts von dem, was Sie gesagt haben, nicht einverstanden, aber ich kann die Antwort wirklich nicht akzeptieren, weil sie meine Frage nicht beantwortet. Sie scheinen zu versuchen, mich davon zu überzeugen, wie großartig GNU ist, aber es nützt nichts, weil ich schon seit langer Zeit überzeugt bin. Sie unterschätzen auch ernsthaft die Schwierigkeiten, den Code eines anderen zu ändern und anzupassen sowie mehrere Personen zu koordinieren, die an einem Softwareprojekt arbeiten. Ich hätte die Probleme in meinen Fragen vielleicht übertrieben, aber es kann trotzdem ein großes Problem sein. Ich weiß immer noch nicht, wie die große GNU-Software wirtschaftlich funktioniert .
Bregalad

Vielleicht sollten Sie es auf stackoverflow posten und eine Antwort von einigen echten Programmierern erhalten. Sie können Ihnen eine Antwort geben, die auf echten Erfahrungen basiert.
Rud Faden

1
Ihr Standpunkt zu Red Hat steht, aber nach einem kurzen Blick auf ihre Stellenvorschläge beziehen sich die meisten auf Vertrieb, Marketing und technischen Support, und nur ein kleiner Prozentsatz ist für die Entwicklung offen. (Dies gibt einen guten Hinweis darauf, woher ihr Einkommen stammt und wie ihre Einnahmen verteilt sind). Außerdem würde diese Frage wahrscheinlich als nicht thematisch auf Stapelüberlauf markiert sein (obwohl ich die Hilfe erneut lesen muss, um sicherzugehen)
Bregalad

@Bregalad Aber selbst wenn Sie den Code eines anderen ändern; Sie haben eine Community, auf die Sie zurückgreifen können, um sie zu fragen, wie etwas funktioniert. (Dies kann ein Konzept sein, das proprietären Softwareentwicklern oder sogar Unternehmen im Allgemeinen fremd ist, da der Fokus auf dem Einzelnen oder dem Geld liegt und nicht auf der Verbesserung der Software ... für die gesamte Community). Außerdem haben die Leute in der Community ein Interesse daran, diese Software am Laufen zu halten, da sie sie wahrscheinlich auch selbst für etwas verwenden. Warum tragen sie sonst dazu bei? (Vielleicht Ruhm ... aber wenn Ihr Open Source-Projekt sterben würde, wie würde das helfen?)
leeand00

@Bregalad Auch die Aufrechterhaltung des Projekts durch mehrere Unternehmen (Unternehmen, die die Software verwenden und codieren) anstelle eines einzelnen Fehlerpunkts eines Softwareentwicklungsunternehmens stellt sicher, dass Sie weniger wahrscheinlich Ihre Daten extrahieren müssen, um sie zu transformieren und in ein anderes System zu laden wenn ein anderes Unternehmen ausfällt oder vom Markt aufgefressen wird.
leeand00

2

Open-Source-Softwareentwicklung wird aus verschiedenen Gründen durchgeführt, aber es ist ein weit verbreitetes Missverständnis, dass sie hauptsächlich von Hobbyisten oder professionell, aber als Nebenprojekt durchgeführt wird. Ich beantworte diese Frage für Open Source im Allgemeinen und nicht für GNU-lizenzierte Software im Besonderen. Aber meine Antwort ist inklusive.

Angenommen, ich bin ein Softwareentwickler (ich bin) und arbeite an einem komplexen Softwareprojekt (ich bin). Eine gute Architektur zerlegt ein Problem in unabhängige Teile, und im Verlauf der Entwicklung werden die Entwickler häufig erkennen, dass einige Teile, die sie benötigen, vielen Problemen gemeinsam sind. Hier sind einige typische Wege vorwärts:

  1. Sie entwickeln dieses Stück selbst und es wird Eigentum des Unternehmens. Oder sie kaufen eine Closed-Source-Lösung von einem anderen Unternehmen.
  2. Sie finden ein Open-Source-Projekt, das dieses Problem löst und perfekt passt und die Lizenz ist geeignet. Sie integrieren es einfach in ihr Projekt, das je nach Lizenz und Verwendungszweck möglicherweise Open-Source sein muss oder nicht. Sie tragen nicht zum Projekt bei.
  3. Sie finden ein Open-Source-Projekt, das dieses Problem fast löst, aber entweder Mängel oder Mängel aufweist. Sie verbessern es und können diese Verbesserungen wieder in das Basisprojekt einbringen.
  4. Sie finden nichts, was ihnen gefällt, also starten sie ihr eigenes Projekt und beschließen, es als Open Source zu veröffentlichen.

Die Vorteile von 2-4 sind, dass mehr Menschen sowohl zum Design als auch zum Code des Projekts beitragen und es in eine Art Ökosystem geht, in dem starke Ideen überleben (wenn Sie so wollen, durch Fortpflanzung) und schwache nicht. Bugfixing und Feature-Addition werden zu Community-Bemühungen. In den Szenarien 2 und 3 profitieren die Entwickler, die das Projekt übernehmen, von soliden technischen Prinzipien und ausgereiftem Code. 3 und 4 sind korrelativ. In Szenario 4 profitieren die Entwickler davon, wenn andere Personen den Code übernehmen und verbessern und etwas zurückgeben (Nr. 3). Es ist vorteilhaft, einen Beitrag zum Projekt zu leisten, damit Ihre Verbesserungen zementiert werden, wenn andere Korrekturen und Verbesserungen hinzukommen, von denen Sie weiterhin profitieren. Nach meiner Erfahrung sind all diese Szenarien alltäglich.

Bei meinem aktuellen Softwareprojekt bin ich einer von ungefähr 12 Entwicklern und habe ungefähr zwei Jahre an einem System gearbeitet. Wir haben rund 5.000 Open-Source-Projekte aufgenommen! Wir haben nur wenige neue FOSS-Projekte hervorgebracht und zu vielleicht einem halben Dutzend beigetragen. Wir sind in diesem Fall keine besonders guten Bürger (andere Unternehmen sind viel besser), aber dies zeigt Ihnen, wie einfach das alles funktioniert. Selbst bei kleinen Projekten können Beiträge von Open Source leicht zu Dutzenden oder Hunderten zählen. Wenn wir keine Open-Source-Software verwenden würden, würden die Entwicklungskosten um den Faktor 100-10.000 steigen.

Die Skalierbarkeit erfolgt aufgrund der Modularität des Designs und auch durch diese Art des Überlebens des besten Prozesses, bei dem Code überarbeitet, gegabelt usw. werden kann. Überlebensfähigkeit ist normalerweise besser als proprietäre Alternativen, denn selbst wenn der Code nicht mehr gepflegt wird, ist er da draußen und andere Leute, die Wert darin finden, können ihre eigene Gabelung davon pflegen. Unternehmen kommen und gehen und Mitarbeiter werden eingestellt und kündigen noch schneller. Wenn Sie eine Softwareabhängigkeit hinzufügen, für die Sie nicht über den Quellcode verfügen oder die nur von einem kleinen internen Team verwaltet werden muss, besteht ein erhebliches Risiko. Bei großen Projekten wie dem Linux-Kernel, gcc, Android und anderen beteiligen sich häufig viele Unternehmen aktiv.

Es ist nicht wahr, dass es einfacher ist, guten und korrekten Code zu schreiben, als ihn zu lesen (in den meisten Fällen). Sie müssen auch nicht die gesamte von Ihnen verwendete Software lesen, selbst wenn Sie Änderungen vornehmen. Man muss tief in Abschnitte eintauchen und viel lesen, aber nicht das Ganze. Ich könnte hier mehr über Unit-Tests sagen, werde dies aber der Kürze halber weglassen.

Der Großteil der Open-Source-Software wird nicht von Menschen in ihrer Freizeit entwickelt. Die Praxis ist so phänomenal vorteilhaft, dass sie ohne einen optimierenden Markt funktioniert. Ich persönlich vermute, dass ein marktorientierter Ansatz sehr hilfreich wäre, aber ich weiß nicht, wie dieser Ansatz aussehen könnte. Die Leute argumentieren, dass es einen Markt gibt, auf dem der Ruf die Währung ist, aber ich denke nicht, dass dies ein genaues Modell ist. Eine Währung bei der Arbeit ist die Zeit, die benötigt wird, um eine neue Software einzuführen. Sie möchten etwas finden und verwenden, das aktiv, einfach, gut dokumentiert usw. ist. Wie ein Käufer suchen Sie also nach dem Produkt mit der besten Qualität für den geringsten Zeitaufwand.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.