Có gì trong thư mục contrib trên mạng?


42

Thông thường các dự án phần mềm nguồn mở có một thư mục gọi là "đóng góp". Ví dụ, Django có một . Nó dùng để làm gì?


Chia sẻ nghiên cứu của bạn giúp mọi người . Hãy cho chúng tôi những gì bạn đã cố gắng và tại sao nó không đáp ứng nhu cầu của bạn. Điều này chứng tỏ rằng bạn đã dành thời gian để cố gắng tự giúp mình, nó giúp chúng ta tránh nhắc lại các câu trả lời rõ ràng và hầu hết nó giúp bạn có được câu trả lời cụ thể và phù hợp hơn. Xem thêm Cách hỏi
gnat

11
Câu hỏi khá rõ ràng, IMO. - " ContribThư mục này tôi tiếp tục thấy trong các dự án là gì?" - "Tại sao, hoặc tại sao một dự án sẽ không có?" - "Có một số quy ước tiêu chuẩn cho điều này mà tôi nên biết về?"
BrainSlugs83

Câu trả lời:


17

Nó dành cho phần mềm đã được đóng góp cho dự án, nhưng có thể không thực sự được duy trì bởi các nhà phát triển cốt lõi. Đặt tên là "contrib" hoặc "Contrib" là một quy ước đã được thiết lập từ lâu, nhưng thực sự không có gì đặc biệt về cái tên này và nó thường chỉ được sử dụng bởi các dự án khá lớn.


2
Đây là câu trả lời chính xác.
Blrfl

Tôi cũng nhận thấy rằng những thứ trong contrib đôi khi sẽ được chuyển thành không đóng góp. Tôi cho rằng hàm ý trong việc này là nó đã được thông qua vào tuyến chính của dự án để hỗ trợ và phát triển tích cực hơn?
fostandy

1
@fostandy: vâng, đúng rồi.
Bryan Oakley

15

Nhìn vào các dự án nguồn mở phổ biến xuất hiện trong tâm trí, tôi không thấy đề cập đến bất kỳ thư mục contrib nào của Wikipedia:

Người duy nhất có một thư mục đóng góp của Wikipedia là Django. Đối với Django, vai trò của thư mục này đã được giải thích trong tài liệu :

Django nhằm mục đích đi theo pin của Python bao gồm triết lý. Nó cung cấp nhiều công cụ tùy chọn bổ sung để giải quyết các vấn đề phát triển Web phổ biến.

Mã này sống trong django/contribphân phối Django. Tài liệu này cung cấp danh sách các gói trong contrib, cùng với bất kỳ sự phụ thuộc nào mà các gói đó có.

Chương 16 của Django Book chứa một mô tả chi tiết hơn về vai trò của thư mục này và danh sách các nội dung.

Một ví dụ khác là Solr . Với gitstats, chúng tôi có thể nhận được số liệu thống kê về những người đóng góp.

Robert Muir         22.09%
Michael McCandless  13.60%
Mark Robert Miller   9.73%
Uwe Schindler        8.17%
Yonik Seeley         5.56%
Steven Rowe          5.55%

Sau đó, chúng ta chỉ có thể chọn contribthư mục bằng cách chạy:

git filter-branch --subdirectory-filter solr/contrib --prune-empty

và lấy số liệu thống kê một lần nữa:

Robert Muir         19.62%
Steven Rowe          8.87%
Mark Robert Miller   8.33%
Uwe Schindler        8.06%
James Dyer           7.80%

Vì vậy, các tác giả hàng đầu thực tế là như nhau, có nghĩa là những người đó không phải là đóng góp từ người ngoài. Nhìn vào các thư contribmục bên trong thư mục, có vẻ như một lần nữa, đó là một loạt các công cụ tùy chọn bổ sung, chính xác như trong Django. Chẳng hạn, bạn không cần Trình xử lý yêu cầu nhập dữ liệu để làm cho Solr hoạt động, nhưng nếu bạn muốn nhập dữ liệu từ cơ sở dữ liệu hoặc XML, thật tuyệt khi có nó trong contribthư mục. Tương tự đối với bản đồ thu nhỏ, bạn có thể không nhất thiết cần nó, nhưng có những trường hợp bạn làm.

Là những plugin hoặc add-on? Tôi sẽ không sử dụng thuật ngữ này. Các plugin và tiện ích bổ sung có tích hợp cụ thể với ứng dụng chính. Chẳng hạn, một plugin không được mong đợi chạy độc lập, nhưng được lưu trữ trong ứng dụng chính. Mặt khác, contribchứa các công cụ có thể chạy độc lập.


