نرم‌افزار آزاد چیست؟

در یک ویدیوی ۳۰ دقیقه‌ای قصد دارم به صورت تقریبا کامل بگم که نرم‌افزار آزاد چیه؟ و چرا باید به نرم‌افزار آزاد احترام گذاشته بشه. اگر امکان مشاهده ویدیو رو ندارید و نمی‌تونید اون رو نگاه کنید، می‌توانید به مطلب «نرم‌افزار آزاد – Free/Libre Software» نوشته‌ای از «ارسطو عباسی (خودم)» مراجعه کنید.

ویدیوی آموزشی:

تشکر از وبسایت Tosinso که این ویدیو رو میزبانی کرد.

نرم‌افزار آزاد – Free/Libre Software

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

Libre and Gratisاولین موضوعی که باید در رابطه با نرم‌افزار آزاد یا Free Software گفته بشه این هستش که Free به این معنا نیست که شما چیزی رو به صورت رایگان عرضه کنید، در واقع این Free برمی‌گرده به کلمه Freedom یا همون آزادی. به همین دلیل نوشته میشه Free/Libre به این خاطر که Libre داره اشاره می‌کنه به حالت گفته شده. وقتی که هرچیزی رایگان -از نظر پولی- باشه بهش می‌گیم Gratis. پس اینجا منظورمون آزادی هستش نه موضوع پول. نرم‌افزار می‌تونه پولی باشه و می‌تونه رایگان هم باشه. در هر حال این موضوعی بود که اول از همه باید گفته می‌شد.

برنامه کامپیوتریخب بزارید با کمی از مسائل ساده شروع کنیم. برنامه چیه؟ برنامه یک‌سری از دستورات هستش که به کامپیوتر داده میشه و کامپیوتر اون‌ها رو انجام می‌کنه. یک‌سری دستور می‌دید، اجرا شده‌ش به شما برگشت داده میشه و این روند همیشه ادامه داره. خب این موضوع خیلی مهمه که بدونید چه کسی داره به کامپیوتر شما دستورالعمل یا برنامه می‌ده. خب مطمئنا فکر می‌کنید خودتون هستید ولی در عین حقیقت این شما نیستید، برخی از کامپیوتر‌ها تنها از رئیس اصلی‌شون دستور می‌گیرن، دستورالعمل‌ها از طرف اون‌ها اعمال میشه. یا اینکه شاید فکر کنید موبایل‌تون داره از شما فرمان‌برداری می‌کنه ولی در اصل اینطوری نیست، اونا در واقع صرفا دارن از رئیس اصلی‌شون فرمان‌برداری می‌کنن. رئیس اصلی‌شون بهشون می‌گه چه کاری رو در چه زمانی و در چه شرایطی انجام بده. به همین سادگی.

در دنیای نرم افزار دو احتمال کلی برای مبحث کنترل وجود داره. یا اینکه شما -کاربر- برنامه رو کنترل می‌کنید و یا اینکه برعکس نرم‌افزار داره شما -کاربر- رو کنترل می‌کنه:

کنترل کاربر توسط برنامه کنترل برنامه توسط کاربر

نرم افزار آزاد، نرم افزاری هستش که تحت ۴ شرایط یا ۴ اصل عرضه می‌شه و وقتی این ۴ شرط برقرار باشه یعنی اینکه شما به عنوان کاربر دارید برنامه رو کنترل می‌کنید. در غیر اینصورت حالتی پیش می‌آد که نرم افزار داره شما رو کنترل می‌کنه. خب بیاید این ۴ شرط رو بررسی کنیم:

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

شرط یکم: بتونید برنامه رو تغییر بدید: یعنی سورس برنامه رو در اختیار داشته باشید و بتونید اون سورس رو براساس میل و خواسته های خودتون تغییر بدید. خب در چنین حالتی هرکسی می تونه برنامه خودش رو تغییر بده. درسته؟! منظورم اینه که تغییر یک برنامه که توسط من انجام میشه روی برنامه‌ای که تو داری، هیچ تاثیری نمی زاره و این مسئله خیلی مهمه. یکی از خوبی های وجود چنین حالتی درست شدن انجمن ها و تیم‌های همکاری بین افراد مختلف هستش. شما تصور کنید که ۳ نفر هستید که یکی از شما برنامه نویسی بلد نیست. مثلا مهندس معماری هستش. ۲ نفر دیگه برنامه‌نویس هستند. در چنین حالتی مهندس معماری بدون اینکه مستقیما روی کدها کار کنه می تونه تاثیر بزاره. چطوری؟! به اون دو نفر برنامه نویس میگه اگه مثلا فلان قسمت برنامه رو تغییر بدید خوب میشه. اون دو نفر هم هرکدوم نظرات خودشون رو دارن و در نهایت چیز خیلی خوبی رو میسازن. به این حالت میگن حالت مشارکتی … حالتی که توی اون افراد با هر سطح دانشی به هر طوری شده می تونن به هم در توسعه برنامه‌ها کمک کنند.

