“ওপেন সোর্স” নামটা শুনেই আমাদের বিগিনারদের মধ্যে কিছুটা জড়তা ভাব কাজ করে। মনে হয়, এটা কি না কি রকেট সাইন্স! তবে কিছু বিষয় জানলে আমরা বুঝতে পারবো এটা আসলে খুবই ইফেক্টিভ এবং মজার বিষয়।
চলুন জেনে নেয়া যাক ওপেন সোর্স কি, ওপেন সোর্স কন্ট্রিবিউশন বলতে কি বুঝায়, এটি কিভাবে কাজ করে, ওপেন সোর্স কন্ট্রিবিউশন এর উপকারিতা, কিভাবে শুরু করবেন, ইভেন্ট এবং সবশেষে “প্রো টিপস”।
ওপেন সোর্স কি?
একটি প্রজেক্ট/সফটওয়্যারের মূল অংশ হলো এটির সোর্স কোড। এক্ষেত্রে যে সকল প্রজেক্ট/সফটওয়্যারের সোর্স কোড সবার জন্য উন্মুক্ত থাকে সে প্রজেক্ট/সফটওয়্যারকে ওপেন সোর্স প্রজেক্ট/সফটওয়্যার বলা হয়। অর্থাৎ যে কেউ এই প্রজেক্ট/সফটওয়্যারের সোর্স কোড বিনামূল্যে এক্সেস ,পরিবর্তন এবং শেয়ার করতে পারবে।
অবাক করা বিষয় হলো আমাদের জনপ্রিয় প্রোগ্রামিং ল্যাংগুয়েজ “পাইথন” ওপেন সোর্স। এছাড়া আমাদের বহুল পরিচিত লিনাক্স অপারেটিং সিস্টেম, মজিলা ফায়ারফক্স ওয়েব ব্রাউজার ওপেন সোর্স সফটওয়্যার।
ওপেন সোর্স কন্ট্রিবিউশন বলতে কি বুঝায়?
আমরা সাধারণত ওপেন সোর্স কন্ট্রিবিউশন বলতে বুঝে থাকি কোনো প্রজেক্ট/সফটওয়্যারের সোর্স কোডের পরিবর্তন করার মাধ্যমে প্রজেক্ট/সফটওয়্যার আপডেট করার মাধ্যমে অবদান রাখা। তবে কোড কন্ট্রিবিউশন ছাড়াও আরও কিছু উপায়ে ওপেন সোর্স কন্ট্রিবিউশন করা যায়, যা “no-code” কন্ট্রিবিউশন নামে পরিচিত।
যে সকল উপায়ে ওপেন সোর্স কন্ট্রিবিউশন করা যায় তা নিন্মে দেয়া হলোঃ
১) প্রজেক্ট/সফটওয়্যারের নতুন ফিচার যুক্ত করা।
২) প্রজেক্ট/সফটওয়্যারের কোনো বাগ/ইস্যু ফিক্সড করা।
৩) মেইন্টেইনার হিসাবে কোড রিভিউ করা অথবা মেইন্টেইনারের কোড রিভিউতে সাহায্য করা।
৪) প্রজেক্ট/সফটওয়্যারের টেস্টিং-এ অংশগ্রহন করা।
৫) প্রজেক্ট/সফটওয়্যারের ডকুমেন্টেশন আপডেট করা।
৬) প্রজেক্ট/সফটওয়্যার নিয়ে ভিডিও, কন্টেন্ট তৈরী করা অথবা ইভেন্ট হোস্ট করা।
৭) সোস্যাল মিডিয়া (ফেসবুক, লিঙ্কডইন, টুইটার) পরিচালনার মাধ্যমে কমিউনিটি গ্রো-আপ এ অংশগ্রহন করা।
৮) ওভারল প্রজেক্ট/সফটওয়্যারের UI/UX, সিস্টেম ইম্প্রুপমেন্ট এ ফিডব্যাক দেয়া।
এটি কিভাবে কাজ করে?
একটি ওপেন সোর্স প্রজেক্ট/সফটওয়্যার এক বা একাধিক মেইন্টেইনারের অধীনে থাকে, যারা প্রজেক্ট/সফটওয়্যারটি পরিচালনা করে থাকেন। এতে মেইন্টেইনারের কাছে প্রজেক্ট/সফটওয়্যারের গুরুত্বপূর্ণ তথ্যের এক্সেস থাকে।
সোর্স কোড, ডকুমেন্টেশন ও টেস্টিং এর সঠিক ম্যানেজমেন্ট, ভার্শন কন্ট্রোল এবং ট্র্যাকিং এর জন্য সোর্স কোডটি পাবলিক রিপোজিটরিতে রাখা হয়। এক্ষেত্রে জনপ্রিয় ভার্শন কন্ট্রোল মেকানিজম হিসাবে “Git” এবং প্রজেক্ট/সফটওয়্যারের সুবিধা অনুযায়ী “GitLab”,”GitHub” এবং “BitBucket” এর মতো ওয়েব-বেসড হোস্টিং সার্ভিস ব্যাবহার করা হয়।
মেইন্টেইনার এবং কন্ট্রিবিউটররা সাধারণত মেইন রিপোজিটরি ক্লোন বা ফর্ক করে কন্ট্রিবিউট করা শুরু করে থাকেন। এক্ষেত্রে লোকাল কোডসমূহ নিজস্ব branch তৈরী করে সেখানে রাখতে হয়। কাজ শেষে পরিবর্তনসমূহ নিজস্ব branch হতে main branch এ merge করার জন্য pull request (PR) তৈরী করতে হয়। এরপর কোডটি একটি রিভিউ প্রসেসের মধ্য দিয়ে যায়। এক্ষেত্রে মেইন্টেইনার কোডটি পর্যালোচনা করে থাকেন এবং কোনো ফিডব্যাক থাকলে তা কন্ট্রিবিউটরকে জানান। রিভিউ প্রসেস শেষে কোডটি সম্পূর্ণ গ্রহনযোগ্য হলে মেইন্টেইনার এটিকে main branch এ merge করে থাকেন।ফাইলানি পরিবর্তনটি প্রজেক্ট/সফটওয়্যারের ইন্টারনাল প্রসেসের মাধ্যমে প্রোডাকশনে ডেপ্লয় হয়ে থাকে এবং ইউজার এর কাছে ভিসিবল হয়।
ওপেন সোর্স কন্ট্রিবিউশন এর উপকারিতা
এতক্ষণ আমরা জানলাম ওপেন সোর্স কি, ওপেন সোর্স কন্ট্রিবিউশন বলতে কি বুঝায় এবং এটি কিভাবে কাজ করে। তাহলে এখন প্রশ্ন আসতে পারে এটার মাধ্যমে আমরা কিভাবে উপকৃত হবো, সহজ বাংলায় আমরা এটা কেন করবো? উত্তর টা হলো “ওপেন সোর্স” এর মতো একটা কনসেপ্ট যেহেতু বিশ্বের বড় বড় প্রজেক্ট/সফটওয়্যারে এপ্লাই করা হয়েছে, সেহেতু প্রজেক্ট/সফটওয়্যার ইম্প্রুভমেন্টের পাশাপাশি কন্ট্রিবিউটরের ইম্প্রুভমেন্ট ও সুনিশ্চিত। নিন্মে তা তুলে ধরা হলো,
১) ওপেন সোর্স কন্ট্রিবিউশনের মাধ্যমে আমরা একটি প্রোডাকশন লেভেল প্রজেক্টের সাথে in-depth পরিচিত হওয়ার সুযোগ পেয়ে থাকি। এক্ষেত্রে আমাদেরও অবশ্যই রিডেবল এবং স্কেলেবল কোড লিখতে হবে এবং বেস্ট প্র্যাকটিসসমূহ অনুসরণ করতে হবে যা আমাদের কোডিং দক্ষতা বাড়াতে গুরুত্বপূর্ণ অবদান রাখবে।
২) আমরা প্রতিনিয়ত নিত্য নতুন টেকনোলজি শিখে থাকি, আমাদের স্কিলকে নেক্সট লেভেল এ নিতে এই টেকনোলজিসমূহ কিভাবে একটি ইন্ডাস্ট্রি স্ট্যান্ডার্ড প্রজেক্টে ইমপ্লিমেন্ট করতে হয় এবং এটি কিভাবে কাজে লাগে এই বিষয়গুলো জানার জন্য ওপেন সোর্স একটি অসাধারণ রিসোর্স হতে পারে। এছাড়া ওপেন সোর্স কন্ট্রিবিউশনের মাধ্যমে নতুন নতুন টেকনোলজির সাথে পরিচয় হওয়া যায়, যা আমাদের কোডিং স্কিল বাড়ানোর পাশাপাশি আমাদের আত্নবিশ্বাস বাড়ায়।
৩) আমারা যে কোড লিখি তা কতটুকু ইন্ডাস্ট্রি স্ট্যান্ডার্ড এবং আমরা আমাদের কোডে বেস্ট প্র্যাকটিসসমূহ অনুসরণ করছি কিনা এই বিষয়গুলো যাচাই করতে পারবো ওপেন সোর্স কন্ট্রিবিউশনের মাধ্যমে। আমাদের কোডটি যখন রিভিউ প্রসেসের মধ্য দিয়ে যাবে তখন ইন্ডাস্ট্রি এক্সপার্ট (মেইন্টেইনার) এই বিষয়ে ফিডব্যাক দিয়ে থাকেন।
৪) নেটওয়ার্কিং করার জন্য ওপেন সোর্স কমিউনিটি একটি ভালো মাধ্যম হতে পারে। যেখানে ওয়ার্ল্ডের বিভিন্ন রিজিয়ন হতে বিভিন্ন সোর্স এর ডেভেলপাররা কন্ট্রিবিউট করে থাকেন। অনেকসময় এটি জব নেটওয়ার্কিং-এ সাহায্য করে থাকে।
৫) কোডিং স্কিল বাড়ানোর পাশাপাশি এটির মাধ্যমে কিছু ইন্টার-পারসোনাল স্কিল ডেভেলপ হয়ে থাকে যা ক্যারিয়ারে গুরুত্বপূর্ণ ভূমিকা পালন করে। যেমনঃ কমিউনিকেশন, টিম ওয়ার্ক, অ্যানালাইটিক্যাল থিংকিং, লিডারশিপ ইত্যাদি।
৬) একটি ওপেন সোর্স প্রজেক্ট/সফটওয়্যারের ইকোসিস্টেম কিভাবে কাজ করে এবং কিভাবে একটি ওপেন সোর্স প্রজেক্ট/সফটওয়্যার পরিচালনা করা হয় তা জানতে সহায়তা করে থাকে।
৬) এবং ফাইনালি ওপেন সোর্স কন্ট্রিবিউশন সিভি/রিসিউমি কিংবা পোর্টফোলিও-তে হাইলাইট করে জব ফিল্ডে অন্যান্য কেন্ডিডেট হতে এগিয়ে থাকা যায়।
কিভাবে শুরু করবেন?
এবার আসি আসল প্রসঙ্গে, কিভাবে শুরু করবেন,
১) প্রথমে আপনার দক্ষতা এবং আগ্রহের সাথে সামঞ্জস্যপূর্ণ একটি প্রজেক্ট/সফটওয়্যার খুঁজে বের করুন। প্রজেক্ট/সফটওয়্যার সিলেক্ট করার জন্য নিচের ওয়েবসাইটসমূহ এক্সপ্লোর করতে পারেন,
২) প্রজেক্ট/সফটওয়্যার সিলেক্ট করার পর তাদের ওয়েবসাইট, ডকুমেন্টেশন এক্সপ্লোর করতে হবে এবং কোডবেসের সাথে ফেমিলিয়ার হতে হবে।
৩) কোডবেসের সাথে পরিচিত হওয়ার পর নতুন ফিচার যুক্ত করা,কোনো বাগ/ইস্যু ফিক্সড, ডকুমেন্টেশন আপডেট অথবা অন্য কোনো বিষয়ে একটি issue ক্রিয়েট করুন।
৪) তারপর মেইন রিপোজিটরি ক্লোন বা ফর্ক করে নিজস্ব branch তৈরী করে আপনার কাজগুলো সেখানে রাখুন। কাজ শেষে পরিবর্তনসমূহ নিজস্ব branch হতে main branch এ merge করার জন্য pull request (PR) তৈরী করুন।
৫) এরপর কোডটি একটি রিভিউ প্রসেসের মধ্য দিয়ে যাবে। এক্ষেত্রে মেইন্টেইনার কোডটি পর্যালোচনা করবেন এবং কোনো ফিডব্যাক থাকলে তা আপনাকে জানানো হবে। রিভিউ প্রসেস শেষে কোডটি সম্পূর্ণ গ্রহনযোগ্য হলে মেইন্টেইনার এটিকে main branch এ merge করবেন ।ফাইলানি পরিবর্তনটি প্রজেক্ট/সফটওয়্যারের ইন্টারনাল প্রসেসের মাধ্যমে প্রোডাকশনে ডেপ্লয় হবে এবং ইউজার এর কাছে ভিসিবল হবে।
কন্ট্রিবিউট করার সময় নিম্নলিখিত বিষয়গুলি মনে রাখবেন:
- প্রতিটি প্রজেক্ট/সফটওয়্যারের নিজস্ব নির্দেশাবলী থাকে, যেখানে একজন কন্ট্রিবিউটরের জন্য দিকনির্দেশনা দেয়া থাকে। তাই এসব নির্দেশাবলী মেনে চলার চেষ্টা করবেন।
- আপনার কোডের গুণমান নিশ্চিত করুন। আপনার কোডটি সঠিকভাবে কাজ করে কিনা তা নিশ্চিত করুন।
- কোনো বিষয়ে প্রশ্ন থাকলে মেইনটেইনারদের সাথে যোগাযোগ করতে পারেন এবং তাদের কাছ থেকে পরামর্শ নিতে পারেন।
ইভেন্ট
ওপেন সোর্স কমিউনিটির একটি বড় ইভেন্ট হলো HACKTOBERFEST
HACKTOBERFEST হল একটি মাসব্যাপী উৎসব যেখানে বিশ্বজুড়ে ওপেন সোর্স সফ্টওয়্যার প্রজেক্টগুলিতে কন্ট্রিবিউট করতে উৎসাহিত করা হয়। এটি DigitalOcean এর উদ্যোগে শুরু হয় ২০১৪ সালে এবং প্রতি বছর অক্টোবর মাসে অনুষ্ঠিত হয়। বিস্তারিত জানতে নিচের দেয়া লিংকে এক্সপ্লোর করতে পারেন,
প্রো টিপস
কেমন হয় যদি কন্ট্রিবিউশনের পাশাপাশি কিছুটা ইনকাম করা যায়? জি সঠিক শুনেছেন, কিছু কিছু ওপেন সোর্স প্লাটফর্ম আছে যারা কন্ট্রিবিউশনের জন্য পে করে থাকে। নিচে এমন একটি প্লাটফর্মের লিংক দেওয়া হলো,
এখানে কিছু টিপস রয়েছে যা আপনাকে ওপেন সোর্স কন্ট্রিবিউশন শুরু করতে সাহায্য করতে পারে:
- প্রথমে ছোট, সহজ কন্ট্রিবিউশন দিয়ে শুরু করুন। এটি আপনাকে প্রজেক্ট/সফটওয়্যারের সাথে পরিচিত হতে এবং আপনার দক্ষতা বাড়াতে সাহায্য করবে।
- প্রজেক্ট/সফটওয়্যার কমিউনিটির সাথে যোগাযোগ করুন। অন্যান্য কন্ট্রিবিউটরদের কাছ থেকে শিখুন এবং তাদের সাথে নেটওয়ার্ক করুন।
- ধৈর্য ধরুন। ওপেন সোর্স কন্ট্রিবিউশনে সময় এবং প্রচেষ্টা লাগে।
সবশেষে বলতে চাই, ওপেন সোর্স কন্ট্রিবিউশন একটি দুর্দান্ত জিনিস। আপনি নতুন জিনিস শেখার পাশাপাশি এটি উপভোগ করতে পারেন । একটা জিনিস মনে রাখবেন, কন্ট্রিবিউশনের কোন নির্দিষ্টতা নেই, কোন কন্ট্রিবিউশনই ছোট নয়, তাই দেরী না করে শুরু করুন। হ্যাপি কোডিং!