سال 1978 برای اولین بار یک برنامه نویس به نام ریچارد استالمن (Richard Stallman) در دانشگاه MIT پروژهای به نام گنو (GNU) را پایه گذاری کرد. پروژه گنو یک ابتکار گروهی و مشترک برای توسعه نرم افزار آزاد (Free Software) است. در ادامه به شرح و تفسیر نرم افزار آزاد خواهیم پرداخت. در واقع اگر مفهوم نرم افزار آزاد را به خوبی درک کنیم پروژه گنو را درک کردهایم.
نرم افزار آزاد (Free Software)
یک مفهوم کلی در تعریف نرم افزار آزاد این است که، کاربری که توانایی مطالعه کد منبع (Source Code) نرم افزار را دارد، آن کد را در اختیار بگیرد و تغییر دهد. حال ممکن است برای دریافت کپی از کد نرم افزار پول پرداخت کرده باشد، یا ممکن است نسخههایی را بدون پرداخت هزینه دریافت کرده باشد. اما صرف نظر از اینکه چگونه آن را تهیه کرده، همیشه این آزادی را دارد که نرم افزار را ویرایش و اجرا و حتی نسخههایی از آن را توزیع کند.
در نرم افزارهای آزاد، طراحی، ویرایش و بهبود عملکرد یک نرم افزار را کاربران به صورت فردی و یا گروهی کنترل میکنند. بنابراین نرم افزارهایی که کاربران آن را کنترل نمیکنند، نرم افزار «غیر آزاد» یا «اختصاصی» مینامیم. یعنی در نرم افزار غیر آزاد، توسعه دهنده برنامه را کنترل و آن را به ابزار قدرت ناعادلانه تبدیل میکند.
کنترل نرم افزار در اختیار کاربری قرار میگیرد که برنامه نویسی میداند. برنامهها توسط برنامه نویسان به زبان برنامه نویسی آن نرم افزار نوشته میشوند. شاید برای کسانی که به نرم افزار اختصاصی (غیر آزاد) مانند یک جعبه مُهر و موم شده عادت کردهاند، دستکاری و تغییر یک نرم افزار مضحک به نظر برسد، اما در دنیای آزاد این یک کار معمولی و راه خوبی برای یادگیری برنامه نویسی است.
مجوز کد منبع
کد منبع میتواند انحصاری یا متن باز (Open Source)اوپن سورس یا متن باز چیست؟ اوپن سورس به چه معناست؟اوپن سورس یا متن باز چیست؟ این صفحه عالی به بررسی این موارد و همچنین تاریخچه نرم افزار متن باز و نحوه به کارگیری متن باز در توسعه نرم افزار پرداخته است باشد، موافقت نامههای مجوز، منعکس کننده این تمایز هستند. برای مثال، هنگامی که کاربر یک مجموعه نرم افزاری مانند Microsoft Office را نصب میکند، کد منبع آن اختصاصی است و مایکروسافت فقط به مشتری اجازه میدهد تا به فایلهای اجرایی کامپایل شده نرم افزار و فایلهای کتابخانه برای فراخوانی توابع برنامه نیاز دارند، دسترسی داشته باشد. اما در مقایسه، زمانی که کاربر نرم افزار Apache OpenOffice را نصب میکند، کد منبع آن باز و قابل دانلود و تغییر است. در تصویر زیر نرم افزارهای آزاد، منبع باز، رایگان و عمومی را با هم مقایسه کردهایم.
بی عدالتی مالکیت
اگر کاربران برنامه را کنترل نکنند، برنامه، کاربران را کنترل میکند. با نرم افزار اختصاصی، همیشه یک نهاد توسعه دهنده یا مالک برنامه، وجود دارد که برنامه را کنترل میکند و از طریق آن، بر کاربرانش اعمال قدرت میکند. به این علت است که میگوییم ابزار قدرت ناعادلانه.
در موارد ظالمانه (اگر چه این ظلم کاملاً عادی شده است)، برنامههای اختصاصی برای جاسوسی از کاربران، محدود کردن آنها، سانسور و سوء استفاده از آنها طراحی شدهاند. به عنوان مثال، سیستم عامل Apple iThings و تراشههای ARM در ویندوز و دستگاههای تلفن همراه برای این هدف طراحی شدهاند.
میان افزارهای تلفن همراه و Google Chrome دارای یک درب پشتی جهانی هستند که به برخی از شرکتها اجازه می دهد تا برنامه را از راه دور بدون درخواست اجازه، تغییر دهند. همچنین آمازون کیندل (Amazon Kindle) هم یک درب پشتی دارد که میتواند کتابها را پاک کند.
استفاده از نرم افزار غیرآزاد در اینترنت اشیا و همچنین فروشندگان تلفنی در بستر اینترنت را به «اینترنت جاسوسان» تبدیل میکند. با هدف پایان دادن به بی عدالتی نرم افزارهای غیرآزاد، در سال 1984 با توسعه سیستم عامل رایگان گنو، جنبش نرم افزار آزاد آغاز شد و اکنون میلیونها کامپیوتر گنو را اجرا میکند، عمدتاً در ترکیب گنو/لینوکس.
گنو/ لینوکس چیست؟
گنو/ لینوکس برای ایجاد یک سیستم عامل مشابه یونیکس کلید خورد با این امکان که کد منبع آن میتواند برای کپی، اصلاح و توزیع در اختیار کاربران قرار گیرد. این شروطی بود برای بیان دقیق مفهوم کپی لفت (Copy Left) از دید استالمن. مفهوم کپی لفت برعکس کپی رایت (Copy Right) عمل میکند. در واقع توسعه دهندگان نرم افزار اختصاصی از کپی رایت برای سلب آزادی کاربران استفاده میکنند. اما در پروژه گنو از کپی لفت برای تضمین آزادی استفاده میشود.
گنو مخفف GNU's not Unix است. در گنو/ لینوکس، هسته سیستم عامل لینوکس (Linux) است اما سایر عناصر سیستم گنو هستند. طبق این پروژه، هیچ یک از سیستم عاملها به طور مستقل وجود ندارند و به همین دلیل لینوکس را به نام GNU Linux نام گذاری کردند. گنو/ لینوکس محصول یک سازمان نیست، زیرا چندین سازمان و افراد در آن مشارکت دارند. در گنو/ لینوکس بستههای نرم افزاری متفاوتی وجود دارد مانند: دبیان (Debian)، فدورا (Fedora) و اوبونتو (Ubuntu) سه نمونه کاربر پسند از توزیعهای دسکتاپ گنو/ لینوکس هستند. بستهها ظاهر و عملکرد گنو/ لینوکس را تغییر میدهند و آن را به یک سیستمعامل انعطافپذیر تبدیل میکنند.
مزایای گنو/لینوکس
- سفارشی سازی سیستم عامل: کاربران میتوانند سیستم عامل را به دلخواه شخصی سازی کنند. به عنوان مثال، از میان پوستههای (لایههای بیرونی سیستم عامل را پوسته میگویند) مختلف خط فرمان، برنامههایی را انتخاب کنند که آنها را قادر میسازد تا یک برنامه رایانهای را به صورت متنی پردازش کنند یا به آنها دستور دهند.
- پایداری و ثبات سیستم عامل: منظور از پایداری این است که به ندرت خراب میشود.
- دارای استانداردهای باز است: لینوکس گنو قادر است با سایر پلتفرمهای متن باز (Open Source)اوپن سورس یا متن باز چیست؟ اوپن سورس به چه معناست؟اوپن سورس یا متن باز چیست؟ این صفحه عالی به بررسی این موارد و همچنین تاریخچه نرم افزار متن باز و نحوه به کارگیری متن باز در توسعه نرم افزار پرداخته است ادغام شود.
- دارای پایگاه و انجمن برای ایجاد، توزیع و پشتیبانی نسخههای سیستم عامل است.
معایب گنو/لینوکس
- پیچ و خم یادگیری: اگر کاربر به سیستم عامل ویندوز یا Mac عادت داشته باشد، ممکن است زمان ببرد تا به سیستم و برنامههای جدید عادت کند.
- تفاوت نرم افزار: کاربران ممکن است نرم افزارهایی که در یک مدت زمان با آن مانوس شدهاند را از دست بدهند مانند Microsoft Office یا مجموعه Adobe Creative.
- عدم پشتیبانی بالقوه سخت افزار: اگر چه بسیاری از سختافزارها از گنو/لینوکس پشتیبانی میکنند، اما نه همه آنها. کاربران باید از قبل بدانند که آیا سخت افزار مورد نظر از سیستم عامل آنها پشتیبانی میکند یا خیر.
گنو زیپ (Gzip)
گنو زیپ (GNU zip) یا Gzip یک الگوریتم رایگان و منبع باز برای فشرده سازی فایلها و تحت نظارت پروژه گنو است. گنو زیپ در فشرده سازی و کاهش اندازه دادهها برای صرفه جویی در فضای ذخیره سازی و در نتیجه افزایش سرعت انتقال داده است. گنو زیپ اغلب برای فشرده سازی صفحات وب در زمان بارگزاری روی سرور و زمانی که صفحه وب در کامپیوتر سمت کاربر با مرورگر باز میشود رفع فشرده سازی شود. معمولاً از گنو زیپ برای فشردهسازی فایلهای فردی (مانند برنامههای اجرایی برای نصب نرمافزار) استفاده میشود.
دو مهندس نرم افزار به نام ژان لوپ گیلی (Jean-Loup Gailly) و مارک آدلر(Mark Adler) گنو زیپ را به عنوان جایگزینی برای فشرده سازی فرمتی که در نسخههای قبلی یونیکس و لینوکس استفاده میشد، توسعه دادند. همچنین گنو زیپ این قابلیت را دارد که در سایر سیستم عاملها از جمله ویندوز و مکینتاش استفاده شود.
گنو GRUB
GNU GRUB یا (GRand Unified Bootloader) یک بسته بوت لودر (Bootloader) است که از چندین سیستم عامل روی یک کامپیوتر پشتیبانی میکند. در هنگام راه اندازی، کاربر میتواند سیستم عامل مورد نظر را برای اجرا انتخاب کند. گنو GRUB اغلب در سیستمهای مشابه یونیکس از جمله گنو، لینوکس و سولاریس استفاده میشود.
برخی از ویژگی های GRUB:
- میتواند تعداد نامحدودی از ورودیهای بوت را پشتیبانی کند.
- به صورت پویا قابل تنظیم است، به این معنی که کاربران میتوانند در طول راه اندازی تغییرات را ایجاد کنند.
- میتواند روی هر دستگاهی از جمله هارد دیسک، دی وی دی، سی دی رام و USB نصب و اجرا شود.
- میتواند سیستم عاملها را قبل از راه اندازی از حالت فشرده خارج کند.
- میتواند سیستم عاملها را از مکانهای مختلف از جمله شبکهها راه اندازی کند.
- لازم نیست هر بار که یک فایل پیکربندی تغییر میکند دوباره نوشته شود.
- پیاده سازیهایی وجود دارند که از Windows و DOS پشتیبانی میکنند.
- رابط فرمان تعاملی است.
جمع بندی
هدف از پایه گذاری پروژه گنو توسعهی نرم افزارهای آزاد است با این رویکرد که نرم افزارها به سمت شخصی سازی رشد کنند. و زمانی که نرم افزارها شخصی سازی شوند از انحصاری بودن فاصله میگیرند و کاربران با توجه به نیازهای خود نرم افزارها را توسعه میدهند. توسعه سیستم عامل لینوکس، فایلهای فشرده و راه اندازی چندین سیستم عامل به طور همزمان در بستر پیاده سازی با نرم افزار آزاد از کاربردهای گنو است که در این مقاله به آن پرداختیم.
پروژه گنو چیست؟
پروژه گنو یک فناوری در زمینه توسعه نرم افزار آزاد است. بیشترین استفاده آن در سیستم عامل لینوکس است.
به کدام نرم افزارها نرم افزار آزاد می گویند؟
نرم افزار آزاد به معنای نرم افزار مجانی نیست. شما برای استفاده از نرم افزار آزاد شاید مجبور باشید پول بدهید. از این نظر نرم افزار آزاد مثل نرم افزار منبع باز (Open Source) است. سورس کد نرم افزار آزاد مانند منبع باز باید در دسترس باشد. تمایز نرم افزار آزاد و منبع باز در فلسفه وجودی آنهاست. جنبش نرم افزار آزاد با هدف برقراری عدالت و مقابله با کنترل جامعه از طریق نرم افزار شکل گرفت.
به کدام نرم افزار اوپن سورس گفته می شود؟
سورس کد نرم افزار اوپن سورس در دسترس عموم است. طبق قواعدی این سورس کد قابل تغییر و به اشتراک گذاری مجدد است. هدف از این کار مشارکت گروهی در توسعه و دیباگ نرم افزار است. از این نظر با هدف نرم افزار آزاد فرق دارد.
نرم افزار اختصاصی چیست؟
به نرم افزاری که شرکت توسعه دهنده آن را تولید و در اختیار کاربر قرار میدهد و کاربر کنترلی روی آن ندارد نرم افزار اختصاصی میگویند، که معمولا این نرم افزارها پولی هستند.