Perché alcune librerie open source non forniscono binari?


15

Perché alcune librerie open source non forniscono binari? Ho notato che alcuni progetti rimandano a terze parti che mantengono le build correnti del software, in particolare per le build di Windows.

Chiedo perché sembra una barriera per l'adozione di una biblioteca. È più lavoro per lo sviluppatore poiché deve creare il suo ambiente per costruirlo. Uno sviluppatore deve anche preoccuparsi di aver introdotto dei bug costruendo la libreria in modo errato.


EDIT : alcuni aggiornamenti per rispondere a commenti e risposte. Ho rimosso gli esempi poiché non sono centrali nella discussione. Ha anche riformulato la mia domanda in quanto "alcune biblioteche open source forniscono" piuttosto che "le biblioteche open source tendono a fornire" ... non si sono rese conto che le persone si sarebbero offese.


7
"tendono"? Due esempi è una tendenza? Hai più dati a supporto del tuo reclamo?
S.Lott

3
I gestori di pacchetti Linux vengono generalmente utilizzati per distribuire i binari, quindi non capisco quel riferimento.
David Thornley,

7
Perché sono pigri hippy educati al college che fumano erba (il peggior tipo di hippy).
Giobbe

7
Sì, dannati hippy che scrivono software gratuitamente che metà del mondo usa, fottiti!
Tamás Szelei,

3
@CodeinChaos: non costruisco da anni da anni. Fedora, Mac OS e OpenSuSE devono essere strane eccezioni a questa "tendenza". Quale sistema operativo stai usando così scarsamente supportato? Vorrei evitarlo, se possibile.
S.Lott

Risposte:


11

Perché creare binari di Windows è un lavoro completamente diverso che richiede una base di conoscenza e un set di strumenti completamente diversi. Le persone sembrano avere difficoltà a capire questo riguardo agli sviluppatori Linux, quindi lasciatemi cambiare.

  • Hai usato Windows per quello che sembra per sempre.
  • Windows è installato solo a casa.
  • Hai usato Linux qua e là al lavoro, ma solo come utente, non amministrando o sviluppando per Linux.
  • Sai che gcc è il compilatore più comunemente usato per Linux, ma non l'hai mai installato sul tuo computer.
  • Lavori principalmente sul software per te stesso su Windows, ma non ti dispiace fare correzioni di bug per Linux se qualcun altro fa il lavoro per renderlo compatibile e distribuire i binari.
  • Non vuoi pagare per un altro SO e toolchain quando qualcun altro che ha già è perfettamente disposto a fare le build.

2
In breve, alcuni programmatori non hanno le conoscenze, le risorse o le motivazioni per creare binari per altre piattaforme.
M. Dudley,

11

Il Cairo è una biblioteca, non un'applicazione. Postgres sembra avere i binari di Windows . I progetti più piccoli spesso non forniscono build perché non dispongono dell'infrastruttura / delle risorse.


4
+1 in particolare "non hai le risorse". Difficile fornire una build di Windows testata se non si dispone di una licenza per Windows, se non si dispone di un compilatore di Windows (o del tempo per sperimentare i compilatori incrociati), ecc.
Steve314,

1
@ Steve314: Ognuno ha un compilatore di Windows: gcc open source o Visual Studio Express gratuito.
gbjbaanb,

1
Una libreria può contenere anche file binari, vale a dire DLL. Spesso non ho il compilatore (installato) né le dipendenze per creare la libreria originale. Quindi, come ottenere binari, anche per le biblioteche.
CodesInChaos,

4
@CodeInChaos: Linux non usa .dllmolto spesso, quindi quei binari sarebbero in gran parte inutili per alcuni di noi. La fonte pura sarebbe migliore.
S.Lott

9
@gbjbaanb: non tutti hanno un'installazione di Windows, figuriamoci un compilatore.
David Thornley,

9

Fa parte della filosofia open source di "se vuoi fare qualcosa, prendi una pala". Naturalmente, riduce il carico di lavoro per gli sviluppatori se gli utenti compilano semplicemente il programma da soli. Non c'è bisogno di preoccuparsi di tutte quelle architetture, sistemi operativi, ecc ...

