بازگشت به مقاله‌ها

آخرین نوشته‌ها

چرا نرم‌افزار آزاد مهم هست؟ از حق انتخاب کاربر تا آینده‌ی فناوری

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

چرا نرم‌افزار آزاد مهم هست؟ از حق انتخاب کاربر تا آینده‌ی فناوری

چرا نرم‌افزار آزاد مهم هست؟ از حق انتخاب کاربر تا آینده‌ی فناوری

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

اما یه سؤال مهم وجود داره: وقتی از یه نرم‌افزار استفاده می‌کنیم، چه کسی درباره‌ی نحوه‌ی کار اون تصمیم می‌گیره و ما چه اختیاری داریم؟

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

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

اینجاست که مفهوم نرم‌افزار آزاد (Free Software) اهمیت پیدا می‌کنه.

نرم‌افزار آزاد درباره‌ی یه ایده‌ی ساده، ولی بسیار مهم حرف می‌زنه: نرم‌افزار نباید صرفا ابزاری باشه که دیگران در اختیار ما قرار میدن؛ ما هم باید تا حد مشخصی حق استفاده، بررسی، تغییر و به‌اشتراک‌گذاری اون رو داشته باشیم.

برای درک اهمیت این موضوع، باید از یه سوءتفاهم رایج شروع کنیم.

۱. نرم‌افزار آزاد یعنی نرم‌افزار رایگان؟

نه. این دو مفهوم با هم تفاوت دارن، هرچند ممکنه یه نرم‌افزار هم آزاد باشه و هم رایگان.

در زبان انگلیسی، کلمه‌ی Free هم می‌تونه به معنی «رایگان» باشه و هم به معنی «آزاد». در بحث نرم‌افزار آزاد، منظور اصلی آزادیه، نه قیمت.

برای اینکه این تفاوت روشن‌تر بشه، سه وضعیت رو در نظر بگیر.

وضعیت اول: یه نرم‌افزار رایگان، اما اختصاصی.

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

این برنامه رایگانه، اما لزوما آزاد نیست.

وضعیت دوم: یه نرم‌افزار آزاد که برای دریافتش پول پرداخت می‌کنی.

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

پرداخت پول به‌خودی‌خود باعث نمیشه نرم‌افزار از حالت آزاد خارج بشه.

وضعیت سوم: یه نرم‌افزار آزاد که رایگان هم در اختیارت قرار گرفته.

این حالت هم کاملا رایجه. نرم‌افزار رو بدون پرداخت پول دریافت می‌کنی و در عین حال، مجوزش بهت اجازه میده ازش استفاده کنی، کدش رو بررسی کنی، تغییرش بدی و در چارچوب مجوز، نسخه‌های اصلی یا تغییریافته‌ش رو منتشر کنی.

بنابراین، رایگان بودن و آزاد بودن دو ویژگی جدا از هم هستن.

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

در نتیجه، وقتی درباره‌ی نرم‌افزار آزاد حرف می‌زنیم، سؤال اصلی این نیست که «برای دانلودش باید پول بدم یا نه؟»؛ سؤال اینه که چه آزادی‌هایی برای استفاده و تغییر اون دارم؟

۲. نرم‌افزار آزاد دقیقا چه آزادی‌هایی به ما میده؟

بنیاد نرم‌افزار آزاد (Free Software Foundation یا FSF) برای اینکه مشخص کنه یه برنامه چه زمانی نرم‌افزار آزاد محسوب میشه، چهار آزادی اساسی رو تعریف کرده. این آزادی‌ها معیار اصلی تشخیص نرم‌افزار آزاد در دیدگاه این بنیاد هستن. این چهار آزادی رو توضیح میده.

برای درک بهترشون، فرض کنیم برنامه‌ای برای مدیریت فایل‌ها داریم.

آزادی صفر: اجرای برنامه برای هر هدفی

اولین آزادی، حق اجرای برنامه برای هر هدفیه که داریم.

فرض کن یه برنامه‌ی مدیریت فایل نصب کردی. می‌خوای ازش برای مرتب کردن فایل‌های شخصی استفاده کنی، توی شرکت ازش کمک بگیری یا بخشی از فرایند کاری خودت رو باهاش انجام بدی.

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

شاید بپرسی چرا به این آزادی میگن آزادی صفر، نه آزادی یک؟

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

