Tại sao một số thư viện nguồn mở cung cấp nhị phân?


15

Tại sao một số thư viện nguồn mở cung cấp nhị phân? Tôi đã nhận thấy rằng một số dự án trì hoãn các bên thứ ba, những người duy trì các bản dựng phần mềm hiện tại, đặc biệt là các bản dựng Windows.

Tôi hỏi bởi vì nó có vẻ như là một rào cản cho việc áp dụng một thư viện. Đó là công việc nhiều hơn cho nhà phát triển vì anh ta phải thiết lập môi trường của mình để xây dựng nó. Một nhà phát triển cũng phải lo lắng rằng anh ta đã giới thiệu các lỗi bằng cách xây dựng thư viện không chính xác.


EDIT : Một số cập nhật để giải quyết ý kiến ​​và câu trả lời. Tôi đã xóa các ví dụ vì chúng không phải là trung tâm của cuộc thảo luận. Cũng nhắc lại câu hỏi của tôi là "một số thư viện nguồn mở cung cấp" thay vì "thư viện nguồn mở có xu hướng cung cấp" ... không nhận ra mọi người sẽ vi phạm điều đó.


7
"có xu hướng"? Hai ví dụ là một xu hướng? Bạn có nhiều dữ liệu để hỗ trợ cho yêu cầu của mình không?
S.Lott

3
Các trình quản lý gói Linux thường được sử dụng để triển khai các tệp nhị phân, vì vậy tôi không hiểu tài liệu tham khảo đó.
David Thornley

7
Bởi vì họ là những con hà mã lười biếng hút thuốc đại học (loại hippies tồi tệ nhất).
Công việc

7
Vâng, phần mềm viết hippies chết tiệt miễn phí mà một nửa thế giới sử dụng, vít chúng!
Tamás Szelei

3
@CodeinChaos: Tôi đã không được xây dựng từ nguồn trong nhiều năm. Fedora, Mac OS và OpenSuSE phải là những ngoại lệ kỳ lạ đối với "xu hướng" này. Hệ điều hành nào bạn đang sử dụng được hỗ trợ rất kém? Tôi muốn tránh nó, nếu có thể.
S.Lott

Câu trả lời:


11

Bởi vì việc tạo các cửa sổ nhị phân là một công việc hoàn toàn khác đòi hỏi một cơ sở kiến ​​thức và bộ công cụ hoàn toàn khác. Mọi người dường như có một thời gian khó khăn để nắm bắt điều này về các nhà phát triển Linux, vì vậy hãy để tôi xoay quanh nó.

  • Bạn đã sử dụng Windows cho những gì có vẻ như mãi mãi.
  • Bạn chỉ có Windows được cài đặt tại nhà.
  • Bạn đã sử dụng Linux ở đây và tại nơi làm việc, nhưng chỉ với tư cách là người dùng, không quản trị hoặc phát triển cho Linux.
  • Bạn biết gcc là trình biên dịch được sử dụng phổ biến nhất cho Linux, nhưng chưa bao giờ cài đặt nó trên máy tính của riêng bạn.
  • Bạn chủ yếu làm việc trên phần mềm cho chính mình trên Windows, nhưng đừng bận tâm đến việc sửa lỗi cho Linux nếu có ai đó làm việc để làm cho nó tương thích và phân phối nhị phân.
  • Bạn không muốn trả tiền cho một hệ điều hành và chuỗi công cụ khác khi một người khác đã hoàn toàn sẵn sàng thực hiện các bản dựng.

2
Tóm lại, một số lập trình viên không có kiến ​​thức, tài nguyên hoặc động lực để tạo nhị phân cho các nền tảng khác.
M. Dudley

11

Cairo là một thư viện, không phải là một ứng dụng. Postgres dường như có nhị phân Windows . Các dự án nhỏ hơn thường không cung cấp các bản dựng vì chúng không có cơ sở hạ tầng / tài nguyên.


4
+1 đặc biệt là "không có tài nguyên". Khó có thể cung cấp bản dựng Windows được thử nghiệm nếu bạn không có giấy phép cho Windows, không có trình biên dịch Windows (hoặc thời gian để thử nghiệm trình biên dịch chéo), v.v.
Steve314

1
@ Steve314: Mọi người đều có trình biên dịch Windows - gcc mã nguồn mở hoặc Visual Studio Express miễn phí.
gbjbaanb

