Mengapa beberapa pustaka sumber terbuka tidak menyediakan binari?


15

Mengapa beberapa pustaka sumber terbuka tidak menyediakan binari? Saya telah memperhatikan bahwa beberapa proyek tunduk kepada pihak ketiga yang mempertahankan versi perangkat lunak saat ini, terutama untuk versi Windows.

Saya bertanya karena sepertinya penghalang untuk adopsi perpustakaan. Ini lebih banyak pekerjaan untuk pengembang karena dia harus mengatur lingkungannya untuk membangunnya. Seorang pengembang juga harus khawatir bahwa ia memperkenalkan bug dengan membangun perpustakaan secara tidak benar.


EDIT : Beberapa pembaruan untuk membahas komentar dan jawaban. Saya sudah menghapus contohnya karena tidak penting dalam diskusi. Juga mengulangi pertanyaan saya karena "beberapa perpustakaan open source menyediakan" daripada "perpustakaan open source cenderung menyediakan" ... tidak menyadari bahwa orang akan tersinggung dengan hal itu.


7
"cenderung"? Dua contoh adalah kecenderungan? Apakah Anda memiliki lebih banyak data untuk mendukung klaim Anda?
S.Lott

3
Manajer paket Linux biasanya digunakan untuk menggunakan binari, jadi saya tidak mengerti referensi itu.
David Thornley

7
Karena mereka adalah hippie berpendidikan tinggi yang suka merokok di universitas (jenis hippies terburuk).
Pekerjaan

7
Ya, hippies sialan yang menulis perangkat lunak gratis yang digunakan separuh dunia, persetan!
Tamás Szelei

3
@CodeinChaos: Saya belum membangun dari sumber selama bertahun-tahun. Fedora, Mac OS dan OpenSuSE harus menjadi pengecualian aneh untuk "kecenderungan" ini. OS apa yang Anda gunakan yang sangat tidak didukung? Saya ingin menghindarinya, jika memungkinkan.
S.Lott

Jawaban:


11

Karena membuat binari windows adalah pekerjaan yang sama sekali berbeda yang membutuhkan basis pengetahuan dan alat yang sama sekali berbeda. Orang-orang tampaknya kesulitan memahami ini tentang pengembang Linux, jadi izinkan saya memutarnya.

  • Anda telah menggunakan Windows untuk apa yang tampak seperti selamanya.
  • Anda hanya menginstal Windows di rumah.
  • Anda telah menggunakan Linux di sana-sini di tempat kerja, tetapi hanya sebagai pengguna, tidak mengelola atau mengembangkan untuk Linux.
  • Anda tahu gcc adalah kompiler yang paling umum digunakan untuk Linux, tetapi belum pernah menginstalnya di komputer Anda sendiri.
  • Anda terutama bekerja pada perangkat lunak untuk diri Anda sendiri di Windows, tetapi tidak keberatan membuat perbaikan bug untuk Linux jika orang lain mengerjakannya agar kompatibel dan mendistribusikan binari.
  • Anda tidak ingin membayar untuk OS dan toolchain lain ketika orang lain yang sudah memiliki sangat bersedia untuk membuat build.

2
Singkatnya, beberapa programmer tidak memiliki pengetahuan, sumber daya, atau motivasi untuk membuat binari untuk platform lain.
M. Dudley

11

Kairo adalah perpustakaan, bukan aplikasi. Postgres tampaknya memiliki binari Windows . Proyek yang lebih kecil sering tidak menyediakan bangunan karena mereka tidak memiliki infrastruktur / sumber daya.


4
+1 terutama "tidak memiliki sumber daya". Sulit untuk menyediakan build Windows yang teruji jika Anda tidak memiliki lisensi untuk Windows, tidak memiliki kompiler Windows (atau waktu untuk bereksperimen dengan cross compiler), dll.
Steve314

1
@ Steve314: Setiap orang memiliki kompiler Windows - gcc open source, atau Visual Studio Express gratis.
gbjbaanb

1
Sebuah perpustakaan dapat memiliki binari juga, yaitu dll. Seringkali saya tidak memiliki kompiler (diinstal) atau dependensi untuk membangun perpustakaan asli. Jadi seperti mendapatkan binari, bahkan untuk perpustakaan.
CodesInChaos

4
@CodeInChaos: Linux tidak .dllsering menggunakan , jadi biner-biner itu sebagian besar tidak berguna bagi sebagian dari kita. Sumber murni akan lebih baik.
S.Lott

9
@ gbjbaanb: Tidak semua orang memiliki instalasi Windows, apalagi kompiler.
David Thornley

9

Ini adalah bagian dari filosofi open-source "jika Anda ingin sesuatu dilakukan, ambil sekop." Secara alami, ini mengurangi beban kerja pada pengembang jika pengguna hanya mengkompilasi program itu sendiri. Tidak perlu khawatir tentang semua arsitektur, OS, dll ...

