Warum bieten einige Open Source-Bibliotheken keine Binärdateien an?

15

Warum bieten einige Open Source-Bibliotheken keine Binärdateien an? Mir ist aufgefallen, dass sich einige Projekte auf Drittanbieter verlagern, die aktuelle Builds der Software verwalten, insbesondere für Windows-Builds.

Ich frage, weil es ein Hindernis für die Annahme einer Bibliothek zu sein scheint. Es ist mehr Arbeit für den Entwickler, da er seine Umgebung einrichten muss, um es zu erstellen. Ein Entwickler muss sich auch Sorgen machen, dass er Fehler verursacht hat, indem er die Bibliothek falsch erstellt hat.


BEARBEITEN : Einige Aktualisierungen an Kommentaren und Antworten. Ich habe die Beispiele entfernt, da sie für die Diskussion nicht von zentraler Bedeutung sind. Ich habe meine Frage auch umformuliert, da "einige Open Source-Bibliotheken eher" als "Open Source-Bibliotheken eher" anbieten.

M. Dudley
quelle
7
"neigen"? Zwei Beispiele ist eine Tendenz? Haben Sie weitere Daten, um Ihren Anspruch zu stützen?
S.Lott,
3
Linux-Paketmanager werden normalerweise zum Bereitstellen von Binärdateien verwendet, daher verstehe ich diese Referenz nicht.
David Thornley
7
Weil sie faule Hippies mit Hochschulausbildung sind (die schlimmste Art von Hippies).
Job
7
Ja, verdammte Hippies, die kostenlos Software schreiben, die die Hälfte der Welt benutzt, scheiß drauf!
Tamás Szelei
3
@CodeinChaos: Ich habe seit Jahren nicht mehr aus der Quelle gebaut. Fedora, Mac OS und OpenSuSE müssen seltsame Ausnahmen von dieser "Tendenz" sein. Welches Betriebssystem wird von Ihnen so schlecht unterstützt? Ich würde es gerne vermeiden, wenn möglich.
S.Lott,

Antworten:

11

Da das Erstellen von Windows-Binärdateien eine völlig andere Aufgabe ist, sind eine völlig andere Wissensbasis und ein völlig anderes Toolset erforderlich. Die Leute scheinen es schwer zu haben, dies über Linux-Entwickler zu verstehen. Lassen Sie mich das also umkehren.

  • Sie haben Windows für immer verwendet.
  • Sie haben nur Windows zu Hause installiert.
  • Sie haben Linux hier und da bei der Arbeit verwendet, aber nur als Benutzer, nicht als Administrator oder Entwickler für Linux.
  • Sie wissen, dass gcc der am häufigsten verwendete Compiler für Linux ist, haben ihn jedoch noch nie auf Ihrem eigenen Computer installiert.
  • Sie arbeiten hauptsächlich für sich selbst an der Software unter Windows, aber es macht nichts aus, Fehlerbehebungen für Linux vorzunehmen, wenn jemand anderes die Arbeit leistet, um sie kompatibel zu machen und Binärdateien zu verteilen.
  • Sie möchten nicht für ein anderes Betriebssystem und eine andere Toolchain bezahlen, wenn jemand anderes, der bereits über diese verfügt, bereit ist, die Builds zu erstellen.
Karl Bielefeldt
quelle
2
Zusammenfassend lässt sich sagen, dass einige Programmierer nicht über das Wissen, die Ressourcen oder die Motivation verfügen, Binärdateien für andere Plattformen zu erstellen.
M. Dudley
11

Kairo ist eine Bibliothek, keine Anwendung. Postgres scheint Windows-Binärdateien zu haben . Kleinere Projekte bieten oft keine Builds, da sie nicht über die Infrastruktur / Ressourcen verfügen.

