TensorFlow কোডে অবদান রাখুন

আপনি যদি কোনও লস ফাংশন যোগ করেন, পরীক্ষার কভারেজ উন্নত করেন, অথবা কোনও বড় ডিজাইন পরিবর্তনের জন্য একটি RFC লিখুন, তাহলে অবদানকারী নির্দেশিকার এই অংশটি আপনাকে শুরু করতে সাহায্য করবে। TensorFlow উন্নত করার জন্য আপনার কাজ এবং আগ্রহের জন্য আপনাকে ধন্যবাদ।

শুরু করার আগে

TensorFlow প্রকল্পে সোর্স কোড অবদান রাখার আগে, অনুগ্রহ করে প্রকল্পের GitHub রেপোতে CONTRIBUTING.md ফাইলটি পর্যালোচনা করুন। উদাহরণস্বরূপ, মূল TensorFlow রেপোতে CONTRIBUTING.md ফাইলটি দেখুন। সমস্ত কোড অবদানকারীদের একটি অবদানকারী লাইসেন্স চুক্তি (CLA) স্বাক্ষর করতে হবে।

কাজের সদৃশতা এড়াতে, অনুগ্রহ করে বর্তমান বা প্রস্তাবিত RFC পর্যালোচনা করুন এবং তুচ্ছ নয় এমন বৈশিষ্ট্যে কাজ শুরু করার আগে TensorFlow ফোরামে ( developers@tensorflow.org ) ডেভেলপারদের সাথে যোগাযোগ করুন। নতুন কার্যকারিতা যোগ করার সিদ্ধান্ত নেওয়ার সময় আমরা কিছুটা নির্বাচনী থাকি এবং প্রকল্পে অবদান রাখার এবং সাহায্য করার সর্বোত্তম উপায় হল পরিচিত সমস্যাগুলি নিয়ে কাজ করা।

নতুন অবদানকারীদের জন্য সমস্যা

টেনসরফ্লো কোড বেসে প্রথম অবদান অনুসন্ধান করার সময় নতুন অবদানকারীদের নিম্নলিখিত ট্যাগগুলি সন্ধান করা উচিত। আমরা দৃঢ়ভাবে সুপারিশ করি যে নতুন অবদানকারীদের প্রথমে "ভালো প্রথম সমস্যা" এবং "অবদান স্বাগত" প্রকল্পগুলি মোকাবেলা করতে হবে; এটি অবদানকারীকে অবদানের কর্মপ্রবাহের সাথে পরিচিত হতে এবং মূল বিকাশকারীদের অবদানকারীর সাথে পরিচিত হতে সহায়তা করে।

যদি আপনি কোনও বৃহৎ সমস্যা বা নতুন বৈশিষ্ট্য মোকাবেলায় সহায়তা করার জন্য একটি দল নিয়োগ করতে আগ্রহী হন, তাহলে অনুগ্রহ করে developers@ গ্রুপে ইমেল করুন এবং আমাদের বর্তমান RFC তালিকা পর্যালোচনা করুন।

কোড পর্যালোচনা

নতুন বৈশিষ্ট্য, বাগ সংশোধন, এবং কোড বেসের অন্য যেকোনো পরিবর্তন কোড পর্যালোচনার সাপেক্ষে।

টেনসরফ্লো ডেভেলপমেন্টের একটি গুরুত্বপূর্ণ উপাদান হলো পুল রিকোয়েস্ট হিসেবে প্রকল্পে অবদান রাখা কোড পর্যালোচনা করা। আমরা যে কাউকে অন্য ডেভেলপারদের জমা দেওয়া কোড পর্যালোচনা শুরু করতে উৎসাহিত করি, বিশেষ করে যদি এই বৈশিষ্ট্যটি এমন কিছু হয় যা আপনি ব্যবহার করার সম্ভাবনা বেশি থাকে।

