¿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.
fuente
Respuestas:
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.
fuente
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.
fuente
.dll
muy a menudo, por lo que esos binarios serían en gran medida inútiles para algunos de nosotros. La fuente pura sería mejor.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:
(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. :)
fuente
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.
fuente
¿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.
fuente
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.
fuente
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.
fuente
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.
fuente