Почему некоторые библиотеки с открытым исходным кодом не предоставляют двоичные файлы?

15

Почему некоторые библиотеки с открытым исходным кодом не предоставляют двоичные файлы? Я заметил, что некоторые проекты принадлежат сторонним организациям, которые поддерживают текущие сборки программного обеспечения, особенно для сборок Windows.

Я спрашиваю, потому что это похоже на барьер для принятия библиотеки. Для разработчика это больше работа, так как он должен настроить свою среду для ее создания. Разработчик также должен беспокоиться о том, что он вводил ошибки, неправильно создавая библиотеку.


РЕДАКТИРОВАТЬ : Некоторые обновления для адреса комментариев и ответов. Я удалил примеры, так как они не являются центральными для обсуждения. Также перефразировал мой вопрос, поскольку «некоторые библиотеки с открытым исходным кодом предоставляют», а не «библиотеки с открытым исходным кодом, как правило, предоставляют» ... не понимал, что люди обидятся на это.

М. Дадли
источник
7
« как правило»? Два примера это тенденция? У вас есть больше данных для подтверждения вашего заявления?
С.Лотт
3
Менеджеры пакетов Linux обычно используются для развертывания двоичных файлов, поэтому я не понимаю эту ссылку.
Дэвид Торнли
7
Потому что они ленивые хиппи, получившие образование в колледже (худший вид хиппи).
Работа
7
Да, черт побери, хиппи, пишущие программы, которые бесплатно использует половина мира, напортачите!
Тамас Селеи
3
@CodeinChaos: я не строил из источника в течение многих лет. Fedora, Mac OS и OpenSuSE должны быть странными исключениями из этой «тенденции». Какую ОС вы используете, которая так плохо поддерживается? Я хотел бы избежать этого, если это возможно.
С.Лотт

Ответы:

11

Потому что создание бинарных файлов для Windows - это совершенно другая работа, требующая совершенно другой базы знаний и набора инструментов. Кажется, людям трудно понять, что такое разработчики для Linux, поэтому позвольте мне перевернуть это.

  • Вы использовали Windows для того, что кажется вечным.
  • У вас дома установлена ​​только Windows.
  • Вы использовали Linux здесь и там на работе, но только как пользователь, а не для администрирования или разработки для Linux.
  • Вы знаете, что gcc - наиболее часто используемый компилятор для Linux, но никогда не устанавливали его на свой компьютер.
  • Вы в основном работаете над программным обеспечением для себя в Windows, но не возражаете против исправления ошибок для Linux, если кто-то другой сделает работу по обеспечению его совместимости и распространению двоичных файлов.
  • Вы не хотите платить за другую ОС и набор инструментов, когда кто-то, кто уже имеет, совершенно готов сделать сборки.
Карл Билефельдт
источник
2
Таким образом, некоторые программисты не имеют знаний, ресурсов или мотивации для создания бинарных файлов для других платформ.
М. Дадли
11

Каир - это библиотека, а не приложение. У Postgres, похоже, есть бинарные файлы для Windows . Небольшие проекты часто не предоставляют сборки, потому что у них нет инфраструктуры / ресурсов.

phaylon
источник
4
+1 особенно "нет ресурсов". Трудно предоставить протестированную сборку Windows, если у вас нет лицензии на Windows, нет компилятора Windows (или у вас есть время поэкспериментировать с кросс-компиляторами) и т. Д.
Steve314
1
@ Steve314: У каждого есть компилятор Windows - либо gcc с открытым исходным кодом, либо бесплатный Visual Studio Express.
gbjbaanb
1
Библиотека также может иметь двоичные файлы, а именно dll. Часто у меня нет компилятора (установленного) или зависимостей для сборки исходной библиотеки. Так как получать двоичные файлы, даже для библиотек.
CodesInChaos
4
@CodeInChaos: Linux используется не .dllочень часто, поэтому эти двоичные файлы будут бесполезны для некоторых из нас. Чистый источник был бы лучше.
С.Лотт
9
@gbjbaanb: Не у всех есть установка Windows, не говоря уже о компиляторе.
Дэвид Торнли
9

