Monthly Archives: December 2012

লিনাক্স কার্নেল তিন দশমিক সাত হবে ARMed

মজার খবর পেলাম, এক মেইলিং লিস্টে। তারপর গুগল করে নিশ্চিত হলাম। ভয় কাটলো, আনন্দিত হলাম। কিছুদিন যাবৎ দোটানায় ছিলাম, বাংলাদেশে Raspberry pi বোর্ড আনার বিষয়ে। একদিকে দেশীয় ছাত্রদের এই বিষয়টির সাথে পরিচয় ঘটানো এবং তাদের RnD তে উৎসাহিত করা। অন্যদিকে Raspberry Pi এর ARM প্রসেসর, যা লিনাক্সের কাস্টম কার্নেল দিয়ে চলে। অঙ্কুর শুধু ডেবিয়ান চালিয়ে পরীক্ষা করতে পেরেছ এ পর্যন্ত। যদিও নেটে জানা গেছে অনেকেই বিভিন্ন ডিস্ট্রো চালিয়েছেন। কিন্তু আমরা যেহেতু বোর্ডটি সংগ্রহ করে এনে টাকার বিনিময়ে দেবো, তাই একটু দায়িত্ব নিতে হচ্ছিল। অন্যন্য বোর্ড সদস্যরা এই প্রকল্প বাদ দিতে বলছিলেন আমাকে। অনেক আলোচনার পর, অঙ্কুর সপ্তাহখানেক আগে সিদ্ধান্ত নেয়, Raspberry Pi বোর্ড আনানোর এবং ঘোষণাও দেয়া হয়ে যায়। কিন্তু ARM এর নিরস্ত্র হওয়ার ভয় থেকেই যায়। কারণ, লিনুস এর একটি বক্তব্যে, অনেকের মতো আমিও নিরাশাবাদি হয়ে পড়েছিলাম। সে বলেছিলো, Gaah. Guys, this whole ARM thing is a f*cking pain in the ass.

কিন্তু আজকে ZDnet এর নিবন্ধে জানতে পারলাম, যে লিনুস খুব সহসাই কার্নেল এর তিন দশমিক সাত ছাড়বেন ARM সংশ্লিষ্ট হাজার লক্ষ লাইন কোড সহ। তাই শিরোনামা বলছিলাম, ARM প্রসেসর Linux দ্বারা এবার সত্যিই ARMed (আর্মড) হবে। শুধু রাস্পবেরী পাই একাই নয়, ARM নির্ভর সকল মোবাইল ফোনও এতে উপকৃত হবে। আর আমি একজন উন্নয়ন কর্মী হিসেবে অনেক আনন্দিত। কারণ, আমাদের বেশ কিছু ICT 4 Developement  আইডিয়া আটকে ছিলো, low cost ডিভাইসে লিনাক্স ব্যবহারের সীমাবদ্ধতা কারণে।

কার্নেল হ্যাক সম্পর্কে জানতে চাই সেই সাথে কিভাবে কন্ট্রিবিউট করা যায় সেটাও

nixers গ্রুপে, তপন কুমার দাস এর একটি স্টাটাসে প্রভাবিত হয়ে এই আধখেঁচড়া ব্লগটি লিখছি। কারো কারো কাজে লাগতে পারে। আবার অনেকের কাজে নাও লাগতে পারে। এক ঘন্টায় এটি লিখলাম। কাল ডিজিটাল ওয়ার্ল্ডের উদ্বোধনী অনুষ্ঠানে যাব সকাল নটায়, এখন রাত আড়াইটা। পরে, প্রয়োজনীয় সম্পাদনা করবো।

শিরোনামটি তার স্টাটাস হতে নেওয়া। এটি ছিলো তার জিজ্ঞাসা। আমি শুধু কার্নেল নয়, যেকোন ওপেন সোর্স প্রকল্পে কি উপায়ে কন্ট্রিবিউট করা যায়, সেটি জেনেরিক উপায়ে লিখার চেষ্টা করেছি।

– এক বা একাধিক লিনাক্স ডিস্ট্রিবিউশন ইনস্টল করুন। *nix এর মজাই এখানে, আপনার পছন্দের অপশন অনেক, অগুনিত। (অফটপিক: একাধিক ডিস্ট্রো থাকাটাকে আমরা ভালভাবে না নিয়ে, একে অপরের সাথে ডিস্ট্রো ফাইট করি।)