Phaylon
quelle
4
+1 vor allem "habe nicht die Ressourcen". Es ist schwierig, einen getesteten Windows-Build bereitzustellen, wenn Sie keine Lizenz für Windows, keinen Windows-Compiler (oder Zeit zum Experimentieren mit Cross-Compilern) usw. haben.
Steve314
1
@ Steve314: Jeder hat einen Windows-Compiler - entweder den Open Source GCC oder das kostenlose Visual Studio Express.
gbjbaanb
1
Eine Bibliothek kann auch Binärdateien enthalten, nämlich DLLs. Oft habe ich weder den Compiler (installiert) noch die Abhängigkeiten, um die ursprüngliche Bibliothek zu erstellen. Also wie Binärdateien, auch für Bibliotheken.
CodesInChaos
4
@CodeInChaos: Linux wird nicht .dllsehr oft verwendet, daher wären diese Binärdateien für einige von uns weitgehend nutzlos. Reine Quelle wäre besser.
S.Lott,
9
@gbjbaanb: Nicht jeder hat eine Windows-Installation, geschweige denn einen Compiler.
David Thornley
9

Es ist Teil der Open-Source-Philosophie: "Wenn Sie etwas erledigen möchten, schnappen Sie sich eine Schaufel." Natürlich reduziert sich die Arbeitsbelastung der Entwickler, wenn die Benutzer das Programm einfach selbst kompilieren. Über all diese Architekturen, Betriebssysteme usw. müssen Sie sich keine Sorgen machen.

Wenn Sie jedoch ein Produkt auf Verbraucherebene (Firefox, Paint.NET, Audacity, Keepass usw.) herstellen und sich darum kümmern, Benutzer zu gewinnen, sollten Sie immer, immer, immer! Include-Binaries. Wahrscheinlich gehen nur 2% der Personen, die über Ihre Website stolpern und sich für Ihr Produkt interessieren, zu:

  • Laden Sie den entsprechenden SCM-Client herunter
  • Überprüfen Sie eine vollständige Kopie des Quellbaums
  • Laden Sie die benötigte IDE oder die Compiler-Tools herunter (bei einigen Projekten leicht mehrere Hundert MB)
  • Laden Sie alle benötigten Abhängigkeiten herunter und installieren Sie sie (und legen Sie Umgebungsvariablen fest)
  • Führen Sie eine neue Kompilierung aus (bei einigen Projekten ist dies ein einfacher Vorgang von 10 Minuten).
  • Behandeln Sie alle Fehler oder Probleme oder treten Sie auf (die in kleinen Projekten wahrscheinlich nicht dokumentiert sind - "ach ja, die neueste ist tatsächlich in Branch-Rewrite, nicht Trunk!")
  • Deinstallieren Sie alles oder belassen Sie alles auf Ihrem Computer und kompilieren Sie es erneut, um Updates zu erhalten.

(Offensichtlich sind die Dinge unter Linux viel vernünftiger, aber die meisten Konsumenten verwenden immer noch Windows.)

Für Neulinge ist es weitaus einfacher, "ooh, Windows-Version! Herunterladen. Ausführen" zu sagen.

Viele Open Source-Projekte sind jedoch nicht auf Verbraucherebene. Sie richten sich an Programmierer, die eine viel höhere Toleranz für diese Art von Tortur haben, und daher sind Binärdateien Heimwerker. Nach meiner Erfahrung können Programmierer genauso faul sein wie Benutzer, seien Sie also gewarnt. :)

Phil Cohen
quelle
Dies sind genau die Arten von Problemen, die mich überhaupt dazu gebracht haben, die Frage zu stellen.
M. Dudley
3
Wer würde ein Projekt vertreiben, für dessen Erstellung eine IDE erforderlich ist? Und die Leute verbreiten sich normalerweise nicht in SCMs. Es ist eher wie wget, tar xfz, ./configure, make, su -c 'make install' ...
Alternative
Angemessene Punkte, mathepisch. Bei moderneren SCM-Hosts (wie GitHub) können Sie trotzdem eine komprimierte Version der neuesten Version herunterladen.
Phil Cohen
@mathepic: Windows-Entwickler, das ist wer.
Stuart P. Bentley
@Stuart VS-Projekte sind nur msbuild-Dateien. Keine IDE benötigt.
Alternative
6

