ในโฟลเดอร์“ contrib” คืออะไร


42

บ่อยครั้งที่โครงการซอฟต์แวร์โอเพนซอร์ซมีโฟลเดอร์ชื่อ "contrib" ตัวอย่างเช่นDjango มีหนึ่งรายการ มีไว้เพื่ออะไร?


ที่ใช้ร่วมกันวิจัยของคุณช่วยให้ทุกคน บอกเราว่าคุณได้ลองทำอะไรและทำไมมันถึงไม่ตรงกับความต้องการของคุณ สิ่งนี้แสดงให้เห็นว่าคุณได้ใช้เวลาในการพยายามช่วยตัวเองมันช่วยให้เราไม่ต้องย้ำคำตอบที่ชัดเจนและส่วนใหญ่จะช่วยให้คุณได้คำตอบที่เฉพาะเจาะจงและเกี่ยวข้องมากขึ้น ดูวิธีถาม
gnat

11
คำถามนั้นค่อนข้างชัดเจน IMO - " Contribโฟลเดอร์นี้ที่ฉันเห็นอยู่ในโครงการคืออะไร" - "ทำไมหรือทำไมโครงการถึงไม่มี" - "มีแบบแผนมาตรฐานสำหรับเรื่องนี้ที่ฉันควรรู้หรือไม่?"
BrainSlugs83

คำตอบ:


17

มันเป็นซอฟแวร์ที่ได้รับการcontrib uted โครงการ แต่ที่อาจจะไม่จริงถูกเก็บรักษาไว้โดยนักพัฒนาหลัก การตั้งชื่อมันว่า "contrib" หรือ "Contrib" เป็นการประชุมที่ยาวนาน แต่ไม่มีอะไรพิเศษจริงๆเกี่ยวกับชื่อและมักใช้โดยโครงการขนาดใหญ่พอสมควรเท่านั้น


2
นี่คือคำตอบที่ถูกต้อง
Blrfl

ฉันได้สังเกตเห็นว่าสิ่งที่อยู่ใน contrib บางครั้งจะทำให้มันกลายเป็นที่ไม่ contrib ฉันคิดว่าความหมายในเรื่องนี้คือมันได้ถูกนำไปใช้ในการฉีดโครงการสำหรับการสนับสนุนและการพัฒนาที่ใช้งานมากขึ้น?
fostandy

1
@fostandy: ใช่ถูกต้อง
ไบรอัน Oakley

15

เมื่อมองไปที่โครงการโอเพนซอร์ซยอดนิยมที่นึกถึงฉันไม่เห็นชื่อโฟลเดอร์“ contrib”:

อันเดียวที่มีโฟลเดอร์“ contrib” คือ Django สำหรับ Django บทบาทของโฟลเดอร์นี้มีการอธิบายไว้ในเอกสารประกอบแล้ว :

Django มุ่งมั่นที่จะปฏิบัติตามปรัชญา“ รวมแบตเตอรี่” ของ Python มาพร้อมกับเครื่องมือเสริมที่หลากหลายและเป็นตัวเลือกที่ช่วยแก้ปัญหาการพัฒนาเว็บทั่วไป

รหัสนี้อาศัยอยู่django/contribในการกระจาย Django เอกสารนี้ให้บทสรุปของแพคเกจใน contrib พร้อมกับการอ้างอิงใด ๆ ที่แพ็คเกจเหล่านั้นมี

บทที่ 16 ของหนังสือ Djangoมีคำอธิบายโดยละเอียดเพิ่มเติมเกี่ยวกับบทบาทของไดเรกทอรีนี้และรายการเนื้อหา

อีกตัวอย่างหนึ่งคือSolr ด้วยgitstatsเราสามารถรับสถิติเกี่ยวกับผู้มีส่วนร่วม

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%

จากนั้นเราสามารถเลือกเฉพาะcontribไดเรกทอรีโดยเรียกใช้:

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

และรับสถิติอีกครั้ง:

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

ดังนั้นผู้แต่งอันดับต้น ๆ ก็เหมือนกันซึ่งหมายความว่าสิ่งเหล่านั้นไม่ใช่ผลงานจากบุคคลภายนอก เมื่อดูที่ไดเรกทอรีในcontribโฟลเดอร์ดูเหมือนว่าอีกครั้งนั่นคือ“ เครื่องมือพิเศษที่หลากหลายและเป็นตัวเลือก” เหมือนกับใน Django ตัวอย่างเช่นคุณไม่จำเป็นต้องใช้ Data Import Request Handler เพื่อให้ Solr ทำงานได้ แต่ถ้าคุณต้องการนำเข้าข้อมูลจากฐานข้อมูลหรือ XML ก็ดีที่มีในcontribโฟลเดอร์ เช่นเดียวกันกับการลดขนาดแผนที่คุณอาจไม่จำเป็นต้องใช้ แต่ก็มีหลายกรณีที่คุณต้องทำ

ปลั๊กอินหรือส่วนเสริมเหล่านั้นหรือไม่ ฉันจะไม่ใช้คำนี้ ปลั๊กอินและส่วนเสริมมีการรวมเฉพาะกับแอปพลิเคชันหลัก ตัวอย่างเช่นปลั๊กอินไม่คาดว่าจะเรียกใช้แบบสแตนด์อโลน แต่โฮสต์ภายในแอปพลิเคชันหลัก ในทางกลับกันcontribมีเครื่องมือที่สามารถเรียกใช้แบบสแตนด์อโลน


2
จริงๆแล้วฉันสงสัยว่า "contrib" คืออะไร ตอนนี้ Solr ก็ทำเสียงฮึดฮัดเหมือนกัน นี่เป็นอีกคำหนึ่งสำหรับ plugin / add-on / หรือไม่
Martyn

