بیست سال گنو/لینوکس (GNU/Linux) – شروع داستان

مقدمه. بهانه نوشتن این یادداشت بیستمین سال آغاز ایجاد هسته لینوکس است ولی نمی‌توان چیزی در مورد لینوکس نوشت و به پدیده‌های که باعث ایجاد آن شده یا لینوکس باعث ایجاد آنها شده اشاره‌ای نکرد. لینوکس امروزه دیگر یک اسم ناآشنا نیست. بسیاری از ما، آگاه یا ناآگاه، به صورت روزمره از این سیستم عامل استفاده می‌کنیم. ‌آیا تا به حال از یک گوشی با سیستم عامل آندروید (Android) شرکت گوگل را استفاده کرده‌اید؟ اهل گشتن در اینترنت هستید؟ ‌‌‌از چاپگرهای نسبتا جدید استفاده می‌کنید؟ در خانه از یک مودم ADSL برای وصل شدن به اینترنت استفاده می‌کنید؟ اگر جواب هر یک از این سوالات مثبت است، شما یک کاربر مستقیم با غیرمستقیم لینوکس هستید. قصد ما در این یادداشت بررسی پیدایش لینوکس و سیری است که در طی این بیست سال طی کرده است. اگر تا به حال فقط در گفتگوهای جسته گریخته در مورد لینوکس شنیده‌اید و دوست دارید در مورد آن بیشتر بدانید شما را به خواندن این یادداشت چند قسمتی دعوت می‌کنیم.

لینوکس چیست؟ شاید اولین سوال این باشد، لینوکس واقعا چیست؟ برای درک بهتر موضوع باید کمی در مورد مفهموم سیستم عامل صحبت کنیم. سیستم عامل همانطور که از اسم آن نیز برمی‌آید به مجموعه‌ای از نرم‌افزارها گفته می‌شود که در کنار یکدیگر به شما امکان استفاده از یک رایانه را می‌دهند. یک سیستم عامل از اجزای مختلفی تشکیل شده و می‌تواند معماری‌های مختلفی نیز داشته باشد. رایج‌ترین این معماری‌ها عبارتند از معماری مونولیتیک (Monolithic) و معماری مایکروکرنل (Microkernel). هسته لینوکس از نوع مونولیتیک است. در این معماری سیستم عامل از یک هسته به عنوان قلب سیستم و مجموعه‌ای از نرم‌افزارهای جانبی (Utility) تشکیل شده است. یک کاربر معمولی به ندرت ‌به صورت مستقیم با هسته سیستم عامل سروکار دارد. این نرم‌افزارهای کاربردی (Application) هستند که دستورات کاربر را دریافت می‌کنند. این نرم‌افزارها نیز ممکن است برای انجام وظایف خود از نرم‌افزارهای جانبی سیستم عامل ( Utility) استفاده کنند تا درخواست کاربر را اجرا کنند.

تولد پروژه گنو. چیزی که ما امروزه به عنوان لینوکس می‌شناسیم در حقیقت ترکیبی است از هسته لینوکس به اضافه مجموعه‌ای از نرم‌افزارها که توسط افراد یا سازمان‌هایی مانند بنیاد نرم‌افزارهای آزاد ‪(FSF)‬ ایجاد شده و نگهداری می‌شوند. بر خلاف تصوری که ممکن است به دلیل شنیدن اسم لینوکس به دفعات زیاد ایجاد شود، لینوکس آخرین قسمت پازلی بود که امروزه ما به عنوان یک سیستم عامل کامل از آن استفاده می‌کنیم. داستان ما از سال ۱۹۸۳ شروع می‌شود، هنگامی که ریچارد ماتیو استالمن (Richard Matthew Stallman)که در دانشگاه MIT به عنوان پژوهشگر مشغول به کار بود احساس کرد باید تغییری ایجاد کند. تا آن زمان مفهوم حق مولف و مالکیت معنوی تبدیل به موضوع دست‌وپاگیری نشده بود ولی اوضاع در حال تغییر بود. شرکت‌های بزرگ که رفته‌رفته به اهمیت اطلاعات و نرم‌افزار به عنوان دارایی راهبردی دوران جدید پی برده بودند با هدف تامین منافع خود تلاش داشتند وضعیت را تغییر دهند. آنها برنامه‌نویس‌ها و پژوهشگرها رو مجبور می‌کردند قراردادهای عدم افشا اسراری (NDA) امضا کنند که آنها را از حتی صحبت کردن در مورد کارشان با دوستان و همکارانشان منع می‌کرد.

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

اولین نرم‌افزاری که استالمن نوشت ویرایشگری به نام ایمکس(Emacs) بود که تا به امروز یکی از محبوبترین ویرایشگرها در بین کاربران لینوکس و بخصوص برنامه‌نویس‌هاست. او سپس کار بر روی GCC را آغاز کرد که در ابتدا تنها یک کامپایلر برای زبان C بود ولی امروزه به مجموعه‌ای از کامپایلر ها تبدیل شده است. تا سال ۱۹۹۱ استالمن و برنامه‌نویسان دیگری که به او ملحق شده بودند مجموعه‌ای از ابزارها را تولید کرده بودند که قادر به انجام بسیاری از فعالیت‌های مورد نیاز رایانه بودند. به خاطر داشته باشیم که در آن زمان گزینه‌های زیادی برای سیستم عامل وجود نداشتند و کار با هیچکدام از آنها برای کاربران عادی ممکن نبود. حتی سیستم عامل‌هایی مانند Amiga OS یا Mac OS با وجود داشتن پوسته گرافیکی نیاز به حداقلی از دانش و اطلاعات نزد کاربر داشتند. سیستم عامل DOS هم یک سیستم عامل کاملا متنی بود.