Entwickler von Anwendungen, die in einer Write Once Compile Anywhere- Umgebung (C, C ++ usw.) geschrieben wurden, profitieren davon, dass der Kompilierungsschritt auf Distributoren (apt, rpm, yum usw.) verlagert wird, die Binärdateien für gängige Architekturen erstellen und verpacken. Dies führt zu einer maximal portierbaren Anwendung mit weniger Aufwand für die Entwickler und ermöglicht es ihnen, sich mehr auf ihre Kernkompetenz zu konzentrieren (Entwickeln der Anwendung, nicht Kompilieren und Hosten für mehrere Architekturen). Einige WOCA-Anwendungsentwickler sind bereit, die zusätzlichen Kosten in Sonderfällen wie Windows zu zahlen, da - nun - niemand anders dies erwartet und sie den Markt nicht aufgeben möchten.

Andererseits können Anwendungen, die in einer Write Once Run Anywhere- Umgebung (Java) oder für eine bestimmte Zielarchitektur (z. B. OS X-Anwendungen) geschrieben wurden, eine einzige Binärdatei bereitstellen, und dies häufig, da sie nur die Kompilierung bezahlen müssen einmal kosten.

Schließlich können die Benutzer in der Regel problemlos von der Quelle aus oder mit dem Paket-Manager des Betriebssystems arbeiten, sodass dieses Modell auch eine bessere Benutzerfreundlichkeit bietet. Benutzer wissen, wo sie Binärdateien (ihren Paketmanager) erhalten, haben eine konsistente Erfahrung im Installations- und Paketverwaltungslebenszyklus und wissen, wo sie die Quelle erwerben können, wenn sie diese benötigen.

Rein Henrichs
quelle
2
Ein Problem mit Write-Once-Run-Anywhere ist, dass die virtuelle Maschine aus Sicht des Betriebssystems ein eigenständiges Programm ist. Beispielsweise können Sie mit den meisten Windows-Firewalls App für App den Zugriff auf Netzwerke gewähren oder verweigern. Die meisten von ihnen können jedoch keine Java-App von einer anderen unterscheiden - sie gewähren / verweigern den Zugriff auf die JVM. Wenn Sie jedoch eine Java-App haben, die als Internet-Server fungiert (z. B. Azureus), blockiert die Firewall keine unbekannten Schurken Java-Anwendung als Server fungieren. Wenn es eine Java-spezifische Lösung gibt, bin ich ein Beispiel für einen Java-Benutzer, der nichts davon weiß.
Steve314
1
@Steve Ich bin nicht anderer Meinung als Sie selbst, aber ich sehe nicht wirklich, wie die Vor- / Nachteile von WOCA oder WORA für diese Frage relevant sind.
Rein Henrichs
tangential, wahr, aber in einer Frage, die schon ein bisschen wie ein religiöser Krieg zwischen Linux und Windows ist, vielleicht eines der kleineren Verbrechen. BTW - Ich habe Ihre Antwort als nützlich eingestuft.
Steve314
Ja, religiöser Krieg! Ich hole den Teer, holst du die Federn?
Rein Henrichs
5

Warum sollte ich die Bandbreite erhöhen, um Ihnen einen Build zu liefern (der offensichtlich sehr groß sein kann), anstatt die Quelle zu erstellen, die ich Ihnen ohnehin zur Verfügung stelle? Ganz zu schweigen davon, dass das Erstellen eines Projekts auf Ihrem eigenen Computer immer zu besseren Ergebnissen führt, da es speziell für Ihre Plattform kompiliert wurde.