Tetapi, jika Anda membuat produk tingkat konsumen (Firefox, Paint.NET, Audacity, Keepass, dll) dan Anda peduli tentang mendapatkan pengguna, Anda harus selalu, selalu, selalu! termasuk binari. Mungkin hanya 2% orang yang menemukan situs web Anda, dan tertarik dengan produk Anda, akan:

  • Unduh klien SCM yang sesuai
  • Lihatlah seluruh salinan pohon sumber
  • Unduh IDE atau alat penyusun yang diperlukan (dengan mudah beberapa ratus MB untuk beberapa proyek)
  • Unduh dan instal semua dependensi yang diperlukan (dan setel variabel lingkungan)
  • Jalankan kompilasi baru (proses mudah 10 menit pada beberapa proyek)
  • Menangani segala kesalahan atau masalah atau timbul (yang dalam proyek-proyek kecil mungkin tidak didokumentasikan - "oh yeah, yang terbaru sebenarnya dalam penulisan ulang cabang, bukan trunk!")
  • Hapus instalan semuanya, atau tinggalkan semuanya di komputer Anda dan kompilasi ulang untuk pembaruan.

(Tentunya di linux banyak hal yang lebih waras, tetapi sebagian besar konsumen masih menggunakan Windows.)

Jauh lebih mudah bagi pendatang baru untuk mengatakan "ooh, versi Windows! Unduh. Jalankan".

Namun, banyak proyek open source bukan tingkat konsumen; mereka menargetkan programmer, yang memiliki toleransi yang jauh lebih tinggi untuk cobaan semacam ini, dan biner adalah DIY. Dalam pengalaman saya, pemrogram bisa sama malasnya dengan pengguna, jadi berhati-hatilah. :)


Ini adalah jenis masalah yang membuat saya mengajukan pertanyaan sejak awal.
M. Dudley

3
Siapa yang akan mendistribusikan proyek yang membutuhkan IDE untuk membangun? Dan biasanya orang tidak mendistribusikan dalam SCM. Lebih mirip wget, tar xfz, ./configure, make, su -c 'make install' ...
alternatif

Poin yang adil, mathepic. Dan lebih banyak host SCM modern (seperti GitHub) akan membiarkan Anda mengunduh salinan versi terbaru yang di-zip.
Phil Cohen

@ mathepic: Pengembang Windows, itu siapa.
Stuart P. Bentley

@Stuart VS proyek hanyalah file msbuild. Tidak diperlukan IDE.
alternatif

6

Pembuat aplikasi yang ditulis dalam lingkungan Write Once Compile Anywhere (C, C ++, dll) mendapat manfaat dari mendorong langkah kompilasi ke distributor (apt, rpm, yum, dll) yang membuat dan mengemas binari untuk arsitektur populer. Ini mencapai aplikasi portabel maksimal dengan sedikit usaha dari pihak pencipta dan memungkinkan mereka untuk menghabiskan lebih banyak waktu berfokus pada kompetensi inti mereka (mengembangkan aplikasi, tidak menyusun dan hosting untuk beberapa arsitektur). Beberapa pembuat aplikasi WOCA bersedia membayar biaya tambahan dalam kasus-kasus khusus seperti Windows karena - yah - tidak ada orang lain yang akan, para pengguna mengharapkannya, dan mereka tidak ingin menyerah pasar.

Di sisi lain, aplikasi yang ditulis dalam lingkungan Write Once Run Anywhere (Java) atau untuk arsitektur target tertentu (aplikasi OS X, misalnya) dapat memberikan biner tunggal dan sering melakukannya karena mereka hanya perlu membayar kompilasi biaya sekali.

Akhirnya, para penggunanya biasanya merasa nyaman membangun dari sumber atau menggunakan manajer paket OS mereka, sehingga model ini juga memberikan kegunaan yang lebih baik. Pengguna tahu di mana mendapatkan binari (manajer paket mereka), memiliki pengalaman siklus hidup instalasi dan manajemen paket yang konsisten, dan tahu di mana mendapatkan sumber jika mereka membutuhkannya.


2
Satu masalah dengan write-once-run-dimanapun adalah bahwa mesin virtual adalah program dengan sendirinya, dari sudut pandang O / S. Misalnya, sebagian besar firewall Windows memungkinkan Anda untuk memberikan / menolak akses ke jaringan berdasarkan aplikasi-demi-aplikasi. Tetapi sebagian besar dari mereka tidak dapat membedakan satu aplikasi Java dari yang lain - mereka memberikan / menolak akses ke JVM, tetapi jika Anda memiliki satu aplikasi Java yang bertindak sebagai server internet (Azureus, mungkin) maka firewall tidak akan memblokir pemblokiran yang tidak dikenal. Aplikasi Java dari bertindak sebagai server. Jika ada solusi khusus Java, saya adalah contoh pengguna Java yang tidak mengetahuinya.
Steve314

