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

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

اگر مدتی در فضای نرم‌افزارهای آزاد گشته باشید حتما دیده‌اید بحث‌هایی را که حول این می‌گردند که آیا فلان برنامه آزاد است یا متن‌باز. اگر به سایت رسمی بسیاری از نرم‌افزارهای آزاد بروید (مانند اوبونتو، سیگنال، vs code و…) می‌بینید که نوشته‌اند فلان برنامه، یک برنامه Open Source یا #متن‌باز است. روی برخی دیگر از پروژه‌ها نوشته می‌شود که «آزاد و متن‌باز» یا «Free and Open Source» هستند. گاهی هم (البته به ندرت) می‌بینید که نوشته می‌شود این برنامه، یک #نرم‌افزار_آزاد است. در این البته گروهی هم هستند که اساسا گویی با عبارت متن‌باز مشکل دارند و اصرار دارند که بگوییم نرم‌افزار آزاد. این گروه معمولا به تندروی و تعصب و… متهم می‌شوند. اما داستان چیست؟

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

تعریف

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

نرم‌افزار آزاد

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

  • آزادی اجرای برنامه برای هر منظوری (آزادی ۰)
  • آزادی مطالعه و بررسی چگونگی عملکرد برنامه و تغییر آن برای نیاز خود (آزادی ۱)
  • آزادی توزیع مجدد نسخه‌هایی از نرم‌افزار (آزادی ۲)
  • آزادی توزیع تغییرات در نسخه اصلی (آزادی ۳)

نرم‌افزار متن‌باز

متن‌باز بودن صرفاً به معنای دردسترس بودن کد برنامه نیست. بلکه باید این شرایط را داشته باشد:

  • نرم‌افزار باید قابل توزیع مجدد باشد
  • نرم‌افزار باید شامل کد منبع باشد
  • پروانه باید اجازه تغییر و ایجاد محصول مشتق شده و انتشار آن را بدهد
  • یکپارچگی مؤلف کد منبع می‌تواند توسط پروانه حفظ شود
  • پروانه نباید بین افراد یا گروه‌ها تبعیض قائل شود
  • پروانه نباید کاربر را برای فعالیت در زمینه‌ای خاص محدود کند
  • پروانه نباید مختص به یک محصول خاص باشد
  • پروانه نباید محدودیتی روی نرم‌افزارهای دیگر بگذارد
  • پروانه نباید تکنولوژی خاصی را محدود کند

به سختی می‌شود نرم‌افزاری را تصور کرد که در یک تعریف بگنجد اما در دیگری نه. اما به جای حدس و گمان، بگذارید نگاهی آماری داشته باشیم به موضوع. بر اساس جدولی که در صفحه مقایسه پروانه‌های آزاد و متن‌باز روی ویکی‌پدیا وجود دارد، از بین ۵۸ پروانه فهرست شده، نزدیک به دو سوم پروانه‌ها هم مورد تایید بنیاد نرم‌افزار آزاد هستند و هم مورد تایید پیشگامان متن‌باز. در این بین، تقریبا می‌توان گفت که تمامی پروانه‌ها رایج مانند MIT و MPL و Apache و خانواده GPL هم پروانه‌های آزاد هستند و هم پروانه‌های متن‌باز. تنها موارد اختلافی، این پروانه‌ها هستند که بعید می‌دانم حتی اسم‌شان به گوش کسی خورده باشد:

پروانه‌های مورد اختلاف بین بنیاد نرم‌افزار آزاد و پیشگامان متن‌باز

جالب است که بین این پروانه‌ها، برخی فقط آزاد هستند و برخی فقط متن‌باز. یعنی در برخی موارد، پیشگامان متن‌باز به مراتب سخت‌گیرانه‌تر از بنیاد نرم‌افزار آزاد با پروانه مواجه شده و آن را رد کرده است. جالب‌تر شاید دیدن پروانه WTFPL یا همان «پروانه همگانی هر غلطی که دوست داری بکن» بین پروانه‌هایی است که بنیاد [با ملاحظات و شرایطی] تایید کرده اما پیشگامان تایید نکرده است. :))

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

مروری بر تاریخ

پروژه گنو و به دنبال آن بنیاد نرم‌افزار آزاد در سال‌های ۱۳۶۳ و ۱۳۶۴ (۱۹۸۴ و ۱۹۸۵) پا به عرصه گذاشتند. جنبش نرم‌افزار آزاد به رهبری ریچارد استالمن بر این عقیده بودند که کاربران نرم‌افزار باید از یک سری آزادی‌های اساسی برخوردار باشند. نوع مواجهه این جنبش بیش از آن‌که فنی باشد، یک رویکرد اجتماعی-فلسفی بود. به خوبی می‌توان نمودهای این رویکرد را در پروژه‌های نرم‌افزاری (که کاملا غیر تجاری هستند) و کارزارهایی که برگزار کرده‌اند (مانند مبارزه با DRM) و… دید.

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

۱۳ سال بعد و در سال ۱۳۷۶ (۱۹۹۸)، گروهی از اعضای جنبش نرم‌افزار آزاد با روش پیشرفت این جنبش مشکل پیدا کردند. از یک جهت اینکه برخی افراد تصورشان از نرم‌افزار آزاد، نرم‌افزار رایگان بود (به دلیل معنای دوگانه free در انگلیسی) مشکلاتی در درست ارتباط برقرار کردن با جامعه ایجاد می‌کرد. از طرف دیگر، این گروه از اعضای جنبش، با فلسفه اخلاقی‌ای که محور فعالیت بنیاد نرم‌افزار آزاد بود مشکل داشتند و آن را مانعی می‌دیدند بر سر راه متقاعد کردن شرکت‌ها به انتشار آزاد نرم‌افزار. به این ترتیب، گروهی جدید تحت عنوان پیشگامان متن‌باز (Open Source Initiative) پا به عرصه گذاشت.

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

