TensorFlow कोड में योगदान करें

चाहे आप एक हानि फ़ंक्शन जोड़ रहे हों, परीक्षण कवरेज में सुधार कर रहे हों, या एक बड़े डिज़ाइन परिवर्तन के लिए RFC लिख रहे हों, योगदानकर्ता मार्गदर्शिका का यह भाग आपको आरंभ करने में मदद करेगा। TensorFlow को बेहतर बनाने में काम और रुचि के लिए धन्यवाद।

आरंभ करने से पहले

इससे पहले कि आप किसी TensorFlow प्रोजेक्ट में स्रोत कोड का योगदान करें, कृपया प्रोजेक्ट के GitHub रेपो में CONTRIBUTING.md फ़ाइल की समीक्षा करें। उदाहरण के लिए, कोर TensorFlow रेपो में CONTRIBUTING.md फ़ाइल देखें। सभी कोड योगदानकर्ताओं को एक योगदानकर्ता लाइसेंस अनुबंध (CLA) पर हस्ताक्षर करना आवश्यक है।

डुप्लिकेट कार्य से बचने के लिए, कृपया वर्तमान या प्रस्तावित RFC की समीक्षा करें और गैर-तुच्छ सुविधा पर काम शुरू करने से पहले TensorFlow फ़ोरम ( Developers@tensorflow.org ) पर डेवलपर्स से संपर्क करें। नई कार्यक्षमता जोड़ने का निर्णय लेते समय हम कुछ चुनिंदा होते हैं, और परियोजना में योगदान करने और मदद करने का सबसे अच्छा तरीका ज्ञात मुद्दों पर काम करना है।

नए योगदानकर्ताओं के लिए मुद्दे

TensorFlow कोड आधार में पहला योगदान खोजते समय नए योगदानकर्ताओं को निम्नलिखित टैग की तलाश करनी चाहिए। हम दृढ़ता से अनुशंसा करते हैं कि नए योगदानकर्ता पहले "अच्छे पहले अंक" और "योगदानों का स्वागत" परियोजनाओं से निपटें; यह योगदानकर्ता को योगदान वर्कफ़्लो से परिचित होने में मदद करता है, और मुख्य देवों को योगदानकर्ता से परिचित होने में मदद करता है।

यदि आप बड़े पैमाने की समस्या या किसी नई सुविधा से निपटने में मदद करने के लिए एक टीम की भर्ती करने में रुचि रखते हैं, तो कृपया डेवलपर्स@ समूह को ईमेल करें और आरएफसी की हमारी वर्तमान सूची की समीक्षा करें।

को़ड समीक्षा

नई सुविधाएँ, बग फिक्स, और कोड आधार में कोई अन्य परिवर्तन कोड समीक्षा के अधीन हैं।

पुनरीक्षण कोड ने परियोजना में योगदान दिया क्योंकि पुल अनुरोध TensorFlow विकास का एक महत्वपूर्ण घटक है। हम किसी को भी अन्य डेवलपर्स द्वारा सबमिट किए गए कोड की समीक्षा शुरू करने के लिए प्रोत्साहित करते हैं, खासकर यदि सुविधा ऐसी चीज है जिसका आप उपयोग कर सकते हैं।

कोड समीक्षा प्रक्रिया के दौरान ध्यान रखने योग्य कुछ प्रश्न यहां दिए गए हैं:

  • क्या हम इसे TensorFlow में चाहते हैं? क्या इसका इस्तेमाल होने की संभावना है? क्या आप, एक TensorFlow उपयोगकर्ता के रूप में, परिवर्तन पसंद करते हैं और इसका उपयोग करने का इरादा रखते हैं? क्या यह TensorFlow के दायरे में बदलाव है? क्या किसी नई सुविधा को बनाए रखने की लागत इसके लाभों के लायक होगी?
  • क्या कोड TensorFlow API के अनुरूप है? क्या सार्वजनिक कार्य, कक्षाएं और पैरामीटर अच्छी तरह से नामित और सहज रूप से डिज़ाइन किए गए हैं?
  • क्या इसमें दस्तावेज़ीकरण शामिल है? क्या सभी सार्वजनिक कार्य, वर्ग, पैरामीटर, रिटर्न प्रकार और संग्रहीत विशेषताएँ TensorFlow सम्मेलनों के अनुसार नामित हैं और स्पष्ट रूप से प्रलेखित हैं? क्या नई कार्यक्षमता TensorFlow के दस्तावेज़ीकरण में वर्णित है और जब भी संभव हो उदाहरणों के साथ सचित्र है? क्या दस्तावेज़ीकरण ठीक से प्रस्तुत करता है?

  • क्या कोड मानव-पठनीय है? क्या यह अतिरेक पर कम है? क्या स्पष्टता या स्थिरता के लिए परिवर्तनीय नामों में सुधार किया जाना चाहिए? क्या टिप्पणियाँ जोड़ी जानी चाहिए? क्या किसी टिप्पणी को अनुपयोगी या बाहरी के रूप में हटा दिया जाना चाहिए?

  • क्या कोड कुशल है? क्या इसे अधिक कुशलता से चलाने के लिए आसानी से फिर से लिखा जा सकता है?

  • क्या कोड पीछे की ओर TensorFlow के पिछले संस्करणों के साथ संगत है?

  • क्या नया कोड अन्य पुस्तकालयों पर नई निर्भरता जोड़ देगा?

परीक्षण कवरेज का परीक्षण और सुधार करें

उच्च-गुणवत्ता वाली इकाई परीक्षण TensorFlow विकास प्रक्रिया का एक आधारशिला है। इस उद्देश्य के लिए, हम डॉकर छवियों का उपयोग करते हैं। परीक्षण कार्यों को उचित रूप से नामित किया गया है, और एल्गोरिदम की वैधता के साथ-साथ कोड के विभिन्न विकल्पों की जांच के लिए जिम्मेदार हैं।

