ورود/ایجاد حساب کاربری
   منوی اصلی
· خانه
· لیست کاربران
· جستجو
· آمار مشاهدات
· آرشیو مقالات


- شرح
· راهنمای نویسندگان
· درباره ما

   همکاری با نشریه
در صورتی که مایل به همکاری با نشریه هستید، می‌توانید در لیست پستی نشریه عضو شده و در جریان امور قرار گیرید. برای اطلاعات بیشتر، اینجا کلیک کنید.

   کاربران
سردبیر
هیچ مدیر کمکی حاضر
همکاران
هیچ مدیر کمکی حاضر
اعضا:
جدیدترین:جدید امروز:0
جدیدترین:جدید دیروز:0
جدیدترین:مجموع:2471
جدیدترین:جدیدترین:
ufumenarayu
اعضا:حاضر
اعضا:اعضا:0
مهمان‌ها:مهمان‌ها:31
مجموع:مجموع:31
کاربران حاضر
هیچ کاربر حاضری وجود ندارد

   ورود کاربران




 


 برای ورود مشکل دارید؟
 ثبت نام کاربران جدید

پروژه گنو - قسمت سوم

(1356 مجموع کلمات موجود در متن)
(4843 بار مطالعه شده است)  نسخه چاپی

لیست وظایف گنو

همینطور که پروژه گنو پیش می‌رفت و تعداد بیشتری اجزاء سیستم یافت می‌شد که پیشتر توسعه داده شده بودند بالاخره لازم بود که لیستی از نارسایی‌های باقی مانده درست شود. ما از آن لیست برای بکار گماردن توسعه‌دهندگان تازه برای نوشتن قسمتهایی که نوشته نشده بود استفاده می‌کردیم. این لیست به نام لیست وظایف گنو [۳۵] معروف شد. علاوه بر اجزاء مفقوده یونیکس، نرم‌افزارها و مستندات پروژه مفید دیگری را هم که فکر می‌کردیم یک سیستم به واقع کامل بایستی داشته باشد لیست کردیم.

امروزه به سختی بتوان چیزی از اجزاء یونیکس در لیست وظایف گنو یافت – آن کارها به جز چند مورد غیرضروری انجام شده‌اند. اما لیست پر از پروژه‌هایی است که می‌شود آنها را «ابزارها» [۳۶] نامید. هر برنامه‌ای که مورد توجه تعداد زیادی از کاربران باشد ابزار مناسبی برای افزودن به یک سیستم عامل است.

حتی بازیها هم به لیست وظایف اضافه شدند – و از ابتدا هم در لیست بودند. یونیکس بازی به همراه دارد پس بطور طبیعی گنو هم باید داشته باشد. اما سازگاری برای بازیها مهم نبود پس ما لیست بازیهای یونیکس را پی نگرفتیم. بجای آن طیفی از بازیهای گوناگون را که ممکن بود کاربران بپسندند لیست کردیم.

GPL کتابخانه گنو [۳۷]

کتابخانه C گنو از کپی‌لفت ویژه‌ای استفاده می‌کند که پروانه جامع همگانی کتابخانه گنو نامیده شده است (۱) که اجازه پیوند دادن نرم‌افزار اختصاصی به کتابخانه را می‌دهد. چرا چنین استثنایی منظور شد؟

این یک موضوع بنیانی نیست؛ اصلی وجود ندارد مبنی بر اینکه نرم‌افزار اختصاصی حق دارد با کد ما ترکیب شود. (چرا با پروژه‌ای همکاری کنیم که اعلام داشته از همکاری با ما سر باز می‌زند؟) استفاده از LGPL برای کتابخانه C یک استراتژی است.

کتابخانه C وظیفه‌ای عمومی دارد؛ هر سیستم یا کامپایلر اختصاصی با یک کتابخانه C همراه است. بنابراین در دسترس گذاشتن کتابخانه C پروژه گنو فقط برای نرم‌افزار آزاد هیچ مزیتی به نرم‌افزار آزاد نمی‌دهد بلکه تنها استفاده از این کتابخانه را محدود می‌کند.

یک سیستم، استثنایی بر این قاعده است: در سیستم گنو (که شامل گنو/لینوکس هم می‌شود) کتابخانه C گنو تنها کتابخانه C است. پس شرایط انتشار کتابخانه C گنو تعیین می‌کند که آیا کامپایل کردن یک برنامه اختصاصی برای یک سیستم گنو ممکن است یا نه. دلیل اخلاقی برای پذیرفتن ابزارهای اختصاصی در سیستم گنو وجود ندارد اما از نظر استراتژیک به نظر میرسد منع کردن این ابزارها بیشتر مانع استفاده از سیستم گنو می‌شود تا اینکه توسعه ابزارهای آزاد را تشویق کند.

