How to Contribute in Open Source Projects - Complete Tutorial

Published on 10/1/2024

Open Source ContributionComplete Tutorial

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 একটা কাজ।

alt text

আজকে আমি তোমাদের দেখাবো কিভাবে 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 খুঁজে বের করবে?

  1. প্রথমেই তোমাকে একটি programming stack জানতে হবে। যেমন: তুমি যদি JavaScript পারো, তবে GitHub এ JavaScript লিখে সার্চ দিয়ে related কাজ খুঁজতে পারো।

alt text

  1. এই Platform গুলো use করে পছন্দের project খুঁজে বের করতে পারো:
    1. Hacktoberfest Projects
    2. Explore Github
    3. Up for Grabs
    4. Good First Issue : Make Your Fiest Open-source Contribution
    5. Get Started Contributing to Open Source Projects | CodeTriage
    6. Open Source Alternatives to Proprietary Software

এরপর তোমার পছন্দের 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 বের করে সেটি সমাধান করতে পারো।

alt text

For example, এই project টিতে একটি calculation issue রয়েছে যেখানে ২ বা তার বেশি item যোগ করলে total price এ তা সঠিকভাবে যোগ হয় না। শুধুমাত্র একটা item এর দাম যোগ হচ্ছে। আমরা তাহলে এই issue নিয়ে কাজ করতে পারি।

alt text

Understand and Validate the Issue

প্রথমেই directly issue resolve এ ঝাঁপিয়ে না পড়ে step-by-step আগাও। আগে ভালমত নিশ্চিত হও তুমি এই issue resolve করতে পারবে কি না এবং issue টি valid কি না।

যেহেতু এই issue টা create করা নাই, আমরা প্রথমে এই issue create করে নেব। এজন্য:

১) নতুন issue তৈরি করব

alt text

২) Title এবং description দিবো details সহ (সম্ভব হলে কোথায় exact issue হচ্ছে সেটার screenshot সহ)

alt text

alt text

৩) Solution হিসেবে কি expect করছি তার basic documentation লিখে issue submit করে দিবো।

alt text

alt text

Issue তৈরি হয়ে গেল, এখন আমি permission নেব যাতে এই নতুন issue টি আমাকে assign করে দেয় কাজ করার জন্য। এজন্য আমাকে অই create করা issue তে গিয়ে একটা comment add করতে হবে।

alt text

alt text

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 করব।

alt text

৫) VScode এ project open করে নিব।

৬) এবার repo-র readme check করে দেখবে, contribute এর guideline check করে অইটা follow করে কাজ শুরু করবে।

alt text

alt text

alt text

alt text 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 টা অবশ্যই এখানে দিচ্ছি না)

alt text

alt text Fig: Project is running perfectly

Project terminal এ গিয়ে এবার আমার change করা code add করব। যেহেতু আমি শুধু একটা file এ change আনসি, শুধু এটাই add করতেসি।

alt text

এখন commit করে দিব git এ।

alt text

Linking PR with Issue

এখন আমি main repo তে আমার contribution add করব। Step by step স্ক্রিনশটে দেখানো হলঃ

alt text

alt text Fig: Mentioning issue no. in description of pull request is a must

alt text

alt text

alt text

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 :


  1. Open Source Crash Course - Beginner Guide to Open Source
  2. First Contributions - Github
  3. How to Contribute to Open Source
  4. Build Successful Open Source Projects : use this to track and see your open source contribution dashboard
  5. Top Hacktoberfest Projects to Contribute to in 2024

image.png

image.png

FacebookTwitterLinkedInYouTube


⛑️ Support Our Mission

If you find this guide helpful, consider A Small Donation to support our efforts.


Views: 0

Comments (0)

    Subscribe or follow me
    N
    Join me as I explore new things and document the little moments that make up my journey.
    Follow us
    2024. Made with ♥ by Someone Special