1
Một thư viện cũng có thể có nhị phân, cụ thể là dlls. Thường thì tôi không có trình biên dịch (cài đặt) cũng như phụ thuộc để xây dựng thư viện gốc. Vì vậy, giống như nhận được nhị phân, ngay cả đối với các thư viện.
CodeInChaos

4
@CodeInChaos: Linux không sử dụng .dllrất thường xuyên, vì vậy những phần nhị phân đó phần lớn sẽ vô dụng với một số người trong chúng ta. Nguồn tinh khiết sẽ tốt hơn.
S.Lott

9
@gbjbaanb: Không phải ai cũng có cài đặt Windows, chứ đừng nói đến trình biên dịch.
David Thornley

9

Đó là một phần của triết lý mã nguồn mở "nếu bạn muốn một cái gì đó được thực hiện, lấy một cái xẻng." Đương nhiên, nó giảm khối lượng công việc cho các nhà phát triển nếu người dùng chỉ đơn giản tự biên dịch chương trình. Không cần phải lo lắng về tất cả các kiến ​​trúc, hệ điều hành, v.v ...

Nhưng, nếu bạn đang tạo một sản phẩm ở cấp độ người tiêu dùng (Firefox, Paint.NET, Audacity, Keepass, v.v.) và bạn quan tâm đến việc có được người dùng, bạn nên luôn luôn, luôn luôn, luôn luôn! bao gồm nhị phân. Có lẽ chỉ có 2% những người vấp ngã trên trang web của bạn và quan tâm đến sản phẩm của bạn, sẽ:

  • Tải xuống ứng dụng khách SCM thích hợp
  • Kiểm tra toàn bộ bản sao của cây nguồn
  • Tải xuống IDE hoặc các công cụ biên dịch cần thiết (dễ dàng vài trăm MB cho một số dự án)
  • Tải xuống và cài đặt tất cả các phụ thuộc cần thiết (và đặt các biến môi trường)
  • Chạy một trình biên dịch mới (dễ dàng xử lý 10 phút cho một số dự án)
  • Xử lý bất kỳ lỗi hoặc vấn đề hoặc phát sinh (mà trong các dự án nhỏ có thể không được ghi lại - "oh yeah, mới nhất thực sự là viết lại chi nhánh, không phải thân cây!")
  • Gỡ cài đặt mọi thứ hoặc để lại tất cả trên máy tính của bạn và biên dịch lại để cập nhật.

(Rõ ràng trên linux mọi thứ sẽ gọn gàng hơn, nhưng hầu hết người tiêu dùng vẫn sử dụng Windows.)

Người mới nói dễ dàng hơn nhiều khi nói "ooh, phiên bản Windows! Tải xuống. Chạy".

Tuy nhiên, nhiều dự án nguồn mở không ở cấp độ người tiêu dùng; họ nhắm vào các lập trình viên, những người có khả năng chịu đựng cao hơn đối với loại thử thách này, và vì vậy các nhị phân là DIY. Theo kinh nghiệm của tôi, các lập trình viên có thể lười biếng như người dùng, vì vậy, được cảnh báo. :)


Đây là chính xác các loại vấn đề khiến tôi đặt câu hỏi ngay từ đầu.
M. Dudley

3
Ai sẽ phân phối một dự án đòi hỏi IDE để xây dựng? Và mọi người thường không phân phối trong SCM thường. Nó giống như wget, tar xfz, ./cool, make, su -c 'make install' ...
thay thế

Điểm công bằng, toán học. Và các máy chủ SCM hiện đại hơn (như GitHub) sẽ cho phép bạn tải xuống bản sao được nén của phiên bản mới nhất.
Phil Cohen

@mathepic: Các nhà phát triển Windows, đó là ai.
Stuart P. Bentley

Các dự án @Stuart VS chỉ là các tệp msbuild. Không cần IDE.
thay thế

6

