"कंट्रीब" फ़ोल्डर में क्या है?


42

अक्सर ओपन-सोर्स सॉफ़्टवेयर प्रोजेक्ट में एक फ़ोल्डर होता है जिसे "कॉन्ट्रिब" ​​कहा जाता है। उदाहरण के लिए, Django के पास एक है । ये किसके लिये है?


अपने शोध को साझा करना हर किसी की मदद करता है । हमें बताएं कि आपने क्या प्रयास किया है और यह आपकी आवश्यकताओं को पूरा क्यों नहीं करता है। यह दर्शाता है कि आपने खुद को मदद करने का प्रयास करने के लिए समय लिया है, यह हमें स्पष्ट उत्तरों को दोहराने से बचाता है, और सबसे अधिक यह आपको अधिक विशिष्ट और प्रासंगिक उत्तर प्राप्त करने में मदद करता है। यह भी देखें कि कैसे पूछें
gnat

11
प्रश्न बहुत स्पष्ट था, IMO। - "यह Contribवह फ़ोल्डर है जिसे मैं परियोजनाओं में देखता रहता हूं?" - "क्यों, या एक परियोजना में एक क्यों नहीं होगा?" - "क्या इसके लिए कुछ मानक सम्मेलन हैं जिनके बारे में मुझे पता होना चाहिए?"
BrainSlugs83

जवाबों:


17

यह सॉफ्टवेयर है कि कर दिया गया है के लिए है योगदान परियोजना के लिए uted, लेकिन जो वास्तव में कोर डेवलपर्स द्वारा नहीं बनाए रखा जा सकता है। इसे "कंटिब" या "कॉन्ट्रिब" ​​नाम देना एक लंबे समय से स्थापित सम्मेलन है, लेकिन नाम के बारे में वास्तव में कुछ खास नहीं है, और यह आमतौर पर केवल काफी बड़ी परियोजनाओं द्वारा उपयोग किया जाता है।


2
यह सही जवाब है।
ब्लरफाल

मैंने यह भी देखा है कि कंट्रीब में सामान कभी-कभी गैर-कंट्रीब में अपना रास्ता बना लेगा। मुझे लगता है कि इसमें निहितार्थ यह है कि इसे अधिक सक्रिय समर्थन और विकास के लिए प्रोजेक्ट मेनलाइन में अपनाया गया है?
फॉस्टंडी

1
@ फॉस्टंडी: हाँ, यह सही है।
ब्रायन ओकले

15

मन में आने वाले लोकप्रिय ओपन सोर्स प्रोजेक्ट्स को देखते हुए, मुझे किसी भी "कंट्रीब" फोल्डर का कोई उल्लेख नहीं है:

केवल एक जिसके पास "कंट्रीब" फोल्डर है, वह है Django। Django के लिए, इस फ़ोल्डर की भूमिका पहले से ही प्रलेखन में बताई गई है :

Django का उद्देश्य पायथन की "बैटरी शामिल" दर्शन का पालन करना है। यह विभिन्न प्रकार के अतिरिक्त, वैकल्पिक उपकरणों के साथ जहाज है जो सामान्य वेब-विकास समस्याओं को हल करते हैं।

यह कोड django/contribDjango वितरण में रहता है । यह दस्तावेज़ कंट्राब में संकुल का एक रडाउन देता है, साथ ही उन पैकेजों पर निर्भरता के साथ।

द Django बुक के अध्याय 16 में इस निर्देशिका की भूमिका और सामग्री की सूची का अधिक विस्तृत वर्णन है।

एक अन्य उदाहरण सोलर है । इसके साथ 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 के रूप में। उदाहरण के लिए, आपको Solr काम करने के लिए डेटा आयात अनुरोध हैंडलर की आवश्यकता नहीं है, लेकिन यदि आप डेटाबेस या XML से डेटा आयात करना चाहते हैं, तो इसे contribफ़ोल्डर में रखना अच्छा है । मैप-कम के लिए भी, आपको इसकी आवश्यकता नहीं हो सकती है, लेकिन ऐसे मामले हैं जहां आप करते हैं।

क्या वे प्लगइन्स या ऐड-ऑन हैं? मैं इस शब्द का उपयोग नहीं करूंगा। प्लगइन्स और ऐड-ऑन का मुख्य एप्लिकेशन के साथ एक विशिष्ट एकीकरण है। उदाहरण के लिए, एक प्लगइन स्टैंडअलोन को चलाने के लिए अपेक्षित नहीं है, लेकिन मुख्य एप्लिकेशन के भीतर होस्ट किया गया है। दूसरी ओर, contribऐसे उपकरण शामिल हैं जो संभवतः स्टैंडअलोन चला सकते हैं।


2
वास्तव में, मैं वास्तव में सोच रहा था कि एक "कंट्रीब" क्या है। सोलर के पास तो, ग्रंट भी है। क्या यह प्लगइन / ऐड-ऑन / के लिए सिर्फ एक और शब्द है?
मार्टिन

@ user3265472: मैंने सोलर को शामिल करने के लिए अपना जवाब संपादित किया। जैसा कि ग्रंट के लिए है, क्या आप इस बारे में बात कर रहे हैं ? मुझे नहीं लगता कि कोई कंट्रीब्यूट डायरेक्टरी है।
Arseni Mourzenko