شرط دوم: توزیع کنید: یکی از شرایط نرم افزار آزاد این هستش که شما بتونید نرم افزار رو آزادانه بین افراد مختلف توزیع کنید. یعنی اینکه من یه کپی از برنامه داشته باشم و اون رو به شما بدم و اون به فرد دیگه و به همین صورت.

شرط سوم: توزیع کردن همراه با تغییرات: همونطور که گفتم برخی از افراد برخی قسمت های برنامه اصلی رو دوست ندارن و می خوان تغییر بدن مطابق قانون یکم این کار رو می تونن انجام بدن، در کنار این می تونن همراه با این تغییرات برنامه رو مجددا توزیع کنند. به همین خوبی و به همین باحالی.

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

اونها با این کارشون می تونن شما رو جاسوسی کنند، کی می‌خوابید، با کی حرف می‌زنید، چه موسیقی گوش می‌دید و… بزارید یه نمونه خیلی ساده رو بگم. آمازون کیندل ها رو دیدید؟ این دستگاه‌ها به اسم کتابخون هم شناخته شدند، مثل تبلت هستند با این تفاوت که سیستم عامل خودشون رو دارن و تنها از یکسری فرمت‌ها مثل pdf و فرمت‌های اکثرا متنی پشتیبانی می‌کنند. کیندل یکی از این دستگاه‌هاست که توسط شرکت آمازون به فروش می‌رسه. این دستگاه ها مادام که به اینترنت یا یک شبکه متصل میشن -یا می‌شدند- از طریق یک بک دور «بک‌دور یا در پشتی یکی از راه‌های نفوذ به یک سیستم کامپیوتری یا شبکه یا هر چیز دیگری است. با یک مثال ساده. تصور کنید شما یه خونه دارید که یک در اصلی داره، حالا یه دزده از پشت خونه برای خودش یه در می‌سازه (زمین رو حفر میکنه یا هر کار دیگه‌ای) و به خونه شما دسترسی پیدا میکنه. این در حالی است که شما به عنوان صاحب خونه از این در پشتی خبری ندارید.» که توی دستگاه وجود داشت اطلاعات کاربر همراه با کتابخونه‌ش رو به سرورهای خود آمازون ارسال می‌کرد. در حقیقت یک دسترسی به صورت Remote «مثل ریموت ماشین. از دور کار میکنه» رو به شرکت می‌داد. یکی از کارهایی که اونا انجام دادن توی سال ۲۰۰۹ کتاب ۱۹۸۴ به نویسندگی جورج اورول از دستگاه‌های کیندل بدون اینکه کاربر بدونه حذف کردند. این یک نمونه خیلی ساده از دزدی‌ها و جرائمی است که نرم افزارهای غیر آزاد و شرکت‌های انحصاری انجام میدن. یک نمونه دیگه‌ش بک دور‌ مایکروسافت هستش که توی سیستم عامل ویندوز قرار می‌گیره و به سیستم‌های اطلاعاتی آمریکا این اجازه رو میده که بتونن اطلاعات و فعالیت های کاربران رو شناسایی کنند.

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

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

فروش برنامه به کاربر

ما کاربران هم داریم پولمون رو الکی به هدر می‌دیم، چرا؟! خب بازم ساده است به این خاطر که شما پول می‌دید تا از شما سوء استفاده بشه. در حقیقت شما پول میدید تا برنامه ای رو بخرید که داره از شما جاسوسی میکنه، حتی جدای از اون: به شما اطلاعتی راجع به کارکرد نرم افزار نمی‌ده. به شما نمیگه که این برنامه چطوری کار میکنه و چطوری با سخت افزار ارتباط برقرار میکنه و هزار موضوع دیگه. یعنی در حقیقت شما دارید پولتون رو صرف چیزی می‌کنید که در واقع بهتون نمی‌دن.

خب راه‌حل چیه؟

گنو/لینوکس

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

