Чому деякі бібліотеки з відкритим кодом не надають бінарних файлів?


15

Чому деякі бібліотеки з відкритим кодом не надають бінарних файлів? Я помітив, що деякі проекти відкладаються стороннім особам, які підтримують поточні версії програмного забезпечення, особливо для версій Windows.

Я запитую, бо це здається перешкодою для прийняття бібліотеки. Це більше робота для розробника, оскільки він повинен створити своє оточення для його створення. Розробник також повинен турбуватися, що він ввів помилки, будуючи бібліотеку неправильно.


РЕДАКТУВАННЯ : Деякі оновлення для адрес коментарів та відповідей. Я видалив приклади, оскільки вони не є центральними у дискусії. Також перефразовуючи моє запитання, як "деякі бібліотеки з відкритим кодом надають", а не "бібліотеки з відкритим кодом, як правило, надають" ... не розумів, що люди будуть ображатися на це.


7
"тенденція"? Два приклади - це тенденція? Чи є у вас більше даних для підтвердження вашої претензії?
С.Лотт

3
Менеджери пакетів Linux зазвичай використовуються для розгортання бінарних файлів, тому я не розумію цього посилання.
Девід Торнлі

7
Тому що вони - ліниві хіпі-копчики, котрі курять горщик (найгірший вид хіпі).
Робота

7
Ага, чортові хіпі, що пишуть програмне забезпечення безкоштовно, яке використовує половина світу, накрутите їх!
Tamás Szelei

3
@CodeinChaos: Я не будував з джерела років. Fedora, Mac OS і OpenSuSE повинні бути дивними винятками з цієї "тенденції". Яку ОС ви використовуєте, що так погано підтримується? Я хотів би уникнути цього, якщо це можливо.
С.Лотт

Відповіді:


11

Оскільки виготовлення бінарних файлів Windows - це зовсім інша робота, що вимагає зовсім іншої бази знань та набору інструментів. Людям, здається, важко зрозуміти це щодо розробників Linux, тому дозвольте мені це розгорнути.

  • Ви використовували Windows для того, що здається назавжди.
  • У вас вдома встановлено тільки Windows.
  • Ви використовували Linux тут і там на роботі, але лише як користувач, не адміністратор і не розробляючи для Linux.
  • Ви знаєте, що gcc є найчастіше використовуваним компілятором для Linux, але ніколи не встановлювали його на власному комп’ютері.
  • В основному ви працюєте над програмним забезпеченням для Windows, але не забувайте робити виправлення помилок для Linux, якщо хтось інший виконує роботу, щоб зробити його сумісним і поширювати бінарні файли.
  • Ви не хочете платити за іншу ОС та інструментальну ланцюг, коли хтось інший, який вже є, абсолютно готовий робити складання.

2
Підсумовуючи це, деякі програмісти не мають знань, ресурсів чи мотивації для створення бінарних файлів для інших платформ.
М. Дадлі

11

Каїр - це бібліотека, а не додаток. Схоже, у Postgres є двійкові файли Windows . Менші проекти часто не забезпечують побудови, оскільки вони не мають інфраструктури / ресурсів.


4
+1, особливо "не маю ресурсів". Складно надати перевірену збірку Windows, якщо у вас немає ліцензії на Windows, у вас немає компілятора Windows (або часу експериментувати з перехресними компіляторами) тощо.
Steve314

1
@ Steve314: У кожного є компілятор Windows - або gcc з відкритим кодом, або безкоштовний Visual Studio Express.
gbjbaanb

1
Бібліотека також може мати двійкові файли, а саме dlls. Часто у мене немає ні компілятора (встановленого), ні залежностей для створення оригінальної бібліотеки. Так як отримати бінарні файли, навіть для бібліотек.
CodesInChaos

4
@CodeInChaos: Linux використовується не .dllдуже часто, тому такі бінарні файли для багатьох з нас будуть марними. Чисте джерело було б краще.
С.Лотт

9
@gbjbaanb: Не всі мають установку Windows, не кажучи вже про компілятор.
Девід Торнлі

9

Це частина філософії з відкритим кодом: "якщо ти хочеш, щоб щось було зроблено, захопи лопату". Природно, це зменшує навантаження на розробників, якщо користувачі просто самі складають програму. Не потрібно турбуватися про всі ці архітектури, ОС тощо.

