Open-source project এ contribution করা একইসাথে উল্লেখযোগ্য achievement ও মজার experience হতে পারে তোমার জন্য। তুমি খুব সাধারণ level এর, যেমন কোনো UI এর বাটন কাজ করছে না—এমন issue fix করা থেকে শুরু করে, broader level এর, যেমন পুরো নতুন feature add করা পর্যন্ত যেকোনো কিছু করতে পারো।
For example: VLC Media Player তো সবাই চেনো, তাই না? কিন্তু তোমরা কি জানো এটা একটা open-source project? এর সমস্ত code GitHub এ available থাকে, যেখানে তুমি free তে contribute করতে পারো। শুরুতেই এর মত pro level এর project এ jump করা possible না যদিও এত বড় একটা project এ contribute করতে পারা, as a beginner, বেশ reputed একটা কাজ।
আজকে আমি তোমাদের দেখাবো কিভাবে open-source journey শুরু করবে। চলো তাহলে শুরু করা যাক।
Prerequisite
১) একটি GitHub account থাকতে হবে।
২) Proper Git Environment Setup থাকা must.
৩) Vs Code বা অন্য কোনো code environment setup থাকা লাগবে।
৪) Optional : Easily কাজ করার জন্য আমি github desktop suggest করব।
Find a Repository to Contribute
কীভাবে একটি ভাল repository খুঁজে বের করবে?
- প্রথমেই তোমাকে একটি programming stack জানতে হবে। যেমন: তুমি যদি JavaScript পারো, তবে GitHub এ JavaScript লিখে সার্চ দিয়ে related কাজ খুঁজতে পারো।
- এই Platform গুলো use করে পছন্দের project খুঁজে বের করতে পারো:
এরপর তোমার পছন্দের project গুলো দেখতে পারবে এবং যেটা ঠিক মনে হয় সেটাতে contribute করতে পারবে। মনে রাখবে, প্রথমদিকে তোমার পছন্দমত project খুঁজতে অনেক time লাগতে পারে, তাই ধৈর্য ধরে এগোবে।
Project select করার পর, এর README বা code ভালোভাবে দেখো, এবং project টি কিভাবে কাজ করে তার সম্পর্কে বিস্তারিত জেনে নাও।
How to know a repository is good to contribute?
Meets the definition of open source or not?
- Repository-র LICENSE আছে কি না? সাধারণত, repository-র মূল folder এ LICENSE নামে একটি file থাকে।
Project actively accepts contributions or not?
Main branch এর commit activity দেখো। GitHub এ repository’s homepage e Insights tab এ details information দেখতে পারবে।
- Last commit কবে করা হয়েছিল?
- Project-র total contributor কতজন?
- Commit করার হার কেমন? (GitHub এ top bar এর "Commits" এ click করে তুমি এটি দেখতে পারবে)
এখন, project-র issue গুলো দেখো।
- মোট কতগুলো issue আছে?
- যখন কোনো নতুন issue open করা হয়, maintainer রা দ্রুত respond করে কি না?
- Issue নিয়ে active discussion হয়/হচ্ছে কি না?
- Issue গুলো recent কি না?
- Issue গুলো নির্দিষ্ট সময় পরে closed হচ্ছে কি না? (GitHub এ closed issues দেখার জন্য Issues page এর "closed" tab এ click কর)
Project-র pull request গুলোর জন্য একই কাজ করো।
- মোট কতগুলো pull request আছে?
- যখন কোনো নতুন pull request open করা হয়, maintainer রা দ্রুত respond করে কি না?
- Pull request নিয়ে active discussion হয়/হচ্ছে কি না?
- Pull request গুলো recent কি না?
- Pull request গুলো নির্দিষ্ট সময় পরে closed হচ্ছে কি না? (GitHub এ closed pull requests দেখার জন্য Pull Requests page এর "closed" tab এ click কর)
Project is welcoming or not?
একটি project friendly বা welcoming কি না তা বোঝার উপায় হল project maintainer রা নতুন contributor দের সাথে কেমন আচরণ করে।
- Project maintainer রা issue সম্পর্কিত প্রশ্নে helpfully respond করে কি না?
- Issues, discussion forum, এবং chat (for example, IRC বা Slack) এ friendly behave করে কি না?
- Pull request গুলো review করা হয় কি না?
- Project maintainer রা developer দের contribution করার জন্য ধন্যবাদ জানায় কি না?
আজকে আমরা beginner হিসেবে Invoice-Generator নামে একটা প্রজেক্টকে example হিসেবে নিয়েছি। আশা করি, তোমরা ভবিষ্যতে আরো better project choose করবে।
Finding the Perfect Issue
তুমি issues tab এ গিয়ে দেখতে পারো, কী কী issues আছে, এবং সেগুলোর সমাধান করার চেষ্টা করতে পারো। As a beginner, easy কোনো issue solve করার চেষ্টা করো। এছাড়াও, তুমি নিজে থেকে পুরো project ঘেঁটে নতুন কোনো issue বের করে সেটি সমাধান করতে পারো।
For example, এই project টিতে একটি calculation issue রয়েছে যেখানে ২ বা তার বেশি item যোগ করলে total price এ তা সঠিকভাবে যোগ হয় না। শুধুমাত্র একটা item এর দাম যোগ হচ্ছে। আমরা তাহলে এই issue নিয়ে কাজ করতে পারি।
Understand and Validate the Issue
প্রথমেই directly issue resolve এ ঝাঁপিয়ে না পড়ে step-by-step আগাও। আগে ভালমত নিশ্চিত হও তুমি এই issue resolve করতে পারবে কি না এবং issue টি valid কি না।
যেহেতু এই issue টা create করা নাই, আমরা প্রথমে এই issue create করে নেব। এজন্য:
১) নতুন issue তৈরি করব
২) Title এবং description দিবো details সহ (সম্ভব হলে কোথায় exact issue হচ্ছে সেটার screenshot সহ)
৩) Solution হিসেবে কি expect করছি তার basic documentation লিখে issue submit করে দিবো।
Issue তৈরি হয়ে গেল, এখন আমি permission নেব যাতে এই নতুন issue টি আমাকে assign করে দেয় কাজ করার জন্য। এজন্য আমাকে অই create করা issue তে গিয়ে একটা comment add করতে হবে।
Assign করে দিলে আমি সেটি নিয়ে কাজ করতে পারবো, এবং অন্য কেউ সেটিতে কাজ করতে পারবে না।
এখন আমি assign করে দেওয়া পর্যন্ত অপেক্ষা করবো। (professionally wait করা উচিত)
Fork and Start Contributing
১) Assign করা হলে কাজ শুরু করে দিবো। First এ main repo আমার account এ fork (copy) করে নিব যেহেতু original repository তে আমার access নাই। তারপর আমার copy করা repo তে কাজ শুরু করব।
২) Git clone বা GitHub desktop ব্যবহার করে project clone করে নিবো নিজের ডিভাইসে।
```powershell
git clone https://github.com/johnuberbacher/invoice-generator.git
```
৩) Go to the folder : cd invoice-generator
৪) To contribute the parent project choose করব।
৫) VScode এ project open করে নিব।
৬) এবার repo-র readme check করে দেখবে, contribute এর guideline check করে অইটা follow করে কাজ শুরু করবে।
Fig: Project is running perfectly in localhost:3000
আমার environement এ project setup করা done, এবার কাজ শুরু করা যাক।
পুরো codebase বুঝে নেয়া mandatory না কোনো issue resolve করার জন্য। Issue খুঁজে বের করার জন্য project just বাইরে থেকে check করো, then অই issue related specific code check করো যে এটা নিয়ে তুমি কাজ করতে পারবে কি না।
For example: invoice generator এর code check করে দেখলাম যে কি কারণে multiple item-র price যোগ হচ্ছে না। Check করা শেষে InvoiceForm.js file এর দুইটা function handleAddEvent(evt) ও handleCalculateTotal() এ সমস্যা খুঁজে পেয়েছি।
নিজের মত একটা Solution বের করা শেষে অবশ্যই এবং অবশ্যই আবার check করে দেখব পুরো project ঠিকমত run করছে কিনা। (Solution টা অবশ্যই এখানে দিচ্ছি না)
Fig: Project is running perfectly
Project terminal এ গিয়ে এবার আমার change করা code add করব। যেহেতু আমি শুধু একটা file এ change আনসি, শুধু এটাই add করতেসি।
এখন commit করে দিব git এ।
Linking PR with Issue
এখন আমি main repo তে আমার contribution add করব। Step by step স্ক্রিনশটে দেখানো হলঃ
Fig: Mentioning issue no. in description of pull request is a must
Wait for the Maintainer to Merge
এখন তোমাকে wait করতে হবে যতক্ষণ project owner তোমার code review করে merge না করছেন। তবে code accepted (merged) না হলেও মন খারাপের কিছু নেই। Congratulations on your first ever work in open-source projects.
বিশেষ দ্রষ্টব্যঃ এখানে আমি কোনো professional achievement হিসেবে CV তে দেয়ার মত কাজ দেখাইনি। আমার উদ্দেশ্য হলো, as a begineer, তোমরা কীভাবে কাজ শুরু করতে পারো তা ধরিয়ে দেয়া। আরো better way তে কাজ করার জন্য তোমাদেরকে অবশ্যই নিজে নিজে আরো ঘাঁটাঘাঁটি করতে হবে।
Resources :
- Open Source Crash Course - Beginner Guide to Open Source
- First Contributions - Github
- How to Contribute to Open Source
- Build Successful Open Source Projects : use this to track and see your open source contribution dashboard
- Top Hacktoberfest Projects to Contribute to in 2024
- Susmita-Dey/Sukoon: This is a stress-relieving website project made for the hackathon Hackofiesta. This project is under the theme Healthcare. (github.com) : I have already contributed to this project