บ่อยครั้งที่โครงการซอฟต์แวร์โอเพนซอร์ซมีโฟลเดอร์ชื่อ "contrib" ตัวอย่างเช่นDjango มีหนึ่งรายการ มีไว้เพื่ออะไร?
Contribโฟลเดอร์นี้ที่ฉันเห็นอยู่ในโครงการคืออะไร" - "ทำไมหรือทำไมโครงการถึงไม่มี" - "มีแบบแผนมาตรฐานสำหรับเรื่องนี้ที่ฉันควรรู้หรือไม่?"
บ่อยครั้งที่โครงการซอฟต์แวร์โอเพนซอร์ซมีโฟลเดอร์ชื่อ "contrib" ตัวอย่างเช่นDjango มีหนึ่งรายการ มีไว้เพื่ออะไร?
Contribโฟลเดอร์นี้ที่ฉันเห็นอยู่ในโครงการคืออะไร" - "ทำไมหรือทำไมโครงการถึงไม่มี" - "มีแบบแผนมาตรฐานสำหรับเรื่องนี้ที่ฉันควรรู้หรือไม่?"
คำตอบ:
มันเป็นซอฟแวร์ที่ได้รับการcontrib uted โครงการ แต่ที่อาจจะไม่จริงถูกเก็บรักษาไว้โดยนักพัฒนาหลัก การตั้งชื่อมันว่า "contrib" หรือ "Contrib" เป็นการประชุมที่ยาวนาน แต่ไม่มีอะไรพิเศษจริงๆเกี่ยวกับชื่อและมักใช้โดยโครงการขนาดใหญ่พอสมควรเท่านั้น
เมื่อมองไปที่โครงการโอเพนซอร์ซยอดนิยมที่นึกถึงฉันไม่เห็นชื่อโฟลเดอร์“ 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มีเครื่องมือที่สามารถเรียกใช้แบบสแตนด์อโลน
Contrib(ดูอีกอันตอนนี้ใน Akka.NET)! - ฉันไม่รู้ว่าทำไมพวกเขาถึงมีชื่อโฟลเดอร์นั้นหรือสิ่งที่ใช้สำหรับการประชุมแบบแผนการตั้งชื่อนี้คืออะไร - ไม่มีสิ่งที่กล่าวถึงเท่าที่ดูเหมือนจะพอดีกับวิธีที่ฉันเคยเห็น "contrib" ที่ใช้ - ดูเหมือนว่าทุกโครงการมีสิ่งที่แตกต่างกันโดยสิ้นเชิง (Akka.Net ดูเหมือนจะใส่รหัสฐานไว้ในไตรมาสที่ดี: Akka.Clustering, Logging, DI, Persistence, TestKits, ฯลฯ ... )
มันหมายสำหรับห้องสมุดหรือส่วนประกอบที่contrib ute กับโครงการ แต่ไม่ได้เป็นเจ้าของหรือเป็นส่วนหนึ่งของโครงการของตัวเอง ฉันมักจะใช้มันเป็นสถานที่ทั่วไปหรือที่ใช้ร่วมกันเพื่อใส่ห้องสมุดบุคคลที่สามที่ฉันใช้อยู่
ตัวอย่างเช่นคุณอาจมี:
จากนั้นอ้างอิงองค์ประกอบเหล่านี้ในแต่ละองค์ประกอบของโครงการโดยใช้พา ธ สัมพัทธ์ดังนั้นจึงไม่จำเป็นต้องมีการตั้งค่าหรือการกำหนดค่าใด ๆ ก่อนสร้าง มันจะสร้างตรงจาก repo ไม่ว่าจะเช็คเอาท์ที่ไหน
vendor thirdparty
Git เป็นตัวอย่างที่ดีของซอฟต์แวร์โอเพนซอร์ซที่ใช้หลักการนี้:
https://github.com/git/git/tree/master/contrib
นี่คือข้อความที่ตัดตอนมาจากไฟล์ README.md ที่เกี่ยวข้อง:
ซอฟต์แวร์ที่สนับสนุน
แม้ว่าชิ้นส่วนเหล่านี้จะมีอยู่เป็นส่วนหนึ่งของต้นไม้ต้นกำเนิดของคอมไพล์อย่างเป็นทางการ แต่ก็อยู่ในสถานะที่แตกต่างกันบ้าง ความตั้งใจที่จะเก็บเครื่องมือที่น่าสนใจรอบ ๆ ที่นี่บางทีแม้แต่การทดลองเพื่อให้ผู้ใช้สามารถเข้าถึงพวกเขาได้ง่ายขึ้นและเพื่อให้เครื่องมือได้รับการเปิดกว้างมากขึ้นเพื่อให้พวกเขาสามารถปรับปรุงได้เร็วขึ้น
ฉันไม่ได้คาดหวังว่าจะได้สัมผัสตัวเองมากขนาดนี้ เท่าที่เกี่ยวข้องกับการดำเนินงานประจำวันของฉันเป็นห่วงไดเรกทอรีย่อยเหล่านี้เป็นของผู้เขียนหลักที่เกี่ยวข้อง ฉันยินดีที่จะช่วยเหลือหากผู้ใช้องค์ประกอบเหล่านี้และ contrib / ทรีย่อย "เจ้าของ" มีปัญหาการออกแบบ / เทคนิคในการแก้ปัญหา แต่คิดริเริ่มที่จะแก้ไขและ / หรือเพิ่มสิ่งที่จะต้องเป็นในด้านของเจ้าของทรีย่อยที่