گنو/لینوکس: همونطور که گفته شد برای داشتن آزادی در دنیای نرم افزار نیاز به سیستم عامل و نرم افزارهای آزاد دارید به همین دلیل توی سال ۱۹۸۳ ریچارد استالمن تصمیم گرفت که سیستم عاملی آزاد رو تحت عنوان گنو درست کنه. خب کارش تقریبا داشت تموم میشد ولی وقتی به ۱۹۹۰ رسید متوجه شد که برای این سیستم عامل همه چی وجود داره -نرم افزار آزاد، کامپایلر، ویرایشگر و…- اما قسمتی اصلی به اسم هسته یا کرنل وجود نداره. همین بود که توی سال ۱۹۹۱ لینوس توروالدز هسته لینوکس رو منتشر کرد و این هسته در کنار ابزارهای گنو قرار گرفت. با این کار سیستم عامل کاملی از هسته لینوکس و مجموعه ابزارهای گنو تشکیل شد که ما اون رو گنو/لینوکس می خونیم.

خب این سیستم عامل کاملا آزاد بود و الان هم هست. اما برخی از توزیع‌های این سیستم عامل در حال حاضر کاملا آزاد نیستند و در اون‌ها از نرم افزارهای غیر آزاد استفاده میشه. به همین خاطر باید سعی بشه که این ابزارها از کامپیوترمون حذف بشه. -برای حذف این پکیج‌های غیر آزاد می‌تونید این لینک رو مطالعه کنید-

توزیع‌های غیرآزاد

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

نرم‌افزار آزاد و متن‌باز

 

GPL3لایسنس‌های نرم افزار آزاد:‌ خب یک برنامه برای اینکه آزاد باشه یا به عنوان یک نرم افزار آزاد ازش اسم برده بشه، جدای از اون چهار اصل نیاز داره تا مطابق با لایسنس‌های نرم افزاری که از طرف بنیاد نرم افزارهای آزاد یا Free Software Foundation عرضه میشه، نرم افزار خودش رو توزیع کنه. خب بزارید با یکی از مهمترین اون‌ها آشنا بشیم. لایسنس GPL یا GNU General Public License همونطور که گفته شد از طرف FSF منتشر شده و برنامه‌هایی که به صورت آزاد عرضه میشن می تونن از این لایسنس استفاده کنند. خب لایسنس‌های دیگه‌ای هم وجود داره اما یکی از اهمیت‌های این لایسنس وجود حالت کپی‌لفت یا Copy Left هستش. خب این درست برعکس حالت کپی رایت هستش … حالا از هر نظر مخصوصا جهت 🙂 ! کپی‌لفت به شما چه کمکی می‌کنند؟ ببینید ما نرم افزار آزاد رو درست نمی‌کنیم که به نرم افزارهای انحصاری این اجازه رو بدیم که از نرم افزارمون استفاده کنند. بزارید ساده‌تر بگم. فرض کنید که برنامه x رو به صورت آزاد عرضه کردید، خب این برنامه واقعا خوبه و واقعا عالی کار می‌کنه خب حالا یه شرکت بَد مثل مایکروسافت می‌آد کدهای شما رو برمیداره و اون‌ها رو در پروژه خودش استفاده می‌کنه و در نهایت برنامه خروجی رو به صورت آزاد منتشر نمی‌کنه. خب این حالتیه که از نرم افزار آزاد سوء استفاده میشه. برای همین کپی‌لفت عرضه شده است. کپی‌لفت میگه اگه شما دارید از نرم افزار آزاد استفاده می‌کنید، برای اینکه اون رو تغییر بدید و دوباره عرضه کنید هیچ کاری نیاز نیست که انجام بدید، بجز اینکه برنامه توزیع‌ شده رو مطابق با قواعد برنامه اول یا همون برنامه مادر دوباره عرضه کنید. یعنی اینکه اگه برنامه اول به صورت آزاد منتشر شد شما باید نرم افزار خودتون که مشتق شده از نرم افزار اولی هستش رو دوباره به صورت آزاد منتشر کنید. خب یه مشکل. تصور کنید دو تا برنامه وجود داره که یک کارکرد رو انجام می‌دن و هر دو به صورت متن باز در اختیار مردم قرار داره خب یکی‌شون آزاد هستش و دیگری نیست. برای اینکه برنامه آزاد بتونه در چنین حالتی برابری کنه نیاز هست که همواره آزاد بمونه اما نیازی نیست که کپی‌لفت هنوز وجود داشته باشه. خب برای این مورد هم لایسنس سفارشی ساخته شده به اسم LGPL که یک لایسنس با کپی‌لفت ضعیف هستش.

 

