RSVP for your your local TensorFlow Everywhere event today!
ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

المساهمة في كود TensorFlow

سواء كنت تضيف وظيفة خسارة ، أو تحسن تغطية الاختبار ، أو تكتب RFC لتغيير كبير في التصميم ، فإن هذا الجزء من دليل المساهم سيساعدك على البدء. شكرًا لك على العمل والاهتمام بتحسين TensorFlow.

قبل أن تبدأ

قبل المساهمة بكود المصدر في مشروع TensorFlow ، يرجى مراجعة ملف CONTRIBUTING.md في مستودع GitHub الخاص بالمشروع. (على سبيل المثال ، راجع ملف CONTRIBUTING.md الخاص بـ TensorFlow repo .) يتعين على جميع المساهمين في التعليمات البرمجية توقيع اتفاقية ترخيص المساهم (CLA).

لتجنب تكرار العمل ، يرجى مراجعة طلبات التعليقات الحالية والاتصال بالمطورين على منتديات TensorFlow قبل البدء في العمل على ميزة غير تافهة. نحن انتقائيون إلى حد ما عندما نقرر إضافة وظائف جديدة ، وأفضل طريقة للمساهمة في المشروع ومساعدته هي العمل على المشكلات المعروفة.

قضايا للمساهمين الجدد

يجب على المساهمين الجدد البحث عن العلامات التالية عند البحث عن أول مساهمة في قاعدة رموز TensorFlow. نوصي بشدة بأن يعالج المساهمون الجدد مشاريع "القضية الأولى الجيدة" و "الترحيب بالمساهمات" أولاً ؛ هذا يساعد المساهم على التعرف على سير عمل المساهمة ، ولكي يتعرف المطورون الأساسيون على المساهم.

إذا كنت مهتمًا بتجنيد فريق للمساعدة في معالجة مشكلة واسعة النطاق أو ميزة جديدة ، فيرجى إرسال بريد إلكتروني إلى مجموعة developer @ ومراجعة قائمتنا الحالية لـ RFCs.

مراجعة التعليمات البرمجية

تخضع الميزات الجديدة وإصلاحات الأخطاء وأي تغييرات أخرى على قاعدة التعليمات البرمجية لمراجعة التعليمات البرمجية.

ساهمت مراجعة التعليمات البرمجية في المشروع حيث أن طلبات السحب عنصر حاسم في تطوير TensorFlow. نحن نشجع أي شخص على البدء في مراجعة الكود المقدم من مطورين آخرين ، خاصة إذا كانت الميزة من المحتمل أن تستخدمها.

فيما يلي بعض الأسئلة التي يجب وضعها في الاعتبار أثناء عملية مراجعة الكود:

  • هل نريد هذا في TensorFlow؟ هل من المحتمل أن تستخدم؟ هل أنت ، كمستخدم TensorFlow ، تحب التغيير وتنوي استخدامه؟ هل هذا التغيير في نطاق TensorFlow؟ هل تكلفة الحفاظ على ميزة جديدة تستحق فوائدها؟
  • هل الكود متوافق مع TensorFlow API؟ هل الوظائف والفئات والمعلمات العامة معروفة ومصممة بشكل حدسي؟
  • هل يشمل التوثيق؟ هل جميع الوظائف والفئات والمعلمات وأنواع الإرجاع والسمات المخزنة العامة مسماة وفقًا لاتفاقيات TensorFlow وموثقة بوضوح؟ هل الوظيفة الجديدة موصوفة في وثائق TensorFlow وموضحة بأمثلة ، كلما أمكن ذلك؟ هل الوثائق تقدم بشكل صحيح؟

  • هل الكود مقروء على الإنسان؟ هل هي منخفضة في التكرار؟ هل يجب تحسين أسماء المتغيرات من أجل الوضوح أو التناسق؟ هل يجب إضافة التعليقات؟ هل يجب إزالة أي تعليقات باعتبارها غير مفيدة أو غريبة؟

  • هل الكود فعال؟ هل يمكن إعادة كتابته بسهولة ليعمل بكفاءة أكبر؟

  • هل الكود متوافق مع الإصدارات السابقة من TensorFlow؟

  • هل سيضيف الكود الجديد تبعيات جديدة على مكتبات أخرى؟

اختبار وتحسين تغطية الاختبار

