گنو چیست

AMiR

Active Member
Irantux


پروژه گنو (قسمت اول)


پروژه گنو (قسمت اول)
نخستین جامعه اشتراک نرم‌افزار
وقتی در سال ۱۹۷۱ کار در آزمایشگاه هــوش مصنــوعی MIT را آغاز کــردم عضو جامعه اشترک نرم‌افزاری شــدم که از سالها پیش وجود داشت. به اشتراک گذاشتن نرم‌افزار فقــط مـحـدود بــه جـامعه خاص ما نبود؛ این کار به اندازه رایانه‌ها قدمت دارد همچنان که به اشتراک گذاشتن دستور غذا به اندازه آشپزی قدمــت دارد. ولی ما بیش از پیش نرم افزارها را به اشتراک می‌گذاشتیم.
آزمایشگاه هوش مصنوعی از یک سیستم عامل اشتراک زمانــی بــه نام ITS (سیستم غیر قابل رقابت اشتراک زمانی) [۲] استفاده می‌کرد که کارکنان هـکــر آزمایشگاه (۱) آن را بــا زبــان اسمــبلی بــرای یــک Digital PDP-10 کــه یـکی از رایانه‌های بزرگ زمان خود بود طراحــی و کـدنـویسی کــرده بـودند. به عنوان یکی از اعضای این جامعه و یک کارمند هکر سیستم در آزمایشگاه هوش مصنوعی شغل من بهتر کردن این سیستم بود.
ما به نرم‌افزار خود «نرم‌افزار آزاد» [۳] نمی‌گفتیم چون آن عبــارت وجـود نداشت؛ اما همــانطور بود. هر وقت کسی از یک دانشگاه یا شرکت دیگر می‌خواست از برنامه استفاده کند مــا بــا خوشحالی به او اجازه این کار را می‌دادیم. اگر شما با کسی برخورد می‌کردید که از برنامه‌ای ناآشنا و جالب استفاده می‌کرد همیشه می‌توانستید از او بخواهید که متن کد را نشانتان دهد تا بتوانید آن را بخوانید، تغییرش دهید یا قسمتهایی از آن را برای خلق یک برنامه تازه جدا کنید.
(۱) استفاده از «هکر» به معنای «نفوذگر امنیتی» اشتـباه رسانه‌های گروهی است. ما هکرها از پذیرش این مفهوم سر باز می‌زنیم و این کلمه را به معنای «کسی که عاشق برنامه‌نویسی است و از برنـامه‌نویسی هوشمندانه لذت می‌برد» بکار می‌بریم.
فرو ریختن جامعه
اوضاع در اوایل دهه ۱۹۸۰ زمــانی کــه Digital سری PDP-10 را متوقف کــرد بــه شــدت عـوض شد. معماری باسلیقه و قدرتمند آن در دهه ۶۰ بطور طبیعی نمی‌توانست فضاهای بزرگتر نشانه‌گذاری را که در دهــه ۸۰ امکانپذیر شده بودند در بر بگیرد. این به معنای آن بود که نزدیک به همه برنامه‌های نوشته شده برای ITS منسوخ شدند.
جامعه هکرهای آزمایشگاه هوش مصنوعی نه خیلی قبل از آن از هــم پــاشـیـده بـود. در سال ۱۹۸۱ شرکت Symbolics نزدیک به تمام هکرهای آزمایــشگـاه هوش مصنوعی را استخدام کرد و جامعه کم جمعیت از اداره خود ناتوان شد. (کتاب Hakers نوشته استیو لوی [۴] همراه ارائه تصویری روشــن از جامعه در دوران کمالش این وقایع را توضیح می‌دهد) وقتی آزمایشگاه هوش مصنوعی در سال ۱۹۸۲ یک PDP-10 نو خــرید مــدیـرانش تصمیم گرفتند بجای ITS از سیستم اشتراک زمانی غیر آزاد Digital استفاده کند.
رایانه‌های مدرن آن دوره مانند VAX یا 6820 سیستم عامل خودشان را داشتند امــا هیــچکدام از آنها نرم‌افزار آزاد نبودند: حتی برای دریافت یک نسخه قابل اجرا هم باید موافقت نامه حفظ اسرار را امضا می‌کردید.
این به معنای آن بود که اولین قدم برای استفاده از کامپیوتر قول کمک نکردن به دیـگران بـود. همـیاری اجتـماعی ممنوع بود. قانون وضــع شــده توســط صـاحبان نرم‌افزار اختصاصی این بود: «اگر نرم‌افزارتان را با دیگران شریک شوید دزدید. اگر خواهان تغییری هستید به ما التماس کنید تا برایتان انجام دهیم.»
ممکن است این ایده که نظام اجتماعی نرم‌افزار اختصاصی - نظامی کــه اظـهـار می‌دارد شما مجاز به اشتراک گذاری یا تغییر دادن نرم افزار نیستید - ضد اجتماعی، غیراخلاقی و در واقــع غـلـط اســت بـرای بعضی از خوانندگان عجیب به نظر بیاید. اما درباره نظامی که بر اساس تقسیم جامعــه و درمــانده نـگـه داشـتـن کـاربران بـنـا شــده چــه مـی‌تــوان گفت؟ خوانندگانی که این ایده را عجیب می‌بینند مـمکن است ساز و کار نرم افزار اختصاصی را همانگونه که ارائه شده فهمیده باشند یا آن را به شیوه‌ای که سوداگران نرم‌افزار اختصاصی تعریف می‌کنند شناخته باشند. توزیع‌کنندگان نرم‌افزار مدتها و به سختی کار کرده‌اند تا مردم را متقاعد کنند که تنها یک نوع نگاه به این موضوع وجود دارد.
وقتی توزیع‌کنندگان نرم‌افزار از «اعمال حقوق» خود یا «ممانعت از دزدی» صحـبت می‌کنـند آنـچه می‌گویند اهمیت ثانوی دارد. پیام واقعی این گفته‌ها انگاره‌های ابراز نشده‌ای است که آنها به شکل امتیاز می‌گیرند: اجتماع می‌بایست آنها را بی‌هیچ نقدی بپذیرد. پس بگذارید آنها را بیازماییم.
یکی ار انگاره‌ها این است که شرکتهای نـرم‌افزاری حق طبیعی غیر قابل پرسشی بر مالکیت نرم‌افزار دارند و بدینسان بر تمام کاربران آن هم مسلط‌اند. (اگر این حقی طبیعی بود هر چقدر هم که برای اجتماع مضر می‌بود ما نمی‌توانستیم به آن اعتراضی کنیم.) جالب است که قانون اساسی ایالات متحده و رویه قانونی ایــن نـگاه را رد می‌کنــد؛ کپی‌رایت حقی طبیعی نیست بلکه انحصاری ساختگی است که از طرف دولت تحمــیل می‌شود تــا حق طبیعـی کـاربـران بـرای تکثیر را محدود کند.
انگاره ابراز نشده دیگر این است که تنها موضوع مهم درباره نرم‌افزار کاری است که به شما اجازه انجامش را می‌دهد - و اینکه ما کاربران رایانه نباید به این موضوع که اجازه داریم چه نوع جامعه‌ای داشته باشیم توجه کنیم.
انگاره سوم این است که اگر ما قدرت کافی احاطه بر کاربران به شرکت ندهیم نرم افزار کارایی نخواهیم داشت (یا هرگز برنامه‌ای نخواهیم داشت که این یا آن کــار بخصوص را انجام دهد). ایــن انگاره مـمـکن بــود درسـت بـاشـد پیش از اینکه جنبش نرم‌افزار آزاد اثبات کند که ما می‌توانیم نرم افزارهای مفید بسیاری را بدون به زنجبر کشیدن آنها خلق کنیم.
اگر تصمیم بگیریم این انگاره‌ها را کنار بگذاریم و این موضوعات را بــراسـاس اخــلاقیات متــداول با ارجعیت دادن به کاربران داوری کنیم به نتایج بسیار متفاوتی می‌رسیم. کاربران رایانه باید در تـغـییر برنامه‌ها برای انطباق آنها با احتیاجاتشان آزاد باشند و آزاد باشند که نرم‌افزارها را به اشتراک بگذارند زیرا که کمک به دیگران از مبانی جامعه است.
اینجا جای بحث گسترده درباره دلایل پشت این نتیجه‌گیری نیست پس من خوانندگان را به این صفحه رجوع می‌دهم:
یک انتخاب اخلاقی دشوار
وقتی جامعه از میان رفت ادامه دادن به همان شکل سابق برای من غیر ممکن بود. در عوض با یک انتخاب اخلاقی دشوار مواجه شدم.
گزینه آسان پیوستن به دنیای نرم‌افزار اختصاصی، امــضای مــوافقــت نامه حـفظ اسرار و قول کمک نکردن به دیگر هکرها بود. همچنین می‌بایست نرم افزاری را که توســعه داده بـودم با موافقت نامه حفظ اسرار منتشر می‌کردم که فشار را به دیگران برای خیانت به دوستانشان بیشتر می‌کرد.
بدین گونه می‌توانستم پول دربیاورم و شاید خودم را با کــدنویسی ســرگــرم کنـم. امـا می‌دانسـتم در پایان راه به عقب خواهم نگریست و دیوارهایی را که برای جدا کردن مردم از همدیگر ساخته‌ام، خــواهــم دیــد و احـسـاس خـواهـم کـــرد زندگی‌ام را برای ساختن دنیایی بدتر از پیش صرف کرده‌ام.
من همان موقع تجربه قرار گرفــتن در سمت دریافت کنــنده موفقت نامه حفظ اسرار را داشتم وقـتی که شخصی از ارائه متن کد برنامه کنترل کننده پرینترمان به من و آزمایشگاه هــوش مصــنوعی MIT سر باز زد. (فقدان امکانات بخصوصی در این برنامه استفاده از پرینتر را بسیار دشوار کرده بود.) پــس نمـی‌تــوانستــم خــودم را متــقاعد کـنـم کــه مـوافقت نامه حفظ اسرار بی‌ضرر است. وقتی او از به اشتراک گذاشتن کد با مــا ســر بــاز زد من خیلی عصبانی شدم؛ نمی‌توانستم همان کار را با دیگران بکنم.
گزینه دیگر سر راســت امــا نــاگـوار، تــرک میـدان رایانه بود. به این ترتیب از مهارتهای من سوء استفاده نمی‌شد اما این مهارتها به هدر می‌رفت. من در جدا کردن و محدود ساختن کاربران رایانه مقصر نبودم اما این اتفاق به هر حال می‌افتاد.
پس بدنبال راهی گشتم که یک برنامه‌نویس بتواند کار مفیدی در این مورد بکند. از خودم پرسیدم آیا برنامه یا برنامه‌هایی هست که بتوانم با نوشتن آنها وجود چنان جامعه‌ای را یکبار دیگر میسر کنم؟
جواب واضح بود: آنچه پیش از همه مورد نیاز بود یک سیستم عــامل بود. این نرم‌افزاری اجتناب‌ناپذیر برای استفاده از یک رایانه است. با یک سیستم عامل خیلی کارها می‌شود کــرد؛ بــدون آن بطور کلی نمی‌شود از رایانه استفاده کرد. با یک سیستم عامل آزاد می‌توانستیم جامعه‌ای از هکرهای همـکار داشته باشیم و هرکسی را دعوت به همکاری کنیم. و هر کسی می‌توانست از رایانه استفاده کند بدون آنکه شروع به توطئه‌چینی برای محروم کردن دوستانش نماید.
به عنوان یک توسعه دهنده سیستم عامل مهارتهای خـــوبی بــرای انـجـام ایــن کــار داشـتـم. پـس با اینکه می‌دانستم نمی‌توانم به راحتی به موفقیت برسم تشخیص دادم که برای انــجــام ایــن کــار انتــخـاب شـده‌ام. سیستم را سازگار با یونیکس انتخاب کردم تا قابل انتقال باشد و کاربران یونیکس بتــوانـند بــه آن منتــقل شـونــد. نــام GNU در پـی یک سنت هکری انتخاب شد و سر نام «GNU's Not Unix» بود.
یک سیستم عامل تنها به معنای یــک هسـته نیست که به ندرت برای اجرای سایر برنامه‌ها کافی است. در اوایل ۱۹۷۰ هر سیستم عاملی که سزاوار این نام بود شامـل خط فرمان [۵]، اسمبلرها [۶]، کامپایلرها [۷]، انترپرترها [۸]، دیباگرها [۹]، ویرایشگرهای متن [۱۰]، ابزارهای ایمیل [۱۱] و خیلی چیزهای دیگر بود. ITS آنها را داشت، Multics آنها را داشت، VMS آنها را داشت و Unix هم آنها را داشت. سیستم عامل گنو هم باید آنها را می‌داشت.
بعدها این کلمات را که به هیلِل (۱) [۱۲] نسبت داده می‌شود شنیدم:
اگر از بهر خود نیستم، که مرا خواهد بود؟
اگر تنها خود را هستم، پس چه هستم؟
اگر نه حالا، پس کی؟
تصمیم شروع پروژه گنو بر اساس روحیه‌ای مشابه بود.
(۱) به عنوان یک بی‌خدا دنباله‌رو هیچ رهبر مذهبی نیستم اما گاهی چیزی پسندیده در آنچه که یکی از آنها گفته است می‌یابم.
آزاد چون آزادی
عبارت «نرم‌افزار آزاد» گاهی بد تعبیر می‌شــود - این عبارت هیچ ربطی به قیمت ندارد. این عبارت مربوط به آزادی است. بنابراین اینجا نرم‌افزار آزاد را تعریف می‌کنیم: یک برنامه برای شما که کاربری منحصر بفرد هستید نرم‌افزار آزاد است اگر:
* این آزادی را دارید تا از برنامه با هر هدفی استفاده کنید.
* این آزادی را دارید تا برنامه را تغییر دهید تا مناسب احتــیاجاتتان شود. (برای اینکه این آزادی در عمل موثر باشد باید به متن کد دسترسی داشته باشید چون تغییر دادن برنامه بدون داشتن متن کد کار بسیار دشوار است.)
* این آزادی را دارید که نسخه‌های برنامه را به رایگان یا در قبال دریافت وجه بازپخش کنید.
* این آزادی را دارید که نسخه‌های تغییر یافته برنامه را پخش کنید تا جامعه از بهینه‌سازیهای شما منتفع گردد.
از آنجا که «آزاد» به آزادی مربوط می شود نه به قیمت، مغایرتـی بین فروش نسخه‌های برنامه و نرم‌افزار آزاد وجود ندارد. در واقع فروش نسخه‌ها اجتناب‌ناپذیر است: مجمــوعه نــرم‌افزارهای آزادی کــه بر روی CD فروخته می‌شوند برای جامعه اهمیت دارند و فروش آنها راه مهمی برای کسب درآمد جــهـت توسعه نرم‌افزار آزاد است. بنابراین برنامه‌ای که مردم آزاد نیستند تا در این مجموعه‌ها قرار دهند نرم‌افزار آزاد نیست.
به دلیل ابهام کلمه «آزاد» افراد مدتهاست که در پی جایگزین هستند اما کسی جایگزین مناسبی پیدا نکرده است. زبان انگلیسی کلمات و دقایق بیشتری از زبانهای دیگر دارد اما یک کلمه ساده و واضح که معنی «آزاد» به معنی آزادی بدهد ندارد - «رها شده از قید» [۱۳] کلمه‌ای است که بسیــار نــزدیک بــه معناست. جایگزین‌هـایی چــون «رها کردن» [۱۴]، «آزادی» [۱۵] و «باز» [۱۶] معنای غلط یا اشکالات دیگری دارند.
نرم‌افزار گنو و سیستم گنو
توسعه تمام یک سیستم پروژه بسیار بزرگی است. بــرای اینــکه ایــن پــروژه را قــابــل انــجـام کنــم تصـمـیم گرفتم تکه نرم‌افزارهای آزاد موجود را از هر جا که ممکن بود اقتباس کرده و استفاده کنم. به عنوان مثـال از همان آغاز تصمیم گرفتم از TeX به عنوان شکل دهنده اصلی متن استفاده کنم؛ چــنــد ســال بـعـد تصمیم گرفتم از X Window System استفاده کنم بجای اینکه یک سیستم پنجره دیگر برای گنو بنویسم.
بخاطر این تصمیمات، سیستم گنو همان مجموعه تمــام نرم افزارهای گنو نیست. سیستم گنو شامل برنامه‌هایی است که نرم‌افزار گنو نیستند و بوسیله افراد و پروژه‌های دیگر و برای اهداف آنها توسعه داده شــده‌اند ولی ما می‌توانیم از آنها استفاده کنیم چون نرم‌افزار آزاد هستند.
شروع پروژه
در ژانویه ۱۹۸۴ من شغلــم در MIT را رهــا کــردم و نوشتن نرم‌افزار گنو را آغاز نمودم. ترک کردن MIT ضروری بود تا MIT نتواند در انتشار گنو به عنوان نرم‌افزار آزاد دخالت کند. اگــر جزء کارکنان می‌ماندم MIT می‌توانست ادعای مالکیت حاصل کار را بکند و می‌توانست شرایط انتشار خود را تحمیل نماید یا حتی حاصل کار را تبدیل به بسته نرم افزار اختصاصی کند. من قصد نداشتم آنهمه کار کنم تا ببینم فایده‌ای برای هدفی که کار به آن منظور انجام شده یعنی ایجاد یک جامعه جدید اشترک نرم‌افزار ندارد.
هر چند پروفسور وینستون [۱۷] که بعدها مدیر آزمایشگاه هوش مصنوعی MIT شــد مهــربــانانه از مـن دعوت کرد که از امکانات آزمایشگاه استفاده کنم.

نوشته ریچارد استالمن [۱]​
اصل مقاله از کتاب «Open Sources»​
ترجمه از بهنام بهجت مرندی [email protected] منبع:
پانویسها:
[۱] Richard Stallman
[۲] Incompatible Timesharing System
[۳] Free Software
[۴] Steve Levy
[۵] Command Processors
[۶] Assemblers
[۷] Compilers
[۸] Interpreters
[۹] Debuggers
[۱۰] Text Editors
[۱۱] Mailers
[۱۲] Hillel
[۱۳] Unfettered
[۱۴] Liberated
[۱۵] Freedom
[۱۶] Open
 

AMiR

Active Member
Irantux


گنو چیست - قسمت دوم


اولین قدمها

کمی قبل از شروع پروژه گنو درباره بسته آزاد کامپایلر دانشگاهی [۱۸] که به نام 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»​
ترجمه از بهنام بهجت مرندی [email protected]
منبع:​
پانویس‌ها:​
[۱۸] 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​
 

جدیدترین ارسال ها

بالا