Google is committed to advancing racial equity for Black communities. See how.

به کد TensorFlow کمک کنید

این که آیا شما یک تابع از دست دادن ، بهبود پوشش آزمایش یا نوشتن RFC برای تغییر عمده طراحی ، اضافه می کنید ، این بخش از راهنمای مشارکت کننده به شما کمک می کند تا شروع کنید. با تشکر از شما برای کار و علاقه به بهبود TensorFlow.

قبل از شروع

قبل از مشارکت کد منبع در یک پروژه TensorFlow ، لطفاً پرونده CONTRIBUTING.md را در نسخه GitHub پروژه مرور کنید. (برای مثال ، به فایل CONTRIBUTING.md برای محتوای اصلی TensorFlow مراجعه کنید .) همه مشارکت کنندگان کد برای امضای توافق نامه مجوز مشارکت کننده (CLA) لازم هستند.

برای جلوگیری از تکرار کار ، لطفا RFC های فعلی یا پیشنهادی را مرور کرده و با توسعه دهندگان در انجمن های TensorFlow ( developers@tensorflow.org ) قبل از شروع کار روی یک ویژگی غیر پیش پا افتاده تماس بگیرید. ما در تصمیم گیری برای افزودن عملکرد جدید تا حدی انتخاب هستیم و بهترین راه برای کمک و کمک به پروژه کار در مورد موضوعات شناخته شده است.

مسائل مربوط به مشارکت کنندگان جدید

همکاران جدید هنگام جستجوی اولین سهم در پایگاه کد TensorFlow ، باید به دنبال برچسب های زیر باشند. ما اکیداً توصیه می کنیم که همکاران جدید ابتدا با طرح های "مسئله اول خوب" و "استقبال مشارکت ها" مقابله کنند. این به همیار کمک می کند تا با گردش کار مشارکت آشنا شود و شرکتهای اصلی با مشارکت کننده آشنا شوند.

اگر می خواهید برای حل یک مشکل در مقیاس بزرگ یا یک ویژگی جدید ، یک تیم را جذب کنید ، لطفاً به developers @ group ایمیل بزنید و لیست کنونی RFC های ما را مرور کنید.

بررسی کد

ویژگی های جدید ، رفع اشکال و هرگونه تغییر دیگر در کد کد ، قابل بررسی کد است.

بازبینی کد به پروژه کمک می کند زیرا درخواست pull یکی از ملفه های مهم توسعه TensorFlow است. ما هرکسی را تشویق می کنیم که شروع به مرور کد ارسال شده توسط سایر توسعه دهندگان کند ، خصوصاً اگر این ویژگی چیزی است که احتمالاً از آن استفاده می کنید.

در اینجا چند سوال وجود دارد که باید در مراحل بررسی کد به خاطر بسپارید:

  • آیا ما این را در TensorFlow می خواهیم؟ آیا احتمال استفاده از آن وجود دارد؟ آیا شما به عنوان یک کاربر TensorFlow این تغییر را دوست دارید و قصد استفاده از آن را دارید؟ آیا این تغییر در محدوده TensorFlow است؟ آیا هزینه نگهداری یک ویژگی جدید ارزش مزایای آن را خواهد داشت؟
  • آیا کد با TensorFlow API سازگار است؟ آیا توابع ، کلاسها و پارامترهای عمومی به خوبی نامگذاری شده اند و بصری بصری طراحی شده اند؟
  • آیا مستندات را در بر می گیرد؟ آیا کلیه توابع ، کلاسها ، پارامترها ، انواع بازگشت و ویژگیهای ذخیره شده عمومی مطابق قراردادهای TensorFlow نامگذاری شده و به طور واضح مستند شده اند؟ آیا عملکرد جدید در اسناد TensorFlow شرح داده شده و هر زمان ممکن با مثال هایی نشان داده شده است؟ آیا مستندات به درستی ارائه می شوند؟

  • آیا کد توسط انسان قابل خواندن است؟ آیا ازدیاد کار کم است؟ آیا نام های متغیر برای وضوح یا سازگاری بهتر می شوند؟ آیا باید نظرات اضافه شود؟ آیا باید هیچ نظری غیر مفید یا اضافی حذف شود؟

  • آیا کد کارآمد است؟ آیا می توان به راحتی بازنویسی کرد تا با کارآیی بیشتری اجرا شود؟

  • آیا این کد با نسخه های قبلی TensorFlow سازگار است ؟

  • آیا کد جدید وابستگی های جدیدی به سایر کتابخانه ها اضافه می کند؟