آزادی یک: بررسی برنامه و تغییر اون

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

اینجا باید با یه مفهوم مهم آشنا بشیم: کد منبع (Source Code).

برنامه‌نویس‌ها نرم‌افزار رو با زبان‌هایی مثل C، Python، Rust یا JavaScript می‌نویسن. این نوشته‌ها ساختار و منطق برنامه رو مشخص می‌کنن؛ مثلا اینکه فایل‌ها چطور باز بشن، اطلاعات کجا ذخیره بشن یا چه اتفاقی بعد از کلیک روی یه دکمه رخ بده.

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

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

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

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

نکته‌ی اصلی اینه که برای بررسی و تغییر نرم‌افزار، از نظر مجوز به اجازه‌ی موردی و جداگانه‌ی سازنده وابسته نباشیم.

آزادی دو: انتشار دوباره‌ی نسخه‌ی اصلی

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

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

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

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

آزادی سه: انتشار نسخه‌های تغییر‌یافته

چهارمین آزادی، امکان انتشار نسخه‌ای از نرم‌افزاره که خودمون یا دیگران تغییرش داده‌ایم.

فرض کن برنامه‌ی مدیریت فایل مورد استفاده‌ت یه قابلیت مهم نداره. کد منبع رو بررسی می‌کنی، قابلیت رو اضافه می‌کنی و نسخه‌ی جدیدی می‌سازی.

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

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

این روند می‌تونه به بهتر شدن نرم‌افزار کمک کنه؛ چون پیشرفت اون فقط به توانایی و تصمیم یک تیم محدود نمی‌مونه.

در واقع، این چهار آزادی به هم وابسته‌ان. اجرای برنامه بدون محدودیت هدف، بررسی کد بدون امکان تغییر، یا امکان تغییر بدون اجازه‌ی انتشار عمومی، هر کدوم به‌تنهایی تصویر کاملی از نرم‌افزار آزاد ارائه نمی‌کنن.

نرم‌افزار آزاد یعنی کاربر آزادی استفاده، مطالعه، اشتراک‌گذاری و انتشار نسخه‌های تغییر‌یافته رو داشته باشه.

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

۳. چرا این آزادی‌ها به مجوز نیاز دارن؟

شاید فکر کنیم وقتی برنامه‌نویسی کدش رو در اینترنت منتشر می‌کنه، همه می‌تونن هر کاری که می‌خوان باهاش انجام بدن. اما از نظر حقوقی، این برداشت همیشه درست نیست.

کد نرم‌افزار هم مثل بسیاری از آثار خلاقانه می‌تونه تحت قوانین حق نشر (Copyright) قرار بگیره. در حالت معمول، نویسنده یا صاحب حقوق اثر می‌تونه درباره‌ی نحوه‌ی استفاده، تکثیر و انتشار اون تصمیم بگیره. اینکه کد رو بتونیم ببینیم، به‌خودی‌خود تمام این حقوق رو به ما نمی‌ده.

برای همین، نرم‌افزار آزاد به مجوز (License) نیاز داره؛ مجوزی که مشخص کنه دیگران تحت چه شرایطی اجازه دارن از کد استفاده کنن، اون رو تغییر بدن و منتشر کنن.

مجوز نرم‌افزار دقیقا چیه؟

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

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

این تفاوت‌ها مهم هستن، چون همه‌ی مجوزهای آزاد شرایط یکسانی ندارن.

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

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

مجوزهای آزاد چه تفاوتی با هم دارن؟

برای شناخت دنیای نرم‌افزار آزاد، آشنایی اولیه با چند مجوز معروف کافیه.

مجوزویژگی کلی
MITمجوزی ساده و منعطف که اجازه‌ی استفاده، تغییر، انتشار و استفاده‌ی تجاری رو میده؛ با رعایت شرایطی مثل حفظ اعلان‌های مربوط به حق نشر و مجوز
Apache 2.0مجوزی منعطف که علاوه بر اجازه‌های گسترده، شرایط مشخصی درباره‌ی اعلان‌ها و حقوق ثبت اختراع داره
GPLمجوزی با رویکرد کپی‌لفت که هنگام توزیع نسخه‌های مشمولش، تعهداتی برای حفظ آزادی نرم‌افزار ایجاد می‌کنه
LGPLمجوزی با کپی‌لفت محدودتر که برای برخی کتابخانه‌ها طراحی شده و شرایط خاص خودش رو داره
AGPLمجوزی کپی‌لفت که برای برخی نرم‌افزارهای تحت شبکه، شرایطی درباره‌ی ارائه‌ی کد منبع نسخه‌ی تغییریافته به کاربران شبکه در نظر می‌گیره
BSDخانواده‌ای از مجوزهای منعطف با شرایط متفاوت؛ برخی از نسخه‌های رایج اون‌ها اجازه‌های گسترده‌ای برای استفاده و بازتوزیع میدن

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

