আপনি একটি লস ফাংশন যোগ করছেন, পরীক্ষার কভারেজ উন্নত করছেন, বা একটি বড় নকশা পরিবর্তনের জন্য একটি RFC লিখছেন, অবদানকারী গাইডের এই অংশটি আপনাকে শুরু করতে সহায়তা করবে। TensorFlow এর উন্নতিতে আপনার কাজ এবং আগ্রহের জন্য আপনাকে ধন্যবাদ।
আপনি শুরু করার আগে
আপনি একটি TensorFlow প্রকল্পে সোর্স কোড অবদান করার আগে, অনুগ্রহ করে প্রকল্পের GitHub রেপোতে CONTRIBUTING.md
ফাইলটি পর্যালোচনা করুন৷ উদাহরণস্বরূপ, কোর টেনসরফ্লো রেপোতে CONTRIBUTING.md ফাইলটি দেখুন। সমস্ত কোড অবদানকারীদের একটি অবদানকারী লাইসেন্স চুক্তি (CLA) স্বাক্ষর করতে হবে৷
সদৃশ কাজ এড়াতে, অনুগ্রহ করে বর্তমান বা প্রস্তাবিত RFC পর্যালোচনা করুন এবং একটি অ-তুচ্ছ বৈশিষ্ট্যে কাজ শুরু করার আগে TensorFlow ফোরামে ( developers@tensorflow.org ) ডেভেলপারদের সাথে যোগাযোগ করুন। নতুন কার্যকারিতা যোগ করার সিদ্ধান্ত নেওয়ার সময় আমরা কিছুটা নির্বাচনী, এবং প্রকল্পে অবদান রাখার এবং সাহায্য করার সর্বোত্তম উপায় হল পরিচিত সমস্যাগুলিতে কাজ করা।
নতুন অবদানকারীদের জন্য সমস্যা
TensorFlow কোড বেসে প্রথম অবদানের জন্য অনুসন্ধান করার সময় নতুন অবদানকারীদের নিম্নলিখিত ট্যাগগুলি সন্ধান করা উচিত৷ আমরা দৃঢ়ভাবে সুপারিশ করি যে নতুন অবদানকারীরা প্রথমে "ভাল প্রথম সমস্যা" এবং "অবদান স্বাগত" প্রকল্পগুলি মোকাবেলা করুন; এটি অবদানকারীকে অবদানের কর্মপ্রবাহের সাথে পরিচিত হতে এবং মূল devsকে অবদানকারীর সাথে পরিচিত হতে সাহায্য করে।
আপনি যদি একটি বড় মাপের সমস্যা বা একটি নতুন বৈশিষ্ট্য মোকাবেলায় সাহায্য করার জন্য একটি দল নিয়োগ করতে আগ্রহী হন, তাহলে অনুগ্রহ করে developers@ গ্রুপে ইমেল করুন এবং আমাদের RFC-এর বর্তমান তালিকা পর্যালোচনা করুন৷
কোড পর্যালোচনা
নতুন বৈশিষ্ট্য, বাগ ফিক্স এবং কোড বেসে অন্য কোনো পরিবর্তন কোড পর্যালোচনা সাপেক্ষে।
টেনসরফ্লো ডেভেলপমেন্টের একটি গুরুত্বপূর্ণ উপাদান হল পুল অনুরোধ হিসাবে প্রকল্পে অবদান রাখা কোড পর্যালোচনা করা। আমরা অন্য ডেভেলপারদের দ্বারা জমা দেওয়া কোড পর্যালোচনা শুরু করার জন্য যে কাউকে উত্সাহিত করি, বিশেষ করে যদি বৈশিষ্ট্যটি এমন কিছু হয় যা আপনি ব্যবহার করতে পারেন।
কোড পর্যালোচনা প্রক্রিয়া চলাকালীন মনে রাখার জন্য এখানে কিছু প্রশ্ন রয়েছে:
- আমরা কি TensorFlow এ এটি চাই? এটা ব্যবহার করার সম্ভাবনা আছে? আপনি কি একজন TensorFlow ব্যবহারকারী হিসেবে পরিবর্তনটি পছন্দ করেন এবং এটি ব্যবহার করতে চান? TensorFlow এর সুযোগে এই পরিবর্তন কি? একটি নতুন বৈশিষ্ট্য বজায় রাখার খরচ তার সুবিধার মূল্য হবে?
- কোডটি কি TensorFlow API এর সাথে সামঞ্জস্যপূর্ণ? পাবলিক ফাংশন, ক্লাস, এবং পরামিতিগুলি কি সু-নামযুক্ত এবং স্বজ্ঞাতভাবে ডিজাইন করা হয়েছে?
এটা ডকুমেন্টেশন অন্তর্ভুক্ত? সমস্ত পাবলিক ফাংশন, ক্লাস, প্যারামিটার, রিটার্নের ধরন এবং সঞ্চিত বৈশিষ্ট্যগুলি কি TensorFlow কনভেনশন অনুসারে নামকরণ করা হয়েছে এবং স্পষ্টভাবে নথিভুক্ত করা হয়েছে? TensorFlow এর ডকুমেন্টেশনে কি নতুন কার্যকারিতা বর্ণনা করা হয়েছে এবং যখনই সম্ভব উদাহরণ সহ চিত্রিত করা হয়েছে? ডকুমেন্টেশন সঠিকভাবে রেন্ডার হয়?
কোড কি মানুষ-পাঠযোগ্য? এটা কি অপ্রয়োজনীয়তা কম? পরিবর্তনশীল নাম কি স্বচ্ছতা বা ধারাবাহিকতার জন্য উন্নত করা উচিত? মন্তব্য যোগ করা উচিত? কোন মন্তব্য অসহায় বা বহিরাগত হিসাবে সরানো উচিত?
কোড দক্ষ? এটি আরও দক্ষতার সাথে চালানোর জন্য সহজে পুনরায় লেখা যেতে পারে?
কোডটি কি টেনসরফ্লো এর পূর্ববর্তী সংস্করণগুলির সাথে সামঞ্জস্যপূর্ণ ?
নতুন কোড অন্যান্য লাইব্রেরিতে নতুন নির্ভরতা যোগ করবে?
পরীক্ষা করুন এবং পরীক্ষার কভারেজ উন্নত করুন
উচ্চ-মানের ইউনিট টেস্টিং হল টেনসরফ্লো বিকাশ প্রক্রিয়ার একটি ভিত্তিপ্রস্তর। এই উদ্দেশ্যে, আমরা ডকার ইমেজ ব্যবহার করি। পরীক্ষার ফাংশনগুলি যথাযথভাবে নামকরণ করা হয়েছে, এবং অ্যালগরিদমের বৈধতা এবং সেইসাথে কোডের বিভিন্ন বিকল্পগুলি পরীক্ষা করার জন্য দায়ী৷
সমস্ত নতুন বৈশিষ্ট্য এবং বাগ সংশোধনের পর্যাপ্ত পরীক্ষা কভারেজ অন্তর্ভুক্ত করা আবশ্যক । আমরা নতুন পরীক্ষার ক্ষেত্রে অবদান বা বিদ্যমান পরীক্ষাগুলির উন্নতিকে স্বাগত জানাই। আপনি যদি আবিষ্কার করেন যে আমাদের বিদ্যমান পরীক্ষাগুলি সম্পূর্ণ নয় - এমনকি যদি এটি বর্তমানে একটি বাগ সৃষ্টি করে না - দয়া করে একটি সমস্যা ফাইল করুন এবং, যদি সম্ভব হয়, একটি টান অনুরোধ করুন৷
প্রতিটি টেনসরফ্লো প্রজেক্টে পরীক্ষার পদ্ধতির নির্দিষ্ট বিবরণের জন্য, গিটহাবের প্রোজেক্ট রেপোতে README.md
এবং CONTRIBUTING.md
ফাইলগুলি দেখুন।
পর্যাপ্ত পরীক্ষার ক্ষেত্রে বিশেষ উদ্বেগ:
- প্রতিটি পাবলিক ফাংশন এবং ক্লাস পরীক্ষা করা হয়?
- পরামিতিগুলির একটি যুক্তিসঙ্গত সেট , তাদের মান, মান প্রকার এবং সংমিশ্রণগুলি কি পরীক্ষিত?
- পরীক্ষাগুলি কি যাচাই করে যে কোডটি সঠিক , এবং ডকুমেন্টেশন যা বলে কোডটি করার উদ্দেশ্যে এটি তাই করছে ?
- যদি পরিবর্তনটি একটি বাগ ফিক্স হয়, তাহলে কি একটি নন-রিগ্রেশন পরীক্ষা অন্তর্ভুক্ত রয়েছে?
- পরীক্ষা কি ক্রমাগত ইন্টিগ্রেশন বিল্ড পাস ?
- পরীক্ষাগুলি কি কোডের প্রতিটি লাইন কভার করে? যদি না হয়, ব্যতিক্রমগুলি কি যুক্তিসঙ্গত এবং স্পষ্ট?
আপনি যদি কোনও সমস্যা খুঁজে পান, অনুগ্রহ করে অবদানকারীকে সেই সমস্যাগুলি বুঝতে এবং সেগুলি সমাধান করতে সহায়তা করার কথা বিবেচনা করুন৷
ত্রুটি বার্তা বা লগ উন্নত করুন
আমরা এমন অবদানকে স্বাগত জানাই যা ত্রুটি বার্তা এবং লগিং উন্নত করে।
অবদান কর্মপ্রবাহ
কোড অবদান—বাগ সংশোধন, নতুন বিকাশ, পরীক্ষার উন্নতি—সবই একটি GitHub-কেন্দ্রিক কর্মপ্রবাহ অনুসরণ করে। TensorFlow ডেভেলপমেন্টে অংশগ্রহণ করতে, একটি GitHub অ্যাকাউন্ট সেট আপ করুন। তারপর:
আপনি যে রেপোতে কাজ করার পরিকল্পনা করছেন তা ফোর্ক করুন। প্রজেক্ট রেপো পৃষ্ঠায় যান এবং ফর্ক বোতামটি ব্যবহার করুন। এটি আপনার ব্যবহারকারীর নামের অধীনে রেপোর একটি অনুলিপি তৈরি করবে। (কীভাবে একটি সংগ্রহস্থল কাঁটাচামচ করতে হয় সে সম্পর্কে আরও বিস্তারিত জানার জন্য এই নির্দেশিকাটি দেখুন।)
আপনার স্থানীয় সিস্টেমে রেপো ক্লোন করুন।
$ 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 জমা দিন। এটি কমিটরদের একটি ইমেল পাঠাবে। আপনি আরও দৃশ্যমানতার জন্য মেইলিং তালিকায় একটি ইমেল পাঠানোর কথা বিবেচনা করতে পারেন। (আরো বিশদ বিবরণের জন্য, PRs-এর উপর GitHub গাইড দেখুন।
রক্ষণাবেক্ষণকারী এবং অন্যান্য অবদানকারীরা আপনার পিআর পর্যালোচনা করবে। অনুগ্রহ করে কথোপকথনে অংশগ্রহণ করুন এবং অনুরোধকৃত পরিবর্তন করার চেষ্টা করুন। পিআর অনুমোদন হয়ে গেলে কোডটি মার্জ করা হবে।
আপনার পরবর্তী অবদানে কাজ করার আগে , নিশ্চিত করুন যে আপনার স্থানীয় সংগ্রহস্থল আপ টু ডেট আছে।
আপস্ট্রিম রিমোট সেট করুন। (আপনাকে প্রতি প্রকল্পে একবারই এটি করতে হবে, প্রতিবার নয়।)
$ 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
এবং গিটহাব সংস্থান:
অবদানকারী চেকলিস্ট
- অবদান নির্দেশিকা পড়ুন.
- আচরণবিধি পড়ুন।
- আপনি কন্ট্রিবিউটর লাইসেন্স চুক্তিতে (CLA) স্বাক্ষর করেছেন তা নিশ্চিত করুন।
- আপনার পরিবর্তনগুলি নির্দেশিকাগুলির সাথে সামঞ্জস্যপূর্ণ কিনা তা পরীক্ষা করুন৷
- আপনার পরিবর্তনগুলি TensorFlow কোডিং শৈলীর সাথে সামঞ্জস্যপূর্ণ কিনা তা পরীক্ষা করুন৷
- ইউনিট পরীক্ষা চালান ।