一部のオープンソースライブラリがバイナリを提供しないのはなぜですか?


15

一部のオープンソースライブラリがバイナリを提供しないのはなぜですか?一部のプロジェクトは、特にWindowsビルドの場合、ソフトウェアの現在のビルドを維持しているサードパーティに遅れることに気付きました。

図書館の採用の障壁のように思えるので、お願いします。開発者は環境を構築して構築する必要があるため、開発者にとってはより多くの作業です。また、開発者は、ライブラリを誤って構築することでバグが発生することを心配する必要があります。


編集:コメントと回答に対処するためのいくつかの更新。議論の中心ではないので、例を削除しました。また、私の質問を「オープンソースライブラリが提供する傾向がある」ではなく「一部のオープンソースライブラリが提供する」と言い直しました。


7
「傾向」?2つの例は傾向ですか?申し立てを裏付けるデータがもっとありますか?
S.Lott

3
Linuxパッケージマネージャーは通常、バイナリの展開に使用されるため、その参照については理解できません。
デビッド

7
なぜなら、彼らは怠け者で喫煙できる大学教育のヒッピー(最悪の種類のヒッピー)だからです。
ジョブ

7
ええ、世界の半分が使用している無料のソフトウェアを書いているヒッピーは、それらをねじ込みます!
タマスゼレイ

3
@CodeinChaos:私は何年もソースから構築していません。Fedora、Mac OS、およびOpenSuSEは、この「傾向」に対する奇妙な例外でなければなりません。どのOSを使用していますか?可能であれば、それを避けたいです。
-S.ロット

回答:


11

Windowsバイナリの作成はまったく異なる仕事であるため、まったく異なる知識ベースとツールセットが必要です。Linux開発者についてこれを理解するのは難しいようです。

  • 永遠に思われることのためにWindowsを使用しました。
  • Windowsは自宅にのみインストールされています。
  • Linuxをあちこちで使用していますが、Linuxの管理や開発ではなく、ユーザーとしてのみ使用しています。
  • gccはLinuxで最も一般的に使用されるコンパイラですが、自分のコンピューターにインストールしたことはありません。
  • あなたは主にWindows上で自分でソフトウェアに取り組んでいますが、Linuxのバグ修正を他の誰かがそれを互換性のあるものにしてバイナリを配布する仕事をしても構いません。
  • すでに持っている誰かが完全にビルドを行う意思がある場合、別のOSやツールチェーンにお金を払いたくありません。

2
要約すると、一部のプログラマーは、他のプラットフォーム用のバイナリーを作成する知識、リソース、または動機を持っていません。
M.ダドリー

11

カイロはライブラリであり、アプリケーションではありません。PostgresにはWindowsバイナリがあるようです。小規模なプロジェクトは、インフラストラクチャ/リソースがないため、ビルドを提供しないことがよくあります。


4
+1特に「リソースを持っていない」。など、あなたがWindows用のライセンスを持っていない場合は、(クロスコンパイラの実験や時間)、Windowsのコンパイラを持っていないテストされ、Windowsのビルドを提供することは困難
Steve314

1
@ Steve314:誰もがWindowsコンパイラを持っています-オープンソースgccまたは無料のVisual Studio Expressのいずれかです。
gbjbaanb

1
ライブラリには、バイナリ、つまりdllも含めることができます。多くの場合、元のライブラリをビルドするためのコンパイラ(インストール済み)も依存関係もありません。そのため、ライブラリでもバイナリを取得するのが好きです。
-CodesInChaos

4
@CodeInChaos:Linuxは.dllあまり頻繁に使用しないので、これらのバイナリは一部の人にとってはほとんど役に立ちません。純粋なソースが良いでしょう。
-S.ロット

9
@gbjbaanb:コンパイラーはもちろん、誰もがWindowsをインストールしているわけではありません。
デヴィッドソーンリー

9

これは、「何かをしたいのなら、シャベルをつかむ」というオープンソースの哲学の一部です。当然、ユーザーが自分でプログラムをコンパイルするだけで、開発者の作業負荷が軽減されます。これらのすべてのアーキテクチャ、OSなどについて心配する必要はありません。