تاسیس بنیاد نرم‌افزارهای آزاد. سال ۱۹۸۵ سال تاسیس بنیاد نرم‌افزارهای آزاد (FSF) بود. این بنیاد که توسط استالمن تاسیس شد تلاش دارد تا در ترویج هر چه بیشتر نرم‌افزار آزاد تلاش کند. شاید این سوال پیش بیاید که نرم‌افزار آزاد دقیقا به چه معناست؟ طبق تعریف ارائه‌شده توسط بنیاد نرم‌‌افزار آزاد، یک نرم‌افزار باید ۴ خاصیت داشته باشد تا نرم‌افزار آزاد تلقی شود. این آزادی‌ها عبارتند از:

آزادی صفر – آزادی برای اجرا کردن نرم‌افزار با هر هدفی
آزادی یک – آزادی برای مطالعه چگونگی کار کردن برنامه و تغییر آن برای انجام دادن کاری که شما مایل هستید انجام بدهد. برای انجام این کار دسترسی به کد منبع (Source Code) نرم‌افزار یک پیش‌نیاز است.
آزادی دو – آزادی برای انتشار نسخه‌هایی از نرم‌افزار با هدف کمک کردن به «دیگران» (کلمه‌ای که بنیاد نر‌م‌افزارها استفاده کرده است «همسایه» است. نرم‌افزار آزاد یک جنبش کاملا اجتماعی است و اهمیت زیادی برای رابطه بین انسان‌ها قائل است)
آزادی سه – آزادی انتشار نسخه‌هایی از نرم‌افزار که در آن تغییر ایجاد کرده‌اید. از این طریق شما به جامعه کاربران امکان می‌دهید که از تغییرات شما استفاده کنند. برای انجام این کار دسترسی به کد منبع نرم‌افزار یک پیش‌نیاز است.
شروع مجوزهای آزاد. در همین زمان استالمن به این نتیجه رسیده بود که مجوز‌های (License) نرم‌افزاری به مرور تبدیل به مشکل بزرگی شده‌اند. او می‌دانست که اگر بخواهد در کار خود موفق شود نیاز به مقابله با این مجوزها دارد. او پس از بررسی به این نتیجه رسید که بهترین راه مقابله با این مجوزها ایجاد یک مجوز آزاد است. استالمن در حقیقت پایه‌گذار مفهموم Copyleft در مقال مفهوم Copyright است. Copyleft به این مفهوم است که شما مجوزی ایجاد می‌کنید و در آن مجموعه‌ای از آزادی‌ها (در مقابل محدودیت‌هایی که معمولا مجوزها ایجاد می‌کنند) را تعریف می‌کنید. در مرحله بعدی شما نرم‌افزار یا هر اثر دیگری را تحت این مجوز Copyleft منتشر می‌کنید. یکی از موارد مهم در مجوزهای Copyleft این است که شما در عین حال که به بقیه آزادی در استفاده از اثر خود را می‌دهید آنها را ملزم می‌کنید در صورتی که قصد انتشار آن اثر یا شکلی تغییریافته از آن را دارند باید آن را به همراه آن مجوز و تحت آن منتشر کنند. در نتیجه این آزادی همواره به همراه اثر خواهد بود و از بین نمی‌رود.
در آن زمان هیچ مجوز آزادی وجود نداشت در نتیجه استالمن خودش دست به کار شد و اولین نمونه از این مجوزها را نوشت. این مجوز در ابتدای کار به عنوان یکی از فصل‌های راهنمای نرم‌افزار Emacs و به همراه آن منتشر شد ولی در سال ۱۹۸۹ به صورت یک سند مستقل به عنوان نسخه ۱ مجوز GPL منتشر شد. این مجوز آنگونه که بروس پرنس(Bruce Perens)، از پیشگامان نرم‌افزارهای آزاد و بازمتن، گفته از این نظر منحصربفرد بود که تا آن زمان تمامی مجوزهای موجود با دیدگاه محافظت از منافع یک شرکت و یا سازمان نوشته شده بودند در حالیکه GPL با دیدگاه محافظت از منافع جامعه کاربران نوشته شده و هدف آن صرفا حفظ آزادی آنها است، نه یک گروه محدود یا سهامداران یک شرکت. GPL در حقیقت شروع‌کننده مجوزهای آزاد یا متن‌باز بسیاری بود که بعدها به وجود آمدند.
تکه گم‌شده پازل. قسمتی که شاید طنزآمیز به نظر بیاید این است که آن‌ها فقط یک ابزار دیگر نیاز داشتند تا بتوانند یک سیستم عامل ایجاد کنند، هسته یا همان قلب سیستم عامل. واقعیت این بود که آن‌ها کار بر بروی یک هسته را نیز شروع کرده بودند. تنها مشکل این بود که آنها برای هسته خود از معماری Microkernel استفاده کردند. این معماری با وجود بسیار مدرن بودن از نظر گسترش مشکلاتی دارد. عیب‌یابی و ایجاد اصلاحات در این معماری بسیار مشکل است در حدی که هیچ یک از سیستم عامل‌های مطرح از این معماری به صورت خالص برای هسته خود استفاده نمی‌کنند. همین موضوع باعث شده هسته Hurd حتی تا به امروز به وضعیت عملیاتی نرسد. این موضوع به مرور تبدیل به مشکل بزرگی شد. تا زمانی که هسته‌ای وجود نداشت که ابزارهای ایجادشده بتوانند روی آن سوار شوند عملا امکان ایجاد یک سیستم‌عامل آزاد وجود نداشت.