فصل اول - تاریخچه و مفاهیم
محتویات[نهفتن] |
تاریخچه
گنو
در دههٔ ۱۹۷۰ و اوایل دههٔ ۱۹۸۰، برنامهنویسان کامپیوتر تمامی آنچه
را مینوشتند با دیگران به اشتراک میگذاشتند. هر شخصی متن برنامهٔ خود را
در اختیار دیگر برنامهنویسان میگذاشت. اشتراک گذاری نرمافزار امری عادی
بود.
در سال ۱۹۷۱ ریچارد استالمن کار خود را در دانشگاه MIT آغاز کرد، و در
گروهی که منحصرا از نرمافزار آزاد استفاده میکردند به کار پرداخت.
شرکتهای کامپیوتری نیز اغلب نرمافزار آزاد توزیع میکردند. برنامهنویسان
در همکاری با یکدیگر آزاد بودند و اغلب نیز همین کار را انجام میدادند.
در اوایل دههٔ ۱۹۸۰ همه چیز به آرامی دگرگون شد. شرکتهای نرمافزاری دیگر
متن برنامههای خود را در اختیار دیگران قرار نمیدادند. برنامهنویسان
نمیتوانستند برنامههای دیگران را تغییر داده و آن را بهبود بخشند. از این
پس به اشتراک گذاریِ نرمافزار جرم محسوب میشد.
اولین مرحله برای داشتن یک کامپیوترِ آزاد، وجود یک سیستمعامل آزاد بود.
بنابراین ریچارد استالمن زمانی که دانشجوی دکتری بود از شغل و تحصیل خود
درMIT استعفا داد و در اوایل سال ۱۹۸۳پروژهٔ گنو را آغاز و اطلاعیه اولیه
آنرا در سپتامبر ۱۹۸۳ منتشر کرد. در طی سالهای ۱۹۸۴ تا ۱۹۸۵ او کامپایلر
جیسیسی و ویرایشگر ایمکس را نوشته و به صورت آزاد منتشر کرد. به این
ترتیب ابزارهای اولیهٔ مورد نیاز برای طراحی و ساخت یک سیستمعامل فراهم
شد. ابزاری مبهوت کننده برای برنامه نویسان مستقل. وی با جادوگری افسانه ای
خود به تنهایی ابزاری را ایجاد نمود که برتر از تمام ابزارهایی که تمام
گروههای برنامه نویسان تجاری ایجاد کرده بودند قرار گرفت. GCC یکی از
کارآمد ترین و قویترین کامپایلرهایی است که تا کنون ایجاد شده اند.
استالمن در سال ۱۹۸۵بنیاد نرمافزارهای آزاد (free software foundation) را
پایه گذاری کرد، مفهوم کپیلفت را تعریف و اجازهنامهٔ جامع و عمومی گنو
(gnu public license) برای حمایتِ نرمافزارهای آزاد و تضمین آزادی کابران
نوشت و در اواخر همان سال نسخه کاملتر آن به نام اعلامیه گنو را منتشر کرد
که در حال حاضر به ۲۲ زبان ترجمه شده است.
نام «گنو» به این علت انتخاب شده است که تعدادی از نیازها را برطرف میکند؛
نخست، یک مخفف بازگشتی برای "GNU's Not Unix" است، دوم، یک کلمه واقعی
است، سوم، آهنگ گفتن (یا خواندن) آن جالب است.
کلمه «آزاد» در «نرمافزار آزاد» به آزادی اشاره میکند، نه قیمت. شما برای
به دست آوردن نرمافزار آزاد ممکن است مبلغی بپردازید یا نپردازید. در هر
صورت، وقتی نرمافزار را در اختیار داشته باشید، سه آزادی ویژه برای
استفاده از آن خواهید داشت.
یک سیستم عامل شبه یونیکس خیلی بیشتر از یک هسته است؛ و شامل کامپایلرها،
ویرایشگرها، برنامههای قالببندی متن، نرمافزارهای پستی و خیلی چیزهای
دیگر میباشد. بنابراین نوشتن یک سیستم عامل کامل کار بسیار بزرگی است. ما
در ژانویه ۱۹۸۴ شروع به کار کردیم. سالها به طول انجامید. بنیاد نرمافزار
آزاد در اکتبر ۱۹۸۵ بیشتر برای جذب سرمایه جهت کمک به توسعه گنو تاسیس شد.
لینوکس
آغاز داستان در سال ۱۹۹۱ است. زمانی که با وجود قدرت سخت افزارهای جدید،
محدودیت های کامپیوترها رو به پایان می رفت. ولی هنوز چیزی کم بود... و این
چیزی نبود جز فقدانی عمیق در حیطه سیستم های عامل. داس، امپراطوری
کامپیوترهای شخصی را در دست داشت. سیستم عامل بی استخوانی که با قیمت ۵۵۰۰۰
دلار از یک هکر سیاتلی توسط بیل گیتز (Bill Gates) خریداری شده بود و با
یک استراتژی تجاری هوشمند، به تمام گوشه های جهان رخنه کرده بود. کاربران
PC انتخاب دیگری نداشتند. کامپیوترهای اپل مکینتاش بهتر بودند. ولی قیمتهای
نجومی، آنها را از دسترس کثر افراد خارج می ساخت. خیمه گاه دیگر دنیای
کامپیوترها، دنیای یونیکس بود.
یونیکس به خودی خود بسیار گرانقیمت بود. آنقدر گرانقیمت که کاربران
کامپیوترهای شخصی جرات نزدیک شدن به آنرا نداشتند. کد منبع یونیکس که توسط
آزمایشگاههای بل بین دانشگاهها توزیع شده بود، محتاطانه محافظت میشد تا
برای عموم فاش نشود. برای حل شدن این مسأله، هیچیک از تولید کنندگان نرم
افزار راه حلی ارایه ندادند. بنظر میرسید این راه حل به صورت سیستم عامل
MINIX ارائه شد.
این سیستم عامل، که از ابتدا توسط ا ندرو اس. تاننباوم (Andrew S.
Tanenbaum) پروفسور هلندی، نوشته شده بود به منظور تدریس عملیات داخلی یک
سیستم عامل واقعی بود. این سیستم عامل برای اجرا روی پردازنده های ۸۰۸۶
اینتل طراحی شده بود و بزودی بازار را اشباع کرد. بعنوان یک سیستم عامل،
MINIX خیلی خوب نبود. ولی مزیت اصلی آن، در دسترس بودن کد منبع آن بود.
هرکس که کتاب سیستم عامل تاننباوم را تهیه می کرد، به ۱۲۰۰۰ خط کد نوشته
شده به زبان C و اسمبلی نیز دسترسی پیدا می کرد. برای نخستین بار، یک
برنامه نویس یا هکر مشتاق می توانست کد منبع سیستم عامل را مطالعه کند.
چیزی که سازندگان نرم افزارها آنرا محدود کرده بودند. دانشجویان کامپیوتر
در سرتاسر دنیا با خواندن کتاب و کدهای منبع، سیستمی را که در کامپیوترشان
در حال اجرا بود، درک کردند. و یکی از آنها لینوس توروالدز (Linus
Torvalds) نام داشت.
لینوس بندیکت توروالدز (Linus Benedict Torvalds) دانشجوی سال دوم علوم
کامپیوتر دانشگاه هلسینکی فنلاند و یک هکر خود آموخته بود. این فنلاندی ۲۱
ساله، عاشق وصله پینه کردن محدودیت هایی بود که سیستم را تحت فشار قرار می
دادند. ولی مهمترین چیزی که وجود نداشت یک سیستم عامل بود که بتواند
نیازهای حرفه ای ها را براورده نماید. MINIXخوب بود ولی فقط یک سیستم عامل
مخصوص دانش آموزان بود و بیشتر به عنوان یک ابزار آموزشی بود تا ابزاری
قدرتمند برای بکار گیری در امور جدی. در این زمان برنامه نویسان سرتاسر
دنیا توسط پروژه گنو (GNU) که توسط ریچارد استالمن (Richard Stallman) آغاز
شده بود، تحریک شده بودند.
تا سال ۱۹۹۱ پروزه GNU تعداد زیادی ابزار ایجاد کرده بود ولی هنوز سیستم
عامل رایگانی وجود نداشت. کار بر روی هسته سیستم عامل گنو موسوم به HURD
ادامه داشت ولی به نظر نمی رسید که تا چند سال آینده قابل استفاده باشد.
این زمان برای توروالدز بیش از حد طولانی بود...
در ۲۵ آگوست ،۱۹۹۱ این نامه تاریخی به گروه خبری MINIX از طرف توروالدز
ارسال شد:
- از: لینوس بندیکت توروالدز
- به: گروه خبری MINIX
- موضوع: بیشتر چه چیزی را می خواهید در MINIX ببینید؟
سلام به تمام استفاده کنندگان ازMINIX من در حال تهیه یک سیستم عامل
رایگان فقط به عنوان سرگرمی و نه به بزرگی و حرفه ای GNU برای دستگاههای
۳۸۶ و ۴۸۶ هستم. از ماه آوریل کار را آغاز کردهام و هماکنون این
سیستمعامل آمادهاست و کار میکند. دوست دارم از دیدگاه دیگران در مورد
سیستمعاملم با خبر شوم. چه آنان که مینیکس را دوست دارند و چه آنان که
دوست ندارند. چرا که سیستمعامل من تا حدی شبیه به مینیکس است.
در حال حاضر ۱٫۰۸ bash و ۱٫۴۰ gcc را بر روی آن دارم و چیزهای دیگری که به
نظر میرسد همه درست کار میکنند. این بدان معناست که طی چند ماه آینده چیز
بهدردبخوری فراهم خواهم کرد و دوست دارم بدانم مردم بیشتر چه امکاناتی
لازم دارند. به هر پیشنهاد و نظری خوشآمد میگویم اما قول نمیدهم که آن
را انجام دهم!
پ.ن: بله این نرمافزار آزاد است. البته قابل انتقال بر روی انواع دیگر
رایانه نیست (چرا که دستورات AT۳۸۶ را به کار میبرد) و ممکن است غیر از
دیسک سخت AT چیز دیگری را پشتیبانی نکند. این همه چیزی است که من دارم!
همانطور که در این نامه پیداست، خود توروالدز هم باور نمی کرد که مخلوقش
آنقدر بزرگ شود که چنین تحولی در دنیا ایجاد کند. لینوکس نسخه 0.01در
اواسط سپتامبر ۱۹۹۱ منتشر شد و روی اینترنت قرار گرفت. شور و اشتیاقی
فراوان حول مخلوق توروالدز شکل گرفت. کدها دانلود شده، آزمایش شدند و پس از
بهینه سازی به توروالدز بازگردانده شدند.
لینوکس نسخه 0.02در پنجم کتبر به همراه اعلامیه معروف توروالدز آماده شد:
آیا شما از روزهای زیبای MINIX ۱.۱ محروم شده اید؟ هنگامی که مردها مرد
بودند و راه اندازهای دستگاه خود را خودشان می نوشتند؟ ایا شما فاقد یک
پروزه زیبا هستید و می میرید تا سیستم عاملی داشته باشید تا بتوانید آنرا
مطابق با نیازهای خود در آورید؟ اگر اینگونه است، این نامه برای شما نوشته
شده است....
لینوکس نسخه ۰.۰۳ پس از چند هفته آماده شد و تا دسامبر، لینوکس به نسخه
۰.۱۰ رسید. هنوز لینوکس فقط چیزی کمی بیشتر از یک فرم اسکلت بود. این سیستم
عامل فقط دیسکهای سخت AT را پشتیبانی می کرد و ورود به سیستم نداشت و
مستقیما به خط فرمان بوت می شد. نسخه ۰.۱۱ خیلی بهتر شد. این نسخه از صفحه
کلیدهای چند زبانه پشتیبانی می کرد، دیسکهای فلاپی و کارتهای گرافیکی VGA،
EGA، هرکولس و... نیز پشتیبانی می شدند. شماره نسخه ها از ۰.۱۲ به ۰.۹۵ و
۰.۹۶ افزایش پیدا کرد و ادامه یافت. به زودی کد آن بوسیله سرویس دهنده های
FTP در فنلاند و مناطق دیگر، در سرتاسر جهان منتشر شد. به زودی صدها نفر
به اردوگاه لینوکس پیوستند. سپس هزاران نفر و سپس صدها هزار نفر.
لینوکس دیگر اسباب بازی هکرها نبود. با پشتیبانی نرم افزارهای پروزه GNU،
لینوکس آماده یک نمایش واقعی بود. لینوکس تحت مجوزGPL قرار داده شد. با
این مجوز همه میتوانستند کدهای منبع لینوکس را به رایگان داشته باشند، بر
روی آنها مطالعه کرده و آنها را تغییر دهند. دانشجویان و برنامه نویسان
آنرا قاپیدند. و خیلی زود تولید کنندگان تجاری وارد شدند. لینوکس به خودی
خود رایگان بود و هست. کاری که این تولیدکنندگان انجام دادند، کامپایل کردن
بخش ها و نرم افزارهای مختلف و ارایه آن بصورت یک فرمت قابل توزیع همانند
سایر سیستم عامل ها بود، تا مردم عادی نیز بتوانند از آن استفاده کنند.
همچنین اتفاقات جالبی با لینوکس رخ می دهد. در کنار PC، لینوکس به روی اکثر
پلاتفورمها منتقل شده است. لینوکس تغییر داده شد تا کامپیوتر دستی شرکت
۳Com یعنی PalmPilot را اجرا نماید. تکنولوژی کلاستر کردن این امکان را
بوجود آورد تا بتوان تعداد زیادی از ماشینهای لینوکس را به یک مجموعه واحد
پردازشی تبدیل نمود. یک کامپیوتر موازی. در آوریل ۱۹۹۶ محققین آزمایشگاه
های ملی لوس آلاموس از ۶۸ کامپیوتر مبتنی بر لینوکس برای پردازش موازی و
شبیه سازی موج انفجار اتمی استفاده کردند. ولی بر خلاف ابر کامپیوترهای
دیگر، هزینه آنها بسیار ارزان تمام شد. ابرکامپیوتر خود ساخته آنها با تمام
تجهیزات و سخت افزارها ۱۵۲۰۰۰ دلار هزینه در بر داشت و این یک دهم هزینه
یک ابرکامپیوتر تجاری است. این ابرکامپیوتر به سرعت ۱۶ بیلیون محاسبه در
ثانیه دست یافت و به رتبه ۳۱۵ این ابرکامپیوتر جهان دست پیدا کرد و صد
البته یکی از پایدارترین آنها بود. پس از سه ماه از آغاز فعالیت، هنوز بوت
نشده بود. بهترین موردی که امروزه برای لینوکس وجود دارد، طرفداران متعصب
آن هستند. هنگامی که یک قطعه سخت افزاری جدید ارائه می شود، هسته لینوکس
برای استفاده از آن تغییر داده می شود. برای مثال هنگام ارائه پردازنده ۶۴
بیتی شرکت توروالدز، هنوز یک انسان ساده است. بر خلاف بیل گیتس او یک
میلیاردر نیست.
تعاریف
نرمافزارآزاد
نرمافزار آزاد درباره آزادی است، نه قیمت. برای درک بهتر باید به معنای آزاد در آزادی بیان فکر کنید، نه در آبجو مجانی.
نرمافزار آزاد در مورد آزادی کاربران برای اجرا، کپی، توزیع، بررسی، تغییر
و بهبود دادن نرمافزار میباشد. بطور دقیقتر نرمافزار آزاد به چهار نوع
آزادی برای کاربران یک نرمافزار اشاره میکند:
- آزادی برای اجرای برنامه برای هر منظوری (آزادی ۰)
- آزادی برای مطالعه و بررسی چگونگی عملکرد برنامه و تغییر آن برای نیاز خود (آزادی ۱). دسترسی به کد منبع یک پیششرط برای این آزادی میباشد.
- آزادی برای توزیع مجدد کپیهایی از آن، بنابراین شما میتوانید به همسایگان خود کمک کنید (آزادی ۲)
- آزادی برای بهبود برنامه و انتشار این تغییرات برای عموم، بنابراین تمام جامعه از آن بهره میبرند (آزادی ۳). دسترسی به کد منبع یک پیششرط برای این آزادی میباشد.
در صورتی برنامهای یک نرمافزار آزاد به شمار میآید که کاربران آن همه
این آزادیها را داشته باشند. بنابراین شما باید برای توزیع مجدد کپیهایی
از آن، خواه با اصلاحات و تغییرات و خواه بدون آن، خواه رایگان و خواه در
ازای دریافت وجهی، برای هر شخصی و درهرجایی آزاد باشید. آزاد بودن برای
انجام این کارها (در میان کارهای دیگر) به این معنی است که شما مجبور به
درخواست و پرداخت هزینه برای مجوز نیستید.
شما همچنین باید این آزادی را داشته باشید تا در برنامه تغییراتی ایجاد
کنید و حتی بدون اشاره به وجود آنها، از آنها بطور خصوصی و برای کار خود
استفاده کنید. اگر هم تغییرات خود را منتشر کردید، نباید ملزم به اعلام آن
به شخص خاص و یا به روش خاصی باشید.
آزادی برای استفاده از برنامه به معنای آزادی هر شخص و یا سازمانی برای
استفاده از آن برنامه بر روی هر سیستم کامپیوتری، برای هر کاری، و بدون
نیاز به هر گونه ارتباط بعدی با توسعهدهنده و یا هر نهاد خاصی میباشد. در
این نوع آزادی، هدف کاربر اهمیت دارد نه هدف توسعهدهنده؛ شما به عنوان یک
کاربر آزاد هستید تا برنامه را برای هدف خودتان استفاده نمایید، و اگر
برنامه را به شخص دیگری نیز بدهید، او هم آزاد است تا برنامه را برای هدف
خودش استفاده نماید، شما حق ندارید هدف خودتان را به وی تحمیل نمایید.
به همان دلایلی که نرمافزار باید آزاد باشد، و در عین حال به خاطر اینکه
راهنماها جزئی از نرمافزارها هستند، راهنمای نرمافزارها نیز باید آزاد
باشند.
این استدلال در مورد دیگر فعالیتهایی که منجر به تولید نتایج کاربردی
میشوند نیز منطقی به نظر میرسد. به عبارت بهتر، فعالیتهایی که دانش
کاربردی ایجاد میکنند، مثل فعالیتهای آموزشی یا مورد ارجاع. ویکیپدیا
بهترین نمونه شناختهشده است.
هر فعالیتی میتواند آزاد باشد، همانطور که تعریف نرمافزار آزاد برای تعریف فعالیتهای فرهنگی آزاد نیز بسط داده شده است.
گروه دیگری استفاده از عبارت متنباز برای رساندن مفهومی نزدیک به (و نه
دقیقا) نرمافزار آزاد را شروع کردهاند. ما عبارت نرمافزار آزاد را ترجیح
میدهیم، زیرا به محض شنیدن آزادی را به ذهن میآورد، نه قیمت را. واژه
باز هیچگاه به آزادی منسوب نمیشود.
مجوزهای آزاد مورد تعریف بنیاد گنو:
- GNU General Public License (GPL)
- GNU Lesser General Public License (LGPL)
- GNU Affero General Public License (AGPL)
- GNU Free Documentation License (GFDL)
نرمافزارمتنباز
نرمافزار متنباز ( Open Source Software) به نرمافزارهایی میگویند که
افراد میتوانند در کد منبع آنها تغییر ایجاد کرده و یا و یا باگ احتمالی
آنها را رفع کنند. این یک شیوه توسعه نرمافزار است که میتواند هم برای
نرمافزارهای آزاد و هم برای نرمافزارهای با مالکیت انحصاری و تجاری به
کار رود.
نرمافزارهای متنباز باید دارای ۱۰ تعریف زیر باشند:
- توزیع مجدد آزاد
- کد منبع
- کار مشتقشده
- نگهداری تمامیت کد منبع نویسنده اصلی نرمافزار
- بین افراد و گروهها تبعیضی گذاشته نشود
- هیچ تبعیضی در نوع استفاده از نرمافزار وجود نداشته باشد
- توزیع اجازهنامه
- اجازهنامه نباید مخصوص یک محصول باشد
- اجازهنامه نباید نرمافزارهای دیگر را محدود کند
- اجازهنامه باید از نظر تکنولوژی بیطرف باشد
تفاوت نرمافزارهای آزاد با نرمافزارهای متنباز
اگر با تعریف نرمافزارهای آزاد آشنا باشید، متوجه شدهاید که تعریف
متنباز بسیار بسیار نزدیک به آزاد است، و شاید بتوان گفت اصول کلی آنها
یکی است، تا جایی که پیدا کردن تفاوت ایندو به کاری مشکل بدل شده و باید
نشست و به صورت دقیق متن پروانهها را بررسی کرد تا شاید در نهایت
تفاوتهایی کوچک آنها مشخص شوند، اینجاست که این پرسش مطرح میگردد:
چرا برخی از طرفداران نرمافزارهای آزاد بشدت با متنباز مخالف هستند؟
پاسخ این پرسش در فلسفهٔ وجودی این دو جنبش نهفته است، جنبش نرمافزارهای
آزاد اصل را بر آزادی گذاشته و برای رسیدن به این هدف هیچگونه انحصاری را
نمیپذیرد، در حالی که متنبازها کمی با این انحصار کنار میآید و هدف را
گسترش هر چه سریعتر نرمافزارهای متنباز و مقبول افتادن آن نزد عموم قرار
دادهاند، تا جایی که در متون رسمی این پروانهها تقریبا حرفی از آزادی به
میان نمیآید بلکه تنها بالا بردن قدرت و اطمینانپذیری این نرمافزارها
هدف قرار گرفته است. و طبیعی است که کسانی که خواهان آزادی ناب هستند،
با این رویه مخالفت کنند، و گاهی آن را تیشهزدن به ریشهی آزادی و
خرابکردن ذائقهی مردم میبینند. نتیجهی این تفاوت دیدگاه، این شده که یک
سری از پروانههای نرمافزار، که متنباز شناخته میشوند، آزاد شناخته
نمیشوند، چراکه رگههایی از انحصار در آنها وجود دارد. از طرف دیگر شاهد
پروانههای امآیتی، الجیپیال، بیاسدی و آپاچی هستیم که از
پروانههای نرمافزارهای «آزاد و متنباز» هستند، یعنی با هر دو فلسفه
انطباق داده شدهاند.
تاریخچه لینوکس [۴]
تعریف نرمافزارآزاد [۵]
تعریف نرمافزارمتنباز [۶]
تفاوت نرمافزارهای آزاد با نرمافزارهای متنباز [۷]
بارون ۱۳ ژوئن ۲۰۱۲، ساعت ۰۰:۴۲ (IRDT)