Por que algumas bibliotecas de código aberto não fornecem binários? Percebi que alguns projetos diferem para terceiros que mantêm compilações atuais do software, especialmente para compilações do Windows.
Eu pergunto porque parece uma barreira para a adoção de uma biblioteca. É mais trabalho para o desenvolvedor, pois ele deve configurar seu ambiente para construí-lo. Um desenvolvedor também precisa se preocupar com o fato de ter introduzido erros ao criar a biblioteca incorretamente.
EDIT : Algumas atualizações para abordar comentários e respostas. Eu removi os exemplos, pois eles não são essenciais para a discussão. Também reformulei minha pergunta como "algumas bibliotecas de código aberto fornecem" em vez de "as bibliotecas de código aberto tendem a fornecer" ... não percebiam que as pessoas se ofenderiam com isso.
fonte
Respostas:
Como criar binários do Windows é um trabalho completamente diferente, que exige uma base de conhecimento e um conjunto de ferramentas completamente diferentes. As pessoas parecem ter dificuldade em entender isso sobre os desenvolvedores do Linux, então deixe-me mudar.
fonte
O Cairo é uma biblioteca, não um aplicativo. O Postgres parece ter binários do Windows . Projetos menores geralmente não fornecem builds porque não possuem infraestrutura / recursos.
fonte
.dll
muita frequência, portanto esses binários seriam em grande parte inúteis para alguns de nós. Fonte pura seria melhor.É parte da filosofia de código aberto de "se você quer algo feito, pegue uma pá". Naturalmente, reduz a carga de trabalho dos desenvolvedores se os usuários simplesmente compilarem o programa. Não precisa se preocupar com todas essas arquiteturas, sistemas operacionais, etc ...
Mas, se você está criando um produto de nível de consumidor (Firefox, Paint.NET, Audacity, Keepass, etc.) e se preocupa em adquirir usuários, sempre, sempre, sempre! inclua binários. Provavelmente, apenas 2% das pessoas que tropeçam no seu site e estão interessadas no seu produto vão:
(Obviamente, no linux, as coisas são muito mais saudáveis, mas a maioria dos consumidores ainda usa o Windows.)
É muito mais fácil para os novatos dizerem "ooh, versão para Windows! Baixe. Execute".
No entanto, muitos projetos de código aberto não estão no nível do consumidor; eles têm como alvo programadores, que têm uma tolerância muito maior para esse tipo de provação e, portanto, os binários são de bricolage. Na minha experiência, os programadores podem ser tão preguiçosos quanto os usuários, portanto, seja avisado. :)
fonte
Os criadores de aplicativos gravados em um ambiente Write Once Compile Anywhere (C, C ++, etc) se beneficiam com o empurrão da etapa de compilação para os distribuidores (apt, rpm, yum, etc) que criam e empacotam binários para arquiteturas populares. Isso atinge um aplicativo portátil máximo com menos esforço por parte dos criadores e permite que eles gastem mais tempo concentrando-se em sua competência principal (desenvolver o aplicativo, não compilá-lo e hospedá-lo para várias arquiteturas). Alguns criadores de aplicativos WOCA estão dispostos a pagar o custo extra em casos especiais como o Windows, porque - bem - ninguém mais, os usuários esperam, e não querem desistir do mercado.
Por outro lado, os aplicativos gravados em um ambiente Write Once Run Anywhere (Java) ou para uma arquitetura de destino específica (aplicativos OS X, por exemplo) são capazes de fornecer um único binário e geralmente o fazem, uma vez que precisam pagar apenas a compilação custar uma vez.
Por fim, seus usuários geralmente se sentem confortáveis construindo a partir da fonte ou usando o gerenciador de pacotes do SO, portanto, este modelo também oferece uma melhor usabilidade. Os usuários sabem onde obter os binários (seu gerenciador de pacotes), têm uma experiência consistente no ciclo de vida de instalação e gerenciamento de pacotes e sabem onde adquirir a fonte, caso precisem.
fonte
Por que eu gostaria de aumentar a largura de banda, fornecendo uma compilação (que obviamente pode ser muito grande) em vez de criar a fonte que eu estou fornecendo? Sem mencionar que a construção de um projeto em sua própria máquina sempre produzirá melhores resultados, pois é compilada especificamente para sua plataforma.
fonte
Eu posso pensar em duas razões.
Primeiro, você tem vários sistemas operacionais em execução em vários tipos de hardware; o número de destinos binários que você precisaria construir fica incontrolável. Existem três versões do Windows ainda comumente usadas (XP, Vista, 7), executadas em hardware de 32 ou 64 bits; são 6 alvos binários bem ali. A situação é pior no lado do Linux, com uma variedade muito maior de distribuições em execução que Deus sabe qual hardware (x86, PPC, MIPS, SPARC, PA-RISC, etc.). Você vai construir para todas as combinações possíveis? Você tem o equipamento e / ou software para fazer isso? Se alguém por aí ainda está rodando (Deus nos ajude) NT em uma PII, você irá construir um binário para eles?
Segundo, a origem da remessa significa que os usuários podem otimizar a construção para seu ambiente específico; eles podem ativar as otimizações necessárias ou ajustar a própria fonte, se necessário.
fonte
Normalmente, o valor de um projeto de código aberto, seja um aplicativo, sistema, módulo ou biblioteca, é que ele pode ser estudado e / ou modificado conforme necessário. Distribuir a fonte é intrínseco ao modelo de publicação.
A distribuição de um binário corre o risco de ter sido modificado de alguma maneira para fins nefastos. A compilação do projeto a partir da origem tenta mitigar esse risco.
fonte
Isso pode ter vários motivos. Muitos projetos de código aberto (se não a maioria) iniciam no Linux. Portanto, o projeto inicial é feito para esse sistema e a embalagem é feita pelos membros da equipe.
Criar um instalador do Windows é um trabalho extra que requer conhecimento que os desenvolvedores do Linux podem não ter. Portanto, se alguém de fora da equipe principal assume esse trabalho, ele é frequentemente mencionado especialmente.
O mesmo pode acontecer com outros sistemas, como o OS X ou mesmo distribuições específicas do Linux. Tudo depende de quem tem conhecimento e tempo para fazer o trabalho extra.
fonte