Pourquoi certaines bibliothèques open source ne fournissent-elles pas de binaires?

15

Pourquoi certaines bibliothèques open source ne fournissent-elles pas de binaires? J'ai remarqué que certains projets s'en remettaient à des tiers qui maintiennent les versions actuelles du logiciel, en particulier pour les versions Windows.

Je demande parce que cela semble être un obstacle à l'adoption d'une bibliothèque. C'est plus de travail pour le développeur car il doit configurer son environnement pour le construire. Un développeur doit également s'inquiéter d'avoir introduit des bogues en construisant la bibliothèque de manière incorrecte.


EDIT : Quelques mises à jour pour répondre aux commentaires et réponses. J'ai supprimé les exemples car ils ne sont pas au centre de la discussion. J'ai également reformulé ma question car "certaines bibliothèques open source fournissent" plutôt que "les bibliothèques open source ont tendance à fournir" ... ne réalisaient pas que les gens s'en offusqueraient.

M. Dudley
la source
7
"tendre"? Deux exemples est une tendance? Avez-vous plus de données pour soutenir votre réclamation?
S.Lott
3
Les gestionnaires de packages Linux sont généralement utilisés pour déployer des binaires, donc je ne comprends pas cette référence.
David Thornley
7
Parce que ce sont des hippies paresseux qui ont fait des études universitaires (le pire type de hippies).
Job
7
Ouais, putain de hippies écrivant un logiciel gratuit que la moitié du monde utilise, vissez-les!
Tamás Szelei
3
@CodeinChaos: Je n'ai pas construit à partir de la source depuis des années. Fedora, Mac OS et OpenSuSE doivent être des exceptions étranges à cette "tendance". Quel système d'exploitation utilisez-vous qui est si mal pris en charge? J'aimerais l'éviter, si possible.
S.Lott

Réponses:

11

Parce que créer des binaires Windows est un travail complètement différent nécessitant une base de connaissances et un ensemble d'outils complètement différents. Les gens semblent avoir du mal à comprendre cela à propos des développeurs Linux, alors permettez-moi de changer la donne.

  • Vous avez utilisé Windows pour ce qui semble éternel.
  • Vous n'avez installé Windows qu'à la maison.
  • Vous avez utilisé Linux ici et là au travail, mais uniquement en tant qu'utilisateur, sans administrer ni développer pour Linux.
  • Vous savez que gcc est le compilateur le plus utilisé pour Linux, mais vous ne l'avez jamais installé sur votre propre ordinateur.
  • Vous travaillez principalement sur le logiciel pour vous-même sous Windows, mais cela ne vous dérange pas de faire des corrections de bugs pour Linux si quelqu'un d'autre fait le travail pour le rendre compatible et distribuer des binaires.
  • Vous ne voulez pas payer pour un autre système d'exploitation et une chaîne d'outils lorsque quelqu'un d'autre qui l'a déjà est parfaitement disposé à effectuer les builds.
Karl Bielefeldt
la source
2
En résumé, certains programmeurs n'ont pas les connaissances, les ressources ou la motivation pour créer des binaires pour d'autres plates-formes.
M. Dudley
11

Le Caire est une bibliothèque, pas une application. Postgres semble avoir des binaires Windows . Les petits projets ne fournissent souvent pas de builds car ils n'ont pas l'infrastructure / les ressources.

phaylon
la source
4
+1 en particulier "n'ont pas les ressources". Difficile de fournir une version testée de Windows si vous n'avez pas de licence pour Windows, pas de compilateur Windows (ou le temps d'expérimenter avec des compilateurs croisés), etc.
Steve314
1
@ Steve314: Tout le monde a un compilateur Windows - soit le gcc open source, soit le Visual Studio Express gratuit.
gbjbaanb
1
Une bibliothèque peut également avoir des binaires, à savoir des DLL. Souvent, je n'ai pas le compilateur (installé) ni les dépendances pour construire la bibliothèque d'origine. Comme obtenir des binaires, même pour les bibliothèques.
CodesInChaos
4
@CodeInChaos: Linux n'utilise pas .dlltrès souvent, donc ces binaires seraient largement inutiles pour certains d'entre nous. Une source pure serait mieux.
S.Lott
9
@gbjbaanb: Tout le monde n'a pas une installation Windows, encore moins un compilateur.
David Thornley
9

Cela fait partie de la philosophie open source de «si vous voulez que quelque chose soit fait, prenez une pelle». Naturellement, cela réduit la charge de travail des développeurs si les utilisateurs compilent simplement le programme eux-mêmes. Pas besoin de vous soucier de toutes ces architectures, OS, etc ...