– পড়তে হবে, বই পড়তে হবে। বিকল্প নাই। একটি জেনেরিক বই আছে, এটি কোন ডিস্ট্রো ভিত্তি করে লেখা হয় নাই। আমার জীবনের সর্বশ্রেষ্ঠ বই এটি, আমার কোন ব্যক্তি গুরু নাই, এটিই আমার গুরু। যেমন শিখদের গুরু গ্রন্থ সাহিব। বইটির নাম – Running Linux. লিখেছেন : Terry Dawson, Matthias Dalheimer, Matt Welsh। প্রকাশ করেছে O’Reilly। লিনাক্স বুঝতে প্রায় সকল উপকরণ রয়েছে এই বইতে। লেখকবৃন্দ, লিনাক্স ব্যবহারকারীদের গুরুত্বপূর্ণ সকল সমস্যা এই বইতে আলোচনা করেছেন। তারা পরীক্ষিত ও নির্বাচিত সমস্যাসমূহের সমাধান এই বইতে সন্নিবেশ করেছেন।

– Replicate করুন। যদি আপনি replicate করতে না পারেন, তাহলে this is not science। আপনার পছন্দের ডিস্ট্রো replicate করুন। কিভাবে করবেন?

– আপনার লিনাক্স ডিস্ট্রোর সোর্স হতে বাইনারি বিল্ড করুন। আপনি একবার বাইনারি বিল্ড করতে পারলে, জেনে যাবেন সকল প্রকার প্রাক-প্রস্তুতি। আর বিল্ড করার সময় যত বেশি সমস্য হবে, ততই আপনি উপকৃত হবেন। প্রতিটি সমস্যার বিপরীতে শত সমাধান পাবেন, গুগল করে। গুগল সার্চ রেজাল্টে প্রাপ্ত মেইলিং লিস্টের আর্কাইভ সমূহ, বিভিন্ন ফোরাম পোস্ট, ব্লগ নিবন্ধ – পড়ুন! মনোযোগ দিয়ে পড়ুন! ধীরে অতি ধীরে হৃদয়ঙ্গম করে পড়ুন!

– সোর্স checkout করুন। সোর্স থেকে বাইনারি বিল্ড করুন, এতে আপনি নিজেই অনুধাবন করতে পারবে, আপনার কি কি কনফিগারেশন অপশন প্রয়োজন। (আপনি যদি একবার নিজে নিজে বাইনারি বিল্ড করতে পারেন, আপনি প্রস্তুত)।

– ওপেন সোর্স একটি সামাজিক মিথস্ক্রিয়া। ওয়ান ম্যান আর্মি দিয়ে ওপেন সোর্স এর কাজ হয় না। পৃথিবীর বিভিন্ন প্রান্তের হ্যাকার, কন্ট্রিবিউটরদের সাথে যোগাযোগ উন্নয়ন করুন। তাদের জিজ্ঞেস করুন। মিশতে শিখুন। show off করবেন না। wanna be দের তারা WTF দিয়ে উড়িয়ে দিবে। আমাদের দেশে আবার wanne be – আমেরিকানো মাস্তানো বেশী।

– মাথায় কোন প্রশ্ন আসার সাথে সাথে হুট করে জিজ্ঞেস করবেন না। প্রথমে নিজে চেষ্টা করুন, গুগল করুন। নিজে একটু চেষ্টা করুন, নিজের হোমওয়ার্ক করে নিন। তারপর জিজ্ঞেস করুন, ভয় পাবেন না। তবে, কিছুটা সচেতনতা প্রদর্শন করুন। যেনো সকলে বুঝতে পারে, আপনি জানেন আপনি কি জিজ্ঞেস করছেন, আপনি নিজে খেটে এসে তারপর জিজ্ঞেস করছেন। শেখার চেষ্টা করুন, কমিউনিটিতে কি উপায়ে কথোপকথন হয়, কি উপায়ে আলোচনা হয় তা জানুন ও শিখুন। মেইলিং লিস্টের আর্কাইভ গুলো চষে বেড়ান।

– মেইলিং লিস্ট, আইআরসি – হচ্ছে ফ্রী ও ওপেন সোর্স কমিউনিটির যোগাযোগের চ্যানেল। হ্যাঁ যদিও এগুলো প্রাগৈতিহাসিক মনে হতে পারে। এগুলো আমার-আপনার জন্মের পূর্বে এসেছে, মেনে নিন। Deal with it। কোন মেইলিং লিস্টে বা আইআরসি চ্যানেলে আপনার প্রথম প্রশ্নটি যেনো – সেই প্রকল্পের সমালোচনা না হয়। প্রতিটি ওপেন সোর্স প্রকল্প অনেক কষ্টের ফসল। কেউ চাইবে না একজন নতুন লোক এসে – ঠা ঠা ঠা গোলাগুলি আরম্ভ করে দিক। এটি বাংলাদেশি স্টাইল, দৃষ্টি আকর্ষনের সহজ উপায় গালি দেওয়া। এটি করবেন না। পছন্দ না হলে, সেই প্রকল্পে যোগদানের প্রয়োজন নেই। নয়তো – আপনাকে এক কাপ গরম গরম shut the fuck up ধরিয়ে দেওয়া হবে।