Але, якщо ви створюєте продукт на рівні споживачів (Firefox, Paint.NET, Audacity, Keepass тощо), і ви дбаєте про придбання користувачів, завжди, завжди, завжди! включати двійкові файли. Напевно, лише 2% людей, які натрапляють на ваш веб-сайт і цікавляться вашим товаром, збираються:

  • Завантажте відповідний клієнт SCM
  • Перегляньте цілу копію вихідного дерева
  • Завантажте необхідні інструменти IDE або компілятора (легко кілька сотень МБ для деяких проектів)
  • Завантажте та встановіть усі необхідні залежності (та встановіть змінні середовища)
  • Запустити нову компіляцію (легко 10-хвилинний процес для деяких проектів)
  • Майте справу з будь-якими помилками або проблемами або виникають (які, мабуть, у невеликих проектах не задокументовані - "о так, останнє насправді переписується у відділення, а не в магістраль!")
  • Видаліть усе або залиште все на своєму комп’ютері та перекомпілюйте для оновлень.

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

Новачкам набагато простіше сказати "о, версія Windows! Завантажте. Запустіть".

Однак багато проектів з відкритим кодом не на рівні споживачів; вони орієнтовані на програмістів, які мають набагато більшу толерантність до такого роду випробувань, і тому бінарні файли - "Зроби сам". На мій досвід, програмісти можуть бути такими ж ледачими, як і користувачі. :)


Саме такі типи питань змусили мене в першу чергу задати питання.
М. Дадлі

3
Хто поширює проект, для створення якого потрібна IDE? І люди зазвичай не розповсюджуються в SCM. Його більше схоже на wget, tar xfz, ./configure, make, su -c 'make install' ...
альтернатива

Справедливі бали, математичні. А більш сучасні хости 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) або для конкретної цільової архітектури (наприклад, програми X X), можуть забезпечити єдиний бінарний файл і часто це роблять, оскільки їм потрібно платити лише за компіляцію вартість одного разу.

Нарешті, їхнім користувачам зазвичай зручно або будувати з джерела, або використовувати їх менеджер пакетів ОС, тому ця модель також забезпечує кращу зручність використання. Користувачі знають, де отримати бінарні файли (їх менеджер пакунків), мають послідовний досвід встановлення та управління пакетами, і знають, де придбати джерело, якщо вони знадобляться.


2
Одна з проблем запису один раз запустити в будь-якому місці полягає в тому, що віртуальна машина - це програма сама по собі, з точки зору O / S. Наприклад, більшість брандмауерів Windows дозволяє надати / заборонити доступ до мереж на основі програми. Але більшість з них не може повідомити один додаток Java від іншого - вони надають / забороняють доступ до JVM, але якщо у вас є одна програма Java, яка діє як Інтернет-сервер (можливо, Azureus), то брандмауер не блокує жодного невідомого шахрая Додаток Java виконує функції сервера. Якщо є специфічне для Java рішення, я є прикладом користувача Java, який не знає про це.
Стів314

1
@Steve Я сам не погоджуюся з вами, але я не знаю, наскільки плюси / мінуси WOCA або WORA мають відношення до цього питання.
Рейн Генріхс

дотична, правда, але в питанні, яке вже є трохи релігійною війною Linux проти Windows тощо, можливо, одне з менших злочинів. До речі - я поставив +1 вашій відповіді як корисній.
Steve314

Так, релігійна війна! Я дістану дьоготь, ти дістаєш пір’я?
Рейн Генріхс

5

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


4
+1 - але я сумніваюся, що "завжди" (залежить від платформи, яку ви використовуєте), і ці переваги можуть прийти користувачеві за певну ціну - потрібен компілятор, потрібно знати, як ним користуватися, потрібно знати, як створити конкретний проект, який потребує часу витратити на дослідження та повідомлення про помилки, які з’являються лише на вашій конкретній платформі тощо.
Steve314,

1
@ steve314: +1, всі справжні бали :)
Дем'ян Брехт

7
Кілька двійкових файлів зазвичай не такі великі. А вартість часу для користувача, як правило, дуже велика. Пошук усіх залежностей і розробка способу побудови конкретного проекту займає досить багато часу. Навіть якщо ваш користувач є програмістом. Якщо користувач не програміст, він може майже забути про ваш продукт. І я думаю, що аргумент ефективності є завищеним. Зазвичай вам не потрібен останній відсоток продуктивності, і якщо ви це зробите, ви все ще можете зрозуміти, як будувати з джерела.
CodesInChaos

1
@codeinchaos: Це повністю відносно проекту (розміру). Збірка може охоплювати один двійковий або декілька сотень МБ (якщо не більше) у бінарних файлах та некомпільованих активах (мислительні ігри). Звичайно, іноді приниження залежностей може викликати біль, але це залежить від автора пакета або надати список, або механізм завантаження / нарощування залежностей часу (колекція портів FreeBSD чудово підходить для цього) . У проектах, спрямованих на непрограмістів, майже завжди десь підтримується список бінарних файлів / інсталяторів.
Дем’ян Брехт