يعد اختبار الوحدة عالية الجودة حجر الزاوية في عملية تطوير TensorFlow. لهذا الغرض ، نستخدم صور Docker. تمت تسمية وظائف الاختبار بشكل مناسب ، وهي مسؤولة عن التحقق من صحة الخوارزميات بالإضافة إلى الخيارات المختلفة للرمز.

يجب أن تتضمن جميع الميزات الجديدة وإصلاحات الأخطاء تغطية اختبار كافية. نرحب أيضًا بمساهمات حالات الاختبار الجديدة أو التحسينات على الاختبارات الحالية. إذا اكتشفت أن اختباراتنا الحالية لم تكتمل - حتى لو لم يتسبب ذلك في حدوث خطأ حاليًا - فالرجاء إرسال مشكلة وطلب سحب ، إن أمكن.

للحصول على التفاصيل المحددة لإجراءات الاختبار في كل مشروع من مشروعات TensorFlow ، راجع ملفات README.md و CONTRIBUTING.md في README.md المشروع على GitHub.

من الاهتمامات الخاصة في الاختبار المناسب :

  • هل تم اختبار كل وظيفة وفئة عامة ؟
  • هل تم اختبار مجموعة معقولة من المعلمات وقيمها وأنواع القيم والمجموعات؟
  • هل تتحقق الاختبارات من صحة الشفرة ، وأنها تقوم بما تقول الوثائق إن القصد من الكود القيام به؟
  • إذا كان التغيير عبارة عن إصلاح للخلل ، فهل تم تضمين اختبار عدم الانحدار ؟
  • هل تجتاز الاختبارات بناء التكامل المستمر ؟
  • هل تغطي الاختبارات كل سطر من التعليمات البرمجية؟ إذا لم يكن كذلك ، فهل الاستثناءات معقولة وصريحة؟

إذا وجدت أي مشاكل ، فيرجى التفكير في مساعدة المساهم في فهم هذه المشكلات وحلها.

تحسين رسائل الخطأ أو السجلات

نرحب بالمساهمات التي تعمل على تحسين رسائل الخطأ والتسجيل.

سير عمل المساهمة

مساهمات التعليمات البرمجية - إصلاحات الأخطاء ، التطوير الجديد ، تحسين الاختبار - جميعها تتبع سير عمل يركز على GitHub. للمشاركة في تطوير TensorFlow ، قم بإعداد حساب GitHub. ثم:

  1. افرق الريبو الذي تخطط للعمل عليه. انتقل إلى صفحة مشروع إعادة الشراء واستخدم الزر Fork . سيؤدي هذا إلى إنشاء نسخة من الريبو ، تحت اسم المستخدم الخاص بك. (لمزيد من التفاصيل حول كيفية إنشاء مستودع ، راجع هذا الدليل .)

  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. افتح طلب سحب (PR). انتقل إلى ريبو المشروع الأصلي على جيثب. ستكون هناك رسالة حول فرعك الذي تم دفعه مؤخرًا ، يسألك عما إذا كنت ترغب في فتح طلب سحب. اتبع التعليمات ، قارن عبر المستودعات ، وأرسل PR. سيؤدي هذا إلى إرسال بريد إلكتروني إلى الملتزمين. قد ترغب في التفكير في إرسال بريد إلكتروني إلى القائمة البريدية لمزيد من الرؤية. (لمزيد من التفاصيل ، راجع دليل GitHub حول العلاقات العامة.

  8. سيقوم المشرفون على الصيانة والمساهمون الآخرون بمراجعة علاقاتك العامة . يرجى المشاركة في المحادثة ، ومحاولة إجراء أي تغييرات مطلوبة . بمجرد الموافقة على PR ، سيتم دمج الرمز.

قبل العمل على مساهمتك التالية ، تأكد من تحديث المستودع المحلي لديك.

  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 و GitHub الإضافية:

قائمة التحقق للمساهمين

  • اقرأ إرشادات المساهمة.
  • اقرأ مدونة قواعد السلوك.
  • تأكد من توقيعك على اتفاقية ترخيص المساهم (CLA).
  • تحقق مما إذا كانت تغييراتك متوافقة مع الإرشادات.
  • تحقق مما إذا كانت تغييراتك متوافقة مع نمط الترميز TensorFlow.
  • قم بتشغيل اختبارات الوحدة.