برای نمونه، MIT و GPL هر دو می‌تونن نرم‌افزار آزاد رو پوشش بدن، اما از نظر شرایط بازتوزیع یکسان نیستن. انتخاب مجوز روی این اثر می‌ذاره که دیگران با کد ما چه کارهایی می‌تونن انجام بدن.

کپی‌لفت (Copyleft)؛ آزادی‌ای که در نسخه‌های بعدی هم باقی می‌مونه

یکی از مفاهیم مهم در این زمینه، کپی‌لفت هست.

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

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

در این مدل، دریافت‌کننده‌ی نرم‌افزار هنگام بازتوزیع نسخه‌های مشمول مجوز باید شرایطی رو رعایت کنه که آزادی‌های تعیین‌شده حفظ بشن. برای مثال، مجوز GNU GPL در شرایط مشخصی توزیع نسخه‌ی تغییریافته رو به ارائه‌ی کد منبع متناظر و حفظ شرایط مجوز وابسته می‌کنه.

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

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

در مقابل، مجوزهای منعطفی مثل MIT یا BSD معمولا اجازه میدن کد آزاد در محصولات اختصاصی هم استفاده بشه، به شرط رعایت شرایط مجوز. این رویکرد هم می‌تونه مفید باشه؛ مثلا استفاده از یه کتابخانه‌ی آزاد در محصولات تجاری ممکنه باعث بشه افراد بیشتری از اون بهره ببرن.

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

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

۴. نرم‌افزار آزاد چه فرقی با متن‌باز داره؟

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

با این حال، دو مفهوم از زاویه‌های متفاوتی به موضوع نگاه می‌کنن.

جنبش نرم‌افزار آزاد بیشتر روی آزادی کاربران، حق کنترل بر فناوری و پیامدهای اخلاقی محدود شدن این آزادی‌ها تأکید می‌کنه. جنبش متن‌باز (Open Source) بیشتر بر شرایط مجوز، امکان دسترسی به کد، مشارکت، توسعه‌ی مشترک و مزایای عملی این مدل تمرکز داره.

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

آیا هر نرم‌افزاری که کدش در اینترنت باشه متن‌بازه؟

نه.

متن‌باز بودن صرفا به معنی نمایش کد در یک سایت نیست. طبق تعریف رسمی Open Source Initiative، مجوز باید مجموعه‌ای از شرایط مشخص رو رعایت کنه؛ از جمله اجازه‌ی بازتوزیع، دسترسی به کد منبع و امکان ساخت و انتشار آثار مشتق‌شده.

فرض کن شرکتی کد یه برنامه رو منتشر می‌کنه، اما اجازه نمیده افراد از اون برای اهداف تجاری استفاده کنن یا نسخه‌ی تغییر‌یافته‌ای ازش منتشر کنن. چنین برنامه‌ای صرفا به خاطر در دسترس بودن کد، متن‌باز محسوب نمیشه.

گاهی اصطلاح Source Available هم استفاده میشه؛ یعنی کد منبع در دسترسه، اما مجوز ممکنه آزادی‌های لازم برای آزاد یا متن‌باز محسوب شدن نرم‌افزار رو فراهم نکنه.

به همین دلیل، هنگام بررسی یه پروژه باید هم کد رو دید و هم مجوزش رو.

پس کدوم اصطلاح درست‌تره؟

بستگی داره درباره‌ی کدوم جنبه حرف می‌زنیم.