این است که استفاده از LGPL استراتژی خوبی برای کتابخانه C است. برای دیگر کتابخانه‌ها تصمیم استراتژیک باید مورد به مورد بررسی شود. زمانی که یک کتابخانه کاری بخصوص انجام دهد که به برنامه‌نویسی نوع خاصی از برنامه‌ها کمک کند، انتشار آن با پروانه GPL و محدود کردن آن تنها به نرم‌افزار آزاد روشی برای کمک به توسعه‌دهندگان دیگر نرم‌افزار آزاد است تا بر ضد نرم‌افزارهای اختصاصی به آنها نوعی برتری دهد.

GNU Readline را در نظر بگیرید که یک کتابخانه بود که برای فراهم کردن ویرایش تحت خط فرمان BASH توسعه داده شده بود. Readline با پروانه متداول GNU GPL منتشر شده است نه با پروانه کتابخانه GPL. احتمال دارد این کار میزان بکار گرفتن Readline را کمتر کند اما این برای ما زیانبار نیست. در ضمن حداقل یک ابزار مفید که نرم‌افزار آزاد شده است بطور ویژه می‌تواند از Readline استفاده کند و این یک منفعت راستین برای جامعه است.

توسعه‌دهندگان نرم‌افزار اختصاصی مزیت حاصل از پول را دارند؛ توسعه‌دهندگان نرم‌افزار آزاد می‌بایست برای یکدیگر مزیت ایجاد کنند. امیدوارم روزی مجموعه بزرگی از کتابخانه‌های تحت GPL داشته باشیم که بطور همزمان برای نرم‌افزارهای اختصاصی در دسترس نباشند و قسمتهای مفیدی فراهم آورند که برای ایجاد بلوکهای جدید نرم‌افزار آزاد بکار آیند و به مزیت اصلی توسعه نرم‌افزار آزاد در آینده بیافزایند.

(۱) این پروانه در حال حاضر پروانه جامع همگانی کوچکتر گنو [۳۸] نامیده می‌شود تا از القای این تصور که همه کتابخانه‌ها باید از این پروانه استفاده کنند جلوگیری کند.

خاراندن جای خارش؟

اریک ریموند [۳۹] می‌گوید «هر کار نرم‌افزاری خوبی با خاراندن جای خارش شخص توسعه‌دهنده آغاز می‌شود.» شاید گاهی اوقات چنین باشد اما بسیاری از اجزای ضروری گنو برای رسیدن به یک سستم عامل آزاد کامل توسعه داده شده‌اند. آنها از یک چشم‌انداز و برنامه‌ریزی نشأت گرفته‌اند نه از محرکی آنی.

برای مثال ما کتابخانه C گنو را توسعه دادیم چون یک سیستم شبه یونیکس به کتابخانه C نیاز دارد، Bourne-Again Shell یا bash را توسعه دادیم چون یک سیستم شبه یونیکس به یک پوسته خط فرمان نیاز دارد و GNU tar را توسعه دادیم چون یک سیستم شبه یونیکس به یک برنامه tar نیاز دارد. در مورد برنامه‌های خودم هم همینطور است – کامپایلر GNU C، گنو Emacs یا GDB و GNU Make.

بعضی از برنامه‌های گنو برای این توسعه یافتند که با تهدیدات خاصی بر ضد آزادی ما مقابله کنند. به این منظور ما gzip را توسعه دادیم تا جایگزین برنامه‌ای برای فشرده‌سازی شود که بخاطر حق‌امتیاز LZM از دسترس جامعه خارج شده بود. ما افرادی را حمایت کردیم تا LessTif و به تازگی GNOME و Harmony را توسعه دهند تا راه‌حلی باشد برای مشکلاتی که بواسطه کتابخانه‌های اختصاصی ویژه‌ای بروز کردند (پایین‌تر را ببینید). ما محافظ حریم گنو [۴۰] را توسعه می‌دهیم تا جایگزین نرم افزار رمزگزاری غیرآزاد متداولی گردد چون مردم نباید مجبور به انتخاب بین امنیت و آزادی گردند.

البته کسانی که این برنامه‌ها را نوشتند به این کار علاقه داشتند و امکانات بسیاری توسط دیگران به برنامه‌ها افزوده شد چرا که خود آن اشخاص به این امکانات نیاز داشتند و برایشان جالب بود. اما این دلیل وجودی برنامه‌ها نیست.

توسعه‌های غیرمنتظره

در آغاز پروژه گنو من تصور می‌کردم که اول تمام سیستم گنو را توسعه خواهیم داد و سپس همه را با هم منتشر خواهیم نمود. اما این اتفاق نیافتاد.

از آنجا که هر جزئی از سیستم گنو بر روی سیستم یونیکس پیاده‌سازی شده بود مدتها پیش از اینکه یک سیستم کامل گنو وجود داشته باشد هر یک از اجزاء بر سیستم یونیکس قابل اجرا بود. بعضی از این برنامه‌ها معروف شدند و کاربران شروع به توسعه و انتقال آنها – به نسخه‌های غیرهمساز یونیکس و گاهی به سیستمهای دیگر – کردند.