Người tạo các ứng dụng được viết trong một lần Viết Biên dịch mọi lúc mọi nơi môi trường (C, C ++, v.v.) được hưởng lợi từ việc đẩy bước biên dịch xuống các nhà phân phối (apt, rpm, yum, v.v.) để tạo và đóng gói nhị phân cho các kiến ​​trúc phổ biến. Điều này đạt được một ứng dụng di động tối đa với ít nỗ lực hơn từ phía người sáng tạo và cho phép họ dành nhiều thời gian hơn để tập trung vào năng lực cốt lõi của họ (phát triển ứng dụng, không biên dịch và lưu trữ nó cho nhiều kiến ​​trúc). Một số người tạo ứng dụng WOCA sẵn sàng trả thêm chi phí trong các trường hợp đặc biệt như Windows bởi vì - tốt - không ai khác, người dùng sẽ mong đợi điều đó và họ không muốn từ bỏ thị trường.

Mặt khác, các ứng dụng được viết trong môi trường Write Again Run Anywhere (Java) hoặc cho một kiến ​​trúc đích cụ thể (ví dụ, các ứng dụng OS X) có thể cung cấp một nhị phân duy nhất và thường phải làm như vậy vì chúng chỉ phải trả tiền biên dịch Chi phí một lần.

Cuối cùng, người dùng của họ thường thoải mái xây dựng từ nguồn hoặc sử dụng trình quản lý gói hệ điều hành của họ, vì vậy mô hình này cũng cung cấp khả năng sử dụng tốt hơn. Người dùng biết nơi nhận nhị phân (trình quản lý gói của họ), có trải nghiệm vòng đời cài đặt và quản lý gói nhất quán và biết nơi để có được nguồn nếu họ cần.


2
Một vấn đề với write-once-run-where ở bất cứ đâu là máy ảo là một chương trình theo đúng nghĩa của nó, theo quan điểm của O / S. Ví dụ: hầu hết các tường lửa Windows cho phép bạn cấp / từ chối truy cập vào các mạng trên cơ sở từng ứng dụng. Nhưng hầu hết trong số họ không thể nói với một ứng dụng Java từ một ứng dụng khác - họ cấp / từ chối quyền truy cập vào JVM, nhưng nếu bạn có một ứng dụng Java hoạt động như một máy chủ internet (Azureus, có lẽ) thì tường lửa sẽ không chặn bất kỳ kẻ lừa đảo không xác định nào Ứng dụng Java hoạt động như một máy chủ. Nếu có một giải pháp dành riêng cho Java, tôi là một ví dụ về người dùng Java không biết về nó.
Steve314

1
@Steve Tôi không đồng ý với bạn nhưng tôi không thực sự thấy những ưu / nhược điểm của WOCA hoặc WORA có liên quan đến câu hỏi này như thế nào.
Rein Henrichs

tiếp tuyến, đúng, nhưng trong một câu hỏi đã có một chút của cuộc chiến tôn giáo giữa Linux và Windows, v.v., có thể là một trong những tội ác ít hơn. BTW - Tôi đã +1 câu trả lời của bạn là hữu ích.
Steve314

Yay chiến tranh tôn giáo! Tôi sẽ lấy tar, bạn lấy lông?
Rein Henrichs

5

Tại sao tôi muốn nhai băng thông cung cấp cho bạn bản dựng (rõ ràng có thể rất lớn) thay vì bạn xây dựng nguồn mà tôi đang cung cấp cho bạn bằng mọi cách? Chưa kể rằng việc xây dựng một dự án trên máy của riêng bạn sẽ luôn mang lại kết quả tốt hơn vì nó được biên soạn riêng cho nền tảng của bạn ..


4
+1 - nhưng tôi nghi ngờ "luôn luôn" (phụ thuộc vào nền tảng bạn đang sử dụng) và những lợi ích đó có thể phải trả giá cho người dùng - cần một trình biên dịch, cần biết cách sử dụng nó, cần biết cách xây dựng dự án cụ thể đó, cần dành thời gian để điều tra và báo cáo các lỗi nghiêm trọng chỉ xuất hiện trên nền tảng cụ thể của bạn, v.v.
Steve314

1
@ steve314: +1, tất cả các điểm thực sự :)
Demian Brecht

7
Một vài tệp nhị phân thường không lớn. Và chi phí thời gian cho người dùng thường thực sự lớn. Tìm tất cả các phụ thuộc và tìm ra cách xây dựng dự án cụ thể đó mất khá nhiều thời gian. Ngay cả khi người dùng của bạn là một lập trình viên. Nếu người dùng không phải là lập trình viên, anh ta có thể quên khá nhiều về sản phẩm của bạn. Và tôi nghĩ rằng các đối số hiệu suất được đánh giá cao. Thông thường, bạn không cần phần trăm hiệu suất cuối cùng đó và nếu bạn làm như vậy thì bạn vẫn có thể tìm ra cách xây dựng từ nguồn.
CodeInChaos

