¿Por qué algunas bibliotecas de código abierto no proporcionan binarios?

15

¿Por qué algunas bibliotecas de código abierto no proporcionan binarios? Me he dado cuenta de que algunos proyectos difieren de terceros que mantienen las versiones actuales del software, especialmente para las versiones de Windows.

Pregunto porque parece una barrera para la adopción de una biblioteca. Es más trabajo para el desarrollador, ya que debe configurar su entorno para construirlo. Un desarrollador también tiene que preocuparse de que haya introducido errores al construir la biblioteca incorrectamente.


EDITAR : Algunas actualizaciones para abordar comentarios y respuestas. He eliminado los ejemplos ya que no son centrales para la discusión. También reformulé mi pregunta como "algunas bibliotecas de código abierto proporcionan" en lugar de "las bibliotecas de código abierto tienden a proporcionar" ... no se dieron cuenta de que la gente se ofendería por eso.

M. Dudley
fuente
77
"tender"? Dos ejemplos es una tendencia? ¿Tiene más datos para respaldar su reclamo?
S.Lott
3
Los administradores de paquetes de Linux generalmente se usan para implementar binarios, por lo que no entiendo esa referencia.
David Thornley
77
Porque son hippies perezosos que fuman marihuana con educación universitaria (el peor tipo de hippies).
Trabajo
77
Sí, malditos hippies escribiendo software gratis que la mitad del mundo usa, ¡jódelos!
Tamás Szelei
3
@CodeinChaos: No he construido desde la fuente en años. Fedora, Mac OS y OpenSuSE deben ser raras excepciones a esta "tendencia". ¿Qué sistema operativo estás usando que es tan poco compatible? Me gustaría evitarlo, si es posible.
S.Lott

Respuestas:

11

Porque hacer binarios de Windows es un trabajo completamente diferente que requiere una base de conocimiento y un conjunto de herramientas completamente diferentes. La gente parece tener dificultades para comprender esto sobre los desarrolladores de Linux, así que permítanme darle la vuelta.

  • Has usado Windows para lo que parece una eternidad.
  • Solo tienes Windows instalado en casa.
  • Usó Linux aquí y allá en el trabajo, pero solo como usuario, no administrando o desarrollando Linux.
  • Usted sabe que gcc es el compilador más utilizado para Linux, pero nunca lo ha instalado en su propia computadora.
  • Principalmente trabaja en el software para usted en Windows, pero no le importa hacer correcciones de errores para Linux si alguien más hace el trabajo para hacerlo compatible y distribuir binarios.
  • No desea pagar por otro sistema operativo y cadena de herramientas cuando otra persona que ya tiene está perfectamente dispuesta a hacer las compilaciones.
Karl Bielefeldt
fuente
2
En resumen, algunos programadores no tienen el conocimiento, los recursos o la motivación para crear binarios para otras plataformas.
M. Dudley
11

El Cairo es una biblioteca, no una aplicación. Postgres parece tener binarios de Windows . Los proyectos más pequeños a menudo no proporcionan compilaciones porque no tienen la infraestructura / recursos.

Phaylon
fuente
44
+1 especialmente "no tengo los recursos". Difícil proporcionar una compilación de Windows prueba si usted no tiene una licencia para Windows, no tienen un compilador de Windows (o el tiempo para experimentar con compiladores cruzados), etc.
Steve314
1
@ Steve314: Todos tienen un compilador de Windows, ya sea el gcc de código abierto o el Visual Studio Express gratuito.
gbjbaanb
1
Una biblioteca también puede tener binarios, a saber, dlls. A menudo no tengo el compilador (instalado) ni las dependencias para construir la biblioteca original. Entonces, como obtener binarios, incluso para bibliotecas.
CodesInChaos
44
@CodeInChaos: Linux no se usa .dllmuy a menudo, por lo que esos binarios serían en gran medida inútiles para algunos de nosotros. La fuente pura sería mejor.
S.Lott
99
@gbjbaanb: No todos tienen una instalación de Windows, y mucho menos un compilador.
David Thornley
9

Es parte de la filosofía de código abierto de "si quieres hacer algo, toma una pala". Naturalmente, reduce la carga de trabajo de los desarrolladores si los usuarios simplemente compilan el programa ellos mismos. No hay que preocuparse por todas esas arquitecturas, sistemas operativos, etc.