1
@Steve Saya tidak setuju dengan Anda, tetapi saya tidak benar-benar melihat bagaimana pro / kontra WOCA atau WORA relevan dengan pertanyaan ini.
Rein Henrichs

tangensial, benar, tetapi dalam sebuah pertanyaan yang sudah sedikit perang Linux vs Windows dll agama, mungkin salah satu dari kejahatan yang lebih rendah. BTW - Saya memberi +1 jawaban Anda berguna.
Steve314

Perang agama Yay! Saya akan mendapatkan tar, Anda mendapatkan bulunya?
Rein Henrichs

5

Mengapa saya ingin mengunyah bandwidth yang menyediakan Anda dengan membangun (yang jelas bisa sangat besar) daripada Anda membangun sumber yang saya berikan kepada Anda? Belum lagi bahwa membangun proyek di komputer Anda sendiri akan selalu menghasilkan hasil yang lebih baik karena ini dikompilasi khusus untuk platform Anda ..


4
+1 - tapi saya ragu "selalu" (tergantung pada platform apa yang Anda gunakan), dan manfaat itu dapat menimbulkan biaya bagi pengguna - membutuhkan kompiler, perlu tahu cara menggunakannya, perlu tahu cara membangun proyek khusus itu, perlu menghabiskan waktu menyelidiki dan melaporkan bug aneh yang muncul hanya pada platform khusus Anda, dll.
Steve314

1
@ steve314: +1, semua poin sejati :)
Demian Brecht

7
Beberapa file biner biasanya tidak sebesar itu. Dan biaya waktu untuk pengguna biasanya sangat besar. Menemukan semua dependensi dan mencari tahu bagaimana membangun proyek spesifik itu membutuhkan banyak waktu. Bahkan jika pengguna Anda adalah seorang programmer. Jika pengguna bukan programmer, ia bisa melupakan produk Anda. Dan saya pikir argumen kinerja terlalu dibesar-besarkan. Biasanya Anda tidak membutuhkan persen kinerja terakhir, dan jika Anda melakukannya maka Anda masih bisa mencari tahu bagaimana membangun dari sumber.
CodesInChaos

1
@codeinchaos: Itu sepenuhnya relatif terhadap proyek (ukuran). Build dapat mencakup binari tunggal, atau ratusan MB (jika tidak lebih) dalam biner dan aset yang tidak dikompilasi (think game). Tentu saja, kadang-kadang memperbaiki dependensi dapat sedikit menyusahkan, tetapi terserah pembuat paket untuk memberikan daftar, atau mekanisme build-time untuk mengunduh / membangun dependensi (koleksi port FreeBSD sangat bagus untuk itu) . Proyek yang diarahkan pada non-programmer hampir selalu memiliki daftar biner / installer yang dipelihara di suatu tempat.
Demian Brecht

Masalahnya, banyak proyek open source bukan "produk" dalam arti biasa. Karena open source adalah tentang mengizinkan kontribusi dalam berbagai bentuk, meminta orang lain menyediakan binari yang tahu cara melakukannya dan memiliki waktu untuk mempertahankannya sepertinya ide yang bagus.
phaylon

2

Saya dapat memikirkan dua alasan.

Pertama, Anda memiliki beberapa sistem operasi yang berjalan pada beberapa jenis perangkat keras; jumlah target biner yang harus Anda bangun menjadi tidak terkelola. Ada tiga versi Windows yang masih umum digunakan (XP, Vista, 7) berjalan pada perangkat keras 32-bit atau 64-bit; itu 6 target biner di sana. Situasinya lebih buruk di sisi Linux, dengan berbagai distro yang jauh lebih besar yang berjalan di atas Tuhan tahu perangkat keras apa (x86, PPC, MIPS, SPARC, PA-RISC, dll.). Apakah Anda akan membangun untuk setiap kombinasi yang memungkinkan? Apakah Anda memiliki peralatan dan / atau perangkat lunak untuk melakukannya? Jika ada seseorang di luar sana yang masih berjalan (Tuhan tolong kami) NT pada PII, apakah Anda akan membangun biner untuk mereka?

Kedua, sumber pengiriman berarti bahwa pengguna dapat mengoptimalkan pembangunan untuk lingkungan khusus mereka; mereka dapat mengaktifkan optimasi apa pun yang mereka butuhkan, atau mengubah sumbernya sendiri jika perlu.


jadi saya kira jawabannya adalah menggunakan sesuatu seperti server build Sourceforge. Checkin, biarkan mereka membuat Anda banyak binari. Seperti en.opensuse.org/Build_Service
gbjbaanb