Ma se stai realizzando un prodotto di livello consumer (Firefox, Paint.NET, Audacity, Keepass, ecc.) E ti preoccupi di acquisire utenti, dovresti sempre, sempre, sempre! include i binari. Probabilmente solo il 2% delle persone che inciampano sul tuo sito Web e sono interessate al tuo prodotto, stanno per:

  • Scarica il client SCM appropriato
  • Dai un'occhiata a un'intera copia dell'albero dei sorgenti
  • Scarica l'IDE o gli strumenti del compilatore necessari (facilmente diverse centinaia di MB per alcuni progetti)
  • Scarica e installa tutte le dipendenze necessarie (e imposta le variabili ambientali)
  • Esegui una nuova compilazione (facilmente un processo di 10 minuti su alcuni progetti)
  • Affrontare eventuali errori o problemi o che sorgono (che in piccoli progetti probabilmente non sono documentati - "oh sì, l'ultimo è in realtà nella riscrittura dei rami, non nel tronco!")
  • Disinstalla tutto o lascialo tutto sul tuo computer e ricompila per gli aggiornamenti.

(Ovviamente su Linux le cose sono molto più sanitarie, ma la maggior parte dei consumatori usa ancora Windows.)

È molto più facile per i nuovi arrivati ​​dire "ooh, versione di Windows! Scarica. Esegui".

Tuttavia, molti progetti open source non sono a livello di consumatore; prendono di mira i programmatori, che hanno una tolleranza molto più alta per questo tipo di calvario, e quindi i binari sono fai-da-te. Nella mia esperienza, tuttavia, i programmatori possono essere pigri quanto gli utenti, quindi fai attenzione. :)


Questi sono esattamente i tipi di problemi che mi hanno fatto porre la domanda in primo luogo.
M. Dudley,

3
Chi distribuirà un progetto che richiede la creazione di un IDE? E di solito le persone non distribuiscono in SCM. È più simile a wget, tar xfz, ./configure, make, su -c 'make install' ...
alternativa

Punti giusti, matematici. E gli host SCM più moderni (come GitHub) ti consentiranno comunque di scaricare una copia zippata dell'ultima versione.
Phil Cohen,

@mathepic: sviluppatori Windows, ecco chi.
Stuart P. Bentley,

I progetti @Stuart VS sono solo file msbuild. Nessun IDE necessario.
alternativa

6

I creatori di applicazioni scritte in un ambiente Write Once Compile Anywhere (C, C ++, ecc.) Traggono vantaggio dallo spingere il passo della compilazione verso i distributori (apt, rpm, yum, ecc.) Che creano e confezionano file binari per architetture popolari. Ciò consente di ottenere un'applicazione estremamente portatile con meno sforzi da parte dei creatori e consente loro di dedicare più tempo a concentrarsi sulla propria competenza principale (sviluppo dell'applicazione, non compilazione e hosting per più architetture). Alcuni creatori di applicazioni WOCA sono disposti a pagare il costo aggiuntivo in casi speciali come Windows perché - beh - nessun altro lo farà, gli utenti se lo aspettano e non vogliono rinunciare al mercato.

D'altra parte, le applicazioni scritte in un ambiente Write Once Run Anywhere (Java) o per una specifica architettura di destinazione (applicazioni OS X, ad esempio) sono in grado di fornire un singolo binario e spesso lo fanno poiché devono solo pagare la compilazione costa una volta.

Infine, i loro utenti si sentono generalmente a proprio agio a costruire dal sorgente o usando il loro gestore di pacchetti del sistema operativo, quindi questo modello offre anche una migliore usabilità. Gli utenti sanno dove trovare i binari (il loro gestore di pacchetti), hanno un'esperienza coerente nel ciclo di vita dell'installazione e della gestione dei pacchetti e sanno dove acquisire l'origine se ne hanno bisogno.


2
Un problema con write-once-run-ovunque è che la macchina virtuale è un programma a sé stante, dal punto di vista dell'O / S. Ad esempio, la maggior parte dei firewall di Windows consente di concedere / negare l'accesso alle reti in base all'app per app. Ma la maggior parte di loro non può distinguere un'app Java da un'altra: concede / nega l'accesso alla JVM, ma se si dispone di un'app Java che funge da server Internet (Azureus, forse), il firewall non bloccherà alcun ladro sconosciuto Applicazione Java che funge da server. Se esiste una soluzione specifica per Java, sono un esempio di un utente Java che non ne è a conoscenza.
Steve314,