مشکلات متن‌باز

  • ابهام متن‌باز: این جنبش که یکی از انگیزه‌های تشکیلش، رفع ابهام کلمه free به معنای آزاد یا رایگان بود، خودش عبارتی را ابداع کرد که مشکل مشابه و چه بسا بدتری را ایجاد کرد. هر چند ابهام free را می‌شد با یک توضیح ساده برای همیشه حل کرد، اما همواره درک رایج از متن‌باز، نرم‌افزاری است که کد منبع آن در دسترس است. در عمل و در تمام این سال‌ها، باید برای مخاطب توضیح داد که منظور صرفا در دسترس بودن کد نیست بلکه ۱۰ شرط باید محقق شود.
  • مغلطهٔ آزادی: بسیاری مواقع، طرف‌داران متن‌باز از این می‌گویند که رویکرد بنیاد نرم‌افزار آزاد برای تضمین آزادی، خودش ناقض آزادی است. چرا یک برنامه‌نویسی نباید آزادی داشته باشد تا یک نرم‌افزار آزاد را برداشته و از آن یک نرم‌افزار انحصاری تولید کند. این، یک مغلطه رایج حول آزادی است. نکته‌ای که این افراد نادیده می‌گیرند، تصویر بزرگ‌تر است: نتیجهٔ آزادی انحصار، آزادی نیست، انحصار است. به زبان ساده‌تر، می‌توان آزادانه وارد زندان شد اما خروج از زندان، آزادانه ممکن نیست.
  • سوء استفاده از متن‌باز: بر خلاف رویکرد بنیاد نرم‌افزار آزاد که در آن، آزادی در حکم قطب‌نما و عمود خیمه است، چنین قطب‌نما و ستونی در جنبش متن‌باز وجود ندارد. تاکید متن‌باز، تولید ارزان‌تر نرم‌افزار باکیفیت و منعطف است. در نتیجه به کرات اتفاق می‌افتد که یک نرم‌افزار، حاضر می‌شود برای عرضه یک نرم‌افزار متن‌باز باکیفیت، درصدی پا را کج بگذارد. مشخصا چنین کاری، باعث می‌شود آن نرم‌افزار دیگر مطابق تعارف متن‌باز نباشد. اما این اتفاق رخ می‌دهد. آخرین نمونه از این اتفاق، vs code بود. جایی که مایکروسایت علی‌رغم تعارض با تعریف متن‌باز، کد متن‌باز این برنامه را (که تحت MIT بود) با کدهای خود و تحت پروانه غیر آزاد و متن‌باز خودش ترکیب کرد و به نام متن‌باز به جامعه عرضه کرد. البته این اتفاق، با اعتراض جامعه مواجه شد و مایکروسایت مجبور شد روی سایت خود بنویسد «بر اساس یک نرم‌افزار متن‌باز»
  • به حاشیه رفتن/بردن آزادی: از همان ابتدا، پیشگامان آزادی را به عنوان ارزش محوری کنار گذاشته و رویکرد فنی و تجاری در پیش گرفتند. هر چند این الزاما در تضاد و تعارض با آزادی نیست اما همین کار باعث شده است کمتر (و یا حتی تقریبا می‌توان گفت اصلا) از آزادی صحبت کنند. اینکه تقریبا اثری از مفهوم آزادی در سایت پیشگامان دیده نمی‌شود و اکثر پروژه‌های نرم‌افزار آزاد ترجیح می‌دهند بنویسند متن‌باز، ممکن است این شائبه را در ذهن ایجاد کند که شاید عمدا نمی‌خواهند کاربر به آزادی‌اش فکر کند.

کپی‌لفت

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

بنیاد نرم‌افزار آزاد به شدت تفکر کپی‌لفت را تبلیغ می‌کند. پروانه‌های خانواده GPL از این دست پروانه‌ها هستند که تضمین می‌کنند آزادی‌های اعطا شده به کاربر، در آینده قابل سلب نیستند. فعالیت‌های تبلیغی بنیاد تا آنجا بوده است که تصور تایید پروانه‌هایی نظیر WTFPL توسط این بنیاد برای خیلی از افراد ناممکن است. خیلی از افراد نرم‌افزار آزاد را محدود به نرم‌افزارهای تحت پروانه‌های GPL می‌دانند (که این، اشتباه است).

جمع‌بندی

بنا بر آنچه گفته شد، از نظر تعریف، تعارضی میان اینکه یک نرم‌افزار آزاد است یا متن‌باز وجود ندارد. تقریبا می‌توان گفت که همهٔ نرم‌افزارهای آزاد، متن‌باز هستند و همهٔ نرم‌افزارهای متن‌باز، آزاد. یک نرم‌افزار تحت پروانه MIT همان‌قدر آزاد است که متن‌باز است و یک نرم‌افزار تحت پروانه AGPL همان‌قدر متن‌باز است که آزاد.

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

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

کلام آخر

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

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


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

این مطلب، در ادامه ارائه‌ای با همین عنوان در جشن انتشار اوبونتو ۱۹٫۱۰ در دانشگاه اراک و در تاریخ ۹ آبان ۹۸ نوشته شده است.