این ترجمه ممکن است شامل تغییرات ایجادشده از تاریخ 2010-09-23 در نسخهٔ اصلی انگلیسی نباشد.
لطفا راهنمای ترجمه را برای اطلاعات بیشتر دربارهٔ نگهداری ترجمههای این مقاله ببینید.
لینوکس و سیستم گنو
نوشتهٔ ریچارد استالمن
برای اطلاعات بیشتر همچنین میتوانید سوالات رایج گنو/لینوکس، و چرا گنو/لینوکس؟ را ببینید.
بسیاری از کاربران کامپیوتر بدون اینکه خود متوجه باشند هر روزه از یکی از نسخههای تغییریافته سیستم گنو استفاده میکنند. بر اثر تغییرات عجیبِ وقایع، امروزه نسخه سیستم گنویی که بصورت گسترده مورد استفاده قرار میگیرد با عنوان «لینوکس» شناخته میشود، و بسیاری از کاربران آگاه نیستند که این سیستم به طور اساسی سیستم گنو است، که توسط پروژه گنو توسعه یافته است.
لینوکس واقعا وجود دارد و این کاربران از آن استفاده میکنند، اما لینوکس تنها بخشی از سیستمی است که آنان استفاده میکنند. لینوکس یک هسته است: برنامهای که در سیستم منابع ماشین را به برنامههایی که اجرا میکنید تخصیص میدهد. هسته یک قسمت ضروری یک سیستمعامل میباشد اما به تنهایی بیفایده است و تنها در متنِ یک سیستمعامل کامل میتواند کار کند. بطور عادی لینوکس در ترکیب با سیستمعامل گنو بکار برده میشود: بطور اساسی کل سیستم گنو است، به علاوه لینوکس که به عنوان هسته عمل میکند، به طور خلاصه گنو/لینوکس. تمام آنچه توزیعهای «لینوکس» نامیده میشوند در حقیقت توزیعهای گنو/لینوکس هستند.
بسیاری از کاربران بطور کامل از تفاوت بین هسته که لینوکس میباشد و کل سیستم که آنها آن را نیز «لینوکس» میخوانند، آگاه نیستند. استفاده مبهم از این نام آگاهی را افزایش نمیدهد. این کاربران گاهی اوقات حتی فکر میکنند که لینوس توروالدز در سال ۱۹۹۱ با کمی کمک تمام سیستمعامل را توسعه داد.
عموما برنامهنوسان میدانند که لینوکس یک هسته است. اما از آنجاییکه شنیدهاند کل سیستم «لینوکس» نامیده میشود، اغلب پیشینهای در ذهن خود ایجاد میکنند که نام نهادن کل سیستم با نام هسته را توجیح میکند. برای نمونه بسیاری اعتقاد دارند که هنگامیکه لینوس توروالدز کار نوشتن هسته را به اتمام رساند، کاربران آن به دنبال نرمافزارهایی بودند که با آن کار کنند، و بیشتر موارد لازم برای ساختن یک سیستم شبه یونیکس را که از قبل فراهم بود پیدا کردند (بدون هیچ دلیلی).
اما چیزی که آنها پیدا کردند تصادفی نبود—آن سیستم گنو بود. نرمافزارهای آزادِ موجود برای یک سیستم کامل جمعآوری شده بودند، زیرا پروژه گنو از سال ۱۹۸۴ برای ساختن یک سیستم کامل مشغول فعالیت بود. در بیانیهٔ گنو هدف خود که توسعهٔ یک سیستم آزاد مشابه یونیکس است را مشخص کرده بودیم. نخستین اعلان پروژه گنو نیز طرحهای اصلی سیستم گنو را برنامهریزی کرده بود. هنگامیکه لینوکس نوشته شد سیستم گنو تقریبا تکمیل شده بود.
بیشتر پروژههای نرمافزارهای آزاد دارای هدف توسعه یک برنامه بخصوص برای یک کار بخصوص هستند. برای نمونه لینوس توروالدز برای نوشتن یک هسته شبه یونیکس (لینوکس)؛ Donald Knuth برای نوشتن یک قالب متن (TeX) و Bob Scheifler برای توسعه یک سیستم پنجره (سیستم پنجره X) شروع به کار کردند. این طبیعی است که بخواهیم میزان کمک و همکاری این پروژهها را در برنامههایی که از این پروژهها بوجود آمدهاند اندازه بگیریم.
اگر بخواهیم میزان همکاری پروژههای گنو را به این طریق محاسبه کنیم، چه نتیجهای ممکن است بگیریم؟ یکی از فروشندگان سیدی متوجه شد که در «توزیع لینوکس» آنها نرمافزارهای گنو بیشترین سهم را داشتهاند، چیزی در حدود ٪۲۸ از کل کدهای منبع که شامل اجزاء اصلی و ضروری سیستم میباشد و بدون آنها دیگر سیستمی وجود نخواهد داشت. خود لینوکس در حدود ٪۳ بود. (این تناسب در سال ۲۰۰۸ نیز به همین صورت است: در مخازن «اصلی» توزیع gNewSense، لینوکس ٪۱/۵ و بستههای گنو ٪۱۵ هستند) بنابراین اگر میخواهید برای سیستم بر اساس اسم کسانی که برای سیستم برنامه نوشتهاند نامی انتخاب کنید، تنها انتخاب مناسب «گنو» میباشد.
اما این درستترین روش برای مطرح کردن این پرسش نیست. پروژهٔ گنو پروژهای برای توسعه یک بسته نرمافزاری خاص نبوده و نیست. پروژهای برای توسعه کامپایلر C نیست، اگر چه ما این کار را انجام دادیم. پروژهای برای توسعه یک ویرایشگر متن نیست، اگر چه ما یکی را توسعه دادیم. بلکه پروژه گنو در نظر دارد تا یک سیستم کامل و آزاد شبه یونیکس (گنو) را توسعه دهد.
در این سیستم افراد بسیاری کمکهای زیادی به نرمافزار آزاد کردهاند و همگی سزاوار اعتبارند. اما دلیل اینکه سیستم گنو یک سیستم مجتمع است و فقط یک مجموعه از برنامههای مفید نیست این است که پروژهٔ گنو میخواهد آن را «واحد» کند. ما لیستی از برنامههایی که نیاز داریم تا یک سیستمِ کاملِ آزاد ایجاد کنیم تهیه کردیم و بطور اصولی همهٔ چیزهایی که در آن لیست بود را پیدا کردیم، نوشتیم و یا افرادی را پیدا کردیم تا این کار را انجام دهند. ما اجزای ضروری اما غیر جذاب (۱) را نوشتیم، زیرا بدون آنها نمیتوانستید یک سیستم داشته باشید. بعضی از اجزای سیستم ما مانند ابزارهای برنامهنویسی در بین برنامهنویسان محبوب شدند اما ما اجزای بسیار دیگری که ابزار نیستند را نیز نوشتیم (۲). ما حتی یک بازی شطرنج به نام GNU Chess را نیز توسعه دادیم، زیرا یک سیستم کامل به بازیهای خوب نیز احتیاج دارد.
در اوایل دهه ۹۰ ما تمام سیستم بجز هسته را در کنار هم قرار دادیم. همچنین کار بر روی هستهٔ گنو هرد را نیز آغاز کرده بودیم. توسعهٔ این هسته سختتر از چیزی بود که انتظار داشتیم و سرانجام گنو هرد در سال ۲۰۰۱ بطور قابل اعتماد شروع به کار کرد، اما هنوز راه زیادی در پیش است تا آن را برای استفادهٔ عموم مردم آماده کنیم.
خوشبختانه لازم نبود منتظر هرد بمانیم، زیرا لینوکس در دست است. هنگامیکه لینوس توروالدز لینوکس را نوشت، آخرین خلاء عمده را پر کرد. بنابراین افراد توانستند با قرار دادن لینوکس در کنار سیستم گنو یک سیستمِ کاملِ آزاد ایجاد کنند: یک نسخه مبتنی بر لینوکس از سیستم گنو یا به اختصار یک سیستم گنو/لینوکس.
در کنار هم قرار دادن آنها ساده به نظر میرسد اما این یک کار ساده و ناچیز نیست. بعضی از اجزای گنو (۳) برای کار کردن با لینوکس به تغییرات قابل توجهی احتیاج داشتند. مجتمع کردن یک سیستم کامل به عنوان یک توزیع که بطور صحیح کار کند نیز کار بزرگی است. همچنین به آدرسدهی و نحوهٔ نصب و بوت کردن سیستم نیز احتیاج بود، مشکلی که ما تا آن زمان با آن روبرو نشده بودیم، زیرا هنوز به آن مرحله نرسیده بودیم. کسانی که توزیعهای مختلفی را توسعه دادند کمک قابل توجهی کردند. اما مطابق طبیعت کارها، این کاری بود که باید توسط شخصی انجام میگرفت.
پروژه گنو از سیستم گنو/لینوکس به خوبیِ سیستم گنو پشتیبانی میکند. بنیاد نرمافزارهای آزاد بر روی بازنویسیِ الحاقاتِ مربوط به لینوکسِ کتابخانه C گنو سرمایهگذاری کرد، در نتیجه اکنون آنها به خوبی با یکدیگر سازگار هستند و جدیدترین سیستمهای گنو/لینوکس بدون هیچ تغییری از نسخهٔ جاری کتابخانه استفاده میکنند. همچنین بنیاد نرمافزارهای آزاد بر روی مراحل اولیهٔ توسعهٔ توزیع گنو/لینوکس دبیان نیز سرمایهگذاری کرده است.
امروزه انواع مختفلی از سیستم گنو/لینوکس (که اغلب «توزیع» نامیده میشوند) وجود دارد. بیشتر آنها شامل نرمافزارهای غیر آزاد نیز میشوند—توسعهدهندگانشان فلسفهٔ لینوکس را دنبال میکنند و نه فلسفهٔ گنو را. اما توزیعهای کاملا آزاد نیز وجود دارد. بنیاد نرمافزارهای آزاد gNewSense را حمایت میکند.
ساخت یک توزیع گنو/لینوکسِ آزاد تنها با حذف نرمافزارهای غیرآزاد مختلف میسر نمیشود. امروزه، نسخههای معمول لینوکس شامل برنامههای غیر آزاد نیز میشوند. هنگامی که سیستم شروع به کار میکند این برنامهها درون دستگاههای ورودی/خروجی بارگذاری میشوند، و «کد منبع» لینوکس شامل تعداد زیادی از آنها است. بنابراین، داشتن یک توزیع آزاد از گنو/لینوکس مستلزم داشتن نسخهای آزاد از لینوکس نیز است.
چه از گنو/لینوکس استفاده میکنید و چه نمیکنید، لطفا با استفاده دوپهلو از نام «لینوکس» عموم مردم را گیج نکنید. لینوکس هسته است، یکی از اجزاء اصلی و ضروری سیستم. کل سیستم یک سیستم گنو میباشد که لینوکس به آن اضافه شده است. هنگامیکه در مورد این ترکیب صحبت میکنید لطفاً آنرا «گنو/لینوکس» بخوانید.
اگر میخواهید بر روی «گنو/لینوکس» لینکی به عنوان مرجع بگذارید، این صفحه و نیز http://www.gnu.org/gnu/the-gnu-project.html انتخابهای مناسبی میباشند. اگر به «لینوکس» به عنوان هسته اشاره کردید و خواستید لینکی به عنوان مرجع به آن اضافه کنید http://foldoc.org/linux یک آدرس خوب برای استفاده است.
ضمیمه
بجز گنو، پروژه دیگری بطور مستقل یک سیستمعامل آزاد شبه یونیکس تولید کرده است. این سیستم با عنوان BSD شناخته میشود و در دانشگاه برکلی توسعه پیدا میکند. این سیستم در دهه ۸۰ آزاد نبود اما در اوایل دهه ۹۰ آزاد شد. امروزه سیستمعاملهای آزادِ موجود اغلب یا یک نوع سیستم گنو میباشند و یا یک نوع سیستم BSD.
گاهی اوقات مردم سوال میکنند که آیا BSD نیز مانند گنو/لینوکس یک نسخه از سیستم گنو میباشد. توسعهدهندگان BSD با الهام گرفتن از پروژهٔ گنو کدهای خود را آزاد کردند، و درخواستهای آشکار طرفداران گنو آنها را برای انجام این کار ترغیب کرد، اما کد آن با کد گنو اشتراک کمی دارد. امروزه درست همانگونه که سیستم گنو و انواع آن از بعضی برنامههای BSD استفاده میکنند، سیستمهای BSD نیز از بعضی از برنامههای گنو استفاده میکنند. اما با این حال با در نظر گرفتن کل آنها، آنها دو سیستم متفاوت میباشند که جداگانه رشد کردهاند. توسعهدهندگان BSD هستهای ننوشتهاند و آنرا به سیستم گنو اضافه نکردهاند، بنابراین نامی مانند GNU/BSD برای این وضعیت متناسب نیست.(۵)
یادداشتها
- این اجزای غیر جذاب اما ضروری شامل GNU assembler (GAS) و لینکر (GLD)، که هردو هم اکنون جزئی از بستهٔ GNU Binutils هستند، GNU tar، و بسیاری میشود.
- برای نمونه، Bourne Again SHell (همان BASH)، مفسر پست اسکریپتِ Ghostscript، و GNU C library ابزارهای برنامهنویسی نیستند. GNUCash، GNOME، و GNU Chess نیز همینطور.
- به عنوان مثال GNU C library.
- هنگامی که این بخش نوشته شد، یک سیستم تقریبا آزاد مشابه ویندوز توسعه داده شده بود، اما از نظر فنی به هیچ عنوان مشابه گنو یا یونیکس نبود، بنابراین تاثیری در این بحث ندارد. بخش اعظم هستهٔ سولاریس آزاد شده است، اما اگر بخواهید سیستمی آزاد از آن بسازید، گذشته از جایگزینیِ بخشهای غیرآزاد هسته، بازهم مجبورید آن را درون گنو یا BSD قرار دهید.
- از طرف دیگر، در سالهایی که این مقاله نگاشته شد، GNU C Library برای هستهٔ BSD نیز ویرایش شد، و این امکان را به وجود آورد که سیستم گنو را با آن هسته نیز به کار رود. درست همانند گنو/لینوکس، این نیز حقیقتا نوعی از گنو است، بنابراین GNU/kFreeBSD و یا GNU/kNetBSD نامیده میشود، بسته به اینکه از کدام هسته استفاده شده باشد. کاربران عادی نمیتوانند تفاوتی میان گنو/لینوکس و GNU/*BSD بیابند.