প্রকল্প সম্পর্কে

এক্সট্রা কোডঅনাউনার্স হলো টিমদের জন্য একটি সেলফ-হোস্টেড গিটহাব অ্যাপ যারা CODEOWNERS পলিসির অধীনে স্বয়ংক্রিয়ভাবে সাধারণ পুল রিকোয়েস্ট অনুমোদন করতে চায়। এটি একটি প্রয়োজনীয় চেক প্রকাশ করে যা একটি মানুষ CODEOWNER অনুমোদন অথবা স্পষ্টভাবে নামভুক্ত GitHub App থেকে অনুমোদন গ্রহণ করে। কোনো রিপোজিটরি একটি উপযুক্ত পুল-রিকোয়েস্ট লেখকের মানব CODEOWNER প্রমাণ হিসেবে বিবেচনা করতে পারে। লোকজন এবং দলগুলো গিটহাবের স্ট্যান্ডার্ড CODEOWNERS ফাইলে থাকে, অন্যদিকে আলাদা পলিসি বলে কোন Apps কোন মালিক ও পথ কাভার করতে পারে। প্রজেক্টটি তৈরি হয়েছে কারণ গিটহাবের 'Require review from Code Owners' নিয়ম মানুষ ও দল বুঝতে পারে কিন্তু GitHub App কে তাদের পরিবর্তে দাঁড়াতে দেয় না। যদি Stampbot-এর মতো কোনো App ইতিমধ্যে জানে যে কোনো পুল রিকোয়েস্ট রুটিন, তবুও গিটহাব একজন মানুষ কোড-মালিকের জন্য অপেক্ষা করে। এক্সট্রা কোডঅনাউনার্স এই সিদ্ধান্তকে একটি চেকে প্রতিস্থাপন করে। এটি প্রতিটি স্বতন্ত্র কার্যকর মালিক সেট আলাদাভাবে মূল্যায়ন করে। প্রতিটি পথ দ্বারা প্রতিনিধিত্বকৃত সব মালিক সেট পারতে হবে। একটি রিকোয়েস্ট একটি মালিক সেটের জন্য মানুষের অনুমোদন এবং অন্যটির জন্য App অনুমোদন ব্যবহার করতে পারে। App অনুমোদন কেবল তখনই যোগ্য যখন সংস্থা সেই নির্দিষ্ট App পরিচয় নামভুক্ত করেছে, রিপোজিটরি অন্তর্ভুক্ত করেছে, ডেলিগেশন পরিবর্তিত পথ ও কার্যকর CODEOWNER কভার করে, কোনো প্রয়োজনীয় লেবেল উপস্থিত, অনুমোদন বর্তমান HEAD-এ প্রযোজ্য, এবং কোনো সংস্থা বা বিল্ট-ইন গার্ডরেইল পথকে মানুষ-মাত্র হিসেবে নির্ধারণ করে না। গিটহাবের সাধারণ পুল-রিকোয়েস্ট নিয়মগুলো বজায় থাকে: ন্যূনতম অনুমোদন সংখ্যা, stale-review হ্যান্ডলিং, স signed কমিট, এবং অন্যান্য প্রয়োজনীয় চেক। Extra CODEOWNERS কেবল 'Require review from Code Owners' প্রতিস্থাপন করতে উদ্দেশ্য। গিটহাবের পাবলিক কন্ট্রাক্ট বলে না যে কোনো থার্ড-পার্টি App রিভিউ সাধারণ অনুমোদন ন্যূনতম গণনা হয় কিনা, তাই এটি পরীক্ষা করা উচিত। কোনো নন-জিরো ন্যূনতম হলে Extra CODEOWNERS চেক সফল হলেও এখনও মানুষের প্রয়োজন হতে পারে। App রিভিউ জমা দেয় না, পুল রিকোয়েস্ট মার্জ করে না, অন্য App-এর অ্যাক্সেস দেয় না, অথবা CODEOWNERS সম্পাদনা করে না। এটি গিটহাব তথ্য পড়ে এবং একটি Check Run প্রকাশ করে। এই চেককে একটি পলিসি ফলাফল হিসেবে পড়তে হবে, রিভিউ নয়। Extra CODEOWNERS গিটহাবের চেক এরিয়ায় দেখায়, আনুষ্ঠানিক অনুমোদন সংখ্যা রিভিউ এরিয়ায় দেখায়। টিমদের প্রয়োজনের সময় একটি সাধারণ ন্যূনতম রিভিউ নিয়ম রাখা উচিত। চেকটি অ্যাসিঙ্ক্রোনাস। যখন কোনো অনুমোদন বাতিল বা পরিবর্তন হয়, একটি পূর্ববর্তী সাফল্য গিটহাব ইভেন্ট পৌঁছানো পর্যন্ত দেখা যায় এবং App পুনরায় মূল্যায়ন করে। পুনর্মিলন মিস হয়ে যাওয়া ডেলিভারি মেরামত করে, কিন্তু এটি তাৎক্ষণিক বাতিল যন্ত্র নয়। গিটহাবের নেটিভ কোড-অনাউনার্স নিয়ম সেই সীমানা বজায় রাখার জন্য রাখা উচিত যেখানে সেই stale-সাফল্য জনজলা সহ্য করা যায় না। ডেলিগেশন দুটি পলিসি স্কোপে বিভক্ত। CODEOWNERS নির্ধারণ করে কোন মানুষ বা দল কোন পথের মালিক। সংস্থা পলিসি নির্ধারণ করে কোন Apps বিশ্বস্ত এবং কোন পথ কোনো App কাভার করতে পারে না। রিপোজিটরি পলিসি নির্ধারণ করে কোন নামভুক্ত App কোন মালিক ও পথ কাভার করতে পারে। রিপোজিটরি পলিসি সংস্থা পলিসি সরু করতে পারে কিন্তু কোনো App নামভুক্ত বা সংস্থা গার্ডরেইল দুর্বল করতে পারে না। রিপোজিটরি পলিসি TOML ফরমেটে থাকে যার schema_version, enabled, এবং delegations অন্তর্ভুক্ত থাকে। অ্যাপ মান সংস্থার apps টেবিল থেকে আসে যা অ্যাপের পরিবর্তনযোগ্য আইডি, পাবলিক স্লগ এবং বট-ইউজার আইডি-তে আবদ্ধ হয়। স্থানীয় পরিদর্শনের জন্য, Bash, Git, এবং mise ইনস্টল করে ক্লোন করে এবং mise trust, mise install, mise run bootstrap, এবং mise run test চালিয়ে পরিষ্কার চেকআউট চালানো যায়। সফল রান পরীক্ষা সুইট পার করার সাথে শেষ হয়। এটি কোনো GitHub App রেজিস্টার করে না অথবা লাইভ গিটহাব কন্ট্রাক্ট প্রমাণ করে না। প্রজেক্টটি প্রি-রেলেজ। আলফা ইমেজ এবং চার্ট শুধুমাত্র শ্যাডো-মোড পরীক্ষার জন্য এবং উৎপাদন মার্জ জোরাজুরি করা উচিত নয়। লেগাসি প্রিভিউ ইমেজ যেমন main এবং এর sha সাপেক্ষে ট্যাগ ডিপ্লয়মেন্টের জন্য অপ্রচলিত ও অনিরাপদ। প্রজেক্ট স্ট্যাটাস দলিল জানায় যা আজ ব্যবহারযোগ্য এবং যা এখনও সমর্থিত রিলিজ ব্লক করে। ডকুমেন্টেশন মধ্যে রয়েছে প্রজেক্ট স্ট্যাটাস, নেটিভ CODEOWNERS তুলনা, থ্রেট মডেল, ডেভেলপমেন্ট ইনস্টলেশন টিউটোরিয়াল, কনফিগারেশন গাইড, সমস্যাবোধ গাইড, ডিপ্লয়মেন্ট ও অপারেশন গাইড, আর্কিটেকচার ও রক্ষক গাইড, এবং অবদানকারী গাইড। সম্পূর্ণ ম্যানুয়াল Read the Docs-এ রয়েছে। প্রজেক্ট নীতিতে সমর্থন, গোপনীয় ভুল ত্রুটি প্রতিবেদন, OpenSSL CVE এবং VEX, শাসন, পরিবর্তনলিপি, এবং Apache License 2.0 অন্তর্ভুক্ত। ব্যাজ সেটে CI, সম্পত্তি পরীক্ষা, কভারেজ, CodeQL, OpenSSF Scorecard, ডকুমেন্টেশন, Python 3.12 থেকে 3.14, এবং Apache-2.0 লাইসেন্সিং সূচিত হয়।