اگه موضوع حق کاربر برای اجرا، بررسی، تغییر و اشتراک‌گذاری نرم‌افزاره، «نرم‌افزار آزاد» اصطلاح دقیق‌تری برای بیان اون دیدگاه هست. اگه درباره‌ی مدل توسعه‌ی عمومی، مشارکت توسعه‌دهنده‌ها و شرایط مجوز صحبت می‌کنیم، «متن‌باز» هم اصطلاح مهم و رایجیه.

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

۵. آزادی نرم‌افزار چه ربطی به زندگی روزمره‌ی ما داره؟

ممکنه تا اینجا تصور کرده باشی که این بحث بیشتر برای برنامه‌نویس‌هاست؛ کسانی که می‌خوان کد بنویسن، مجوز انتخاب کنن یا در پروژه‌های گیت‌هاب مشارکت داشته باشن.

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

حق انتخاب در برابر تصمیم‌های سازنده

فرض کن برای نوشتن اسناد کاری، به یه برنامه‌ی مشخص وابسته شدی. سال‌ها فایل‌هات رو با همون برنامه ذخیره کردی و فرایند کاری‌ت رو براساس قابلیت‌هاش ساختی.

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

ممکنه بتونی از برنامه‌ی دیگری استفاده کنی، اما انتقال فایل‌ها، جایگزین کردن قابلیت‌ها و یادگیری ابزار جدید هزینه‌ی خودش رو داره.

این وضعیت رو میشه نوعی وابستگی به فروشنده (Vendor Lock-in) دونست؛ یعنی تغییر محصول یا ارائه‌دهنده برای کاربر آن‌قدر پرهزینه میشه که عملا انتخاب‌های محدودی داره.

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

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

مالکیت داده‌ها با آزادی نرم‌افزار یکی نیست

این دو مفهوم به هم ارتباط دارن، ولی یکسان نیستن.

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

پس برای انتخاب ابزارهای مهم، بهتره چند سؤال جداگانه بپرسیم:

  • آیا نرم‌افزار آزاد هست؟
  • آیا اطلاعاتم رو می‌تونم به قالبی قابل‌انتقال ذخیره کنم؟
  • آیا می‌تونم بدون وابستگی به یک سرویس خاص به داده‌هام دسترسی داشته باشم؟
  • اگه شرکت یا پروژه تعطیل بشه، آیا راهی برای ادامه‌ی کار دارم؟

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

آزادی نرم‌افزار و حریم خصوصی

نرم‌افزارها ممکنه اطلاعات زیادی از ما دریافت کنن: موقعیت مکانی، فهرست مخاطب‌ها، فایل‌ها، عادت‌های استفاده یا اطلاعاتی که برای ارائه‌ی خدمات ضروری نیستن.

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

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

اما باید دقت کنیم: نرم‌افزار آزاد لزوما نرم‌افزار خصوصی یا امن نیست.

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

باز بودن کد امکان بررسی رو فراهم می‌کنه؛ تضمین نمی‌کنه که بررسی انجام شده یا نتیجه‌ی اون درست بوده.

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

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

گاهی این سؤال مطرح میشه که اگه کد منبع عمومی باشه، مهاجم‌ها هم می‌تونن آسیب‌پذیری‌های برنامه رو پیدا کنن. آیا این موضوع باعث ناامن‌تر شدن نرم‌افزار نمیشه؟

پاسخ ساده‌ای مثل «باز بودن کد همیشه امنیت رو بیشتر می‌کنه» یا «مخفی بودن کد همیشه امن‌تره» درست نیست.

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

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

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

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

۶. چرا نرم‌افزار آزاد می‌تونه به نوآوری کمک کنه؟

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

این ویژگی زمینه‌ای برای توسعه‌ی مشترک فراهم می‌کنه.

لازم نیست همه‌چیز رو از صفر بسازیم

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

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

این یعنی دانش و تلاش قبلی از بین نمیره؛ پروژه‌های جدید می‌تونن روی دستاوردهای قبلی ساخته بشن.

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

همکاری افراد با مهارت‌ها و منابع متفاوت

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

همه‌ی این افراد لازم نیست همکار یک شرکت باشن یا در یک کشور زندگی کنن. ابزارهایی مثل Git، سامانه‌های مدیریت کد و فهرست‌های گفتگو، همکاری از راه دور رو ساده‌تر می‌کنن.

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

فورک؛ وقتی پروژه مسیر متفاوتی پیدا می‌کنه

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