– Crash! হ্যাকার জন্ম নেবার মুহূর্ত! যখনই কিছু ক্র্যাশ করবে, আপনাকে আনন্দিত হতে হবে। আপনার কাজ হবে ক্রাশ এর stack trace নেওয়া। স্ট্যাক ট্রেস হলো, একটি প্রোগ্রাম চলাকালীন কোন এক মূহুর্তের, সক্রিয় স্ট্যাক ফ্রেম সমূহের রিপোর্ট। ইংরেজীতে বলি, Stack Trace is a report of the active stack frames at a certain point in time during the execution of a program। এই স্ট্যাক ট্রেস দিয়ে বাগ সাবমিট করুন নির্দিস্ট প্রকল্পের বাগ ট্র্যাকার এ। বিভিন্ন প্রকল্পের বাগ ট্র্যাকার:
https://bugzilla.redhat.com, https://bugzilla.mozilla.org, http://bugzilla.gnome.org, https://bugs.launchpad.net

– আপনি যা রিপোর্ট করবেন, তার পূর্বে অবশ্যই খুঁজে নিবেন একই সমস্যা অন্য কেউ রিপোর্ট করেছে কিনা। যদি করে থাকে তাহলে, সেটি সমাধান করা হয়েছে কিনা। তবে সমাধান করা হয়ে থাকলে, আপনার crash করার কতা না, কারণ সেটি তো অলরেডি ফিক্স হয়েই গেছে। আর যদি সমাধান না হয়ে থাকে, তাহলে মজা। সবাই মিলে সেটি ফিক্স করেছে, আপনিও তাদের সাথে ভিড়ে যান। আর যদি বাগটি রিপোর্ট করা না হয়ে থাকে, তাহলে বাগ সাবমিট করুন। যেকোন ওপেন সোর্স প্রকল্পে একটি বাগ সাবমিট, আপনার যোগ্যতার প্রমাণ। (আমি বিভিন্ন সময়ে ডেভেলপারদের ইন্টারভিউ নিয়ে থাকি। প্রার্থীর CV হাতে পেলে, তার নাম সার্চ দিয়ে দেখি, যদি ওনার নামে বিভিন্ন ওপেন সোর্স প্রকল্পে চার/পাঁচটি বাগ সাবমিট করা পাই। তাহলে তাকে ইন্টারভিউতে এক্সট্রা পয়েন্ট দেই।)

– হতে পারে, আপনার বাগ প্রকল্প বা কম্যুনিটি ফিক্স করবে না। বলে দিবে wontfix। মনে কষ্ট পাবেন না। যারা প্রকল্প পরিচালনা করছে, তারা তো আর আমাদের চাকুরি করে না।

– কি করবেন তাহলে! নিজেই ফিক্স করুন মানে হ্যাক করুন। সমাধান করতে পারলে, একটি patch ফাইল তৈরী করে প্রকল্পের আপস্ট্রিম সাবমিট করে দিন। কিন্তু না! এবারও হলোনা? প্রকল্প patch টি গ্রহন করলো না। কষ্ট নিয়েন না। কারণ, লোকজন নিজেদের কোডকে অনেক ভালবাসে, তারা হুট করে একজন নতুন লোকের প্যাচ নিয়ে নেয় না। তাদের কৈফিয়ত শুনুন, তাদের উপদেশ মেনে আবার কাজ করুন। লোকালি বিল্ড করুন, রান করুন, স্ক্রিনশট নিয়ে ব্লগ করুন, সোসাল ব্রডকাস্ট করুন। ব্যবহারকারীরা patch আপনার সাইট হতে নামিয়ে যখন দেখবে, এটি চলছে তারা ফিডব্যাক দিবে। বাতাস আপনার কল নাড়াবে। আর অবশেষে একদিন মুল প্রকল্পে আপনার কোডও কমিট করা হবে। আমি Worst Case Scenario বললাম। বেশিরভাগ সময় আপনার প্রথম patch টিই গ্রহন করা হবে। ঘাবড়ানোর কিছুই নেই। ;)

– ভাল কথা, আপনি যে আপনি। তার প্রমাণ কি? GPG key ব্যবহার আরম্ব করে দিন এখনই। অনেক স্থানে GPG সাইনিং ছাড়া patch গ্রহন করা হয় না।