Это часть философии открытого исходного текста «если хочешь что-то сделать, возьми лопату». Естественно, это снижает нагрузку на разработчиков, если пользователи просто сами компилируют программу. Не нужно беспокоиться обо всех этих архитектурах, ОС и т. Д.

Но если вы создаете продукт потребительского уровня (Firefox, Paint.NET, Audacity, Keepass и т. Д.), И вы заботитесь о привлечении пользователей, вы должны всегда, всегда, всегда! включать двоичные файлы Вероятно, только 2% людей, которые сталкиваются с вашим сайтом и интересуются вашим продуктом, собираются:

  • Загрузите соответствующий клиент SCM
  • Проверьте всю копию исходного дерева
  • Загрузите необходимые инструменты IDE или компилятора (несколько сотен МБ для некоторых проектов)
  • Загрузите и установите все необходимые зависимости (и установите переменные среды)
  • Запустите новую компиляцию (легко 10-минутный процесс в некоторых проектах)
  • Разбираться с любыми ошибками, проблемами или возникающими проблемами (которые в небольших проектах, вероятно, не документированы - «о, да, последние на самом деле переписывают ветвь, а не транк!»)
  • Удалите все или оставьте все на своем компьютере и заново скомпилируйте обновления.

(Очевидно, что в Linux все гораздо разумнее, но большинство потребителей все еще используют Windows.)

Новичкам гораздо проще сказать: «О, версия для Windows! Скачайте. Запустите».

Тем не менее, многие проекты с открытым исходным кодом не на потребительском уровне; они нацелены на программистов, которые имеют гораздо более высокую терпимость к такого рода испытаниям, поэтому двоичные файлы являются самостоятельными. По моему опыту, программисты могут быть такими же ленивыми, как и пользователи, поэтому будьте осторожны. :)

Фил Коэн
источник
Именно эти типы вопросов заставили меня задать вопрос в первую очередь.
М. Дадли
3
Кто будет распространять проект, для сборки которого требуется интегрированная среда разработки? И люди обычно не распространяют в СКМ. Это больше похоже на wget, tar xfz, ./configure, make, su -c 'make install' ...
альтернатива
Ярмарка, Mathepic. А более современные хосты SCM (например, GitHub) позволят вам в любом случае загрузить сжатую копию последней версии.
Фил Коэн
@mathepic: разработчики Windows, вот кто.
Стюарт П. Бентли
Проекты @Stuart VS - это просто файлы msbuild. IDE не требуется.
альтернатива
6

Создатели приложений, написанных в среде Write Once Compile Anywhere (C, C ++ и т. Д.), Выигрывают от передачи шага компиляции дистрибьюторам (apt, rpm, yum и т. Д.), Которые создают и упаковывают двоичные файлы для популярных архитектур. Это обеспечивает максимально переносимое приложение с меньшими усилиями со стороны создателей и позволяет им тратить больше времени на то, чтобы сосредоточиться на своей основной компетенции (разработка приложения, а не его компиляция и размещение для нескольких архитектур). Некоторые создатели приложений WOCA готовы платить дополнительные расходы в особых случаях, таких как Windows, потому что, ну, в общем-то, никто этого не сделает, пользователи ожидают этого, и они не хотят отказываться от рынка.

С другой стороны, приложения, написанные в среде Write Once Run Anywhere (Java) или для конкретной целевой архитектуры (например, приложения OS X), могут предоставить один двоичный файл и часто делают это, поскольку им нужно только оплатить компиляцию стоить один раз.

Наконец, их пользователям, как правило, удобно либо строить из исходного кода, либо использовать диспетчер пакетов ОС, поэтому эта модель также обеспечивает удобство использования. Пользователи знают, где взять двоичные файлы (их менеджер пакетов), имеют согласованный опыт установки и управления жизненным циклом пакетов, а также знают, где можно получить исходный код, если он им понадобится.