اگر مجوز و ساختار پروژه اجازه بده، می‌تونن نسخه‌ای جداگانه بسازن و توسعه‌ش رو ادامه بدن. به این کار فورک (Fork) میگن.

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

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

با این حال، امکان فورک شدن یه پروژه به این معنیه که اختلاف‌نظر لزوما به پایان راه یا پذیرش اجباری تصمیم تیم اصلی منتهی نمیشه.

رقابت به‌جای وابستگی کامل به یک سازنده

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

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

در نتیجه، کاربر لزوما مجبور نیست تمام تصمیم‌های یک تیم رو بپذیره تا بتونه از فناوری پایه استفاده کنه.

۷. نرم‌افزار آزاد چطور به آموزش کمک می‌کنه؟

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

یادگیری از کد واقعی

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

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

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

کاهش هزینه‌ی ورود به دنیای برنامه‌نویسی

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

این موضوع برای دانش‌آموزها، دانشجوها و مراکز آموزشی با بودجه‌ی محدود اهمیت زیادی داره.

مهم‌تر اینکه استفاده از ابزار آزاد می‌تونه به دانشجو اجازه بده محیط تمرینش رو تغییر بده و آزمایش‌های بیشتری انجام بده، بدون اینکه برای هر تغییر به مجوز جداگانه‌ای نیاز داشته باشه.

آموزش نباید به یک محصول وابسته بمونه

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

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

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

۸. نقش نرم‌افزار آزاد در اقتصاد و کسب‌وکار

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

این برداشت درست نیست.

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

درآمد فقط از انحصار کد به دست نمیاد

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

شرکتی که این خدمات رو ارائه میده، بابت دانش، زمان و مسئولیتی که می‌پذیره پول دریافت می‌کنه.

در چنین مدلی، ارزش کسب‌وکار لزوما از مخفی نگه داشتن کد نمیاد؛ ممکنه از کیفیت خدمات، تجربه‌ی فنی و توانایی حل مسائل مشتریان حاصل بشه.

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

چرا شرکت‌های بزرگ در پروژه‌های آزاد مشارکت می‌کنن؟

ممکنه این سؤال پیش بیاد که اگر یه شرکت می‌تونه نرم‌افزار اختصاصی بسازه، چرا باید برای توسعه‌ی پروژه‌ای مشارکت کنه که رقبا هم می‌تونن ازش استفاده کنن؟

چون همه‌ی بخش‌های فناوری لزوما مزیت رقابتی اختصاصی یک شرکت نیستن.

برای مثال، شرکت‌های مختلف ممکنه از یک هسته‌ی سیستم‌عامل، کتابخانه‌ی رمزنگاری یا ابزار مدیریت زیرساخت استفاده کنن. اگر هر شرکت مجبور باشه تمام این اجزا رو جداگانه توسعه بده، هزینه‌ها بالا میره و رفع مشکلات مشترک دشوارتر میشه.

مشارکت در یک پروژه‌ی مشترک می‌تونه هزینه‌ی نگهداری بخش‌های مشترک رو کاهش بده، کیفیت اون‌ها رو بهبود بده و امکان تمرکز بیشتر روی محصولات اختصاصی هر شرکت رو فراهم کنه.

البته مشارکت شرکت‌ها همیشه صرفا از روی خیرخواهی نیست. ممکنه منافع تجاری، کاهش هزینه‌ها، تأثیرگذاری بر مسیر توسعه یا جذب نیروی متخصص هم در تصمیمشون نقش داشته باشه. این موضوع با آزاد بودن نرم‌افزار تناقضی نداره.

آیا نرم‌افزار آزاد همیشه ارزان‌تره؟

نه لزوما.

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

برای سازمان‌ها، مقایسه‌ی درست باید هزینه‌ی کل مالکیت (Total Cost of Ownership) رو در نظر بگیره؛ یعنی مجموع هزینه‌های خرید، پیاده‌سازی، نگهداری، آموزش، ارتقا و خروج از سیستم.

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

۹. چرا نرم‌افزار آزاد برای زیرساخت اینترنت مهمه؟

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

وب‌سرورها، سیستم‌عامل‌های سروری، ابزارهای شبکه، زبان‌های برنامه‌نویسی، پایگاه‌های داده و سامانه‌های مدیریت زیرساخت، بخش‌هایی از این اکوسیستم هستن.