1
@Steve Non sono in disaccordo con te di per sé, ma non vedo davvero come i pro / contro di WOCA o WORA siano rilevanti per questa domanda.
Rein Henrichs,

tangenziale, vero, ma in una domanda che è già un po 'una guerra religiosa tra Linux e Windows ecc., forse uno dei crimini minori. A proposito, ho fatto +1 sulla tua risposta come utile.
Steve314,

Yay guerra religiosa! Prenderò il catrame, tu prenderai le piume?
Rein Henrichs,

5

Perché dovrei voler masticare la larghezza di banda fornendo una build (che ovviamente può essere molto grande) piuttosto che costruire la fonte che ti sto fornendo comunque? Per non parlare del fatto che la creazione di un progetto sulla propria macchina produrrà sempre risultati migliori in quanto è compilato appositamente per la tua piattaforma.


4
+1 - ma dubito "sempre" (dipende dalla piattaforma che stai utilizzando) e questi vantaggi possono avere un costo per l'utente: bisogno di un compilatore, bisogno di sapere come usarlo, bisogno di sapere come costruire quel progetto specifico, che ha bisogno di passare il tempo a indagare e segnalare i bizzarri bug che si presentano solo sulla tua piattaforma particolare, ecc.
Steve314,

1
@ steve314: +1, tutti i punti veri :)
Demian Brecht,

7
Alcuni file binari di solito non sono così grandi. E il costo in termini di tempo per l'utente è generalmente molto elevato. Trovare tutte le dipendenze e capire come costruire quel progetto specifico richiede parecchio tempo. Anche se il tuo utente sembra essere un programmatore. Se l'utente non è un programmatore, può praticamente dimenticare il tuo prodotto. E penso che l'argomento della performance sia sopravvalutato. Di solito non hai bisogno dell'ultimo percento delle prestazioni e, se lo fai, puoi ancora capire come costruire dalla fonte.
CodesInChaos,

1
@codeinchaos: è interamente relativo al progetto (dimensione). Una build potrebbe comprendere un singolo binario o diverse centinaia di MB (se non di più) in file binari e risorse non compilate (pensa ai giochi). Certo, a volte inchiodare le dipendenze può essere un po 'una seccatura, ma spetta all'autore del pacchetto fornire un elenco o un meccanismo di download / costruzione delle dipendenze (la raccolta delle porte di FreeBSD è ottima per questo) . I progetti rivolti ai non programmatori avranno quasi sempre un elenco binario / di installazione gestito da qualche parte.
Demian Brecht,

Il fatto è che molti progetti open source non sono "prodotti" nel solito senso. Dato che l'open source consiste nel consentire contributi in varie forme, avere altre persone che forniscono binari che sanno come farlo e hanno il tempo di mantenerli sembra una buona idea.
Fedone,

2

Mi vengono in mente due ragioni.

Innanzitutto, hai più sistemi operativi in ​​esecuzione su più tipi di hardware; il numero di target binari che dovresti costruire diventa ingestibile. Esistono tre versioni di Windows ancora comunemente utilizzate (XP, Vista, 7) in esecuzione su hardware a 32 o 64 bit; sono 6 obiettivi binari proprio lì. La situazione è peggiore dal lato Linux, con una varietà molto più ampia di distribuzioni in esecuzione su Dio che sa quale hardware (x86, PPC, MIPS, SPARC, PA-RISC, ecc.). Costruirai per ogni possibile combinazione? Hai anche l'attrezzatura e / o il software per farlo? Se c'è qualcuno ancora in esecuzione (Dio ci aiuti) NT su una PII, hai intenzione di costruire un binario per loro?

In secondo luogo, la fonte di spedizione significa che gli utenti possono ottimizzare la build per il loro ambiente particolare; possono attivare tutte le ottimizzazioni di cui hanno bisogno o modificare la fonte stessa, se necessario.


quindi immagino che la risposta sia usare qualcosa come i server di build di Sourceforge. Fai il check-in, lascia che ti costruiscano molti binari. Come en.opensuse.org/Build_Service
gbjbaanb