Річ у тому, що багато проектів з відкритим кодом не є "продуктами" у звичному розумінні. Оскільки з відкритим кодом йдеться про надання внесків у різних формах, хороша ідея виглядає як надання людям бінарних файлів, які знають, як це зробити і мають час на їх підтримку.
Файлон

2

Я можу придумати дві причини.

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

По-друге, джерело доставки означає, що користувачі можуть оптимізувати збірку для свого конкретного середовища; вони можуть увімкнути будь-які оптимізації, які вам потрібні, або налаштувати джерело, якщо це необхідно.


тому я думаю, що відповідь полягає у використанні чогось типу серверів побудови Sourceforge. Checkin, нехай вони будують тобі багато бінарних файлів. Такі як en.opensuse.org/Build_Service
gbjbaanb

1
Оскільки ці програми, як правило, не використовують жодних спеціальних функцій Vista / Win7, а 32-бітні програми, що працюють на 64-бітних ОС, ви майже завжди можете піти з одного 32-розрядного бінарного WinXP для всіх користувачів Windows.
CodesInChaos

@CodeInChaos - +1 - деякі проекти надають як 32-бітні, так і 64-бітні бінарні файли, але надають більше варіантів, ніж це рідко. Однак правдивий пункт.
Стів314

@gbjbaanb - відповідь, звичайно, але , ймовірно , НЕ відповідь.
Стів314

2

Зазвичай цінність проекту з відкритим кодом, будь то додаток, система, модуль або бібліотека, полягає в тому, що його можна вивчити та / або змінити за потреби. Розповсюдження джерела є суттєвим для видавничої моделі.

Розповсюдження бінарного файлу ризикує його змінити певним чином для недобрих цілей. Складання проекту з джерела намагається зменшити цей ризик.


Для програм> 90% користувачів ніколи навіть не подивляться джерело. А ризик маніпуляцій - це те, що готові взяти більшість завантажувачів бінарних файлів. Вони не можуть (і навіть якби вони могли бути лінивими) перевірити, що вихідний код не містить шкідливого коду.
CodesInChaos

2
Щоправда, але ОП запитала, чому проекти з відкритим кодом зазвичай не поширюються як бінарні файли, а не "як користувач, чому я повинен складати весь цей матеріал?" ;-)
Роб Райш

Але ви міркуєте, чому користувачеві краще, щоб він отримував джерело, а не бінарні файли.
CodesInChaos

1
Смішно, я не бачу слова "користувач" ні в своїй відповіді, ні в оригінальному запитанні. Можливо, я неправильно читаю власну відповідь?
Роб Райш

1
Цікаво, що ви здаєтесь відверто розібраним у моїх коментарях, оскільки я не намагався надати "причину не надавати бінарні файли". Я просто дав пояснення, чому проекти з відкритим кодом зазвичай поширюються як вихідний код. Дякую за гру, але це мій останній коментар до цього.
Роб Райш

1

Це може бути кілька причин. Багато (якщо не більшість) проектів з відкритим кодом починаються в Linux. Отже, початковий проект робиться для цієї системи, а упаковка виконується членами команди.

Створення інсталятора Windows - це додаткова робота, яка потребує знань, яких розробники Linux можуть не мати. Тож якщо хтось із зовнішньої команди бере на себе цю роботу, його часто згадують спеціально.

Це може бути справедливо і для інших систем, таких як OS X або навіть певних дистрибутивів Linux. Все залежить від того, хто має знання та час, щоб виконати додаткову роботу.


Інсталятор Windows вимагає рідко. Також не вдається також поштовий файл із бінарними файлами. Але, звичайно, ви праві, що багато розробників на базі Linux не дуже переймаються версією Windows своєї програми.
CodesInChaos

1
Файл-поштовий індекс може бути чудовим фактором у світі Windows. "Я завантажив цей файл. Тепер, коли я натискаю на нього, Windows каже мені, що його "невідомий формат файлу" є досить поширеною проблемою на довідкових форумах.
thorsten müller

Я опублікував усі свої матеріали у форматі .zip. Я думаю, що єдиною скаргою, яку я отримав у цьому контексті, був якийсь хлопець, якому вдалося скопіювати файл exe на робочий стіл, а не створити посилання. Але в будь-якому випадку складність побудови з джерела набагато вища, ніж складність розпакування.
CodesInChaos

1
Частково залежить від вашої бази користувачів. Якщо ви опублікуєте бібліотеку, яку використовують лише програмісти, у вас не виникне проблем із zip-файлами. Zip досить простий, тому кожна аудиторія з базовими знаннями вдається це зробити. Хоча я досить часто зустрічався із питанням поштового індексу ...
thorsten müller

1
Майте на увазі, що в XP + поштові файли ОС належним чином обробляються, і достатньо подвійного клацання відкриє файл у вилученій папці.
Філ Коен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.