1
@codeinchaos: Điều đó hoàn toàn liên quan đến dự án (kích thước). Một bản dựng có thể bao gồm một nhị phân đơn, hoặc vài trăm MB (nếu không nhiều hơn) trong các nhị phân và các tài sản không được biên dịch (nghĩ là các trò chơi). Tất nhiên, đôi khi việc đóng đinh các phụ thuộc có thể gây ra một chút khó khăn, nhưng điều đó tùy thuộc vào tác giả của gói để cung cấp danh sách hoặc cơ chế tải xuống / xây dựng phụ thuộc thời gian xây dựng (bộ sưu tập cổng của FreeBSD rất phù hợp) . Các dự án hướng đến những người không lập trình hầu như sẽ luôn có một danh sách nhị phân / trình cài đặt được duy trì ở đâu đó.
Demian Brecht

Điều quan trọng là, nhiều dự án nguồn mở không phải là "sản phẩm" theo nghĩa thông thường. Vì nguồn mở là về việc cho phép đóng góp dưới nhiều hình thức khác nhau, việc người khác cung cấp các tệp nhị phân biết cách thực hiện và có thời gian để duy trì chúng có vẻ như là một ý tưởng hay.
phaylon

2

Tôi có thể nghĩ về hai lý do.

Đầu tiên, bạn có nhiều hệ điều hành chạy trên nhiều loại phần cứng; số lượng mục tiêu nhị phân bạn sẽ phải xây dựng trở nên không thể quản lý được. Có ba phiên bản Windows vẫn được sử dụng phổ biến (XP, Vista, 7) chạy trên phần cứng 32 bit hoặc 64 bit; Đó là 6 mục tiêu nhị phân ngay tại đó. Tình hình tồi tệ hơn về phía Linux, với nhiều bản phân phối lớn hơn chạy trên Chúa biết phần cứng nào (x86, PPC, MIPS, SPARC, PA-RISC, v.v.). Bạn sẽ xây dựng cho mọi sự kết hợp có thể? Bạn thậm chí có thiết bị và / hoặc phần mềm để làm như vậy? Nếu có ai đó ngoài kia vẫn đang chạy (Chúa giúp chúng tôi) NT trên PII, bạn có định xây dựng nhị phân cho họ không?

Thứ hai, nguồn vận chuyển có nghĩa là người dùng có thể tối ưu hóa bản dựng cho môi trường cụ thể của họ; họ có thể bật bất kỳ tối ưu hóa nào họ cần hoặc tự điều chỉnh nguồn nếu cần.


Vì vậy, tôi đoán câu trả lời là sử dụng một cái gì đó như máy chủ xây dựng của Sourceforge. Đăng ký, hãy để họ xây dựng cho bạn rất nhiều nhị phân. Chẳng hạn như en.opensuse.org/Build_Service
gbjbaanb

1
Vì các chương trình đó thường không sử dụng bất kỳ tính năng đặc biệt nào của Vista / Win7 và các chương trình 32 bit chạy trên HĐH 64 bit, bạn hầu như luôn có thể thoát khỏi một nhị phân WinXP 32 bit duy nhất cho tất cả người dùng windows.
CodeInChaos

@CodeInChaos - +1 - một số dự án cung cấp cả nhị phân 32 bit và 64 bit, nhưng cung cấp nhiều biến thể hơn là điều hiếm gặp. Một điểm hợp lệ, mặc dù.
Steve314

@gbjbaanb - một câu trả lời, chắc chắn, nhưng có lẽ không phải câu trả lời.
Steve314

2

Thông thường, giá trị của một dự án nguồn mở, có thể là một ứng dụng, hệ thống, mô-đun hoặc thư viện, là nó có thể được nghiên cứu và / hoặc sửa đổi khi cần thiết. Phân phối nguồn là bản chất cho mô hình xuất bản.