2
Trên thực tế, tôi đã tự hỏi chính xác một "đóng góp" là gì. Solr có rồi, Grunt cũng vậy. Đây có phải chỉ là một thuật ngữ khác cho plugin / add-on /?
Martyn

@ user3265472: Tôi đã chỉnh sửa câu trả lời của mình để bao gồm Solr. Đối với Grunt, bạn đang nói về điều này ? Tôi không nghĩ có một thư mục đóng góp.
Arseni Mourzenko

Yeh đó là một, xin lỗi tôi đã bỏ lỡ thư mục từ câu hỏi. Tôi đã buộc phải hiểu thuật ngữ "đóng góp" bản thân mình. Grunt có nhiều plugin / thư viện (?) Được đặt tên như vậy (Grunt-contrib-uglify, Grunt-contrib-jshint, v.v.). Mô tả của bạn đưa ra cho tôi một ý tưởng tốt hơn mặc dù, cảm ơn.
Martyn

2
Một số gói trong Debian rơi vào một lớp các gói được gọi là 'đóng góp'. Đây là những gì Hướng dẫn chính sách Debian nói về nó "Các gói trong các khu vực lưu trữ khác (đóng góp, không miễn phí) không được coi là một phần của bản phân phối Debian, mặc dù chúng tôi hỗ trợ việc sử dụng chúng và cung cấp cơ sở hạ tầng cho chúng (như hệ thống theo dõi lỗi và danh sách gửi thư của chúng tôi). "
Kevin Wheeler

3
Rất nhiều và rất nhiều dự án OSS mà tôi đã xem xét trong nhiều năm qua có một thư mục được gọi Contrib(hiện đang xem một dự án khác trong Akka.NET)! - Tôi không biết tại sao họ có một thư mục có tên đó, hoặc quy ước cho quy ước đặt tên này là gì. - Không có điều nào được đề cập cho đến nay dường như phù hợp với tất cả các cách tôi đã thấy "đóng góp" được sử dụng. - có vẻ như mọi dự án đều có những thứ hoàn toàn khác nhau trong đó (Akka.Net dường như đặt một phần tư cơ sở mã tốt của họ vào đó: Akka.Clustering, Logging, DI, Persistence, TestKits, v.v ...).
BrainSlugs83

6

Nó có nghĩa là cho các thư viện hoặc các thành phần đóng góp cho dự án, nhưng không thuộc sở hữu hoặc một phần của chính dự án. Tôi đã luôn sử dụng nó như một vị trí chung hoặc chung để đặt bất kỳ thư viện bên thứ ba nào tôi đang sử dụng.

Chẳng hạn, bạn có thể có:

  • / Đóng góp / log4net-xxx
  • /Contrib/SSH.NET-xxx
  • / Dịch vụ cuối cùng
  • / Máy tính để bàn
  • / GenUtils
  • / SMCore
  • / WebUI

Sau đó tham chiếu chúng trong từng thành phần của dự án bằng các đường dẫn tương đối, do đó không có bất kỳ loại thiết lập hoặc cấu hình nào cần thiết trước khi xây dựng nó. Nó sẽ xây dựng thẳng ra khỏi repo bất kể nó được kiểm tra tại địa phương.


Tôi không chia sẻ quan điểm này. Đối với những gì bạn mô tả, tôi muốn sử dụng tên vendorhoặc thirdparty.
moi

2

Git là một ví dụ tuyệt vời về phần mềm nguồn mở sử dụng quy ước này:

https://github.com/git/git/tree/master/contrib

Đây là một đoạn trích có liên quan từ tệp README.md đó:

Phần mềm đóng góp

Mặc dù các phần này có sẵn như là một phần của cây nguồn git chính thức, chúng ở trạng thái hơi khác nhau. Mục đích là để giữ các công cụ thú vị xung quanh git ở đây, thậm chí là các công cụ thử nghiệm, để giúp người dùng truy cập dễ dàng hơn và cung cấp cho các công cụ tiếp xúc rộng hơn, để chúng có thể được cải thiện nhanh hơn.

Tôi không mong đợi để chạm vào những người này nhiều như vậy. Theo như hoạt động hàng ngày của tôi có liên quan, các thư mục con này được sở hữu bởi các tác giả chính tương ứng của họ. Tôi sẵn sàng giúp đỡ nếu người dùng của các thành phần này và "chủ sở hữu" đóng góp có vấn đề về kỹ thuật / thiết kế để giải quyết, nhưng sáng kiến ​​khắc phục và / hoặc nâng cao mọi thứ phải đứng về phía chủ sở hữu cây con.

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.