Pero, si está haciendo un producto a nivel de consumidor (Firefox, Paint.NET, Audacity, Keepass, etc.) y le interesa adquirir usuarios, ¡ siempre debe , siempre, siempre! Incluye binarios. Probablemente solo el 2% de las personas que tropiezan en su sitio web y están interesadas en su producto, van a:

  • Descargue el cliente SCM apropiado
  • Mira una copia completa del árbol fuente
  • Descargue el IDE o las herramientas de compilación necesarias (fácilmente varios cientos de MB para algunos proyectos)
  • Descargue e instale todas las dependencias necesarias (y establezca variables de entorno)
  • Ejecute una compilación nueva (fácilmente un proceso de 10 minutos en algunos proyectos)
  • Trate cualquier error o problema o surja (que en proyectos pequeños probablemente no esté documentado: "¡oh, sí, lo último está realmente en la reescritura de ramas, no en el tronco!")
  • Desinstale todo o déjelo todo en su computadora y vuelva a compilarlo para obtener actualizaciones.

(Obviamente, en Linux, las cosas son mucho más sensatas, pero la mayoría de los consumidores aún usan Windows).

Es mucho más fácil para los recién llegados decir "¡Oh, versión de Windows! Descargar. Ejecutar".

Sin embargo, muchos proyectos de código abierto no son a nivel del consumidor; se dirigen a los programadores, que tienen una tolerancia mucho mayor para este tipo de prueba, por lo que los binarios son bricolaje. Sin embargo, en mi experiencia, los programadores pueden ser tan vagos como los usuarios, así que ten cuidado. :)

Phil Cohen
fuente
Estos son exactamente los tipos de problemas que me hicieron hacer la pregunta en primer lugar.
M. Dudley
3
¿Quién distribuiría un proyecto que requiere un IDE para construir? Y la gente no distribuye en SCM por lo general. Es más como wget, tar xfz, ./configure, make, su -c 'make install' ...
alternativa
Puntos justos, matemáticos. Y los hosts SCM más modernos (como GitHub) le permitirán descargar una copia comprimida de la última versión de todos modos.
Phil Cohen
@mathepic: desarrolladores de Windows, eso es quién.
Stuart P. Bentley
Los proyectos de @Stuart VS son solo archivos de msbuild. No se necesita IDE.
alternativa
6

Los creadores de aplicaciones escritas en un entorno Write Once Compile Anywhere (C, C ++, etc.) se benefician de llevar el paso de compilación a distribuidores (apt, rpm, yum, etc.) que crean y empaquetan binarios para arquitecturas populares. Esto logra una aplicación máximamente portátil con menos esfuerzo por parte de los creadores y les permite pasar más tiempo enfocándose en su competencia central (desarrollar la aplicación, no compilarla y alojarla para múltiples arquitecturas). Algunos creadores de aplicaciones WOCA están dispuestos a pagar el costo adicional en casos especiales como Windows porque, bueno, nadie más lo hará, los usuarios lo esperan y no quieren renunciar al mercado.

Por otro lado, las aplicaciones escritas en un entorno Write Once Run Anywhere (Java) o para una arquitectura de destino específica (aplicaciones OS X, por ejemplo) pueden proporcionar un solo binario y, a menudo, lo hacen ya que solo tienen que pagar la compilación Cuesta una vez.

Finalmente, sus usuarios generalmente se sienten cómodos construyendo desde la fuente o usando su administrador de paquetes del sistema operativo, por lo que este modelo también proporciona una mejor usabilidad. Los usuarios saben dónde obtener binarios (su administrador de paquetes), tienen una experiencia de ciclo de vida constante de instalación y administración de paquetes, y saben dónde adquirir la fuente si la necesitan.