برای نمونه، پروژه‌هایی مثل Linux، Nginx، PostgreSQL و Python در حوزه‌های متفاوتی نقش دارن. مجوز و مدل توسعه‌ی هر پروژه باید جداگانه بررسی بشه، اما این ابزارها نشون میدن که نرم‌افزارهای عمومی می‌تونن در زیرساخت‌های حرفه‌ای و کسب‌وکارهای بزرگ هم کاربرد داشته باشن.

زیرساخت مشترک، امکان ساخت خدمات بیشتر

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

چنین کاری غیرعملیه. استفاده از نرم‌افزارهای عمومی به تیم‌ها اجازه میده منابعشون رو روی نیاز اصلی‌شون متمرکز کنن.

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

وابستگی به پروژه‌های عمومی، مسئولیت هم ایجاد می‌کنه

استفاده از نرم‌افزار آزاد به این معنی نیست که می‌تونیم بدون توجه به نگهداری اون، تا همیشه بهش تکیه کنیم.

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

این مسئله به‌ویژه برای کتابخانه‌ها و ابزارهای کوچکی مهمه که تعداد زیادی پروژه‌ی دیگر بهشون وابسته‌ان، اما کمتر دیده میشن.

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

۱۰. نرم‌افزار آزاد و حاکمیت فناوری

وقتی یه کشور، دانشگاه یا سازمان بخش مهمی از فعالیت‌هاش رو به یک نرم‌افزار وابسته می‌کنه، توانایی ادامه‌ی استفاده و نگهداری از اون به یک مسئله‌ی راهبردی تبدیل میشه.

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

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

چرا این موضوع برای کشورهای در حال توسعه مهمه؟

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

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

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

اما نباید انتظار داشت که نرم‌افزار آزاد به‌تنهایی مشکلات فناوری یک کشور رو حل کنه. برای نگهداری نرم‌افزار به نیروی انسانی، زیرساخت، سرمایه‌گذاری، آموزش و مدیریت مناسب نیاز داریم. دسترسی به کد بدون توانایی استفاده از اون، مزیت محدودی ایجاد می‌کنه.

نرم‌افزار آزاد در محیط‌های سازمانی و دولتی

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

برای مثال، اگر چند شرکت بتونن یک سامانه‌ی عمومی رو نصب و پشتیبانی کنن، سازمان مشتری ممکنه گزینه‌های بیشتری برای انتخاب پیمانکار داشته باشه.

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

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

۱۱. نرم‌افزار آزاد چه تأثیری بر جامعه و همکاری جمعی داره؟

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

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

این مدل می‌تونه شکل‌هایی از همکاری رو ممکن کنه که در اون مشارکت‌کننده‌ها لزوما همدیگه رو نمی‌شناسن یا رابطه‌ی کاری مستقیم ندارن.

اشتراک‌گذاری دانش

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

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

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

مشارکت فقط برای متخصص‌ها نیست

برای کمک به پروژه‌های آزاد لازم نیست حتما توسعه‌دهنده‌ی حرفه‌ای باشی.

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

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

مهم اینه که امکان مشارکت وجود داشته باشه و پروژه‌ها بتونن از دانش و تجربه‌ی افراد بیشتری بهره ببرن.

۱۲. چند نمونه از نرم‌افزارهای آزاد در دنیای واقعی

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

لینوکس؛ از هسته‌ی سیستم‌عامل تا توزیع‌های گوناگون

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

سیستم‌هایی که در گفتگوهای روزمره «لینوکس» نامیده میشن، معمولا از هسته‌ی لینوکس به همراه ابزارها، کتابخانه‌ها، محیط دسکتاپ و نرم‌افزارهای دیگه تشکیل شدن.

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

سیستم عامل دبیان نمونهٔ یک نرم‌افزار آزاد است. این تنوع نشون میده که یک پایه‌ی نرم‌افزاری مشترک می‌تونه برای نیازهای مختلف استفاده بشه.

فایرفاکس؛ مرورگر وب

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

امکان بررسی کد و مشارکت در توسعه، برای پژوهشگرها و توسعه‌دهنده‌ها فرصتی فراهم می‌کنه تا در بهبود مرورگر نقش داشته باشن.

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

بلندر؛ ساخت محتوای سه‌بعدی

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

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

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

