لینوکس و پروژهی گنو
نوشتهی ریچارد استالمن
بسیاری از کاربران کامپیوتر٬ بدون اینکه خود متوجه باشند٬ هر روزه از یکی از نسخههای تغییریافتهی
سیستم گنو (۱۸ کاراکتر) استفاده میکنند. بر اثر تغییرات عجیبِ وقایع٬ امروزه نسخهی سیستم گنویی که بصورت گسترده مورد استفاده قرار میگیرد با عنوان «لینوکس» شناخته میشود٬ در حالیکه بسیاری از کاربران از وسعت ارتباط و پیوستگی آن با
پروژهی گنو آگاه نیستند.
لینوکس واقعا وجود دارد و این کاربران از آن استفاده میکنند٬ اما آن یک سیستمعامل نیست. لینوکس یک هسته است: برنامهای که در سیستم٬ منابع ماشین را به برنامههایی که اجرا میکنید تخصیص میدهد. هسته یک قسمت ضروری یک سیستمعامل میباشد اما به تنهایی بیفایده است و تنها در متنِ [به همراه] یک سیستمعامل کامل میتواند کار کند. بطور عادی لینوکس در ترکیب با سیستمعامل گنو بکار برده میشود: بطور اساسی کل سیستم گنو میباشد٬ به علاوهی لینوکس که به عنوان هسته عمل میکند.
بسیاری از کاربران بطور کامل از تفاوت بین هسته که لینوکس میباشد و کل سیستم که آنها آنرا نیز «لینوکس» میخوانند٬ آگاه نیستند. استفادهی مبهم از این نام آگاهی را افزایش نمیدهد. این کاربران گاهی اوقات حتی فکر میکنند که لینوس توروالدز در سال ۱۹۹۱ با کمی کمک٬ تمام سیستمعامل را توسعه داد.
عموما برنامهنوسان میدانند که لینوکس یک هسته است. اما از آنجاییکه شنیدهاند کل سیستم را «لینوکس» صدا میزنند٬ اغلب پیشینهای در ذهن خود ایجاد میکنند که نام نهادن کل سیستم بعد از ایجاد هسته را توجیح میکند. برای نمونه بسیاری اعتقاد دارند که هنگامیکه لینوس توروالدز کار نوشتن هسته را به اتمام رساند٬ کاربران آن به دنبال نرمافزارهایی بودند که با آن کار کنند٬ و بیشتر موارد لازم برای ساختن یک سیستم شبه یونیکس را که از قبل فراهم بود پیدا کردند (بدون هیچ دلیلی).
اما چیزی که آنها پیدا کردند تصادفی نبود٬ آن سیستم گنو بود.
نرمافزارهای آزادِ موجود٬ برای یک سیستم کامل جمعآوری شده بودند٬ زیرا پروژهی گنو از سال ۱۹۸۴ برای ساختن یک سیستم کامل مشغول فعالیت بود.
اعلامیهی گنو (۳۱k کاراکتر) تعیین و تنظیم اهداف توسعهی یک سیستم آزاد شبه یونیکس با نام گنو را قبلا آغاز کرده بود.
نخستین اعلان پروژهی گنو نیز طرحهای اصلی سیستم گنو را برنامهریزی کرده بود. هنگامیکه لینوکس نوشته شد سیستم گنو تقریبا تکمیل شده بود.
بیشتر پروژههای نرمافزارهای آزاد دارای هدف توسعهی یک برنامهی بخصوص برای یک کار بخصوص هستند. برای نمونه لینوس توروالدز برای نوشتن یک هستهی شبه یونیکس (لینوکس)٬ Donald Knuth برای نوشتن یک قالب متن (TeX) و Bob Scheifler برای توسعهی یک سیستم پنجره (سیستم پنجرهی X) شروع به کار کردند. این طبیعی است که بخواهیم میزان کمک و همکاری این پروژهها را در برنامههایی که از این پروژهها بوجود آمدهاند اندازه بگیریم.
اگر بخواهیم میزان همکاری پروژههای گنو را به این طریق محاسبه کنیم٬ چه نتیجهای ممکن است بگیریم؟ یکی از فروشندگان سیدی متوجه شد که در «توزیع لینوکس» آنها٬
نرمافزارهای گنو بیشترین سهم را داشتهاند٬ چیزی در حدود ۲۸٪ از کل کدهای منبع که شامل اجزاء اصلی و ضروری سیستم میباشد و بدون آنها دیگر سیستمی وجود نخواهد داشت. خود لینوکس در حدود ۳٪ میباشد. بنابراین اگر میخواهید برای سیستم بر اساس اسم کسانی که برای سیستم برنامه نوشتهاند نامی انتخاب کنید٬ تنها انتخاب مناسب «گنو» میباشد.
اما ما فکر نمیکنیم که این گونه مطرح کردن پرسش٬ درست باشد. پروژهی گنو پروژهای برای توسعهی یک بستهی نرمافزاری خاص نبوده و نیست. پروژهای برای
توسعهی کامپایلر C نیست٬ اگر چه ما این کار را انجام دادیم. پروژهای برای توسعهی یک ویرایشگر متن نیست٬ اگر چه ما یکی را توسعه دادیم. بلکه پروژهی گنو در نظر دارد تا یک سیستم کامل و آزاد شبه یونیکس (گنو) را توسعه دهد.
در این سیستم افراد بسیاری کمکهای زیادی به نرمافزار آزاد کردهاند و همگی سزاوار اعتبارند. اما دلیل اینکه سیستم گنو یک سیستم مجتمع است و فقط یک مجموعه از برنامههای مفید نیست این است که پروژهی گنو میخواهد آن را «واحد» کند. ما لیستی از برنامههایی که نیاز داریم تا یک سیستمِ کاملِ آزاد ایجاد کنیم تهیه کردیم و بطور اصولی همهی چیزهایی که در آن لیست بود را پیدا کردیم٬ نوشتیم و یا افرادی را پیدا کردیم تا این کار را انجام دهند. ما اجزای ضروری اما غیر جذاب
(۱) را نوشتیم٬ زیرا بدون آنها نمیتوانستید یک سیستم داشته باشید. بعضی از اجزای سیستم ما مانند ابزارهای برنامهنویسی در بین برنامهنویسان محبوب شدند اما ما اجزای بسیار دیگری که ابزار نیستند را نیز نوشتیم
(۲). ما حتی یک بازی شطرنج به نام "GNU Chess" را نیز توسعه دادیم٬ زیرا یک سیستم کامل به بازیهای خوب نیز احتیاج دارد.
در اوایل دههی ۹۰ ما تمام سیستم بجز هسته را در کنار هم قرار دادیم (ما همچنان بر روی هستهی
گنو هرد کار میکردیم). توسعهی این هسته سختتر از چیزی بود که انتظار داشتیم و سرانجام
گنو هرد در سال ۲۰۰۱ بطور قابل اعتماد شروع به کار کرد. اکنون ما شروع کردهایم تا انتشار واقعی سیستم گنو با هستهی گنو هرد را مهیا کنیم.
خوشبختانه لازم نیست منتظر هرد بمانید٬ زیرا لینوکس در دست است. هنگامیکه لینوس توروالدز لینوکس را نوشت٬ آخرین خلاء عمده را پر کرد. بنابراین افراد توانستند با قرار دادن لینوکس در کنار سیستم گنو یک سیستمِ کاملِ آزاد ایجاد کنند: یک نسخهی مبتنی بر لینوکس از سیستم گنو یا به اختصار یک سیستم گنو/لینوکس. خبرهای اولیهی انتشار لینوکس تصدیق میکنند که لینوکس یک هسته بود و با اجزای گنو به کار برده میشد:
«اغلب ابزارهایی که با لینوکس استفاده میشوند نرمافزارهای گنو و تحت مجوز گنو کپیلفت میباشند. این ابزارها بر روی لینوکس نیستند. برای اطلاعات بیشتر از من (یا گنو) سوال کنید.»
در کنار هم قرار دادن آنها ساده به نظر میرسد اما این یک کار ساده و ناچیز نیست. بعضی از اجزای گنو
(۳) برای کار کردن با لینوکس به تغییرات قابل توجهی احتیاج داشتند. مجتمع کردن یک سیستم کامل به عنوان یک توزیع که بطور صحیح کار کند نیز کار بزرگی است. همچنین به آدرسدهی و نحوهی نصب و بوت کردن سیستم نیز احتیاج بود٬ مشکلی که ما تا به حال با آن روبرو نشدهایم زیرا هنوز به آن مرحله نرسیدهایم. کسانی که توزیعهای مختلفی را توسعه دادند کمک قابل توجهی کردند.
پروژهی گنو از سیستم گنو/لینوکس به خوبیِ سیستم گنو پشتیبانی میکند٬ حتی با سرمایهگذاری. ما بر روی بازنویسیِ الحاقاتِ مربوط به لینوکسِ کتابخانهی C گنو سرمایهگذاری کردیم٬ در نتیجه اکنون آنها به خوبی با یکدیگر سازگار هستند و جدیدترین سیستمهای گنو/لینوکس٬ بدون هیچ تغییری از نسخهی جاری کتابخانه استفاده میکنند. ما همچنین بر روی توزیع گنو/لینوکس دبیان نیز سرمایهگذاری کردیم.
ما امروز برای بیشتر کارهای خود از سیستم گنویِ مبتنی بر لینوکس استفاده میکنیم و امیدواریم شما نیز از آن استفاده کنید. اما لطفاً عموم را با استفادهی دوپهلو از اسم «لینوکس» گیج نکنید. لینوکس هسته است٬ یکی از اجزاء اصلی و ضروری سیستم. کل سیستم یک سیستم گنو میباشد که لینوکس به آن اضافه شده است. هنگامیکه در مورد این ترکیب صحبت میکنید لطفاً آنرا «گنو/لینوکس» بخوانید.
اگر میخواهید بر روی «گنو/لینوکس» لینکی به عنوان مرجع بگذارید٬ این صفحه و نیز
http://www.gnu.org/gnu/the-gnu-project.html انتخابهای مناسبی میباشند. اگر به «لینوکس» به عنوان هسته اشاره کردید و خواستید لینکی به عنوان مرجع به آن اضافه کنید
http://foldoc.doc.ic.ac.uk/foldoc/foldoc.cgi?Linux یک آدرس خوب برای استفاده میباشد.
ضمیمه: بجز گنو٬ پروژهی دیگری بطور مستقل یک سیستمعامل آزاد شبه یونیکس تولید کرده است. این سیستم با عنوان BSD شناخته میشود و در دانشگاه برکلی توسعه پیدا میکند. این سیستم در دههی ۸۰ آزاد نبود اما در اوایل دههی ۹۰ آزاد شد. امروزه سیستمعاملهای آزادِ موجود٬ اغلب یا یک نوع سیستم گنو میباشند و یا یک نوع سیستم BSD.
گاهی اوقات مردم سوال میکنند که آیا BSD نیز مانند گنو/لینوکس یک نسخه از سیستم گنو میباشد. توسعهدهندگان BSD با الهام گرفتن از پروژهی گنو کدهای خود را آزاد کردند٬ و درخواستهای آشکار طرفداران گنو آنها را برای انجام این کار ترغیب کرد٬ اما کد آن با کد گنو اشتراک کمی دارد. امروزه درست همانگونه که سیستم گنو و انواع آن از بعضی برنامههای BSD استفاده میکنند٬ سیستمهای BSD نیز از بعضی از برنامههای گنو استفاده میکنند. اما با این حال با در نظر گرفتن کل آنها٬ آنها دو سیستم متفاوت میباشند که جداگانه رشد کردهاند. توسعهدهندگان BSD هستهای ننوشتهاند و آنرا به سیستم گنو اضافه نکردهاند٬ بنابراین نامی مانند GNU/BSD برای این وضعیت متناسب نیست.
[اگر میخواهید در این باره اطلاعات بیشتری بدست بیاورید میتوانید صفحهی
FAQ گنو/لینوکس ما را نیز مطالعه کنید.]
پینوشتها:
- اجزای غیر جذاب اما ضروری شامل GNU assembler ٬ GAS و لینکر ٬ GLD ٬ که اکنون هر دو جزو بستهی GNU Binutils میباشند٬ GNU tar و غیره میباشد.
- برای نمونه The Bourne Again SHell (همان BASH)٬ مفسر پستاسکریپت Ghostscript و کتابخانهی C گنو و همچنین GNUCash ٬ GNOME و GNU Chess نیز ابزارهای برنامهنویسی نیستند.
- برای نمونه کتابخانهی C گنو.
منبع
http://www.gnu.org/gnu/linux-and-gnu.fa.html