Mais, si vous créez un produit de niveau consommateur (Firefox, Paint.NET, Audacity, Keepass, etc.) et que vous vous souciez d'acquérir des utilisateurs, vous devriez toujours, toujours, toujours! inclure des binaires. Probablement seulement 2% des personnes qui tombent sur votre site Web et qui sont intéressées par votre produit vont:

  • Téléchargez le client SCM approprié
  • Découvrez une copie complète de l'arborescence source
  • Téléchargez l'IDE ou les outils de compilation nécessaires (facilement plusieurs centaines de Mo pour certains projets)
  • Téléchargez et installez toutes les dépendances nécessaires (et définissez les variables d'environnement)
  • Exécutez une nouvelle compilation (facilement un processus de 10 minutes sur certains projets)
  • Traitez les erreurs ou les problèmes ou survenez (qui, dans les petits projets, ne sont probablement pas documentés - "oh oui, la dernière est en fait en réécriture de branche, pas en tronc!")
  • Désinstallez tout ou laissez le tout sur votre ordinateur et recompilez pour les mises à jour.

(Évidemment, sur Linux, les choses sont beaucoup plus saines, mais la plupart des consommateurs utilisent toujours Windows.)

Il est beaucoup plus facile pour les nouveaux venus de dire "ooh, version Windows! Téléchargez. Exécutez".

Cependant, de nombreux projets open source ne sont pas au niveau des consommateurs; ils ciblent les programmeurs, qui ont une tolérance beaucoup plus élevée pour ce genre d'épreuve, et les binaires sont donc des bricolages. D'après mon expérience, les programmeurs peuvent être tout aussi paresseux que les utilisateurs, alors soyez averti. :)

Phil Cohen
la source
Ce sont exactement les types de problèmes qui m'ont amené à poser la question en premier lieu.
M. Dudley
3
Qui distribuerait un projet qui nécessite un IDE pour être construit? Et les gens ne distribuent généralement pas dans les SCM. C'est plus comme wget, tar xfz, ./configure, make, su -c 'make install' ...
alternative
Points justes, mathepic. Et les hôtes SCM plus modernes (comme GitHub) vous permettront de télécharger une copie zippée de la dernière version de toute façon.
Phil Cohen
@mathepic: les développeurs Windows, c'est qui.
Stuart P. Bentley
Les projets @Stuart VS ne sont que des fichiers msbuild. Aucun IDE nécessaire.
alternative
6

Les créateurs d'applications écrites dans un environnement Write Once Compile Anywhere (C, C ++, etc.) bénéficient de la réduction de l'étape de compilation aux distributeurs (apt, rpm, yum, etc.) qui créent et empaquettent des binaires pour les architectures populaires. Cela permet d'obtenir une application portable maximale avec moins d'efforts de la part des créateurs et leur permet de passer plus de temps à se concentrer sur leur compétence de base (développer l'application, pas la compiler et l'héberger pour plusieurs architectures). Certains créateurs d'applications WOCA sont prêts à payer le coût supplémentaire dans des cas spéciaux comme Windows parce que - eh bien - personne d'autre ne le fera, les utilisateurs s'y attendent, et ils ne veulent pas abandonner le marché.

D'un autre côté, les applications écrites dans un environnement Write Once Run Anywhere (Java) ou pour une architecture cible spécifique (applications OS X, par exemple) sont capables de fournir un seul binaire et le font souvent car elles n'ont qu'à payer la compilation coûte une fois.

Enfin, leurs utilisateurs sont généralement à l'aise de construire à partir de la source ou d'utiliser leur gestionnaire de packages de système d'exploitation, de sorte que ce modèle offre également une meilleure convivialité. Les utilisateurs savent où trouver les binaires (leur gestionnaire de packages), ont une expérience cohérente du cycle de vie de l'installation et de la gestion des packages et savent où acquérir la source s'ils en ont besoin.