1
Dal momento che questi programmi di solito non usano alcuna funzione speciale Vista / Win7 e i programmi a 32 bit funzionano su sistemi operativi a 64 bit, puoi quasi sempre cavartela con un singolo binario WinXP a 32 bit per tutti gli utenti di Windows.
CodesInChaos,

@CodeInChaos - +1 - alcuni progetti forniscono sia binari a 32 bit che a 64 bit, ma offrono più varianti di quelle rare. Un punto valido, però.
Steve314,

@gbjbaanb - una risposta, certamente, ma probabilmente non la risposta.
Steve314,

2

In genere, il valore di un progetto open source, sia esso un'applicazione, sistema, modulo o libreria, è che può essere studiato e / o modificato secondo necessità. La distribuzione della fonte è intrinseca al modello editoriale.

La distribuzione di un binario comporta il rischio che sia stato modificato in qualche modo per scopi nefasti. La compilazione del progetto da fonti tenta di mitigare tale rischio.


Per le applicazioni> il 90% degli utenti non guarderà nemmeno la fonte. E il rischio di manipolazione è qualcosa che la maggior parte dei downloader di file binari è disposta a prendere. Non possono (e anche se potessero essere troppo pigri) per verificare che un codice sorgente non contenga codice dannoso.
CodesInChaos,

2
È vero, ma l'OP ha chiesto perché i progetti open source non sono in genere distribuiti come binari, non "come utente, perché devo compilare tutto questo?" ;-)
Rob Raisch,

Ma i tuoi argomenti sono sul perché è meglio per l'utente che ottenga il codice sorgente e non i file binari.
CodesInChaos,

1
Divertente, non vedo la parola "utente" nella mia risposta o nella domanda originale. Forse sto leggendo la mia risposta in modo errato?
Rob Raisch,

1
Interessante che sembri intenzionato a interpretare erroneamente i miei commenti poiché non ho tentato di fornire "un motivo per non fornire binari". Ho semplicemente fornito una spiegazione del perché i progetti open source sono generalmente distribuiti come codice sorgente. Grazie per aver giocato, ma questo è il mio ultimo commento su questo.
Rob Raisch,

1

Questo può avere diversi motivi. Molti (se non la maggior parte) progetti open source iniziano su Linux. Quindi il progetto iniziale è fatto per questo sistema e l'imballaggio è fatto dai membri del team.

La creazione di un programma di installazione di Windows è un lavoro extra che richiede conoscenze che gli sviluppatori Linux potrebbero non avere. Quindi, se qualcuno al di fuori del nucleo centrale intraprende questo lavoro, viene spesso menzionato in modo speciale.

Lo stesso può valere per altri sistemi come OS X o persino specifiche distribuzioni Linux. Tutto dipende da chi ha le conoscenze e il tempo per fare il lavoro extra.


Un programma di installazione di Windows è raramente richiesto. Anche un file zip con i binari va bene. Ma ovviamente hai ragione sul fatto che molti sviluppatori basati su Linux non si preoccuperanno molto di una versione di Windows del loro programma.
CodesInChaos,

1
Un file zip può essere un grande handicap nel mondo Windows. 'Ho scaricato questo file. Ora quando faccio clic su Windows mi dice che il suo "formato di file sconosciuto" 'è un problema abbastanza comune nei forum di aiuto.
Thorsten Müller,

Ho pubblicato tutte le mie cose come file .zip. Penso che l'unica lamentela che ho ricevuto in questo contesto sia stata da un ragazzo che è riuscito a copiare il file exe sul suo desktop invece di creare un collegamento. Ma in ogni caso la difficoltà di costruire dalla fonte è molto più alta della difficoltà di decomprimere qualcosa.
CodesInChaos,

1
Dipende in parte dalla tua base di utenti. Se pubblichi una libreria utilizzata solo dai programmatori non avrai problemi con i file zip. Zip è abbastanza semplice, quindi ogni pubblico con conoscenze di base lo fa. Anche se ho visto la domanda zip abbastanza spesso ...
Thorsten Müller,

1
Tieni presente che in XP +, i file zip sono gestiti in modo nativo dal sistema operativo e un doppio clic sufficiente aprirà il file in una cartella estratta.
Phil Cohen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.