Rein Henrichs
fuente
2
Un problema con escribir una vez, ejecutar en cualquier lugar es que la máquina virtual es un programa en sí mismo, desde el punto de vista de la O / S. Por ejemplo, la mayoría de los firewalls de Windows le permiten otorgar / denegar el acceso a las redes aplicación por aplicación. Pero la mayoría de ellos no pueden distinguir una aplicación Java de otra: otorgan / niegan el acceso a la JVM, pero si tiene una aplicación Java que actúa como un servidor de Internet (Azureus, tal vez), el firewall no bloqueará a ningún pícaro desconocido Aplicación Java que actúa como servidor. Si hay una solución específica de Java, soy un ejemplo de un usuario de Java que no lo sabe.
Steve314
1
@ Steve, no estoy en desacuerdo con usted per se, pero realmente no veo cómo los pros / contras de WOCA o WORA son relevantes para esta pregunta.
Rein Henrichs
tangencial, cierto, pero en una pregunta que ya es una guerra religiosa entre Linux y Windows, etc., tal vez uno de los delitos menores. Por cierto, hice +1 tu respuesta como útil.
Steve314
Yay guerra religiosa! Conseguiré el alquitrán, ¿consigues las plumas?
Rein Henrichs
5

¿Por qué querría masticar el ancho de banda proporcionándole una compilación (que obviamente puede ser muy grande) en lugar de que construya la fuente que le estoy proporcionando de todos modos? Sin mencionar que construir un proyecto en su propia máquina siempre producirá mejores resultados ya que está compilado específicamente para su plataforma.

Demian Brecht
fuente
44
+1, pero dudo "siempre" (depende de la plataforma que esté usando), y esos beneficios pueden tener algún costo para el usuario: necesita un compilador, necesita saber cómo usarlo, necesita saber cómo construir ese proyecto específico, que necesita pasar tiempo investigando e informando sobre los errores extraños que aparecen solo en su plataforma en particular, etc.
Steve314
1
@ steve314: +1, todos los puntos verdaderos :)
Demian Brecht
77
Algunos archivos binarios generalmente no son tan grandes. Y el costo del tiempo para el usuario suele ser realmente grande. Encontrar todas las dependencias y descubrir cómo construir ese proyecto específico lleva bastante tiempo. Incluso si su usuario resulta ser un programador. Si el usuario no es programador, puede olvidarse de su producto. Y creo que el argumento del rendimiento está muy sobrevalorado. Por lo general, no necesita ese último porcentaje de rendimiento, y si lo necesita, aún puede descubrir cómo construir desde la fuente.
CodesInChaos
1
@codeinchaos: Eso es completamente relativo al proyecto (tamaño). Una compilación podría abarcar un solo binario o varios cientos de MB (si no más) en binarios y activos no compilados (juegos de reflexión). Por supuesto, a veces es muy difícil determinar las dependencias, pero depende del autor del paquete proporcionar una lista o un mecanismo de tiempo de compilación para descargar / crear dependencias (la colección de puertos de FreeBSD es excelente para eso) . Los proyectos dirigidos a no programadores casi siempre tendrán una lista binaria / de instalador mantenida en alguna parte.
Demian Brecht
La cuestión es que muchos proyectos de código abierto no son "productos" en el sentido habitual. Dado que el código abierto se trata de permitir contribuciones en varias formas, hacer que otras personas proporcionen archivos binarios que sepan cómo hacerlo y tengan tiempo para mantenerlos parece una buena idea.
Phaylon
2

Puedo pensar en dos razones.

Primero, tiene múltiples sistemas operativos que se ejecutan en múltiples tipos de hardware; la cantidad de objetivos binarios que tendrías que construir se vuelve inmanejable. Hay tres versiones de Windows que todavía se usan comúnmente (XP, Vista, 7) que se ejecutan en hardware de 32 o 64 bits; Eso es 6 objetivos binarios allí mismo. La situación es peor en el lado de Linux, con una variedad mucho mayor de distribuciones ejecutándose en Dios sabe qué hardware (x86, PPC, MIPS, SPARC, PA-RISC, etc.). ¿Vas a construir para cada combinación posible? ¿Tiene incluso el equipo y / o software para hacerlo? Si hay alguien por ahí corriendo (Dios nos ayude) NT en una PII, ¿vas a construir un binario para ellos?

En segundo lugar, la fuente de envío significa que los usuarios pueden optimizar la compilación para su entorno particular; pueden activar las optimizaciones que necesiten o modificar la fuente en sí si es necesario.