Demian Brecht
quelle
4
+1 - aber ich bezweifle "immer" (hängt davon ab, welche Plattform Sie verwenden), und diese Vorteile können für den Benutzer mit Kosten verbunden sein - Sie benötigen einen Compiler, müssen wissen, wie er verwendet wird, müssen wissen, wie er erstellt wird das spezifische Projekt, Zeit zu verbringen, die seltsamen Fehler zu untersuchen und zu melden, die nur auf Ihrer bestimmten Plattform
auftauchen
1
@ Steve314: +1, alle wahren Punkte :)
Demian Brecht
7
Einige Binärdateien sind normalerweise nicht so groß. Und der Zeitaufwand für den Benutzer ist normalerweise sehr groß. Das Auffinden aller Abhängigkeiten und das Herausfinden, wie das jeweilige Projekt erstellt werden kann, nimmt viel Zeit in Anspruch. Auch wenn Ihr Benutzer ein Programmierer ist. Wenn der Benutzer kein Programmierer ist, kann er Ihr Produkt so ziemlich vergessen. Und ich denke, das Leistungsargument ist viel zu hoch eingeschätzt. Normalerweise benötigen Sie nicht den letzten Prozentsatz der Leistung, und wenn Sie dies tun, können Sie immer noch herausfinden, wie Sie aus dem Quellcode erstellen.
CodesInChaos
1
@codeinchaos: Das ist ganz im Verhältnis zum Projekt (Größe). Ein Build kann eine einzelne Binärdatei oder mehrere Hundert MB (wenn nicht mehr) in Binärdateien und nicht kompilierten Assets (Denkspiele) enthalten. Natürlich kann es manchmal etwas schwierig sein, Abhängigkeiten zu finden, aber es liegt am Autor des Pakets, entweder eine Liste oder einen Mechanismus zum Herunterladen / Erstellen von Abhängigkeiten zu erstellen (die Ports-Sammlung von FreeBSD ist dafür großartig ). . Projekte, die sich an Nicht-Programmierer richten, haben fast immer eine Binär- / Installationsliste, die irgendwo gespeichert wird.
Demian Brecht
Viele Open-Source-Projekte sind keine "Produkte" im üblichen Sinne. Da es bei Open Source darum geht, Beiträge in verschiedenen Formen zuzulassen, scheint es eine gute Idee zu sein, andere Leute mit Binärdateien zu beauftragen, die wissen, wie man es macht und die Zeit haben, sie zu pflegen.
Phaylon
2

Ich kann mir zwei Gründe vorstellen.

Erstens haben Sie mehrere Betriebssysteme, die auf mehreren Hardwaretypen ausgeführt werden. Die Anzahl der zu erstellenden binären Ziele kann nicht mehr verwaltet werden. Es gibt drei häufig verwendete Windows-Versionen (XP, Vista, 7), die auf 32-Bit- oder 64-Bit-Hardware ausgeführt werden. das sind genau dort 6 binäre Ziele. Auf der Linux-Seite ist die Situation noch schlimmer, da eine viel größere Anzahl von Distributionen auf der Hardware läuft (x86, PPC, MIPS, SPARC, PA-RISC usw.). Wirst du für jede mögliche Kombination bauen? Haben Sie überhaupt die Ausrüstung und / oder Software dafür? Wenn da draußen noch jemand NT auf einer PII ausführt (Gott helfe uns), werden Sie eine Binärdatei für ihn erstellen?

Zweitens bedeutet Versandquelle, dass Benutzer den Build für ihre spezielle Umgebung optimieren können. Sie können die von ihnen benötigten Optimierungen aktivieren oder die Quelle bei Bedarf selbst optimieren.

John Bode
quelle
Ich denke also, die Antwort ist, so etwas wie Sourceforges Build-Server zu verwenden. Checkin, lass sie dir viele Binaries bauen. Wie zum Beispiel de.opensuse.org/Build_Service
gbjbaanb
1
Da diese Programme normalerweise keine speziellen Vista / Win7-Funktionen verwenden und 32-Bit-Programme unter 64-Bit-Betriebssystemen ausgeführt werden, können Sie fast immer mit einer einzigen 32-Bit-WinXP-Binärdatei für alle Windows-Benutzer davonkommen.
CodesInChaos
@CodeInChaos - +1 - Einige Projekte bieten sowohl 32-Bit- als auch 64-Bit-Binärdateien, aber mehr Variationen sind selten. Ein gültiger Punkt.
Steve314
@gbjbaanb - eine Antwort, sicherlich, aber wahrscheinlich nicht die Antwort.
Steve314
2

Typischerweise besteht der Wert eines Open-Source-Projekts, sei es eine Anwendung, ein System, ein Modul oder eine Bibliothek, darin, dass es nach Bedarf untersucht und / oder geändert werden kann. Das Verteilen der Quelle ist für das Veröffentlichungsmodell von wesentlicher Bedeutung.