این روند برنامه‌ها را بسیار قوی‌تر کرد و سرمایه و همکاران بیشتری را جذب پروژه گنو نمود. اما شاید موجب شد کامل شدن یک سیستم کارای کمینه چندین سال به تعویق بیافتد چرا که وقت توسعه‌دهندگان گنو صرف نگهداری از این نسخه‌ها و اضافه کردن امکانات به اجزای موجود می‌شد بجای اینکه صرف نوشتن اجزای مفقوده دیگری شود.

GNU Hurd

در ۱۹۹۰ سیستم گنو بطور تقریبی کامل بود؛ تنها جزء اصلی غایب هسته بود. ما تصمیم گرفته بودیم هسته را به شکل مجموعه‌ای از فرآیندهای سرور که بر روی ماخ [۴۱] اجرا می‌شدند پیاده‌سازی کنیم. ماخ یک میکروکرنل [۴۲] است که در دانشگاه کارنگی ملون [۴۳] و سپس در دانشگاه یوتا [۴۴] توسعه یافته است؛ GNU HURD مجموعه‌ای از سرورهاست (یا «جمع گنوها») که بر روی ماخ اجرا می‌شوند و وظایف گوناگون کرنل یونیکس را انجام می‌دهند. شروع توسعه به تاخیر افتاد چونکه ما صبر کردیم تا ماخ همانطور که قول داده شده بود به عنوان نرم‌افزار آزاد منتشر شود.

یکی از دلایل این مدل توسعه پرهیز از چیزی بود که به نظر دشوارترین بخش کار به نظر می‌رسید: رفع اشکال یک هسته بدون دسترسی به یک دیباگر متن کد. این بخش کار در ماخ انجام شده بود و ما انتظار داشتیم سرورهای HURD را به عنوان برنامه‌های کاربر با GDB رفع اشکال کنیم. اما امکانپذیر کردن آن بسیار به طول انجامید و رفع اشکال سرورهای چندرشته‌ای که به هم پیغام می‌فرستادند بسیار دشوار شد. بکار انداختن استوار HURD سالها طول کشید.

Alix

از ابتدا قرار نبود هسته گنو HURD نامیده شود. اسم اصلی آن Alix بود – نام زنی که آن موقع معشوقه من بود. او که یک مدیر سیستم یونیکس بود اشاره کرد که چطور نامش با روش نامگذاری نسخه‌های سیستم یونیکس جور در می‌آید؛ به شوخی به دوستانش می‌گفت «یکی باید هسته‌ای به نام من کند.» من چیزی نمی‌گفتم اما مصمم شدم با نامگذاری هسته به نام Alix او را غافلگیر کنم.

اما اوضاع آنطور نماند. مایکل بوشنل [۴۵] (حالا توماس) توسعه‌دهنده اصلی کرنل نام HURD را ترجیح داد و Alix را برای ارجاع به بخش بخصوصی از کرنل دوباره تعریف کرد – بخشی که درخواستهای سیستم را نگه داشته و با فرستادن پیغامهایی به سرورهای HURD آنها را مدیریت می‌کند.

در نهایت من و Alix جداشدیم و او نام خود را عوض کرد؛ بگونه‌ای نامربوط طراحی HURD تغییر کرد بطوری که کتابخانه C پیغامها را مستقیماً به سرورها می‌فرستاد و بدین ترتیب Alix از طرح حدف شد.

اما قبل از این وقایع یکی از دوستان او نام Alix را در متن کد HURD دید و به او خبر داد. پس نام کار خودش را کرده بود.

لینوکس و گنو/لینوکس

«گنو هرد» قابل استفاده عملی نیست. خوشبختانه هسته دیگری در دسترس است. در ۱۹۹۱ لینوس توروالدز [۴۶] کرنل سازگار با یونیکس دیگری را توسعه داد و آن را لینوکس نامید. حدود ۱۹۹۲ ترکیب لینوکس با سیستم گنوی نه چندان کامل یک سیستم عامل تمام عیار را حاصل کرد. (البته ترکیب کردن آنها کاری قابل توجه بود.) در واقع به خاطر وجود لینوکس است که امروز ما می‌توانیم سیستم گنو را به کار اندازیم.

ما این نسخه از سیستم را گنو/لینوکس می‌نامیم تا ترکیب حاصل از اختلاط سیستم گنو و کرنل لینوکس را نشان دهیم.



نوشته ریچارد استالمن اصل مقاله از کتاب «Open Sources»

ترجمه از بهنام بهجت مرندی blixbox@gmail.com

منبع: http://www.gnu.org/gnu/thegnuproject.html



پانویسها:

(شماره‌ها از ادامه قسمت پیش است)

[۳۵] The GNU Task List
[۳۶] applications
[۳۷] The GNU Library GPL
[۳۸] GNU Lesser General Public License
[۳۹] Eric Raymond
[۴۰] GNU Privacy Guard
[۴۱] Mach
[۴۲] microkernel
[۴۳] Carnegie Mellon University
[۴۴] University of Utah
[۴۵] Michael Bushnell
[۴۶] Linus Torvalds

PDF Version

تمامی مطالب و مقالات این سایت تحت مجوز GNU FDL قرار دارند. بنابراین کپی و ایجاد تغییر در آنها مطابق شرایط این مجوز آزاد می‌باشد.