نرمافزار آزاد
این مقاله براساس اسلاید وبسایت Free Software Foundation نوشته شده است. موضوعات گفته شده در این اسلاید را میتوانید به صورت ویدیویی در وبسایت Ted مشاهده بکنید. این ارائه در سال ۲۰۱۴ توسط بنیانگذار نرم افزار آزاد «ریچارد استالمن» ارائه شد.
اولین موضوعی که باید در رابطه با نرمافزار آزاد یا Free Software گفته بشه این هستش که Free به این معنا نیست که شما چیزی رو به صورت رایگان عرضه کنید، در واقع این Free برمیگرده به کلمه Freedom یا همون آزادی. به همین دلیل نوشته میشه Free/Libre به این خاطر که Libre داره اشاره میکنه به حالت گفته شده. وقتی که هرچیزی رایگان -از نظر پولی- باشه بهش میگیم Gratis. پس اینجا منظورمون آزادی هستش نه موضوع پول. در هر حال این موضوعی بود که اول از همه باید گفته میشد.

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


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

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

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