Das Verteilen einer Binärdatei birgt das Risiko, dass sie zu ruchlosen Zwecken auf irgendeine Weise modifiziert wurde. Durch das Kompilieren des Projekts aus dem Quellcode wird versucht, dieses Risiko zu minimieren.

Rob Raisch
quelle
Bei Anwendungen> 90% schauen die Benutzer niemals auf die Quelle. Das Risiko einer Manipulation ist etwas, das die meisten Downloader von Binaries eingehen wollen. Sie können nicht (und selbst wenn sie könnten, wären sie zu faul), um zu überprüfen, dass ein Quellcode keinen schädlichen Code enthält.
CodesInChaos
2
Stimmt, aber das OP fragte, warum Open-Source-Projekte normalerweise nicht als Binärdateien verteilt werden und nicht "als Benutzer, warum muss ich all dieses Zeug kompilieren?" ;-)
Rob Raisch
Aber Sie argumentieren, warum es für den Benutzer besser ist, dass er die Quelle und nicht die Binärdateien erhält.
CodesInChaos
1
Komischerweise sehe ich weder in meiner Antwort noch in der ursprünglichen Frage das Wort "Benutzer". Vielleicht lese ich meine eigene Antwort falsch?
Rob Raisch
1
Interessant, dass Sie höllisch scharf darauf sind, meine Kommentare falsch zu interpretieren, da ich nicht versucht habe, "einen Grund für das Nicht-Bereitstellen von Binärdateien" anzugeben. Ich habe lediglich erklärt, warum Open-Source-Projekte normalerweise als Quellcode verteilt werden. Danke fürs Spielen, aber das ist mein letzter Kommentar dazu.
Rob Raisch
1

Dies kann mehrere Gründe haben. Viele (wenn nicht die meisten) Open Source-Projekte starten unter Linux. Das erste Projekt für dieses System ist also abgeschlossen, und die Verpackung erfolgt durch die Teammitglieder.

Das Erstellen eines Windows-Installationsprogramms ist eine zusätzliche Arbeit, die Kenntnisse erfordert, über die die Linux-Entwickler möglicherweise nicht verfügen. Wenn also jemand von außerhalb des Kernteams diese Arbeit übernimmt, wird er oft besonders erwähnt.

Gleiches gilt möglicherweise auch für andere Systeme wie OS X oder sogar für bestimmte Linux-Distributionen. Es hängt alles davon ab, wer das Wissen und die Zeit hat, die zusätzliche Arbeit zu erledigen.

thorsten müller
quelle
Ein Windows-Installer ist selten erforderlich. Eine Zip-Datei mit den Binärdateien ist auch in Ordnung. Aber Sie haben natürlich Recht, dass sich viele Linux-basierte Entwickler nicht sonderlich für eine Windows-Version ihres Programms interessieren.
CodesInChaos
1
Eine zip-Datei kann in der Windows-Welt ein großes Handicap sein. 'Ich habe diese Datei heruntergeladen. Wenn ich jetzt darauf klicke, sagt mir Windows, dass sein "unbekanntes Dateiformat" ein recht häufiges Problem in Hilfeforen ist.
thorsten müller
Ich habe alle meine Sachen als .zip-Dateien veröffentlicht. Ich denke, die einzige Beschwerde, die ich in diesem Zusammenhang bekommen habe, war ein Typ, der es geschafft hat, die exe-Datei auf seinen Desktop zu kopieren, anstatt einen Link zu erstellen. In jedem Fall ist die Schwierigkeit, aus dem Quellcode zu erstellen, viel größer als die Schwierigkeit, etwas zu entpacken.
CodesInChaos
1
Hängt zum Teil von Ihrer Benutzerbasis ab. Wenn Sie eine Bibliothek veröffentlichen, die nur von Programmierern verwendet wird, treten keine Probleme mit ZIP-Dateien auf. Zip ist einfach genug, damit es jedes Publikum mit Grundkenntnissen schafft. Obwohl ich die zip
frage schon
1
Denken Sie daran, dass in XP + ZIP-Dateien vom Betriebssystem selbst verwaltet werden und durch einen ausreichenden Doppelklick die Datei in einem extrahierten Ordner geöffnet wird.
Phil Cohen