1
Karena program-program itu biasanya tidak menggunakan fitur Vista / Win7 khusus dan program 32 bit dijalankan pada OS 64 bit, Anda hampir selalu bisa lolos dengan biner WinXP 32 bit tunggal untuk semua pengguna windows.
CodesInChaos

@CodeInChaos - +1 - beberapa proyek menyediakan binari 32 bit dan 64 bit, tetapi menyediakan lebih banyak variasi daripada yang jarang terjadi. Poin yang valid.
Steve314

@gbjbaanb - sebuah jawaban, tentu, tapi mungkin tidak dengan jawaban.
Steve314

2

Biasanya, nilai proyek open-source, baik itu aplikasi, sistem, modul atau perpustakaan, adalah bahwa hal itu dapat dipelajari dan / atau dimodifikasi sesuai kebutuhan. Mendistribusikan sumber itu intrinsik ke model penerbitan.

Mendistribusikan biner berisiko karena telah dimodifikasi dalam beberapa cara untuk tujuan jahat. Mengkompilasi proyek dari sumber mencoba untuk mengurangi risiko itu.


Untuk aplikasi> 90% dari pengguna bahkan tidak akan pernah melihat sumbernya. Dan risiko manipulasi adalah sesuatu yang ingin diambil sebagian besar pengunduh dari binari. Mereka tidak dapat (dan bahkan jika mereka bisa, mereka akan terlalu malas) untuk memverifikasi bahwa kode sumber tidak mengandung kode berbahaya.
CodesInChaos

2
Benar, tetapi OP bertanya mengapa proyek open-source biasanya tidak didistribusikan sebagai binari, bukan "sebagai pengguna, mengapa saya harus mengkompilasi semua hal ini?" ;-)
Rob Raisch

Tapi Anda berargumen tentang mengapa lebih baik bagi pengguna bahwa ia mendapatkan sumber dan bukan binari.
CodesInChaos

1
Lucu, saya tidak melihat kata 'pengguna' dalam jawaban saya atau pertanyaan awal. Mungkin saya salah membaca jawaban saya?
Rob Raisch

1
Menarik bahwa Anda tampaknya sangat salah menafsirkan komentar saya karena saya tidak berusaha memberikan "alasan untuk tidak menyediakan binari." Saya hanya memberikan penjelasan mengapa proyek open source biasanya didistribusikan sebagai kode sumber. Terima kasih telah bermain tetapi ini adalah komentar terakhir saya tentang ini.
Rob Raisch

1

Ini dapat memiliki beberapa alasan. Banyak (jika tidak sebagian besar) proyek sumber terbuka dimulai di Linux. Jadi proyek awal dilakukan untuk sistem ini dan pengemasan dilakukan oleh anggota tim.

Membuat installer Windows adalah pekerjaan ekstra yang membutuhkan pengetahuan yang mungkin tidak dimiliki pengembang Linux. Jadi jika seseorang dari luar tim inti melakukan pekerjaan ini, ia sering disebut secara khusus.

Hal yang sama mungkin berlaku untuk sistem lain seperti OS X atau bahkan distribusi Linux tertentu. Itu semua tergantung siapa yang memiliki pengetahuan dan waktu untuk melakukan pekerjaan ekstra.


Pemasang windows jarang diperlukan. File zip dengan binari juga baik-baik saja. Tapi tentu saja Anda benar bahwa banyak pengembang berbasis linux tidak akan terlalu peduli dengan versi windows dari program mereka.
CodesInChaos

1
File zip bisa menjadi kendala besar di dunia Windows. 'Saya sudah mengunduh file ini. Sekarang ketika saya mengkliknya windows memberitahu saya "format file yang tidak dikenal" adalah masalah yang cukup umum di forum bantuan.
thorsten müller

Saya telah menerbitkan semua barang saya sebagai file .zip. Saya pikir satu-satunya keluhan yang saya dapatkan dalam konteks ini adalah oleh beberapa pria yang berhasil menyalin file exe ke desktopnya alih-alih membuat tautan. Tetapi bagaimanapun kesulitan membangun dari sumber jauh lebih tinggi daripada kesulitan membuka ritsleting sesuatu.
CodesInChaos

1
Sebagian tergantung pada basis pengguna Anda. Jika Anda menerbitkan perpustakaan yang hanya digunakan oleh programmer Anda tidak akan memiliki masalah dengan file zip. Zip cukup mudah sehingga setiap audiens dengan pengetahuan dasar menyelesaikannya. Meskipun saya sudah cukup sering melihat pertanyaan zip ...
thorsten müller

1
Perlu diingat bahwa di XP +, file zip ditangani secara native oleh OS, dan cukup klik ganda akan membuka file dalam folder yang diekstrak.
Phil Cohen
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.