चाहे आप लॉस फंक्शन जोड़ रहे हों, टेस्ट कवरेज में सुधार कर रहे हों, या किसी बड़े डिज़ाइन परिवर्तन के लिए RFC लिख रहे हों, योगदानकर्ता गाइड का यह भाग आपको शुरुआत करने में मदद करेगा। TensorFlow को बेहतर बनाने में आपके योगदान और रुचि के लिए धन्यवाद।
शुरू करने से पहले
TensorFlow प्रोजेक्ट में सोर्स कोड योगदान करने से पहले, कृपया प्रोजेक्ट के GitHub रिपॉजिटरी में CONTRIBUTING.md फ़ाइल की समीक्षा करें। उदाहरण के लिए, कोर TensorFlow रिपॉजिटरी में CONTRIBUTING.md फ़ाइल देखें। सभी कोड योगदानकर्ताओं को योगदानकर्ता लाइसेंस समझौता (CLA) पर हस्ताक्षर करना अनिवार्य है।
काम को दोहराने से बचने के लिए, कृपया वर्तमान या प्रस्तावित RFCs की समीक्षा करें और किसी जटिल फ़ीचर पर काम शुरू करने से पहले TensorFlow फ़ोरम ( developers@tensorflow.org ) पर डेवलपर्स से संपर्क करें। नई कार्यक्षमता जोड़ने का निर्णय लेते समय हम कुछ हद तक चयनात्मक होते हैं, और परियोजना में योगदान देने और मदद करने का सबसे अच्छा तरीका ज्ञात समस्याओं पर काम करना है।
नए योगदानकर्ताओं के लिए मुद्दे
TensorFlow कोड बेस में अपना पहला योगदान देने के लिए नए योगदानकर्ताओं को निम्नलिखित टैग्स का ध्यान रखना चाहिए। हम दृढ़ता से सलाह देते हैं कि नए योगदानकर्ता सबसे पहले "अच्छा पहला मुद्दा" और "योगदान का स्वागत है" वाली परियोजनाओं पर काम करें; इससे योगदानकर्ता को योगदान प्रक्रिया से परिचित होने में मदद मिलती है, और कोर डेवलपर्स भी योगदानकर्ता से परिचित हो जाते हैं।
यदि आप किसी बड़े पैमाने की समस्या या नई सुविधा से निपटने में मदद करने के लिए एक टीम की भर्ती करने में रुचि रखते हैं, तो कृपया developers@ समूह को ईमेल करें और RFC की हमारी वर्तमान सूची की समीक्षा करें।
कोड समीक्षा
नए फीचर्स, बग फिक्स और कोड बेस में किए गए किसी भी अन्य बदलाव की कोड समीक्षा की जाएगी।
पुल रिक्वेस्ट के माध्यम से प्रोजेक्ट में योगदान किए गए कोड की समीक्षा करना टेन्सरफ्लो डेवलपमेंट का एक महत्वपूर्ण हिस्सा है। हम सभी को अन्य डेवलपर्स द्वारा सबमिट किए गए कोड की समीक्षा शुरू करने के लिए प्रोत्साहित करते हैं, खासकर यदि वह फीचर ऐसा हो जिसका उपयोग आप करने की संभावना रखते हों।
कोड समीक्षा प्रक्रिया के दौरान ध्यान में रखने योग्य कुछ प्रश्न इस प्रकार हैं:
- क्या हम इसे TensorFlow में चाहते हैं? क्या इसका उपयोग होने की संभावना है? क्या आप, एक TensorFlow उपयोगकर्ता के रूप में, इस बदलाव को पसंद करते हैं और इसका उपयोग करने का इरादा रखते हैं? क्या यह बदलाव TensorFlow के दायरे में आता है? क्या एक नई सुविधा को बनाए रखने की लागत इसके लाभों के लायक होगी?
- क्या कोड TensorFlow API के अनुरूप है? क्या सार्वजनिक फ़ंक्शन, क्लास और पैरामीटर सही ढंग से नामित और सहज रूप से डिज़ाइन किए गए हैं?
क्या इसमें दस्तावेज़ीकरण शामिल है? क्या सभी सार्वजनिक फ़ंक्शन, क्लास, पैरामीटर, रिटर्न टाइप और स्टोर्ड एट्रिब्यूट का नाम TensorFlow के नियमों के अनुसार रखा गया है और उनका दस्तावेज़ीकरण स्पष्ट रूप से किया गया है? क्या TensorFlow के दस्तावेज़ीकरण में नई कार्यक्षमता का वर्णन किया गया है और जहाँ तक संभव हो, उदाहरणों के साथ समझाया गया है? क्या दस्तावेज़ीकरण सही ढंग से प्रदर्शित होता है?
क्या कोड को आसानी से पढ़ा जा सकता है? क्या इसमें अनावश्यक दोहराव कम है? क्या स्पष्टता या एकरूपता के लिए चर नामों में सुधार किया जाना चाहिए? क्या टिप्पणियाँ जोड़ी जानी चाहिए? क्या अनुपयोगी या अनावश्यक होने के कारण किसी टिप्पणी को हटा देना चाहिए?
क्या यह कोड कुशल है? क्या इसे अधिक कुशलता से चलाने के लिए आसानी से पुनः लिखा जा सकता है?
क्या यह कोड TensorFlow के पिछले संस्करणों के साथ संगत है ?
क्या नया कोड अन्य लाइब्रेरी पर नई निर्भरताएँ जोड़ेगा?
परीक्षण कवरेज का परीक्षण करें और उसमें सुधार करें
उच्च गुणवत्ता वाली यूनिट टेस्टिंग, टेन्सरफ्लो विकास प्रक्रिया का एक अभिन्न अंग है। इसके लिए हम डॉकर इमेज का उपयोग करते हैं। टेस्ट फंक्शनों को उचित नाम दिए गए हैं और ये एल्गोरिदम की वैधता के साथ-साथ कोड के विभिन्न विकल्पों की जांच करने के लिए जिम्मेदार हैं।
सभी नए फ़ीचर और बग फिक्स में पर्याप्त टेस्ट कवरेज होना अनिवार्य है । हम नए टेस्ट केस या मौजूदा टेस्ट में सुधार के लिए भी योगदान का स्वागत करते हैं। यदि आपको पता चलता है कि हमारे मौजूदा टेस्ट अपूर्ण हैं - भले ही वर्तमान में इससे कोई बग उत्पन्न न हो रहा हो - तो कृपया एक इश्यू दर्ज करें और यदि संभव हो तो पुल रिक्वेस्ट भी भेजें।
प्रत्येक TensorFlow प्रोजेक्ट में परीक्षण प्रक्रियाओं के विशिष्ट विवरण के लिए, GitHub पर प्रोजेक्ट रेपो में README.md और CONTRIBUTING.md फ़ाइलें देखें।
पर्याप्त परीक्षण में विशेष चिंता के विषय:
- क्या प्रत्येक सार्वजनिक फ़ंक्शन और क्लास का परीक्षण किया जाता है?
- क्या मापदंडों, उनके मूल्यों, मानों के प्रकार और संयोजनों के एक उचित समूह का परीक्षण किया गया है?
- क्या परीक्षण इस बात की पुष्टि करते हैं कि कोड सही है , और यह वही कर रहा है जो दस्तावेज़ में कोड के अपेक्षित कार्य के बारे में बताया गया है?
- यदि परिवर्तन किसी बग को ठीक करने से संबंधित है, तो क्या इसमें नॉन-रिग्रेशन टेस्ट शामिल है?
- क्या परीक्षण निरंतर एकीकरण बिल्ड में सफल होते हैं ?
- क्या परीक्षण कोड की प्रत्येक पंक्ति को कवर करते हैं? यदि नहीं, तो क्या अपवाद उचित और स्पष्ट हैं?
यदि आपको कोई समस्या मिलती है, तो कृपया योगदानकर्ता को उन समस्याओं को समझने और उनका समाधान करने में मदद करने पर विचार करें।
त्रुटि संदेशों या लॉग में सुधार करें
हम त्रुटि संदेशों और लॉगिंग को बेहतर बनाने वाले योगदानों का स्वागत करते हैं।
योगदान कार्यप्रवाह
कोड में योगदान—बग फिक्स, नया विकास, परीक्षण में सुधार—सभी GitHub-केंद्रित कार्यप्रवाह का पालन करते हैं। TensorFlow विकास में भाग लेने के लिए, एक GitHub खाता बनाएं। फिर:
जिस रिपॉजिटरी पर आप काम करना चाहते हैं, उसे फोर्क करें। प्रोजेक्ट रिपॉजिटरी पेज पर जाएं और फोर्क बटन का उपयोग करें। इससे आपके यूजरनेम के तहत रिपॉजिटरी की एक कॉपी बन जाएगी। (रिपॉजिटरी को फोर्क करने के बारे में अधिक जानकारी के लिए यह गाइड देखें।)
रिपॉजिटरी को अपने लोकल सिस्टम पर क्लोन करें।
$ git clone git@github.com:your-user-name/project-name.gitअपने काम को रखने के लिए एक नई शाखा बनाएं।
$ git checkout -b new-branch-nameअपने नए कोड पर काम करें। टेस्ट लिखें और उन्हें चलाएं।
अपने बदलावों को सेव करें।
$ git add -A$ git commit -m "commit message here"अपने बदलावों को अपने GitHub रिपॉजिटरी में पुश करें।
$ git push origin branch-nameएक पुल रिक्वेस्ट (PR) खोलें। GitHub पर मूल प्रोजेक्ट रिपॉजिटरी पर जाएं। आपको अपनी हाल ही में पुश की गई ब्रांच के बारे में एक संदेश दिखाई देगा, जिसमें पूछा जाएगा कि क्या आप एक पुल रिक्वेस्ट खोलना चाहते हैं। निर्देशों का पालन करें, विभिन्न रिपॉजिटरी में तुलना करें और PR सबमिट करें। इससे कमिट करने वालों को एक ईमेल भेजा जाएगा। अधिक जानकारी के लिए आप मेलिंग लिस्ट पर भी ईमेल भेज सकते हैं। (अधिक जानकारी के लिए, GitHub की PR गाइड देखें।)
मेंटेनर्स और अन्य योगदानकर्ता आपके पीआर की समीक्षा करेंगे। कृपया चर्चा में भाग लें और अनुरोधित बदलाव करने का प्रयास करें। पीआर स्वीकृत होने के बाद, कोड मर्ज कर दिया जाएगा।
अपना अगला योगदान लिखने से पहले , सुनिश्चित करें कि आपकी स्थानीय रिपॉजिटरी अद्यतन है।
अपस्ट्रीम रिमोट सेट करें। (आपको यह काम प्रति प्रोजेक्ट केवल एक बार करना होगा, हर बार नहीं।)
$ git remote add upstream git@github.com:tensorflow/project-repo-nameस्थानीय मास्टर शाखा पर स्विच करें।
$ git checkout masterअपस्ट्रीम से बदलावों को डाउनलोड करें।
$ git pull upstream masterअपने GitHub खाते पर बदलावों को पुश करें। (वैकल्पिक, लेकिन एक अच्छी प्रक्रिया।)
$ git push origin masterयदि आप कोई नया काम शुरू कर रहे हैं तो एक नई शाखा बनाएं।
$ git checkout -b branch-name
अतिरिक्त git और गिटहब संसाधन:
योगदानकर्ता चेकलिस्ट
- योगदान संबंधी दिशानिर्देश पढ़ें।
- आचार संहिता पढ़ें।
- सुनिश्चित करें कि आपने योगदानकर्ता लाइसेंस समझौता (सीएलए) पर हस्ताक्षर कर दिए हैं।
- जांच लें कि आपके परिवर्तन दिशा-निर्देशों के अनुरूप हैं या नहीं।
- जांच लें कि आपके परिवर्तन TensorFlow कोडिंग शैली के अनुरूप हैं या नहीं।
- यूनिट टेस्ट चलाएँ ।