Rein Henrichs
la source
2
Un problème avec l'écriture une fois exécutée n'importe où est que la machine virtuelle est un programme à part entière, du point de vue du système d'exploitation. Par exemple, la plupart des pare-feu Windows vous permettent d'accorder / refuser l'accès aux réseaux application par application. Mais la plupart d'entre eux ne peuvent pas distinguer une application Java d'une autre - ils accordent / refusent l'accès à la JVM, mais si vous avez une application Java qui agit comme un serveur Internet (Azureus, peut-être), le pare-feu ne bloquera aucun voyou inconnu Application Java agissant en tant que serveur. S'il existe une solution spécifique à Java, je suis un exemple d'utilisateur Java qui ne la connaît pas.
Steve314
1
@Steve, je ne suis pas en désaccord avec vous en soi, mais je ne vois pas vraiment en quoi les avantages / inconvénients de WOCA ou WORA sont pertinents pour cette question.
Rein Henrichs
tangentiel, c'est vrai, mais dans une question qui est déjà un peu une guerre religieuse Linux contre Windows, etc., peut-être l'un des crimes les moins graves. BTW - J'ai attribué +1 à votre réponse comme étant utile.
Steve314
Ouais la guerre religieuse! Je vais chercher le goudron, tu as les plumes?
Rein Henrichs
5

Pourquoi voudrais-je mâcher la bande passante en vous fournissant une version (qui peut évidemment être très grande) plutôt que de construire la source que je vous fournis de toute façon? Sans oublier que la construction d'un projet sur votre propre machine donnera toujours de meilleurs résultats car il est compilé spécifiquement pour votre plateforme.

Demian Brecht
la source
4
+1 - mais je doute "toujours" (cela dépend de la plate-forme que vous utilisez), et ces avantages peuvent coûter cher à l'utilisateur - avoir besoin d'un compilateur, avoir besoin de savoir comment l'utiliser, avoir besoin de savoir comment construire ce projet spécifique, ayant besoin de passer du temps à enquêter et à signaler les bogues bizarres qui se produisent uniquement sur votre plate-forme particulière, etc.
Steve314
1
@ steve314: +1, tous les vrais points :)
Demian Brecht
7
Quelques fichiers binaires ne sont généralement pas si gros. Et le coût en temps pour l'utilisateur est généralement très important. Trouver toutes les dépendances et trouver comment construire ce projet spécifique prend beaucoup de temps. Même si votre utilisateur est un programmeur. Si l'utilisateur n'est pas programmeur, il peut pratiquement oublier votre produit. Et je pense que l'argument de la performance est bien surévalué. Habituellement, vous n'avez pas besoin de ce dernier pour cent des performances, et si vous le faites, vous pouvez toujours comprendre comment construire à partir de la source.
CodesInChaos
1
@codeinchaos: C'est entièrement relatif au projet (taille). Une build peut comprendre un seul binaire, ou plusieurs centaines de Mo (sinon plus) dans des binaires et des actifs non compilés (pensez à des jeux). Bien sûr, clouer parfois les dépendances peut être un peu difficile, mais c'est à l'auteur du paquet de fournir une liste ou un mécanisme de téléchargement / construction des dépendances au moment de la construction (la collection de ports de FreeBSD est idéale pour cela) . Les projets destinés aux non-programmeurs auront presque toujours une liste binaire / installateur maintenue quelque part.
Demian Brecht
Le fait est que de nombreux projets open source ne sont pas des «produits» au sens habituel. Étant donné que l'open source consiste à autoriser les contributions sous diverses formes, demander à d'autres personnes de fournir des fichiers binaires qui savent comment le faire et ont le temps de les maintenir semble être une bonne idée.
phaylon
2

Je peux penser à deux raisons.

Tout d'abord, vous disposez de plusieurs systèmes d'exploitation exécutés sur plusieurs types de matériel; le nombre de cibles binaires que vous auriez à construire devient ingérable. Il existe trois versions de Windows encore couramment utilisées (XP, Vista, 7) fonctionnant sur du matériel 32 bits ou 64 bits; c'est 6 cibles binaires juste là. La situation est pire du côté de Linux, avec une plus grande variété de distributions exécutées sur Dieu sait quel matériel (x86, PPC, MIPS, SPARC, PA-RISC, etc.). Allez-vous construire pour chaque combinaison possible? Avez-vous même l'équipement et / ou le logiciel pour le faire? S'il y a quelqu'un là-bas qui exécute toujours (Dieu nous aide) NT sur un PII, allez-vous construire un binaire pour eux?

Deuxièmement, la source d'expédition signifie que les utilisateurs peuvent optimiser la construction pour leur environnement particulier; ils peuvent activer toutes les optimisations dont ils ont besoin, ou modifier la source elle-même si nécessaire.