پوشش آزمایش را آزمایش و بهبود دهید

آزمایش واحد با کیفیت بالا گوشه ای از روند توسعه TensorFlow است. برای این منظور ، ما از تصاویر Docker استفاده می کنیم. توابع آزمون به درستی نامگذاری شده اند و وظیفه بررسی اعتبار الگوریتم ها و همچنین گزینه های مختلف کد را بر عهده دارند.

همه ویژگی های جدید و رفع اشکال باید شامل پوشش تست مناسب باشد. ما همچنین از مشارکت در موارد آزمون جدید یا بهبود آزمایشات موجود استقبال می کنیم. اگر متوجه شدید که آزمایش های موجود ما کامل نیستند - حتی اگر در حال حاضر مشکلی ایجاد نکنند - لطفاً یک مشکل و در صورت امکان درخواست جلب کنید.

برای جزئیات خاص روشهای آزمایش در هر پروژه README.md ، به README.md و CONTRIBUTING.md در نسخه README.md پروژه در GitHub مراجعه کنید.

نگرانی های خاص در آزمایش کافی :

  • آیا هر کارکرد و کلاس عمومی تست شده است؟
  • آیا مجموعه معقولی از پارامترها ، مقادیر ، انواع مقادیر و ترکیب آنها آزمایش شده است؟
  • آیا آزمایشات صحیح بودن کد را تأیید می کنند و آنچه را که در اسناد گفته می شود کد برای انجام آن انجام می دهد ، تأیید می کنند؟
  • اگر این تغییر رفع اشکال باشد ، آیا یک تست عدم رگرسیون نیز شامل می شود؟
  • آیا آزمون ها از ساختار ادغام مداوم عبور می کنند؟
  • آیا آزمایشات هر خط کد را پوشش می دهد؟ در غیر این صورت ، آیا استثناها منطقی و صریح هستند؟

اگر مشکلی پیدا کردید ، لطفاً به کمک کننده کمک کنید تا این مشکلات را بفهمد و آنها را حل کند.

پیام های خطا یا گزارش ها را بهبود ببخشید

ما از مشارکتهایی که پیامهای خطا و ورود به سیستم را بهبود می بخشد استقبال می کنیم.

گردش کار مشارکت

مشارکت در کد - رفع اشکال ، توسعه جدید ، بهبود آزمون - همه از یک روند کاری GitHub محور پیروی می کنند. برای شرکت در توسعه TensorFlow ، یک حساب GitHub راه اندازی کنید. سپس:

  1. ماشینی را که می خواهید روی آن کار کنید ، چنگال بزنید. به صفحه repo پروژه بروید و از دکمه Fork استفاده کنید. با این کار یک کپی از repo در زیر نام کاربری شما ایجاد می شود. (برای اطلاعات بیشتر در مورد چنگال سازی مخزن به این راهنما مراجعه کنید .)

  2. repo را به سیستم محلی خود شبیه سازی کنید.

    $ 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. تغییرات خود را به repo GitHub خود وارد کنید.

    $ git push origin branch-name

  7. درخواست Pull (PR) را باز کنید. به نسخه اصلی پروژه در GitHub بروید. در مورد شاخه اخیراً تحت فشار قرار گرفتن شما پیامی ارسال خواهد شد که از شما می پرسد آیا می خواهید یک درخواست کشیدن باز کنید. دستورالعمل ها را دنبال کنید ، در مخازن مقایسه کنید و روابط عمومی را ارسال کنید. با این کار ایمیل به متعهدین ارسال می شود. ممکن است بخواهید برای مشاهده بیشتر ایمیل به لیست نامه های پستی ارسال کنید. (برای جزئیات بیشتر ، به راهنمای 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 و GitHub:

چک لیست مشارکت کنندگان