John Bode
fuente
así que supongo que la respuesta es usar algo como los servidores de compilación de Sourceforge. Registrate, deja que te construyan muchos binarios. Tales como en.opensuse.org/Build_Service
gbjbaanb
1
Dado que esos programas generalmente no usan ninguna característica especial de Vista / Win7 y los programas de 32 bits se ejecutan en sistemas operativos de 64 bits, casi siempre puede salirse con un solo binario WinXP de 32 bits para todos los usuarios de Windows.
CodesInChaos
@CodeInChaos - +1 - algunos proyectos proporcionan binarios de 32 bits y 64 bits, pero proporcionar más variaciones que eso es raro. Un punto válido, sin embargo.
Steve314
@gbjbaanb: una respuesta, ciertamente, pero probablemente no la respuesta.
Steve314
2

Por lo general, el valor de un proyecto de código abierto, ya sea una aplicación, sistema, módulo o biblioteca, es que puede estudiarse y / o modificarse según sea necesario. La distribución de la fuente es intrínseca al modelo de publicación.

La distribución de un binario corre el riesgo de que se haya modificado de alguna manera para fines nefastos. Compilar el proyecto desde la fuente intenta mitigar ese riesgo.

Rob Raisch
fuente
Para aplicaciones> 90% de los usuarios nunca mirarán la fuente. Y el riesgo de manipulación es algo que la mayoría de los descargadores de binarios están dispuestos a asumir. No pueden (e incluso si pudieran ser demasiado flojos) verificar que un código fuente no contenga código malicioso.
CodesInChaos
2
Es cierto, pero el OP preguntó por qué los proyectos de código abierto generalmente no se distribuyen como archivos binarios, no "como usuario, ¿por qué tengo que compilar todo esto?" ;-)
Rob Raisch
Pero sus argumentos son sobre por qué es mejor para el usuario que obtenga la fuente y no los binarios.
CodesInChaos
1
Es curioso, no veo la palabra 'usuario' ni en mi respuesta ni en la pregunta original. ¿Quizás estoy leyendo mi propia respuesta incorrectamente?
Rob Raisch
1
Es interesante que parezca empeñado en malinterpretar mis comentarios, ya que no intenté proporcionar "una razón para no proporcionar binarios". Simplemente proporcioné una explicación de por qué los proyectos de código abierto generalmente se distribuyen como código fuente. Gracias por jugar, pero este es mi último comentario al respecto.
Rob Raisch
1

Esto puede tener varias razones. Muchos (si no la mayoría) de los proyectos de código abierto comienzan en Linux. Entonces, el proyecto inicial se realiza para este sistema y el empaquetado lo realizan los miembros del equipo.

Crear un instalador de Windows es un trabajo adicional que requiere conocimientos que los desarrolladores de Linux pueden no tener. Entonces, si alguien de fuera del equipo central asume este trabajo, a menudo se lo menciona especialmente.

Lo mismo puede ser cierto para otros sistemas como OS X o incluso distribuciones específicas de Linux. Todo depende de quién tenga el conocimiento y el tiempo para hacer el trabajo extra.

Thorsten Müller
fuente
Raramente se requiere un instalador de Windows. Un archivo zip con los binarios también está bien. Pero, por supuesto, tiene razón en que a muchos desarrolladores basados ​​en Linux no les importará mucho una versión de Windows de su programa.
CodesInChaos
1
Un archivo zip puede ser una gran desventaja en el mundo de Windows. 'He descargado este archivo. Ahora, cuando hago clic en él, Windows me dice que su "formato de archivo desconocido" es un problema bastante común en los foros de ayuda.
thorsten müller
He publicado todas mis cosas como archivos .zip. Creo que la única queja que recibí en este contexto fue por un tipo que logró copiar el archivo exe en su escritorio en lugar de crear un enlace. Pero, en cualquier caso, la dificultad de construir desde la fuente es mucho mayor que la dificultad de descomprimir algo.
CodesInChaos
1
Depende en parte de su base de usuarios. Si publica una biblioteca que solo usan los programadores, no tendrá problemas con los archivos zip. Zip es lo suficientemente fácil como para que cada audiencia con conocimientos básicos lo haga. Aunque he visto la pregunta zip con bastante frecuencia ...
thorsten müller
1
Tenga en cuenta que en XP +, el sistema operativo maneja los archivos zip de forma nativa, y un doble clic suficiente abrirá el archivo en una carpeta extraída.
Phil Cohen