گنو چیست - قسمت دوم(1981 مجموع کلمات موجود در متن) (4838 بار مطالعه شده است)
اولین قدمها
کمی
قبل از شروع پروژه گنو درباره بسته آزاد
کامپایلر دانشگاهی [۱۸]
که
به نام VUCK
شناخته
میشد شنیده بودم.
(کلمه
«آزاد»
به
آلمانی با V
نوشته
میشود.)
این
کامپایلری بود که برای کار با زبانهای
مختلفی از جمله C
و
پاسکال [۱۹]
بکار
میرفت و از ماشینهای گوناگونی پشتیبانی
میکرد.
من
به برنامهنویساش نامه نوشتم و سوال
کردم که آیا گنو میتواند از آن استفاده
کند یا نه.
او
با تمسخر پاسخ داد که دانشگاه آزاد است
اما کامپایلر نه.
پس
من دریافتم که اولین برنامه پروژه گنو یک
کامپایلر چند زبانه با پشتیبانی از سکوهای
سختافزاری گوناگون خواهد بود.
با
این امید که از نوشتن تمام کامپایلر پرهیز
کنم کد کامپایلری را که چند سکوی گوناگون
را پشتیبانی میکرد و در آزمایشگاه لارنس
لیورمور [۲۰]
توسعه
داده شده بود گرفتم.
این
کامپایلر از نسخه توسعه داده شدهای از
پاسکال پشتیبانی میکرد و به همان زبان
هم نوشته شده بود که به عنوان یک زبان
برنامهنویسی سیستمی طراحی شده بود.
من
یک رابط C
به
آن افزودم و انتقالش به Motorola
68000 را
شروع کردم.
اما
وقتی دریافتم آن کامپایلر چندین مگابایت
فضای انباره نیاز دارد و یونیکس سیستم
68000
تنها
۶۴ کیلوبایت اجازه تخصیص فضا میدهد از
آن کار دست کشیدم.
بعد
فهمیدم که کامپایلر پاسکال با تجزیه کردن
تمام فایل ورودی به یک ترکیب درختی و تبدیل
تمام ترکیب درختی به یک زنجیره از
«دستورالعملها»
و
سپس ایجاد فایل خروجی بدون اینکه هیچ
فضایی آزاد کند عمل مینماید.
اینجا
بود که به این نتیجه رسیدم که باید کامپایلر
جدیدی را از ابتدا بنویسم.
آن
کامپایلر جدید حالا با نام GCC
شناخته
میشود؛ هیچ چیز از کامپایلر پاسکال در
آن استفاده نشد اما من توانستم رابط C
را
که برای آن نوشته بودم تعدیل کرده و بکار
ببرم.
اینها
چند سال بعد اتفاق افتاد؛ اول بر روی گنو
ایمکس [۲۱]
کار
کردم.
گنو
ایمکس
کار
بر گنو ایمکس را در سپتامبر ۱۹۸۴ شروع
کردم و در اوایل ۱۹۸۵ میشد از آن استفاده
کرد.
بدین
وسیله میتوانستم شروع به ویرایش در
سیستمهای یونیکس کنم؛ چون علاقهای به
استفاده از vi
یا
ed
نداشتم
ویرایشهایم را تا آن زمان بر ماشینهای
دیگری انجام میدادم.
در
این مرحله افراد شروع به درخواست استفاده
از گنو ایمکس کردند که این سوال را پیش
آورد که چطور میشود آن را توزیع کرد.
البته
من آن را بر روی سرور ftp
بینامی
بر کامپیوتری که در MIT
از
آن استفاده میکردم گذاشتم.
(به
این ترتیب کامپیوتر prep.ai.mit.edu
محل
اصلی توزیع ftp
گنو
شد؛ وقتی این کامپیوتر چند سال بعد بازنشسته
شد ما نام آن را به سرور ftp
جدیدمان
انتقال دادیم.)
اما
در آن دوره بسیاری از علاقمندان به اینترنت
دسترسی نداشتند و نمیتوانستند یک کپی
از روی ftp
دریافت
کنند.
پس
من باید به آنها چه میگفتم؟
می
توانستم بگویم «کسی
را پیدا کنید که به شبکه دسترسی دارد تا
یک کپی برای شما بگیرد.»
یا
میتوانستم کاری را که با نسخه اصلی
ایمیکس PDP-10
کرده
بود انجام دهم:
به
آنها بگویم «یک
نوار و جلدش را برای من بفرستید تا آن را
با یک کپی ایمکس برایتان باز پس فرستم.»
اما
من شغلی نداشتم و بدنبال روشهایی برای
پول درآوردن از نرمافزار آزاد بودم.
پس
اعلام کردم که برای هر کسی که بخواهد یک
نوار خواهم فرستاد به قیمت ۱۵۰ دلار.
به
این روش تجارت توزیع نرمافزار آزاد را
آغاز کردم که پیشروی شرکتهایی بود که
امروزه تمام سیستم گنوی مبتنی بر لینوکس
را توزیع میکنند.
آیا
یک برنامه برای هر کاربری آزاد است؟
اگر
یک برنامه وقتی که از دست برنامهنویساش
خارج میشود نرمافزار آزاد باشد به طور
حتم به این معنا نیست که کپیاش به دست
هر کسی که برسد نرمافزار آزاد خواهد
بود.
برای
مثل نرمافزار [رها
شده در]
حوزه
عمومی (نرم
افزاری که کپیرایت نشده است)
نرمافزار
آزاد است؛ ولی هر کسی می تواند یک نسخه
تغییر یافته اختصاصی از آن بسازد.
همچنین
برنامههای آزاد بسیاری کپیرایت شدهاند
اما با پروانههای ساده آسانگیری توزیع
گشتهاند که اجازه ایجاد نسخههای تغییر
یافته اختصاصی را میدهد.
یک
نمونه از این برنامهها X
Window System است
که در MIT
توسعه
پیدا کرد و به شکل نرمافزار آزاد با
پروانهای آسانگیر منتشر شد و بزودی توسط
شرکتهای کامپیوتری مختلفی اقتباس گشت.
آنها
X
را
به سیستمهی یونیکس اختصاصی خودشان تنها
به شکل باینری افزودند و زیر پوشش موافقت
نامه حفظ اسرار مشابهی قرار دادند.
آن
نسخههای X،
دیگر نرمافزار آزاد نبودند همچنان که
یونیکس نبود.
توسعه
دهندگان X
Windos System به
این موضوع اهمیت نمیدادند – آنها انتظار
داشتند و میخواستند که چنین شود.
هدف
آنها نرمافزار آزاد نبود فقط «موفقیت»
که
با «جذب
کاربران بیشتر»
معنا
میشد هدف بود.
آنها
اهمیتی به آزادی کاربران نمیدادند فقط
جمعیت کاربران مهم بود.
نتیجه
موقعیتی متناقض بود که دو روش مختلف برای
سنجش میزان آزادی جوابهای گوناگونی به
این سوال که «آیا
این برنامه آزاد است؟»
میدادند.
اگر
شما برا اساس آزادیهای در نظر گرفته شده
در شروط توزیع نسخه MIT
قضاوت
میکردید ممکن بود بگویید X
نرمافزار
آزاد بوده است.
اما
اگر آزادیهای یک کاربر متوسط X
را
میسنجیدید ممکن بود بگویید نرمافزار
اختصاصی است.
بیشتر
کاربران X
از
نسخهای اختصاصی استفاده میکردند که
با سیستمهای یونیکس همراه بود نه نسخه
آزاد آن.
کپی
لفت [۲۲]
و
گنو GPL
هدف
گنو اعطای آزادی به کاربران بود نه اینکه
فقط محبوب باشد.
پس
ما به شرطهایی برای توزیع نیاز داشتیم که
نرمافزار گنو را از تبدیل شدن به نرمافزار
اختصاصی باز دارد.
روشی
که ما برگزیدیم «کپی
لفت»
نام
داشت.
(۱)
کپی
لفت از قانون کپی رایت [۲۳]
استفاده
میکند اما آن را میچرخاند تا خلاف آنچه
هدف متداولش است عمل کند:
بجای
آنکه ابزاری برای اختصاصی کردن نرمافزار
باشد به ابزاری برای آزاد نگه داشتن آن
تبدیل میشود.
ایده
اصلی کپی لفت این است که ما به همه اجازه
استفاده از برنامه، تکثیر برنامه، تغییر
برنامه و توزیع نسخههای تغییر یافته را
میدهیم اما اجازه افزودن محدویتی به
برنامه را نمیدهیم.
پس
آزادیهای اساسی که «نرمافزار
آزاد»
را
معنا میکنند برای هر کسی که نسخهای از
نرمافزار را داشته باشد ضمانت شدهاند؛
اینها حقوقی جدا ناشدنی هستند.
برای
اینکه کپی لفت موثر باشد نسخههای تغییر
یافته نیز باید آزاد باشند.
به
این ترتیب میتوان اطمینان یافت که کارهای
نجام شده بر اساس حاصل کار ما اگر منتشر
شود در دسترس جامعه خودمان قرار خواهد
گرفت.
وقتی
برنامهنویسانی که شغل برنامهنویسی
دارند دواطلب توسعه نرمافزار گنو میشوند
این کپی لفت است که مانع کارفرمایانشان
میشود که بگویند «شما
نمیتوانید آن تغییرات را به اشتراک
بگذارید چون ما قصد داریم نسخه اختصاصی
خودمان را از برنامه درست کنیم.»
خواست
آزاد ماندن تغییرات ضروری است اگر میخواهیم
از آزادی برنامه برای همه کاربران آن
مطمئن باشیم.
شرکتهایی
که X
Window System را
اختصاصی کردند تغییراتی در آن دادند تا
آن را به سیستمها و سختافزارهای خود
منتقل نمایند.
این
تغییرات در مقایسه با اندازه بزرگ X
کوچک
بودند اما بیاهمیت نبودند.
اگر
تغییر دادن بهانهای برای انکار آزادیهای
کاربران میشد برای هر کسی آسان بود که
از مزیت بهانهجویی سود ببرد.
یک
موضوع مرتبط نگران کننده دیگر ترکیب
برنامه آزاد با کد غیر آزاد بود.
چنین
ترکیبی بطور اجتنابناپذیری غیر آزاد
میبود؛ فقدان هر آزادی در بخش غیر آزاد
به معنای نبود آن در کل برنامه بود.
اجازه
چنین ترکیبی میتوانست سوراخی بگشاید
که برای غرق کردن یک کشتی کفایت میکرد.
هر
چیزی که به برنامه کپی لفت شده افزوده
میشد یا با آن ترکیب میگشت باید طوری
میبود که مجموع ترکیب هم، آزاد و کپی
لفت شده باشد.
نسخه
ویژهای از کپی لفت که ما برای بیشتر
نرمافزارهای گنو استفاده میکنیم
پروانه جامع همگانی گنو [۲۴]
یا
بطور خلاصه GNU
GPL است.
ما
انواع دیگر کپی لفت هم داریم که در شرایط
خاص از آنها استفاده میکینم.
کتابهای
راهنمای گنو هم کپی لفت شدهاند ولی با
نوع بسیار سادهتری از کپی لفت زیرا که
پیچیدگی GNU
GPL برای
کتابهای راهنما لازم نیست.
(۲)
(۱)
در
۱۹۸۴ یا ۱۹۸۵ دان هاپکینز [۲۵]
(شخصی
با قدرت تخیل بالا)
نامهای
برای من فرستاد.
روی
پاکت چیزهای جالبی نوشته بود که شامل این
یکی هم میشد:
«کپی
لفت – تمام حقوق محفوظ است.»
من
از کلمه «کپی
لفت»
برای
نامیدن مفهوم کلی توزیعی که در آن زمان
در حال بسط دادنش بودم استفاده کردم.
(۲)
ما
در حال حاضر از پروانه مستندات آزاد گنو
[۲۶]
برای
مستندسازی استفاده میکنیم.
بنیاد
نرم افزار آزاد
همچنان
که علاقه به استفاده از ایمکس بیشتر میشد
افراد دیگری هم درگیر پروژه گنو میشدند
و ما مصمم شدیم که باز سرمایه جمع کنیم.
پس
در ۱۹۸۵ ما بنیاد نرم افزار آزاد [۲۷]
را
ایجاد کردیم که یک خیریه معاف از مالیات
برای توسعه نرمافزار آزاد است.
همچنین
FSF
توزیع
تجاری ایمکس بر روی نوار را بدست گرفت؛
بعدتر این کار را با افزودن نرمافزارهای
آزاد دیگر به نوار (هم
نرمافزارهای گنو و هم غیر گنو)
و
همچنین فروش کتابهای راهنمای آزاد توسعه
داد.
FSF مبالغ
اهدایی را هم میپذیرد اما بیشتر درآمدش
همیشه از فروش نسخههای نرمافزار آزاد
و خدمات مرتبط دیگر حاصل شده است.
امروزه
بنیاد دیسک متن کد، دیسک نسخههای باینری،
کتابهای راهنمایی با پرینت خوب (همه
آزاد برای توزیع دوباره و تغییر)
و
نسخههای لوکس (که
ما تمام مجموعه نرم افزارها را برای سکوی
انتخابی شما آماده کردهایم)
میفروشد.
کارکنان
بنیاد نرمافزار آزاد تعدادی از بستههای
نرمافزاری گنو را نوشته یا نگهداری
کردهاند.
دو
مورد قابل اشاره کتابخانه C
و
شل [۲۸]
هستند.
کتابخانه
C
گنو
[۲۹]
چیزی
است که هر برنامهای که بر یک سیستم
گنو/لینوکس
اجرا میشود برای ارتباط با لینوکس از
آن استفاده میکند.
این
کتابخانه توسط یکی از کارکنان بنیاد
نرمافزار آزاد بنام رونالد مکگراس
[۳۰]
نوشته
شده است.
شل
مورد استفاده در بیشتر سیستمهای گنو/لینوکس
BASH
یا
Bourne
Again Shell است
(۱)
که
بوسیله برایان فاکس [۳۱]
از
کارکنان FSF
توسعه
یافته است.
ما
برای توسعه این نرم افزارها سرمایهگذاری
کردیم زیرا که پروژه گنو تنها مربوط به
ابزارها یا یک محیط توسعه نبود.
هدف
ما یک سیستم عامل تمام عیار بود و این
برنامهها برای آن هدف مورد نیاز بودند.
(۱)
«Bourne again Shell» شوخی
با نام «Bourne
Shell» است
که شل متداول روی یونیکس بود.
پشتیبانی
نرمافزار آزاد
فلسفه
نرمافزار آزاد نوع خاصی از تجارت شایع
را رد میکند اما مخالف تجارت نیست.
وقتی
تاجران به آزادیهای کاربران احترام
میگذارند ما برایشان آرزوی موفقیت
میکنیم.
فروش
نسخههای ایمکس نوعی از تجارت نرمافزار
آزاد را نشان میدهد.
وقتی
FSF
آن
تجارت را بدست گرفت من به راه دیگری برای
کسب درآمد نیاز داشتم.
آن
را در فروش خدمات مربوط به نرمافزار
آزادی که توسعه داده بودم یافتم.
این
شامل تدریس در موضوعاتی چون چگونگی
برنامهنویسی برای گنو ایمکس و چگونگی
تغییر دادن GCC
و
توسعه نرمافزار و بیش از همه انتقال GCC
به
سکوهای جدید بود.
امروزه
هر کدام از انواع تجارتهای نرمافزار
آزاد بوسیله تعدادی از شرکتها دنبال
میشود.
بعضی
نسخههای نرمافزار آزاد را بر روی دیسک
منتشر میکنند، بعضی دیگر پشتیبانی
میفروشند؛ از پاسخ به سوالات کاربران
گرفته یا رفع ایرادات و یا افزودن قابلیتهای
جدید مهم.
حتی
کمکم شرکتهای نرمافزار آزادی را
میبینیم که بر پایه راهاندازی محصولات
جدید نرمافزار آزاد تاسیس میشوند.
اما
مراقب باشید.
برخی
شرکتها که عبارت «متن
باز»
[۳۲]
را
همراه خود دارنددر واقع تجارت خود را بر
اساس نرمافزار غیرآزادی بنا کردهاند
که با نرمافزار آزاد کار میٰکند.
اینها
شرکتهای نرمافزار آزاد نیستند آنها
شرکتهای نرمافزار اختصاصی هستند که
محصولاتشان کاربران را برای دوری از آزادی
فریب میدهد.
آنها
این را «ارزش
افزوده»
مینامند
که بازتابی از ارزشهایی است که دوست
میدارند ما فراتر از آزادی به آنها خو
کنیم.
اگر
ما آزادی را باارزشتر بدانیم بایستی آنها
را محصولات «کاهنده
آزادی»
بنامیم.
اهداف
فنی
هدف
اصلی گنو نرمافزار آزاد بود.
حتی
اگر گنو هیچ برتری فنی هم بر یونیکس
نمیداشت، برتری اجتماعی داشت که اجازه
میداد کاربران با هم همکاری کنند و برتری
اخلاقی داشت که احترام گذاشتن به آزادی
کاربران بود.
اما
طبیعی بود که معیارهای شناخته شده انجام
درست کار هم در نظر گرفته شود.
به
عنوان نمونه جایگذاری پویای ساختارهای
داده [۳۳]
برای
پرهیز از محدودیتهای اندازه ثابت اختیاری
[۳۴]
و
جایگذاری تمام کدهای هشت بیتی ممکن هر جا
که درست باشد.
بعلاوه
ما تمرکز یونیکس بر اندازه کوچک حافظه را
با تصمیم بر پشتیبانی نکردن از ماشینهای
شانزده بیتی نپذیرفتیم (وقتی
که سیستم گنو به پایان رسیده بود واضح بود
که ماشینهای سی و دو بیتی متداول خواهند
بود)
و
تلاشی نکردیم که استفاده از حافظه را کم
کنیم مگر اینکه از مگابایت بالاتر برود.
در
برنامههایی که کار کردن با فایلهای بزرگ
مهم نبود، برنامهنویسان را تشویق
میکردیم که همه فایل ورودی را به داخل
هسته بخوانند و سپس محتوایش را کاوش کنند
بدون اینکه نگران I/O
باشند.
این
تصمیمات بسیاری از نرمافزارهای گنو را
قادر ساخت که از همتاهای یونیکسشان در
قابلیت اطمینان و سرعت پیش بیافتند.
کامیپوترهای
اهدا شده
در
پی رشد شهرت پروژه گنو افراد شروع به
پیشنهاد اهدای ماشینهایی به پروژه کردند
که یونیکس بر آنها اجرا میشد.
آن
کامپیوترها بسیار مفید بودند زیرا که
سادهترین راه برای توسعه اجزاء گنو
انجام این کار بر سیستم یونیکس و جایگزین
کردن یک به یک اجزاء سیستم بود.
اما
اینکار یک مساله اخلاقی بوجود آورد:
آیا
اصلاً درست بود که ما یک کپی از یونیکس
داشته باشیم.
یونیک
نرمافزار اختصاصی بود (و
هست)
و
فلسفه پروژه گنو میگفت که ما نباید از
نرمافزار اختصاصی استفاده کنیم.
اما
با همان استدلالی که منجر به این نتیجه
میشود که خشونت در دفاع از خود قابل
توجیه است من نتیجه گرفتم که استفاده از
بستههای اختصاصی درست بود زمانی که
توسعه جایگزین آزاد مهمی صورت میگرفت،
جایگزینی که به دیگران کمک میکرد استفاده
از بسته اختصاصی را متوقف کنند.
اما
حتی اگر این شری توجیهپذیر بود باز هم
شر بود.
امروز
دیگر نسخهای از یونیکس نداریم زیرا که
آنها را با سیستم عاملهای آزاد جایگزین
کردهایم.
اگر
نتوانستیم سیستم عامل ماشینی را با نسخهای
آزاد جایگزین کنیم خود ماشین را تعویض
کردیم.
نوشته
ریچارد استالمن
اصل
مقاله از کتاب «Open
Sources»
ترجمه
از بهنام بهجت مرندی blixbox@gmail.com
منبع:
http://www.gnu.org/gnu/thegnuproject.html
پانویسها:
[۱۸]
Free University Compiler Kit [۱۹]
Pascal [۲۰]
Lawrence Livermore Lab [۲۱]
GNU Emacs [۲۲]
Copyleft [۲۳]
Copyright [۲۴]
GNU General Public License [۲۵]
Don Hopkins [۲۶]
GNU Free Documentation License:
http://www.gnu.org/licenses/fdl.html [۲۷]
Free Software Foundation [۲۸]
shell [۲۹]
GNU C library [۳۰]
Roland McGrath [۳۱]
Brian Fox [۳۲]
Open Source [۳۳]
dynamically allocating data structures [۳۴]
arbitrary fixed size limits
PDF Version
|