Рейн Хенрикс
источник
2
Одна из проблем записи с однократным выполнением в любом месте заключается в том, что виртуальная машина - это отдельная программа с точки зрения операционной системы. Например, большинство брандмауэров Windows позволяют предоставлять / запрещать доступ к сетям для каждого отдельного приложения. Но большинство из них не может отличить одно Java-приложение от другого - они предоставляют / запрещают доступ к JVM, но если у вас есть одно Java-приложение, которое действует как интернет-сервер (возможно, Azureus), то брандмауэр не будет блокировать любого неизвестного мошенника. Java-приложение действует как сервер. Если есть специфичное для Java решение, я являюсь примером пользователя Java, который не знает об этом.
Steve314
1
@ Стив, я не согласен с вами как таковым, но я действительно не понимаю, как плюсы / минусы WOCA или WORA имеют отношение к этому вопросу.
Рейн Хенрикс
Тангенциальный, правда, но в вопросе, который уже является чем-то вроде религиозной войны между Linux и Windows и т. д., возможно, одним из менее серьезных преступлений. Кстати, я сделал +1 ваш ответ как полезный.
Steve314
Уу религиозная война! Я возьму смолу, вы получите перья?
Рейн Хенрикс
5

Почему я хочу использовать пропускную способность, предоставляя вам сборку (которая, очевидно, может быть очень большой), а не сборку источника, который я вам предоставляю в любом случае? Не говоря уже о том, что создание проекта на собственной машине всегда даст лучшие результаты, поскольку оно скомпилировано специально для вашей платформы.

Демиан Брехт
источник
4
+1 - но я сомневаюсь, что «всегда» (зависит от того, какую платформу вы используете), и эти преимущества могут стоить пользователю некоторой стоимости - нужен компилятор, нужно уметь его использовать, нужно уметь строить этот конкретный проект, требующий тратить время на расследование и сообщение о странных ошибках, которые появляются только на вашей конкретной платформе и т. д.
Steve314
1
@ steve314: +1, все верные очки :)
Демиан Брехт
7
Несколько бинарных файлов обычно не такие большие. А временные затраты для пользователя обычно очень велики. Поиск всех зависимостей и выяснение того, как построить этот конкретный проект, занимает довольно много времени. Даже если ваш пользователь оказался программистом. Если пользователь не программист, он может забыть о вашем продукте. И я думаю, что аргумент производительности слишком переоценен. Обычно вам не нужен этот последний процент производительности, и если вы это сделаете, вы все равно сможете выяснить, как строить из исходного кода.
CodesInChaos
1
@codeinchaos: Это полностью связано с проектом (размером). Сборка может включать один двоичный файл или несколько сотен МБ (если не больше) в двоичных файлах и не скомпилированных ресурсах (например, в играх). Конечно, иногда пригвоздить зависимости может быть немного больно, но автор пакета должен предоставить либо список, либо механизм загрузки / построения зависимостей во время сборки (коллекция портов FreeBSD отлично подходит для этого) , Проекты, предназначенные для непрограммистов, почти всегда будут содержать список бинарных / установочных файлов.
Демиан Брехт
Дело в том, что многие проекты с открытым исходным кодом не являются «продуктами» в обычном смысле. Так как открытый исходный код предназначен для того, чтобы делать вклады в различных формах, то, чтобы другие люди предоставляли двоичные файлы, которые знают, как это сделать, и у которых есть время для их поддержки, кажется хорошей идеей.
phaylon
2

Я могу думать о двух причинах.

Во-первых, у вас есть несколько операционных систем, работающих на разных типах оборудования; количество бинарных целей, которые вы должны построить, становится неуправляемым. Есть три версии Windows, все еще широко используемые (XP, Vista, 7), работающие на 32-битном или 64-битном оборудовании; это 6 двоичных целей прямо там. Ситуация хуже на стороне Linux, с большим количеством разнообразных дистрибутивов, работающих на бог знает, какое оборудование (x86, PPC, MIPS, SPARC, PA-RISC и т. Д.). Собираетесь ли вы строить для каждой возможной комбинации? У вас даже есть оборудование и / или программное обеспечение для этого? Если там еще кто-то работает (да поможет нам Бог) NT на PII, вы собираетесь создать двоичный файл для них?

Во-вторых, источник доставки означает, что пользователи могут оптимизировать сборку для своей конкретной среды; они могут включить любые оптимизации, которые им нужны, или настроить сам источник, если это необходимо.