گیمپ؛ ویرایش تصویر

گیمپ (GIMP) ابزار ویرایش تصویر هست که می‌تونه برای کارهای گرافیکی، ویرایش عکس و پردازش تصویر استفاده بشه.

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

لیبره‌آفیس؛ اسناد و کارهای اداری

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

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

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

پایتون؛ زبانی برای ساخت نرم‌افزار

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

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

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

۱۳. آیا نرم‌افزار آزاد همیشه بهتر از نرم‌افزار اختصاصیه؟

برای پاسخ درست باید از دو نگاه افراطی فاصله بگیریم: اینکه هر نرم‌افزار اختصاصی رو ذاتا بد بدونیم، یا اینکه آزاد بودن رو ویژگی‌ای بی‌اهمیت تصور کنیم.

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

اما کیفیت هر نرم‌افزار به عوامل بیشتری بستگی داره.

تجربه‌ی کاربری و دسترس‌پذیری

ممکنه نرم‌افزار آزادی از نظر امکانات بسیار قدرتمند باشه، اما رابط کاربری پیچیده‌ای داشته باشه یا برای کاربران تازه‌کار مناسب نباشه.

در مقابل، ممکنه یه نرم‌افزار اختصاصی تجربه‌ی کاربری ساده‌تر، مستندات بهتر و پشتیبانی منظم‌تری ارائه بده.

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

پشتیبانی و مسئولیت‌پذیری

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

نرم‌افزار اختصاصی هم می‌تونه از تیم پشتیبانی حرفه‌ای برخوردار باشه، هرچند ادامه‌ی پشتیبانی اون ممکنه به قرارداد و سیاست‌های سازنده وابسته باشه.

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

سخت‌افزار و سازگاری

ممکنه نرم‌افزار آزادی برای سخت‌افزار خاصی درایور مناسبی نداشته باشه یا برای اجرای درست به پیکربندی بیشتری نیاز داشته باشه. بعضی سخت‌افزارها هم به firmware اختصاصی نیاز دارن.

در چنین شرایطی، آزاد بودن بخش اصلی سیستم لزوما به معنی آزاد بودن تمام اجزای مورد نیاز نیست.

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

نمونه ای از یک سیستم عامل مدرن نرم‌افزار آزاد که برخی از برنامه‌های نمایشی را اجرا می‌کند. میز کار GNOME، مرورگر وب فایرفاکس، ویرایشگر متن ویم، ویرایشگر تصویر گیمپ و پخش کننده رسانه VLC نشان داده شده‌است.

هزینه و زمان

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

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

دفاع از نرم‌افزار آزاد به معنی انکار نقاط ضعف پروژه‌های آزاد نیست. اتفاقا بررسی صادقانه‌ی محدودیت‌ها کمک می‌کنه بفهمیم کجا استفاده از نرم‌افزار آزاد منطقی‌تره و برای استفاده‌ی بهتر از اون به چه چیزهایی نیاز داریم.

۱۴. چند تصور اشتباه درباره‌ی نرم‌افزار آزاد

برای اینکه مفهوم نرم‌افزار آزاد رو دقیق‌تر بفهمیم، بهتره چند برداشت رایج رو جداگانه بررسی کنیم.

«اگه کد برنامه باز باشه، پس حتما امنه.»

نه. کد باز امکان بررسی رو فراهم می‌کنه، اما امنیت به بررسی واقعی، کیفیت کد، نگهداری و نحوه‌ی انتشار نسخه‌ها بستگی داره.

«نرم‌افزار آزاد یعنی هیچ‌کس نمی‌تونه ازش پول دربیاره.»

نه. فروش نسخه‌ها، پشتیبانی، میزبانی، آموزش و توسعه‌ی سفارشی می‌تونن راه‌های درآمدزایی باشن. آزادی نرم‌افزار به معنی ممنوعیت تجارت نیست.

«هر چیزی که در گیت‌هاب قرار داره آزاده.»

نه. باید مجوز پروژه رو بررسی کرد. عمومی بودن مخزن به‌تنهایی اجازه‌ی استفاده، تغییر یا بازتوزیع رو تضمین نمی‌کنه.

«نرم‌افزار آزاد یعنی هر کسی می‌تونه هر تغییری رو وارد نسخه‌ی رسمی کنه.»

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