@ user3265472: ฉันแก้ไขคำตอบของฉันเพื่อรวม Solr สำหรับ Grunt คุณกำลังพูดถึงอันนี้หรือไม่? ฉันไม่คิดว่าจะมีไดเรกทอรี contrib
Arseni Mourzenko

ใช่นั่นเป็นสิ่งหนึ่งขอโทษที่ฉันพลาดโฟลเดอร์ไปจากคำถาม ฉันกำลังพยายามเข้าใจคำว่า "contrib" ด้วยตนเอง Grunt มีปลั๊กอิน / ไลบรารีต่าง ๆ (?) ที่มีชื่อเช่น (Grunt-contrib-uglify, Grunt-contrib-jshint, ฯลฯ ) คำอธิบายของคุณทำให้ฉันมีความคิดที่ดีขึ้นขอบคุณ
Martyn

2
แพคเกจบางรายการใน Debian อยู่ในแพ็คเกจที่เรียกว่า 'contrib' นี่คือสิ่งที่คู่มือนโยบายเดเบียนได้กล่าวถึง "แพ็คเกจในพื้นที่เก็บถาวรอื่น ๆ (contrib, non-free) ไม่ถือเป็นส่วนหนึ่งของการแจกจ่าย Debian แม้ว่าเราจะสนับสนุนการใช้งานและจัดเตรียมโครงสร้างพื้นฐานสำหรับพวกเขา (เช่น ระบบติดตามบั๊กและรายชื่อผู้รับจดหมายของเรา) "
Kevin Wheeler

3
โครงการ OSS มากมายและมากมายที่ฉันได้ดูในช่วงหลายปีที่ผ่านมามีโฟลเดอร์ชื่อContrib(ดูอีกอันตอนนี้ใน Akka.NET)! - ฉันไม่รู้ว่าทำไมพวกเขาถึงมีชื่อโฟลเดอร์นั้นหรือสิ่งที่ใช้สำหรับการประชุมแบบแผนการตั้งชื่อนี้คืออะไร - ไม่มีสิ่งที่กล่าวถึงเท่าที่ดูเหมือนจะพอดีกับวิธีที่ฉันเคยเห็น "contrib" ที่ใช้ - ดูเหมือนว่าทุกโครงการมีสิ่งที่แตกต่างกันโดยสิ้นเชิง (Akka.Net ดูเหมือนจะใส่รหัสฐานไว้ในไตรมาสที่ดี: Akka.Clustering, Logging, DI, Persistence, TestKits, ฯลฯ ... )
BrainSlugs83

6

มันหมายสำหรับห้องสมุดหรือส่วนประกอบที่contrib ute กับโครงการ แต่ไม่ได้เป็นเจ้าของหรือเป็นส่วนหนึ่งของโครงการของตัวเอง ฉันมักจะใช้มันเป็นสถานที่ทั่วไปหรือที่ใช้ร่วมกันเพื่อใส่ห้องสมุดบุคคลที่สามที่ฉันใช้อยู่

ตัวอย่างเช่นคุณอาจมี:

  • / Contrib / log4net-xxx
  • /Contrib/SSH.NET-xxx
  • / BackendService
  • / DesktopUI
  • / GenUtils
  • / SMCore
  • / WebUI

จากนั้นอ้างอิงองค์ประกอบเหล่านี้ในแต่ละองค์ประกอบของโครงการโดยใช้พา ธ สัมพัทธ์ดังนั้นจึงไม่จำเป็นต้องมีการตั้งค่าหรือการกำหนดค่าใด ๆ ก่อนสร้าง มันจะสร้างตรงจาก repo ไม่ว่าจะเช็คเอาท์ที่ไหน


ฉันไม่แชร์มุมมองนี้ สำหรับสิ่งที่คุณอธิบายผมค่อนข้างจะใช้ชื่อหรือvendor thirdparty
moi

2

Git เป็นตัวอย่างที่ดีของซอฟต์แวร์โอเพนซอร์ซที่ใช้หลักการนี้:

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

นี่คือข้อความที่ตัดตอนมาจากไฟล์ README.md ที่เกี่ยวข้อง:

ซอฟต์แวร์ที่สนับสนุน

แม้ว่าชิ้นส่วนเหล่านี้จะมีอยู่เป็นส่วนหนึ่งของต้นไม้ต้นกำเนิดของคอมไพล์อย่างเป็นทางการ แต่ก็อยู่ในสถานะที่แตกต่างกันบ้าง ความตั้งใจที่จะเก็บเครื่องมือที่น่าสนใจรอบ ๆ ที่นี่บางทีแม้แต่การทดลองเพื่อให้ผู้ใช้สามารถเข้าถึงพวกเขาได้ง่ายขึ้นและเพื่อให้เครื่องมือได้รับการเปิดกว้างมากขึ้นเพื่อให้พวกเขาสามารถปรับปรุงได้เร็วขึ้น

ฉันไม่ได้คาดหวังว่าจะได้สัมผัสตัวเองมากขนาดนี้ เท่าที่เกี่ยวข้องกับการดำเนินงานประจำวันของฉันเป็นห่วงไดเรกทอรีย่อยเหล่านี้เป็นของผู้เขียนหลักที่เกี่ยวข้อง ฉันยินดีที่จะช่วยเหลือหากผู้ใช้องค์ประกอบเหล่านี้และ contrib / ทรีย่อย "เจ้าของ" มีปัญหาการออกแบบ / เทคนิคในการแก้ปัญหา แต่คิดริเริ่มที่จะแก้ไขและ / หรือเพิ่มสิ่งที่จะต้องเป็นในด้านของเจ้าของทรีย่อยที่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.