Джон Боде
источник
поэтому я думаю, что ответом будет использовать что-то вроде серверов сборки Sourceforge. Проверьте, пусть они соберут вам много двоичных файлов. Например, en.opensuse.org/Build_Service
gbjbaanb
1
Поскольку эти программы обычно не используют никаких специальных функций Vista / Win7, а 32-разрядные программы работают на 64-разрядных ОС, вы почти всегда можете выбрать один 32-разрядный двоичный файл WinXP для всех пользователей Windows.
CodesInChaos
@CodeInChaos - +1 - некоторые проекты предоставляют как 32-битные, так и 64-битные двоичные файлы, но предоставляют больше вариаций, чем редко. Правда, правда.
Steve314
@gbjbaanb - ответ, конечно, но , вероятно , не ответ.
Steve314
2

Как правило, ценность проекта с открытым исходным кодом, будь то приложение, система, модуль или библиотека, заключается в том, что он может быть изучен и / или изменен по мере необходимости. Распространение источника является неотъемлемой частью модели публикации.

Распространение бинарного файла сопряжено с риском того, что он каким-то образом был изменен для гнусных целей. Компиляция проекта из источника пытается уменьшить этот риск.

Роб Райш
источник
Для приложений> 90% пользователей никогда не будут даже смотреть на источник. И риск манипуляции - это то, что большинство загрузчиков двоичных файлов готовы принять. Они не могут (и даже если бы могли, им было бы лень) проверить, что исходный код не содержит вредоносного кода.
CodesInChaos
2
Да, но ОП спросил, почему проекты с открытым исходным кодом, как правило, не распространяются в виде двоичных файлов, а не «как пользователь, почему я должен компилировать все эти вещи?» ;-)
Роб Райш
Но вы рассуждаете о том, почему для пользователя лучше получать исходный код, а не двоичные файлы.
CodesInChaos
1
Забавно, я не вижу слова «пользователь» ни в своем ответе, ни в исходном вопросе. Возможно, я неправильно читаю свой ответ?
Роб Райш
1
Интересно, что вы, кажется, одержимы неправильным толкованием моих комментариев, поскольку я не пытался указать «причину отказа от двоичных файлов». Я просто предоставил объяснение того, почему проекты с открытым исходным кодом обычно распространяются в виде исходного кода. Спасибо за игру, но это мой последний комментарий.
Роб Райш
1

Это может иметь несколько причин. Многие (если не большинство) проектов с открытым исходным кодом начинаются в Linux. Таким образом, первоначальный проект выполнен для этой системы, а упаковка выполняется членами команды.

Создание установщика Windows - это дополнительная работа, требующая знаний, которых нет у разработчиков Linux. Поэтому, если кто-то из основной команды берет на себя эту работу, его часто упоминают специально.

То же самое может быть верно для других систем, таких как OS X или даже определенных дистрибутивов Linux. Все зависит от того, у кого есть знания и время для выполнения дополнительной работы.

Торстен Мюллер
источник
Установщик Windows редко требуется. Zip-файл с двоичными файлами тоже подойдет. Но, конечно, вы правы в том, что многим разработчикам на основе Linux не будет важна версия Windows для их программы.
CodesInChaos
1
Zip-файл может стать серьезным препятствием в мире Windows. «Я скачал этот файл. Теперь, когда я нажимаю на него, Windows сообщает, что его «неизвестный формат файла» является довольно распространенной проблемой на справочных форумах.
Торстен Мюллер
Я опубликовал все мои вещи в виде файлов .zip. Я думаю, что единственная жалоба, которую я получил в этом контексте, была от одного парня, которому удалось скопировать exe-файл на свой рабочий стол вместо создания ссылки. Но в любом случае сложность сборки из источника намного выше, чем сложность распаковки чего-либо.
CodesInChaos
1
Частично зависит от вашей пользовательской базы. Если вы опубликуете библиотеку, которая используется только программистами, у вас не будет проблем с zip-файлами. Zip достаточно прост, поэтому каждая аудитория с базовыми знаниями справится с этим. Хотя я видел вопрос о почтовом индексе достаточно часто ...
Торстен Мюллер
1
Имейте в виду, что в XP + zip-файлы обрабатываются самой ОС, и достаточно двойного щелчка, чтобы открыть файл в извлеченной папке.
Фил Коэн