«اگه نرم‌افزار آزاد باشه، دیگه به سازنده وابسته نیستیم.»

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

«نرم‌افزار آزاد یعنی حتما باید از لینوکس استفاده کنیم.»

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

«هر نرم‌افزار آزادی باید همه‌ی تغییرات کاربران رو عمومی کنه.»

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

«اگه کد منبع رو منتشر کنیم، یعنی از تمام حقوق خودمون صرف‌نظر کرده‌ایم.»

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

۱۵. اگر بخوایم از نرم‌افزار آزاد حمایت کنیم، از کجا شروع کنیم؟

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

قدم اول: فرق رایگان و آزاد رو در انتخاب‌هامون در نظر بگیریم

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

لازم نیست برای هر برنامه متخصص حقوق نرم‌افزار بشیم؛ شناخت مجوزهای رایج و مراجعه به مستندات رسمی، شروع خوبیه.

قدم دوم: چند جایگزین رو امتحان کنیم

بسته به نیازمون می‌تونیم ابزارهایی مثل فایرفاکس، بلندر، گیمپ یا لیبره‌آفیس رو بررسی کنیم. برای کارهای برنامه‌نویسی هم ابزارها و کتابخانه‌های آزاد زیادی وجود دارن.

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

قدم سوم: اگر برنامه‌نویسیم، مشارکت کنیم

می‌تونیم پروژه‌ای رو که استفاده می‌کنیم بررسی کنیم، یک باگ گزارش بدیم، مستنداتش رو بهتر کنیم یا تغییر کوچکی پیشنهاد بدیم.

برای شروع لازم نیست سراغ بخش‌های پیچیده بریم. خوندن راهنمای مشارکت پروژه و انتخاب یک مسئله‌ی کوچک می‌تونه تجربه‌ی مفیدی باشه.

قدم چهارم: از نگهداری پروژه‌ها حمایت کنیم

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

استفاده‌ی گسترده از یک ابزار بدون توجه به هزینه‌ی نگهداریش ممکنه در بلندمدت مشکل‌ساز بشه. حمایت از پروژه‌های مهم به پایداری اکوسیستم کمک می‌کنه.

قدم پنجم: مجوز پروژه‌های خودمون رو جدی بگیریم

اگر نرم‌افزاری می‌سازیم و می‌خوایم دیگران هم بتونن ازش استفاده کنن، مجوز مناسب رو مشخص کنیم. صرفا عمومی کردن مخزن کافی نیست.

انتخاب مجوز به هدف پروژه بستگی داره: آیا می‌خوایم استفاده و ترکیب کد تا جای ممکن منعطف باشه؟ آیا حفظ آزادی نسخه‌های مشتق‌شده برامون مهمه؟ آیا پروژه به کتابخانه‌های دیگری وابسته‌ست؟

برای انتخاب درست، می‌تونیم از راهنماهای رسمی مجوزها کمک بگیریم و در پروژه‌های تجاری یا پیچیده، از مشاوره‌ی حقوقی استفاده کنیم.

۱۶. جمع‌بندی؛ مسئله فقط کد نیست

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

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

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

با این حال، اهمیت نرم‌افزار آزاد فراتر از یک ویژگی فنیه. نرم‌افزار بخش مهمی از زندگی امروز ما رو شکل میده و تصمیم‌هایی که درباره‌ی اون گرفته میشه، روی کار، آموزش، ارتباطات و دسترسی ما به اطلاعات تأثیر می‌ذاره.

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

در نهایت، شاید مهم‌ترین سؤال این نباشه که نرم‌افزار آزاد همیشه بهتره یا نه. سؤال مهم‌تر اینه که وقتی فناوری به بخش جدایی‌ناپذیر زندگی ما تبدیل شده، چرا باید آزادی فهمیدن، تغییر دادن و به‌اشتراک‌گذاری ابزارهایی که ازشون استفاده می‌کنیم، بی‌اهمیت باشه؟

اگر می‌خوای موضوع رو عمیق‌تر دنبال کنی، این منابع رسمی نقطه‌ی شروع خوبی هستن:

نوشته‌ی امیرحسین

گفتگو درباره‌ی این مقاله

۰ دیدگاه

به گفتگو بپیوندید

ورود به حساب

اولین دیدگاه را شما بنویسید