Phân phối một nhị phân có nguy cơ rằng nó đã được sửa đổi trong một số thời trang cho mục đích bất chính. Tổng hợp dự án từ các nỗ lực nguồn để giảm thiểu rủi ro đó.


Đối với các ứng dụng> 90% người dùng thậm chí sẽ không bao giờ nhìn vào nguồn. Và nguy cơ thao túng là điều mà hầu hết những người tải xuống nhị phân sẵn sàng chấp nhận. Họ không thể (và thậm chí nếu họ có thể quá lười biếng) để xác minh rằng mã nguồn không chứa mã độc.
CodeInChaos

2
Đúng, nhưng OP đã hỏi tại sao các dự án nguồn mở thường không được phân phối dưới dạng nhị phân, không phải "với tư cách là người dùng, tại sao tôi phải biên dịch tất cả những thứ này?" ;-)
Rob Raisch

Nhưng bạn tranh luận về lý do tại sao nó tốt hơn cho người dùng rằng anh ta có được nguồn chứ không phải là nhị phân.
CodeInChaos

1
Thật buồn cười, tôi không thấy từ 'người dùng' trong câu trả lời của tôi hoặc câu hỏi ban đầu. Có lẽ tôi đang đọc câu trả lời của chính mình?
Rob Raisch

1
Thật thú vị khi bạn có vẻ khó hiểu khi hiểu sai ý kiến ​​của tôi vì tôi đã không cố gắng cung cấp "một lý do cho việc không cung cấp nhị phân." Tôi chỉ đơn giản cung cấp một lời giải thích cho lý do tại sao các dự án nguồn mở thường được phân phối dưới dạng mã nguồn. Cảm ơn đã chơi nhưng đây là nhận xét cuối cùng của tôi về điều này.
Rob Raisch

1

Điều này có thể có một số lý do. Nhiều dự án nguồn mở (nếu không phải hầu hết) bắt đầu trên Linux. Vì vậy, dự án ban đầu được thực hiện cho hệ thống này và việc đóng gói được thực hiện bởi các thành viên trong nhóm.

Tạo trình cài đặt Windows là công việc bổ sung đòi hỏi kiến ​​thức mà các nhà phát triển Linux có thể không có. Vì vậy, nếu ai đó từ bên ngoài nhóm nòng cốt đảm nhận công việc này, anh ta thường được đề cập đặc biệt.

Điều tương tự cũng có thể đúng với các hệ thống khác như OS X hoặc thậm chí các bản phân phối Linux cụ thể. Tất cả phụ thuộc vào người có kiến ​​thức và thời gian để làm thêm.


Một trình cài đặt windows hiếm khi được yêu cầu. Một tập tin zip với nhị phân cũng tốt. Nhưng tất nhiên, bạn đúng rằng nhiều nhà phát triển dựa trên linux sẽ không quan tâm nhiều đến phiên bản windows của chương trình của họ.
CodeInChaos

1
Một tệp zip có thể là một điểm chấp lớn trong thế giới Windows. 'Tôi đã tải xuống tập tin này. Bây giờ khi tôi nhấp vào, các cửa sổ cho tôi biết "định dạng tệp không xác định" là một vấn đề khá phổ biến trong các diễn đàn trợ giúp.
thorsten müller

Tôi đã xuất bản tất cả nội dung của mình dưới dạng tệp .zip. Tôi nghĩ rằng khiếu nại duy nhất tôi nhận được trong bối cảnh này là bởi một số người đã quản lý sao chép tệp exe vào máy tính để bàn của mình thay vì tạo một liên kết. Nhưng trong mọi trường hợp, khó khăn trong việc xây dựng từ nguồn cao hơn nhiều so với khó khăn trong việc giải nén một cái gì đó.
CodeInChaos

1
Phụ thuộc một phần vào cơ sở người dùng của bạn. Nếu bạn xuất bản một thư viện chỉ được sử dụng bởi các lập trình viên, bạn sẽ không gặp vấn đề với các tệp zip. Zip đủ dễ để mọi khán giả có kiến ​​thức cơ bản hoàn thành nó. Mặc dù tôi đã thấy câu hỏi zip thường xuyên đủ ...
thorsten müller

1
Hãy nhớ rằng trong XP +, các tệp zip được HĐH xử lý nguyên bản và nhấp đúp đủ sẽ mở tệp trong thư mục được trích xuất.
Phil Cohen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.