ورود به دنیای گنو/لینوکس/مروری بر تاریخچه نرمافزارهای آزاد و گنو/لینوکس
تاریخچهٔ نرمافزارهای آزاد[۱] جزئی جداییناپذیر از مفهوم نرمافزار است زیرا در ابتدا تمامی نرمافزارها، آزاد بودند و بعدها مفهوم نرمافزارهای اختصاصی به وجود آمد. دربارهٔ تفکیک این دو مفهوم از یکدیگر و شرح تمایز آنها کمی جلوتر بهطور مفصل بحث خواهد شد. قبل از بررسی مفاهیم، فلسفه و سیاستها، لازم میدانم در این بین تعریفی از کد منبع داشته باشم.
هنگامی که یک نرمافزار جهت یک کاربردی خاص تهیه میشود آن برنامه کاربردی توسط یکی از زبانهای برنامهنویسی نزدیک به زبان انسان نوشته میشود. کد برنامهٔ نوشته شده با این زبانها که به آن کد منبع گفته میشود توسط کامپایلر و لینکر به کدهای صفرویک تبدیل میشود که قابل فهم و اجرا برای ماشین است.
تا اواسط دههٔ شصت میلادی نرمافزارها به صورت آزاد و مجانی به همراه کامپیوترها ارائه میشد و سود تولیدکنندگان تنها از راه سختافزار بود. کدهای منبع نیز آزادانه در اختیار برنامهنویسان بود، اما از سال ۱۹۶۵ شرکت آیبیام[۲] از ارائه برخی از کدهای منبع سیستمعاملهای خود جلوگیری کرد و بعدها برنامهنویسان برای کسب درآمد از نرمافزار با عقد قراردادهایی حق امتیاز انتقال نرمافزار را از یک کاربر به کاربر دیگر محدود کردند که ما امروز با بسیاری از نمونههای آن روبه رو هستیم. رفته رفته کدهای منبع به سریترین اسرار تجاری شرکتها و سرمایه شرکتهای تجاری بدل شد.
بدین شکل استفادهٔ آزادانه از کدهای منبع میسر نبود، نرمافزارها پشت درهای بسته تولید و توسعه پیدا میکردند و توسعهدهندگان نیز به دلیل قراردادهای مربوط به عدم افشای اطلاعات نمیتوانستند کدهای خود را در اختیار دیگران قرار دهند. با این روند با مواجهشدن مشکلات نرمافزاری و یا داشتن نیازهای خاص باید به تولید کنندگان مراجعه میشد که این یعنی کسب درآمد و کنترل کامل جامعهٔ کاربران از سوی شرکتها(!) در اوایل دههٔ ۸۰ میلادی در آزمایشگاه هوش مصنوعی دانشگاه امآیتی[۳] شرکتی با نام سیمبولیک تأسیس گردید. این شرکت کدی را که آزادانه در اختیار عموم قرار داشت اختصاصی اعلام کرد و فرهنگ اشتراک نرمافزار را که ریشه در همان دانشگاه داشت را محو کرد.
در سال ۱۹۸۳ ریچارد استالمن به دلیل نارضایتی از وضع موجود کار خود را در امآیتی رها کرد و یک پروژهٔ متنباز و آزاد را به نام گنو آغاز کرد. GNU مخفف بازگشتی GNU is not Unix است. این پروژه امکان ایجاد یک سیستمعامل مبتنی بر یونیکس را فراهم میکرد، دلیل انتخاب یونیکس در ساختار و امنیت بی همتا بود اما به دلیل قیمت بیسار گزاف آن هیچ کاربر خانگی قادر به تهیه و استفاده از آن نبود.
هدف استالمن به اشتراکگذاری نرمافزار بود و همکاری آزادانه برنامهنویسان مانند اوایل دههٔ ۷۰ بود که در این بین همه چیز به نفع کاربر پایان میافت. به عقیدهٔ طراح گنو هر کس باید آزادانه و بدون محدودیت بتواند از یک نرمافزار استفاده کند، آزادی در حیطه نرمافزار در ادامه مفصلاً شرح داده خواهد شد.
این تفکر توسط استالمن و همفکرانش در بنیاد نرمافزارهای آزاد[۴] که بدین منظور توسط استالمن تأسیس شد تا به امروز سرسختانه پیگیری میشود. استالمن مجوز عمومی گنو معروف به GPL را برای مقابله با سیاست نرمافزارهای اختصاصی و تضمین آزادی نرمافزار تدوین کرد، این بدین معنی است که هر نرمافزاری تحت این مجوز انتشار میابد باید ۴ آزادی اساسی را رعایت کند که در ادامه شرح داده میشود.
تا سال ۱۹۹۱ بسیاری از بخشهای گنو همچون کتابخانهها، کامپایلرها و ... کامل شده بود اما هنوز کمبود یک بخش اساسی به نام هسته برای نکمیل یک سیستمعامل منطبق با یونیکس حس میشد. هر چند پروژه موسوم به گنو هرد[۵] که بازنویسی کل هستهٔ یونیکس به صورت کاملاً شئگرا بود پیش میرفت اما تا کاملشدن آن زمان زیادی باقی بود.
در در ۲۵ آگوست ۱۹۹۱، یک دانشجوی سال دوم کامپیونر دانشگاه هلسینکی به نام لینوس توروالدز اعلام کرد که یک هستهٔ آزمایشی کوچک شبیه به مینیکس[۶] اندرو تننبام نوشتهاست که بر روی پردازندههای ۳۸۶ کار میکرد. (مینیکس یک هسته کوچک آموزشی بود که در دانشگاهها توسط دانشجویان مورد برسی قرار میگرفت و هر کس که کتاب سیستمعامل تاننباوم این پروفسور هلندی را داشت به ۱۲۰۰۰ خط کد C و اسمبلی آن نیز دسترسی داشت...) هستهٔ کوچک توروادز بعدها لینوکس نام گرفت. لینوکس نسخهٔ ۰٫۰۱ در اواسط سپتامبر ۱۹۹۱ منتشر شد و نسخهٔ ۰٫۰۲ در پنجم اکتبر، تا دسامبر، لینوکس به نسخه ۰٫۱۰ رسید و در نهایت با راهیافتن به بنیاد نرمافزارهای آزاد و کار کردن توسعه دهندگان گنو بر روی آن لینوکس تحت مجوز GPL قرار گرفت و در قلب پروژه گنو به عنوان هسته قرار گرفت و سیسستم عامل آزاد و متن باز گنو/لینوکس منتشر شد.
باز هم تاکید میشود که لینوکس هستهٔ سیستمعامل است که وظیفه کنترل سختافزار و ارتباط با آن را بر عهده دارد و به خودی خود سیستمعامل قلمداد نمیشود. نکته اینجاست که کاربران به اختصار گنو/لینوکس را لینوکس میخوانند. در صورت علاقه میتوانید مطالب بیشتری در این زمینه در مقالهٔ بحث نامگذاری گنو/لینوکس در ویکیپدیای فارسی مطالعه کنید.