سواء كنت تضيف وظيفة خسارة ، أو تحسن تغطية الاختبار ، أو تكتب RFC لتغيير كبير في التصميم ، فإن هذا الجزء من دليل المساهم سيساعدك على البدء. شكرًا لك على العمل والاهتمام بتحسين TensorFlow.
قبل أن تبدأ
قبل أن تساهم بكود المصدر في مشروع TensorFlow ، يرجى مراجعة ملف CONTRIBUTING.md
في GitHub repo الخاص بالمشروع. على سبيل المثال ، راجع ملف CONTRIBUTING.md في مستودع TensorFlow الأساسي. يتعين على جميع المساهمين في التعليمات البرمجية التوقيع على اتفاقية ترخيص المساهم (CLA).
لتجنب تكرار العمل ، يرجى مراجعة طلبات التعليقات الحالية أو المقترحة والاتصال بالمطورين على منتديات TensorFlow ( developer@tensorflow.org ) قبل أن تبدأ العمل على ميزة غير تافهة. نحن انتقائيون إلى حد ما عندما نقرر إضافة وظائف جديدة ، وأفضل طريقة للمساهمة في المشروع ومساعدته هي العمل على المشكلات المعروفة.
قضايا للمساهمين الجدد
يجب على المساهمين الجدد البحث عن العلامات التالية عند البحث عن مساهمة أولى في قاعدة أكواد TensorFlow. نوصي بشدة أن يعالج المساهمون الجدد مشاريع "القضية الأولى الجيدة" و "الترحيب بالمساهمات" أولاً ؛ هذا يساعد المساهم على التعرف على سير عمل المساهمة ، ولكي يتعرف المطورون الأساسيون على المساهم.
إذا كنت مهتمًا بتجنيد فريق للمساعدة في معالجة مشكلة واسعة النطاق أو ميزة جديدة ، فيرجى إرسال بريد إلكتروني إلى مجموعة developer @ ومراجعة قائمتنا الحالية لـ RFCs.
مراجعة التعليمات البرمجية
تخضع الميزات الجديدة وإصلاحات الأخطاء وأي تغييرات أخرى على قاعدة التعليمات البرمجية لمراجعة التعليمات البرمجية.
ساهمت مراجعة التعليمات البرمجية في المشروع حيث أن طلبات السحب عنصر حاسم في تطوير TensorFlow. نحن نشجع أي شخص على البدء في مراجعة الكود المقدم من مطورين آخرين ، خاصة إذا كانت الميزة من المحتمل أن تستخدمها.
فيما يلي بعض الأسئلة التي يجب وضعها في الاعتبار أثناء عملية مراجعة الكود:
- هل نريد هذا في TensorFlow؟ هل من المحتمل أن تستخدم؟ هل أنت ، كمستخدم TensorFlow ، تحب التغيير وتنوي استخدامه؟ هل هذا التغيير في نطاق TensorFlow؟ هل تكلفة الحفاظ على ميزة جديدة تستحق فوائدها؟
- هل الكود متوافق مع TensorFlow API؟ هل الوظائف والفئات والمعلمات العامة معروفة ومصممة بشكل حدسي؟
هل يشمل التوثيق؟ هل جميع الوظائف والفئات والمعلمات وأنواع الإرجاع والسمات المخزنة العامة مسماة وفقًا لاتفاقيات TensorFlow وموثقة بوضوح؟ هل الوظيفة الجديدة موصوفة في وثائق TensorFlow وموضحة بأمثلة ، كلما أمكن ذلك؟ هل الوثائق تقدم بشكل صحيح؟
هل الكود مقروء من قبل الإنسان؟ هل هي منخفضة في التكرار؟ هل ينبغي تحسين أسماء المتغيرات من أجل الوضوح أو التناسق؟ هل يجب إضافة التعليقات؟ هل ينبغي إزالة أي تعليقات باعتبارها غير مفيدة أو غريبة؟
هل الكود فعال؟ هل يمكن إعادة كتابته بسهولة ليعمل بكفاءة أكبر؟
هل الكود متوافق مع الإصدارات السابقة من TensorFlow؟
هل سيضيف الكود الجديد تبعيات جديدة على مكتبات أخرى؟
اختبار وتحسين تغطية الاختبار
يعد اختبار الوحدة عالية الجودة حجر الزاوية في عملية تطوير TensorFlow. لهذا الغرض ، نستخدم صور Docker. تمت تسمية وظائف الاختبار بشكل مناسب ، وهي مسؤولة عن التحقق من صحة الخوارزميات بالإضافة إلى الخيارات المختلفة للرمز.
يجب أن تتضمن جميع الميزات الجديدة وإصلاحات الأخطاء تغطية اختبار كافية. نرحب أيضًا بمساهمات حالات الاختبار الجديدة أو التحسينات على الاختبارات الحالية. إذا اكتشفت أن اختباراتنا الحالية لم تكتمل - حتى لو لم يتسبب ذلك في حدوث خطأ حاليًا - فالرجاء إرسال مشكلة وطلب سحب ، إن أمكن.
للحصول على تفاصيل محددة عن إجراءات الاختبار في كل مشروع من مشروعات TensorFlow ، راجع ملفات README.md
و CONTRIBUTING.md
في مستودع المشروع على GitHub.
من الاهتمامات الخاصة في الاختبار المناسب :
- هل تم اختبار كل وظيفة وفئة عامة ؟
- هل تم اختبار مجموعة معقولة من المعلمات وقيمها وأنواع القيم والمجموعات؟
- هل تتحقق الاختبارات من صحة الشفرة ، وأنها تقوم بما تقول الوثائق إن القصد من الكود القيام به؟
- إذا كان التغيير عبارة عن إصلاح للخلل ، فهل يتم تضمين اختبار عدم الانحدار ؟
- هل تجتاز الاختبارات بناء التكامل المستمر ؟
- هل تغطي الاختبارات كل سطر من التعليمات البرمجية؟ إذا لم يكن كذلك ، فهل الاستثناءات معقولة وصريحة؟
إذا وجدت أي مشاكل ، فيرجى التفكير في مساعدة المساهم في فهم هذه المشكلات وحلها.
تحسين رسائل الخطأ أو السجلات
نرحب بالمساهمات التي تعمل على تحسين رسائل الخطأ والتسجيل.
سير عمل المساهمة
مساهمات التعليمات البرمجية - إصلاحات الأخطاء ، التطوير الجديد ، تحسين الاختبار - جميعها تتبع سير عمل يركز على GitHub. للمشاركة في تطوير TensorFlow ، قم بإعداد حساب GitHub. ثم:
افرق الريبو الذي تخطط للعمل عليه. انتقل إلى صفحة مشروع إعادة الشراء واستخدم الزر Fork . سيؤدي هذا إلى إنشاء نسخة من الريبو ، تحت اسم المستخدم الخاص بك. (لمزيد من التفاصيل حول كيفية إنشاء مستودع ، راجع هذا الدليل .)
استنساخ الريبو إلى نظامك المحلي.
$ 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). انتقل إلى الريبو الأصلي للمشروع على جيثب. ستكون هناك رسالة حول فرعك الذي تم دفعه مؤخرًا ، يسألك عما إذا كنت ترغب في فتح طلب سحب. اتبع التعليمات ، قارن عبر المستودعات ، وأرسل 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
و GitHub الإضافية:
قائمة التحقق للمساهمين
- اقرأ إرشادات المساهمة .
- اقرأ مدونة قواعد السلوك .
- تأكد من توقيعك على اتفاقية ترخيص المساهم (CLA) .
- تحقق مما إذا كانت تغييراتك متوافقة مع الإرشادات .
- تحقق مما إذا كانت تغييراتك متوافقة مع نمط الترميز TensorFlow .
- قم بإجراء اختبارات الوحدة .