ただし、消費者レベルの製品(Firefox、Paint.NET、Audacity、Keepassなど)を作成していて、ユーザーの獲得に関心がある場合は、常に、常に、常に! バイナリを含めます。あなたのウェブサイトをつまずき、あなたの製品に興味を持っている人のたった2%だけが、

  • 適切なSCMクライアントをダウンロードします
  • ソースツリーのコピー全体を確認する
  • 必要なIDEまたはコンパイラツールをダウンロードします(一部のプロジェクトでは簡単に数百MB)
  • 必要なすべての依存関係をダウンロードしてインストール(および環境変数を設定)
  • 新規コンパイルを実行します(一部のプロジェクトで簡単に10分間のプロセス)
  • エラーや問題に対処したり、発生したりします(小規模なプロジェクトでは文書化されていない可能性があります。「ああ、最新版は実際にはトランクではなくブランチの書き換えです!」)
  • すべてをアンインストールするか、コンピューターにすべて残して、更新のために再コンパイルします。

(明らかにLinuxでは物事は非常に賢明ですが、ほとんどの消費者はまだWindowsを使用しています。)

新規ユーザーにとっては、「Windowsバージョン!ダウンロードして実行」と言う方がはるかに簡単です。

ただし、多くのオープンソースプロジェクトは消費者レベルではありません。彼らは、この種の試練に対してはるかに高い耐性を持つプログラマーをターゲットにしているため、バイナリはDIYです。私の経験では、プログラマーはユーザーと同じくらい怠け者になる可能性がありますので、注意してください。:)


これらはまさに私が最初に質問をするようにした問題のタイプです。
M.ダドリー

3
IDEをビルドする必要があるプロジェクトを誰が配布しますか?そして、人々は通常SCMで配布しません。その多くのwgetの、タールxfz、./configureを、メイクのように、SU -c 'makeがインストール' ...
代替

フェアポイント、数学。また、最新のSCMホスト(GitHubなど)を使用すると、いずれにしても最新バージョンの圧縮コピーをダウンロードできます。
フィルコーエン

@mathepic:Windows開発者です。
スチュアートP.ベントレー

@Stuart VSプロジェクトは単なるmsbuildファイルです。IDEは必要ありません。
代替案

6

Write Once Compile Anywhere環境(C、C ++など)で記述されたアプリケーションの作成者は、一般的なアーキテクチャ用のバイナリを作成およびパッケージ化するディストリビューター(apt、rpm、yumなど)にコンパイル手順を押し下げることで恩恵を受けます。これにより、作成者の労力を最小限に抑えて最大限の移植性のあるアプリケーションを実現し、コアコンピテンシー(アプリケーションを開発し、複数のアーキテクチャ向けにコンパイルおよびホストするのではなく)に集中できるようになります。一部のWOCAアプリケーション作成者は、Windowsのような特別な場合に追加費用を支払うことをいとわないでしょう。なぜなら、他の誰も期待しないからです。ユーザーはそれを期待し、市場をあきらめたくないからです。

一方、Write Once Run Anywhere環境(Java)または特定のターゲットアーキテクチャ(OS Xアプリケーションなど)で記述されたアプリケーションは、単一のバイナリを提供することができます。一度費用がかかります。

最後に、ユーザーは通常、ソースからビルドするか、OSパッケージマネージャーを使用するかのどちらかで快適であるため、このモデルは使いやすさも向上します。ユーザーは、バイナリ(パッケージマネージャー)の入手先を知っており、一貫したインストールおよびパッケージ管理ライフサイクルエクスペリエンスを持ち、必要な場合にソースを入手する場所を知っています。


2
write-once-run-anywhereの問題の1つは、O / Sの観点から見ると、仮想マシンがそれ自体でプログラムであるということです。たとえば、ほとんどのWindowsファイアウォールでは、アプリごとにネットワークへのアクセスを許可/拒否できます。しかし、それらのほとんどは、あるJavaアプリを別のJavaアプリに伝えることができません-JVMへのアクセスを許可/拒否しますが、インターネットサーバー(Azureus、おそらく)として機能するJavaアプリがある場合、ファイアウォールは未知の不正をブロックしませんサーバーとして動作するJavaアプリケーション。Java固有のソリューションがある場合、私はそれを知らないJavaユーザーの例です。
Steve314