सभी नई सुविधाओं और बग फिक्स में पर्याप्त परीक्षण कवरेज शामिल होना चाहिए । हम नए परीक्षण मामलों के योगदान या मौजूदा परीक्षणों में सुधार का भी स्वागत करते हैं। यदि आप पाते हैं कि हमारे मौजूदा परीक्षण पूर्ण नहीं हैं - भले ही वह वर्तमान में बग का कारण नहीं बन रहा हो - कृपया एक समस्या दर्ज करें और, यदि संभव हो तो, एक पुल अनुरोध दर्ज करें।

प्रत्येक TensorFlow प्रोजेक्ट में परीक्षण प्रक्रियाओं के विशिष्ट विवरण के लिए, GitHub पर प्रोजेक्ट रेपो में README.md और CONTRIBUTING.md फ़ाइलें देखें।

पर्याप्त परीक्षण में विशेष चिंताएँ:

  • क्या हर सार्वजनिक समारोह और कक्षा का परीक्षण किया जाता है?
  • क्या मापदंडों के उचित सेट , उनके मूल्यों, मूल्य प्रकारों और संयोजनों का परीक्षण किया जाता है?
  • क्या परीक्षण पुष्टि करते हैं कि कोड सही है , और यह वही कर रहा है जो दस्तावेज़ कहता है कि कोड करने का इरादा है?
  • यदि परिवर्तन एक बग फिक्स है, तो क्या एक गैर-प्रतिगमन परीक्षण शामिल है?
  • क्या परीक्षण निरंतर एकीकरण निर्माण पास करते हैं ?
  • क्या परीक्षण कोड की हर पंक्ति को कवर करते हैं? यदि नहीं, तो क्या अपवाद उचित और स्पष्ट हैं?

यदि आपको कोई समस्या मिलती है, तो कृपया योगदानकर्ता को उन समस्याओं को समझने और उनका समाधान करने में मदद करने पर विचार करें।

त्रुटि संदेशों या लॉग में सुधार करें

हम उन योगदानों का स्वागत करते हैं जो त्रुटि संदेशों और लॉगिंग में सुधार करते हैं।

योगदान कार्यप्रवाह

कोड योगदान—बग समाधान, नया विकास, परीक्षण सुधार—सभी एक GitHub-केंद्रित कार्यप्रवाह का अनुसरण करते हैं। TensorFlow विकास में भाग लेने के लिए, एक GitHub खाता सेट करें। फिर:

  1. उस रेपो को फोर्क करें जिस पर आप काम करने की योजना बना रहे हैं। प्रोजेक्ट रेपो पेज पर जाएं और फोर्क बटन का उपयोग करें। यह आपके उपयोगकर्ता नाम के तहत रेपो की एक प्रति बनाएगा। (रिपॉजिटरी को फोर्क करने के तरीके के बारे में अधिक जानकारी के लिए यह मार्गदर्शिका देखें।)

  2. रेपो को अपने स्थानीय सिस्टम में क्लोन करें।

    $ git clone git@github.com:your-user-name/project-name.git

  3. अपना काम रखने के लिए एक नई शाखा बनाएँ।

    $ git checkout -b new-branch-name

  4. अपने नए कोड पर काम करें। परीक्षण लिखें और चलाएं।

  5. अपने परिवर्तन प्रतिबद्ध करें।

    $ git add -A

    $ git commit -m "commit message here"

  6. अपने परिवर्तनों को अपने GitHub रेपो में पुश करें।

    $ git push origin branch-name

  7. एक पुल अनुरोध (पीआर) खोलें। GitHub पर मूल प्रोजेक्ट रेपो पर जाएं। आपकी हाल ही में पुश की गई शाखा के बारे में एक संदेश होगा, जिसमें पूछा जाएगा कि क्या आप पुल अनुरोध खोलना चाहते हैं। संकेतों का पालन करें, सभी रिपॉजिटरी में तुलना करें और पीआर जमा करें। यह कमिटर्स को एक ईमेल भेजेगा। अधिक दृश्यता के लिए आप मेलिंग सूची में एक ईमेल भेजने पर विचार कर सकते हैं। (अधिक विवरण के लिए, पीआर पर गिटहब गाइड देखें।

  8. अनुरक्षक और अन्य योगदानकर्ता आपके पीआर की समीक्षा करेंगे। कृपया बातचीत में भाग लें, और कोई भी अनुरोधित परिवर्तन करने का प्रयास करें। एक बार पीआर को मंजूरी मिलने के बाद, कोड को मर्ज कर दिया जाएगा।

अपने अगले योगदान पर काम करने से पहले , सुनिश्चित करें कि आपका स्थानीय भंडार अद्यतित है।

  1. अपस्ट्रीम रिमोट सेट करें। (आपको इसे प्रति प्रोजेक्ट केवल एक बार करना है, हर बार नहीं।)

    $ git remote add upstream git@github.com:tensorflow/project-repo-name

  2. स्थानीय मास्टर शाखा में स्विच करें।

    $ git checkout master

  3. अपस्ट्रीम से परिवर्तनों को नीचे खींचें।

    $ git pull upstream master

  4. अपने GitHub खाते में परिवर्तन पुश करें। (वैकल्पिक, लेकिन एक अच्छा अभ्यास।)

    $ git push origin master

  5. अगर आप कोई नया काम शुरू कर रहे हैं तो नई ब्रांच बनाएं।

    $ git checkout -b branch-name

अतिरिक्त git और गिटहब संसाधन:

योगदानकर्ता चेकलिस्ट