हाँ, यह एक है, माफ करना, मैं प्रश्न से फ़ोल्डर चूक गया। मैं खुद को "कंटिब" शब्द समझने के लिए बाध्य था। ग्रंट के पास विभिन्न प्लगइन / लाइब्रेरीज़ (?) हैं जिनका नाम इस तरह रखा गया है (ग्रंट-कॉर्बिन-क्रुसीलाइज़, ग्रंट-कॉनरीब-जिश्ट, आदि)। आपका दिया गया वर्णन मुझे एक बेहतर विचार देता है, धन्यवाद।
मार्टिन

2
डेबियन के कुछ पैकेज 'कॉन्ट्रिब' नामक पैकेजों के एक वर्ग में आते हैं। यह डेबियन नीति नियमावली के बारे में कहना है "अन्य संग्रह क्षेत्रों (संकुल, गैर-मुक्त) में संकुल को डेबियन वितरण का हिस्सा नहीं माना जाता है, हालांकि हम उनके उपयोग का समर्थन करते हैं और उनके लिए बुनियादी ढांचा प्रदान करते हैं (जैसे कि हमारी बग-ट्रैकिंग प्रणाली और मेलिंग सूची)। "
केविन व्हीलर

3
बहुत सारे ओ.एस.एस. प्रोजेक्ट मैंने बहुत सालों Contribसे देखे हैं जिनमें एक फोल्डर कहा जाता है (अभी अभी अक्का.नेट में एक और एक बार देखना)! - मुझे नहीं पता कि उनके नाम का एक फ़ोल्डर क्यों है, या इस नामकरण सम्मेलन के लिए सम्मेलन क्या है। - अब तक जिन चीजों का उल्लेख किया गया है उनमें से कोई भी उन सभी तरीकों के अनुकूल नहीं है जो मैंने "कंट्रीब" का इस्तेमाल किया है। - ऐसा लगता है कि हर परियोजना में पूरी तरह से अलग सामान है (अक्का.नेट को उनके कोडबेस का एक अच्छा चौथाई हिस्सा लगता है: अक्का। क्लस्टरिंग, लॉगिंग, डीआई, पर्सिस्टेंस, टेस्टकिट्स, आदि ...)।
BrainSlugs83

6

यह उन पुस्तकालयों या घटकों के लिए है जो परियोजना के लिए ute का विरोध करते हैं, लेकिन वे स्वामित्व में नहीं हैं या परियोजना का हिस्सा नहीं हैं। मैंने हमेशा किसी भी तृतीय-पक्ष लाइब्रेरी का उपयोग करने के लिए इसे एक सामान्य या साझा स्थान के रूप में उपयोग किया है।

उदाहरण के लिए, आपके पास हो सकता है:

  • / योगदान / log4net-xxx
  • /Contrib/SSH.NET-xxx
  • / BackendService
  • / DesktopUI
  • / GenUtils
  • / SMCore
  • / WebUI

फिर उन्हें रिश्तेदार पथों का उपयोग करते हुए प्रत्येक परियोजना घटकों में संदर्भ दें, ताकि इसे बनाने से पहले किसी भी प्रकार का सेटअप या कॉन्फ़िगरेशन आवश्यक न हो। यह रेपो से बाहर सीधे निर्माण करेगा चाहे वह स्थानीय स्तर पर चेक किया गया हो।


मैं इस दृश्य को साझा नहीं करता हूं। आप जो वर्णन करते हैं, उसके लिए मैं नामों का उपयोग करूंगा vendorया thirdparty
मोइ

2

Git खुले स्रोत सॉफ़्टवेयर का एक शानदार उदाहरण है जो इस सम्मेलन का उपयोग करता है:

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

यहाँ उस README.md फ़ाइल का एक प्रासंगिक अंश दिया गया है:

योगदान किया गया सॉफ्टवेयर

हालांकि ये टुकड़े आधिकारिक गिट स्रोत के पेड़ के हिस्से के रूप में उपलब्ध हैं, लेकिन वे कुछ अलग स्थिति में हैं। इरादा यह है कि यहां दिलचस्प उपकरणों को रखने के लिए, यहां तक ​​कि प्रयोगात्मक लोगों के लिए, उपयोगकर्ताओं को उनके लिए एक आसान पहुंच प्रदान करने के लिए, और उपकरणों को व्यापक प्रदर्शन देने के लिए, ताकि उन्हें तेजी से सुधारा जा सके।

मैं खुद को इतना छूने की उम्मीद नहीं कर रहा हूं। जहां तक ​​मेरे दिन-प्रतिदिन के संचालन का सवाल है, ये उपनिर्देशिकाएं उनके संबंधित प्राथमिक लेखकों के स्वामित्व में हैं। मैं मदद करने के लिए तैयार हूँ अगर इन घटकों और contrib / subtree "मालिकों" के उपयोगकर्ताओं को हल करने के लिए तकनीकी / डिज़ाइन मुद्दे हैं, लेकिन चीजों को ठीक करने और / या बढ़ाने की पहल सबट्री मालिकों के पक्ष में होनी चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.