1
@Steve私はそれ自体あなたに反対しているわけではありませんが、WOCAまたはWORAの賛否両論がこの質問にどのように関連しているかはわかりません。
ラインヘンリヒス

接線的で、本当ですが、すでにLinux対Windowsなどの宗教戦争のような質問では、おそらくより少ない犯罪の1つです。ところで-私はあなたの答えを役に立つと+1しました。
Steve314

イェーイ宗教戦争!私はタールを手に入れます、あなたは羽を手に入れますか?
ラインヘンリヒス

5

とにかく提供しているソースをビルドするのではなく、ビルド(明らかに非常に大きいことがあります)を提供する帯域幅を噛み砕くのはなぜですか?言うまでもなく、自分のマシンでプロジェクトをビルドすると、プラットフォームに合わせてコンパイルされるため、常により良い結果得られます。


4
+1-しかし、私は「常に」(使用しているプラ​​ットフォームによって異なります)とは思わず、それらの利点はユーザーにいくらかの費用がかかる可能性がありますその特定のプロジェクト、特定のプラットフォームなどでのみ現れる奇妙なバグの調査と報告に時間を費やす必要がある
Steve314

1
@ steve314:+1、すべての真のポイント:)
デミアンブレヒト

7
通常、いくつかのバイナリファイルはそれほど大きくありません。また、ユーザーの時間コストは通常​​非常に大きくなります。すべての依存関係を見つけて、その特定のプロジェクトをビルドする方法を見つけるには、かなりの時間がかかります。あなたのユーザーがたまたまプログラマーであっても。ユーザーがプログラマーでない場合、ユーザーは製品についてほとんど忘れることができます。そして、パフォーマンスの議論は過大評価されていると思います。通常、パフォーマンスの最後のパーセントは必要ありません。その場合でも、ソースからビルドする方法を見つけることができます。
CodesInChaos

1
@codeinchaos:これはプロジェクト(サイズ)に完全に関連しています。ビルドには、単一のバイナリ、またはバイナリとコンパイルされていないアセット(ゲームを考えてください)の数百MB(それ以上ではない場合)が含まれます。もちろん、依存関係を特定するのは少し面倒な場合もありますが、リストを提供するか、依存関係をダウンロード/構築するビルド時のメカニズムを提供するのはパッケージの作成者次第です(FreeBSDのportsコレクションはそのために最適です) 。非プログラマ向けのプロジェクトでは、ほとんど常にバイナリ/インストーラリストがどこかに保持されます。
デミアンブレヒト

つまり、多くのオープンソースプロジェクトは通常の意味での「製品」ではありません。オープンソースはさまざまな形での貢献を許可するものであるため、他の人にそれを行う方法を知っているバイナリを提供し、それらを維持する時間を持たせることは良い考えのようです。
ファイロン

2

2つの理由が考えられます。

まず、複数の種類のハードウェアで複数のオペレーティングシステムを実行しています。ビルドする必要があるバイナリターゲットの数は管理不能になります。32ビットまたは64ビットのハードウェアで実行されているWindowsの3つのバージョン(XP、Vista、7)がまだ一般的に使用されています。そこに6つのバイナリターゲットがあります。Linux側の状況はさらに悪く、神で実行されているはるかに多くのディストリビューションがどのハードウェア(x86、PPC、MIPS、SPARC、PA-RISCなど)を知っているかです。すべての可能な組み合わせのために構築するつもりですか?そのための機器やソフトウェアもありますか?PIIでNTを実行している(神が私たちを助ける)誰かがまだいる場合、それらのバイナリをビルドしますか?

次に、出荷元は、ユーザーが特定の環境に合わせてビルドを最適化できることを意味します。必要な最適化を有効にしたり、必要に応じてソース自体を調整したりできます。


そのため、答えはSourceforgeのビルドサーバーのようなものを使用することだと思います。チェックイン、彼らはあなたにたくさんのバイナリをビルドさせます。たとえば
gbjbaanb