কোড পর্যালোচনা প্রক্রিয়ার সময় এখানে কিছু প্রশ্ন মনে রাখতে হবে:

  • আমরা কি এটি TensorFlow-তে চাই? এটি কি ব্যবহার করা সম্ভব? একজন TensorFlow ব্যবহারকারী হিসেবে আপনি কি এই পরিবর্তনটি পছন্দ করেন এবং এটি ব্যবহার করার ইচ্ছা পোষণ করেন? TensorFlow-এর পরিধিতে এই পরিবর্তন কি? একটি নতুন বৈশিষ্ট্য বজায় রাখার খরচ কি এর সুবিধার জন্য উপযুক্ত হবে?
  • কোডটি কি TensorFlow API-এর সাথে সামঞ্জস্যপূর্ণ? পাবলিক ফাংশন, ক্লাস এবং প্যারামিটারগুলি কি সুনামযুক্ত এবং স্বজ্ঞাতভাবে ডিজাইন করা হয়েছে?
  • এতে কি ডকুমেন্টেশন অন্তর্ভুক্ত আছে? সমস্ত পাবলিক ফাংশন, ক্লাস, প্যারামিটার, রিটার্ন টাইপ এবং সঞ্চিত অ্যাট্রিবিউট কি টেনসরফ্লো কনভেনশন অনুসারে নামকরণ করা হয়েছে এবং স্পষ্টভাবে নথিভুক্ত করা হয়েছে? টেনসরফ্লোর ডকুমেন্টেশনে কি নতুন কার্যকারিতা বর্ণনা করা হয়েছে এবং যখনই সম্ভব উদাহরণ সহ চিত্রিত করা হয়েছে? ডকুমেন্টেশন কি সঠিকভাবে রেন্ডার করে?

  • কোডটি কি মানুষের পঠনযোগ্য? এতে কি অতিরিক্ত ব্যবহার কম? স্পষ্টতা বা ধারাবাহিকতার জন্য কি ভেরিয়েবলের নাম উন্নত করা উচিত? মন্তব্য যোগ করা উচিত? অসহায় বা বহিরাগত বলে কোনও মন্তব্য কি সরিয়ে ফেলা উচিত?

  • কোডটি কি দক্ষ? আরও দক্ষতার সাথে চালানোর জন্য কি এটি সহজেই পুনর্লিখন করা যেতে পারে?

  • কোডটি কি টেনসরফ্লোর পূর্ববর্তী সংস্করণগুলির সাথে বিপরীতমুখীভাবে সামঞ্জস্যপূর্ণ ?

  • নতুন কোড কি অন্যান্য লাইব্রেরির উপর নতুন নির্ভরতা যোগ করবে?

পরীক্ষা কভারেজ পরীক্ষা এবং উন্নত করুন

উচ্চমানের ইউনিট টেস্টিং হল টেনসরফ্লো ডেভেলপমেন্ট প্রক্রিয়ার একটি ভিত্তিপ্রস্তর। এই উদ্দেশ্যে, আমরা ডকার ইমেজ ব্যবহার করি। টেস্ট ফাংশনগুলির যথাযথ নামকরণ করা হয়েছে এবং অ্যালগরিদমের বৈধতা এবং কোডের বিভিন্ন বিকল্প পরীক্ষা করার জন্য দায়ী।

সমস্ত নতুন বৈশিষ্ট্য এবং বাগ সংশোধনের ক্ষেত্রে পর্যাপ্ত পরীক্ষা কভারেজ অন্তর্ভুক্ত থাকতে হবে । আমরা নতুন পরীক্ষার ক্ষেত্রে অবদান বা বিদ্যমান পরীক্ষাগুলিতে উন্নতিকে স্বাগত জানাই। যদি আপনি আবিষ্কার করেন যে আমাদের বিদ্যমান পরীক্ষাগুলি সম্পূর্ণ হয়নি - এমনকি যদি এটি বর্তমানে কোনও বাগ সৃষ্টি না করে - তাহলে দয়া করে একটি সমস্যা দায়ের করুন এবং, যদি সম্ভব হয়, একটি পুল অনুরোধ করুন।

প্রতিটি 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. একটি পুল রিকোয়েস্ট (PR) খুলুন। GitHub-এর মূল প্রজেক্ট রেপোতে যান। আপনার সম্প্রতি পুশ করা শাখা সম্পর্কে একটি বার্তা আসবে, যেখানে জিজ্ঞাসা করা হবে যে আপনি একটি পুল রিকোয়েস্ট খুলতে চান কিনা। প্রম্পটগুলি অনুসরণ করুন, রিপোজিটরিগুলির মধ্যে তুলনা করুন এবং PR জমা দিন। এটি কমিটরদের কাছে একটি ইমেল পাঠাবে। আরও দৃশ্যমানতার জন্য আপনি মেইলিং লিস্টে একটি ইমেল পাঠানোর কথা বিবেচনা করতে পারেন। (আরও বিস্তারিত জানার জন্য, PRs-এর উপর GitHub নির্দেশিকা দেখুন।

  8. রক্ষণাবেক্ষণকারী এবং অন্যান্য অবদানকারীরা আপনার PR পর্যালোচনা করবেন। অনুগ্রহ করে কথোপকথনে অংশগ্রহণ করুন এবং যেকোনো অনুরোধকৃত পরিবর্তন করার চেষ্টা করুন। 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 এবং গিটহাব রিসোর্স:

অবদানকারীর চেকলিস্ট