نرم‌افزار آزاد در مدارس و دانشگاه‌ها: یکی از موضوعاتی که من از بدو ورود به دانشگاه همواره پیگیرش بودم این بود که به دانشجوها کمک کنم تا از سیستم عامل لینوکس استفاده کنند و از ویندوز و مکینتاش فراری باشند، اما خب موفق نشدم. چرا روی این موضوع انقدر اصرار دارم. دانشگاه و یا مدارس بازار نرم افزارهای غیر آزاد نیستند، ما نباید به شرکتهای مختلف این اجازه رو بدیم که محصولات‌شون رو به افراد و دانشجوها بفروشند. در حقیقت باید گفت که این مکان‌ها، مکان بازاریابی شرکت‌های مختلف نیست. دومین موضوع اینکه به عنوان فردی که مشغول نوشتن نرم افزار آزاد میشه، شما قوه مشترک شدن و اشتراکی کار کردنتون بسیار بسیار قدرت پیدا می‌کنه. یعنی سعی می‌کنید با دوستاتون روی موضوعات مختلف کار کنید و ازشون استفاده کنید در غیر اینصورت شما فکر می‌کنید همه چیز متعلق به خودتونه و مفهوم انسانیت که یکی از ویژگی‌ها‌ش کمک کردن هستش رو زیر سوال می‌برید و دلیل آخر این موضوع هستش که من چرا به عنوان کسی که دارم دانش رو طلب می‌کنم و جویا‌ش می‌شم نباید به کدهای یک نرم افزار نگاه کنم؟ من فقط زمانی می تونم برنامه نویس خوبی بشم که کدهای زیادی رو مطالعه کنم، خب برنامه های غیر آزاد این امکان رو به شما نمی‌دن از طرف دیگه‌ای شما به عنوان یک محقق نمی تونید از اینکه برنامه داره از چه سخت افزارهای من یا از چه منابع سیستمی من استفاده میکنه خبر ندارید، اما دنیای نرم افزار آزاد به این شکل نیست. توی اون شما می تونید همه چیز رو مطالعه کنید، همه چیز رو ببینید و همه چیز رو متوجه  بشید، چرا؟! چون شما رئیس اون هستید!

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

در آخر یک سوال پیش می‌آد؟ چطوری می‌تونیم به دنیای نرم‌افزار آزاد کمک کنیم؟!

  • می‌تونیم نرم‌افزار آزاد بنویسیم!
  • می‌تونیم کمپین‌های نرم افزار آزاد رو تشکیل بدیم و یا اینکه توی اون‌ها شرکت کنیم.
  • می‌تونیم سعی کنیم که استاد‌ها و معلم‌های دانشگاه و مدارس رو متقاعد کنیم تا از نرم افزار آزاد استفاده کنند.
  • می‌تونیم به بقیه کمک کنیم!
  • و… .

منابع:

  1. سمینار ریچارد استالمن در TED
  2. اسلاید ریچارد استالمن در بنیاد نرم‌افزارهای آزاد

نویسنده و گردآورنده: ارسطو عباسی

 

حذف نرم‌افزارهای غیر آزاد با vrms

Richard M. Stallman
Richard M. Stallman

آزادی نرم افزار مسئله خیلی مهمیه. برخی از توزیع‌های لینوکس اخیرا این مفاد رو زیر پا گذاشتن و به اون اهمیت نمی‌دن. این کار هم با توزیع برخی از پکیج‌های غیرآزاد و انحصاری انجام میشه. خب چاره‌کار چیه! چاره کار اینه که ازشون استفاده نکنیم. نه منظورم اینه که چطوری شناسایی‌شون کنیم و حذفشون کنیم. خب این کاری نداره می‌تونیم از Virtual Richard M. Stallman کمک بگیریم. با این ابزار که توسط Bdale Garbee و Bill Geddes برای توزیع‌های دبیان ارائه شده می تونید اون‌ها رو شناسایی کنید. برای نصب این مورد با استفاده از apt-get می‌تونید دستور زیر رو وارد کنید:

بعد از اون دستور vrms رو وارد کنید. حالا می تونید برنامه‌هایی که آزاد نیستند رو ببینید. برای من مورد unrar رو آورد. خب چطوری حذف‌ش کنم؟ برای کامل حذف کردن از دستور purge استفاده کنید. به صورت زیر:

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