«من می خوام برنامه نویس کرنل بشم، چیکار باید بکنم؟»

آرمان پرسیده:

من یه سوالی ازت داشتم و میخواستم بدونم، اگه بخوام برنامه نویس کرنل بشم چه مسیری رو باید برم، و اگه سایت یا کتاب خوبی در این زمینه میشناسی لطفا معرفی کن، در واقع من دوست دارم که در آینده جز برنامه نویسای حرفه‌ای کرنل بشم. زبان برنامه نویسی C و ++C را هم کار کردم و میتونم ازشون سر در بیارم.

این سوال شبیه اینه که از یک راننده خطی بین شهری که با ماشینش خیلی حال می کنه بپرسی «من می خوام راننده فرمول یک بشم و یک کتاب هم در مورد موتور ماشین خوندم، به نظر شما باید چیکار کنم؟» (: بدون شک برای برنامه نویسی کرنل باید سی رو بسیار خوب بلد باشی ولی علاوه بر اون لازمه که از سیستم عامل هم خیلی خیلی دقیق سر در بیاری چون تقریبا کار نکرده در کرنل نیست و اینطوری نیست که یکسری روتین باشه و منتظر باشن یکی بیاد اونها رو بنویسه. یک برنامه نویس کرنل باید خودش ایده هایی برای بهبود وضعیت موجود هم داشته باشه.

در ضمن برای مشارکت در تیمی مثل تیم توسعه کرنل، لازمه زبان آدم هم در حد قابل قبولی باشه و بتونه راحت بخونه و منظورش رو برسونه ولی به نظر من اصلی ترین مشکل برای کسانی که هیجان اضافه شدن به برنامه نویسی کرنل لینوکس رو دارن، اینه که باید پشتکار داشته باشن. واقعیت اینه که برنامه نویسی کرنل خیلی هم چیز عجیبی نیست و حتی کارهای تمیزکاری و بازنویسی با پرفرمنس بهتر لوپ ها و اینها هست که ممکنه یک برنامه نویس خوب (و نه فوق العاده) از عهده اش بر بیاد ولی اینکار پشتکار می خوأد و این پشتکار اتفاقا معمولا حلقه گم شده جریانه!

برنامه نویس کرنل فانتزی هیجان انگیزی است و آدم دوست داره این رو روی تی شرتش بنویسه ولی آیا واقعا می دونیم داریم از چی حرف می زنیم؟ یکسری آدم خیلی خیلی حرفه ای دارن با هم کار می کنن و تو می ری می گی «منم بازی بدین» و معلومه که اونها با ذوق نمی گن «وای چه خوب یه تازه کار!». برنامه نویس کرنل در اوایل کارش حقوق مستقیم نمی گیره، با اینترنت ایران دست و پنجه نرم می کنه که یک فایل رو آپلود دانلود کنه، باهاش خشن برخورد می شه و اگر کوچکترین اشتباهی در پچ کنه احتمالا شدیدا توی ذوقش زده می شه. چنین آدمی بدون شک باید پر از پشتکار باشه و علاقه اش چیزی بیشتر از جلت توجه دیگران یا یک عنوان باکلاس باشه. دقت کن که تا جایی که من می دونم ما در جامعه لینوکسی مون یک برنامه نویس کرنل لینوکس هم نداریم (که به کرنل کانتریبویت کنه) پس منطقا نباید چیز راحتی باشه (:

ولی اگر می خوای بهترین قدم ها به نظرم اینه که اول سورس کرنل لینوکس رو دانلود کنی و کمپایلش کنی و روی سیستم خودت نصب کنی تا کلی از دردسرها رو ببینی. بعد سری به باگ ترکر کرنل بزنی تا ببینی که وقتی از برنامه نویسی کرنل حرف می زنیم از چی حرف می زنیم و در نهایت مدتی گروه های پستی کرنل لینوکس رو زیرنظر داشته باشی و توی بخش های مورد علاقه عضو بشی و کرنل پلنت رو هم بخونی تا اصولا دستت بیاد این جامعه،‌ چه می کنه. راستی.. فرستادن هر جور ایمیل حاوی HTML (یعنی تقریبا صد در صد ایمیل هایی که من در سال گذشته فرستادم) در میلینگ لیست های کرنل باعث قطع دسترسی ات می شه!

خلاصه؟ کار راحتی نیست و جدیت می خواد و حوصله ولی غیرممکن هم نیست اما باید ببینی اصولا آیا این چیزی بیشتر از یک فانتزی است؟ اگر جواب بله است با قدم ها بالا برو سراغش که ببینی اصلا چطوریه.

ببینم دوستان.. کسی رو داریم به کرنل لینوکس چیزی اضافه کرده باشه؟ احتمالا خیلی ها نظرات دقیقتری از من دارن که خوشحال می شم به اشتراک بذارن.