John Bode
la source
donc je suppose que la réponse est d'utiliser quelque chose comme les serveurs de build de Sourceforge. Checkin, laissez-les vous construire beaucoup de binaires. Tels que en.opensuse.org/Build_Service
gbjbaanb
1
Étant donné que ces programmes n'utilisent généralement aucune fonctionnalité spéciale Vista / Win7 et que les programmes 32 bits s'exécutent sur des systèmes d'exploitation 64 bits, vous pouvez presque toujours vous en sortir avec un seul binaire WinXP 32 bits pour tous les utilisateurs de Windows.
CodesInChaos
@CodeInChaos - +1 - certains projets fournissent des binaires 32 bits et 64 bits, mais offrent plus de variations que cela est rare. Un point valable, cependant.
Steve314
@gbjbaanb - une réponse, certes, mais probablement pas la réponse.
Steve314
2

Généralement, la valeur d'un projet open source, qu'il s'agisse d'une application, d'un système, d'un module ou d'une bibliothèque, est qu'il peut être étudié et / ou modifié selon les besoins. La distribution de la source est intrinsèque au modèle de publication.

La distribution d'un binaire court le risque qu'il ait été modifié d'une manière ou d'une autre à des fins néfastes. La compilation du projet à partir de la source tente d'atténuer ce risque.

Rob Raisch
la source
Pour les applications> 90% des utilisateurs ne regarderont même jamais la source. Et le risque de manipulation est quelque chose que la plupart des téléchargeurs de binaires sont prêts à prendre. Ils ne peuvent pas (et même s'ils le pouvaient, ils seraient trop paresseux) pour vérifier qu'un code source ne contient pas de code malveillant.
CodesInChaos
2
Certes, mais l'OP a demandé pourquoi les projets open-source ne sont généralement pas distribués sous forme de binaires, et non "en tant qu'utilisateur, pourquoi dois-je compiler tout cela?" ;-)
Rob Raisch
Mais vous êtes des arguments sur la raison pour laquelle il vaut mieux pour l'utilisateur qu'il obtienne la source et non les binaires.
CodesInChaos
1
Drôle, je ne vois pas le mot «utilisateur» dans ma réponse ou la question d'origine. Peut-être que je ne lis pas correctement ma propre réponse?
Rob Raisch
1
Il est intéressant de voir que vous semblez déterminé à mal interpréter mes commentaires car je n'ai pas essayé de fournir "une raison pour ne pas fournir de binaires". J'ai simplement expliqué pourquoi les projets open-source sont généralement distribués sous forme de code source. Merci d'avoir joué, mais c'est mon dernier commentaire à ce sujet.
Rob Raisch
1

Cela peut avoir plusieurs raisons. De nombreux projets open source (sinon la plupart) démarrent sous Linux. Ainsi, le projet initial est fait pour ce système et l'emballage est fait par les membres de l'équipe.

La création d'un programme d'installation Windows est un travail supplémentaire qui nécessite des connaissances que les développeurs Linux peuvent ne pas avoir. Donc, si quelqu'un de l'extérieur de l'équipe principale assume ce travail, il est souvent mentionné spécialement.

La même chose peut être vraie pour d'autres systèmes comme OS X ou même des distributions Linux spécifiques. Tout dépend de qui a les connaissances et le temps de faire le travail supplémentaire.

thorsten müller
la source
Un installateur Windows est rarement nécessaire. Un fichier zip avec les binaires est très bien aussi. Mais bien sûr, vous avez raison, de nombreux développeurs basés sur Linux ne se soucient pas beaucoup d'une version Windows de leur programme.
CodesInChaos
1
Un fichier zip peut être un grand handicap dans le monde Windows. «J'ai téléchargé ce fichier. Maintenant, lorsque je clique dessus, Windows me dit que son "format de fichier inconnu" est un problème assez courant dans les forums d'aide.
thorsten müller
J'ai publié tous mes trucs sous forme de fichiers .zip. Je pense que la seule plainte que j'ai reçue dans ce contexte était d'un gars qui a réussi à copier le fichier exe sur son bureau au lieu de créer un lien. Mais en tout cas, la difficulté de construire à partir de la source est beaucoup plus élevée que la difficulté de décompresser quelque chose.
CodesInChaos
1
Cela dépend en partie de votre base d'utilisateurs. Si vous publiez une bibliothèque qui n'est utilisée que par les programmeurs, vous n'aurez aucun problème avec les fichiers zip. Zip est assez facile pour que chaque public possédant des connaissances de base le fasse. Bien que j'aie vu la question zip assez souvent ...
thorsten müller
1
Gardez à l'esprit que dans XP +, les fichiers zip sont gérés de manière native par le système d'exploitation, et un double clic suffisant ouvrira le fichier dans un dossier extrait.
Phil Cohen