1
これらのプログラムは通常、特別なVista / Win7機能を使用せず、32ビットプログラムは64ビットOS上で実行されるため、ほとんどの場合、すべてのWindowsユーザーに対して単一の32ビットWinXPバイナリを使用できます。
CodesInChaos

@CodeInChaos-+1-一部のプロジェクトは32ビットと64ビットの両方のバイナリを提供しますが、それよりも多くのバリエーションを提供しています。ただし、有効なポイントです。
Steve314

@gbjbaanb - 答えは、確かに、おそらくない答え。
Steve314

2

通常、オープンソースプロジェクトの価値は、それがアプリケーション、システム、モジュール、またはライブラリであっても、必要に応じて調査および/または修正できることです。ソースの配布は、発行モデルに固有のものです。

バイナリを配布すると、悪意のある目的のために何らかの方法で変更されたというリスクが生じます。ソースからプロジェクトをコンパイルすると、そのリスクを軽減しようとします。


アプリケーションの場合、90%を超えるユーザーはソースを見ることさえありません。そして、操作のリスクは、ほとんどのバイナリのダウンローダーが喜んで取るものです。ソースコードに悪意のあるコードが含まれていないことを検証することはできません(怠けていたとしても)。
CodesInChaos

2
確かに、OPはなぜオープンソースプロジェクトが「ユーザーとして、なぜこれらすべてをコンパイルする必要があるのか​​」ではなく、通常バイナリとして配布されない理由を尋ねました。;-)
ロブRaisch

しかし、あなたは、ユーザーがバイナリではなくソースを取得する方が良い理由について議論しています。
CodesInChaos

1
面白いことに、私の答えにも元の質問にも「ユーザー」という言葉がありません。おそらく自分の答えを間違って読んでいるのでしょうか?
ロブレイシュ

1
私が「バイナリを提供しない理由」を提供しようとしたわけではないので、あなたが私のコメントを誤って解釈することで地獄のように見えるのは興味深いことです。オープンソースプロジェクトが一般的にソースコードとして配布される理由について説明しました。プレイしていただきありがとうございますが、これは私の最後のコメントです。
ロブレイシュ

1

これにはいくつかの理由があります。多くの(ほとんどではないにしても)オープンソースプロジェクトがLinuxで始まります。したがって、最初のプロジェクトはこのシステムで行われ、パッケージングは​​チームメンバーによって行われます。

Windowsインストーラーの作成は余分な作業であり、Linux開発者にはない知識が必要です。したがって、コアチームの外部の誰かがこの仕事を引き受ける場合、彼はしばしば特別に言及されます。

OS Xや特定のLinuxディストリビューションなど、他のシステムでも同じことが言えます。それは、誰が余分な仕事をするための知識と時間を持っているかによります。


Windowsインストーラーが必要になることはほとんどありません。バイナリを含むzipファイルでも問題ありません。しかしもちろん、Linuxベースの開発者の多くは、プログラムのWindowsバージョンについてはあまり気にしないことは間違いありません。
CodesInChaos

1
zipファイルは、Windowsの世界で大きな障害になる可能性があります。'このファイルをダウンロードしました。クリックすると、「不明なファイル形式」というウィンドウがヘルプフォーラムで非常に一般的な問題であると表示されます。
トールステンミュラー

私はすべてのものを.zipファイルとして公開しました。このコンテキストで私が得た唯一の不満は、リンクを作成する代わりにexeファイルを自分のデスクトップにコピーすることができた人によるものだと思います。しかし、いずれにせよ、ソースからビルドする難しさは、何かを解凍する難しさよりもはるかに高いです。
CodesInChaos

1
ユーザーベースに一部依存します。プログラマーのみが使用するライブラリを公開する場合、zipファイルに問題はありません。Zipは非常に簡単なので、基本的な知識を持つすべてのユーザーが処理できます。私は...多くの場合、十分なジップ質問を見てきましたけれども
トルステン・ミュラー

1
XP +では、zipファイルはOSによってネイティブに処理され、十分なダブルクリックにより、抽出されたフォルダーでファイルが開かれることに注意してください。
フィルコーエン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.