تفاوت نرمافزار رایگان و منبع باز
# معرفی
یکی از جنبه های توسعه نرم افزار که بسیاری از مردم تمایل دارند آن را فراموش کنند این است که چگونه نرم افزار باید مجوز داشته باشد. مجوز نرمافزار نحوه استفاده و توزیع کد توسط دارندگان مجوز (کاربران نهایی) را دیکته میکند، که میتواند تأثیر قابلتوجهی بر میزان پذیرش گسترده فناوری داشته باشد. اکثر نرم افزارهای مدرن تحت یک مجوز اختصاصی فروخته می شوند که به ناشر یا پدیدآورنده اجازه می دهد حقوق مالکیت معنوی نرم افزار را حفظ کند.
با این حال، یک دیدگاه جایگزین وجود دارد که ادعا می کند این یک سطح غیر ضروری از کنترل را در دست ناشران نرم افزار قرار می دهد. با جلوگیری از کپی کردن و تغییر کد منبع نرم افزار توسط دارندگان مجوز، ناشران نرم افزار اختصاصی، نوآوری را خفه می کنند و رشد بالقوه فناوری های جدید را متوقف می کنند. این موضع الهام بخش ایجاد مجوزهایی است که به کاربران حق مطالعه، تغییر و اشتراک گذاری کد منبع نرم افزار را به دلخواه خود می دهد. نرم افزارهایی که به این طریق مجوز دارند معمولاً با یکی از دو نام شناخته می شوند: «نرم افزار آزاد» یا «نرم افزار منبع باز».
به طور کلی، هر دو اصطلاح به یک چیز اشاره دارند: نرم افزار با محدودیت های کمی در مورد نحوه استفاده از آن. از دیدگاه طرفداران آنها، هر دو نرم افزار رایگان و منبع باز نسبت به همتایان اختصاصی خود ایمن تر، کارآمدتر و قابل اطمینان تر کار می کنند. با این حال، چرا ما دو برچسب برای یک چیز داریم؟ پاسخ شامل کمی تاریخ، و درک تفاوت های ظریف است که دو جنبش مجزا اما نزدیک به هم را تشکیل می دهند.
مقاله پیشنهادی: خلاصهای از تاریخچه لینوکس
# کمی پیش زمینه
این ایده که فردی که با یک نرم افزار کار می کند باید اجازه داشته باشد کد منبع آن را بدون عواقب قانونی مشاهده، ویرایش و به اشتراک بگذارد، چیز جدیدی نیست. قبل از دهه 1970، نرمافزار معمولاً همراه با کد منبع آن توزیع میشد، دلیل آن این بود که نرمافزار معمولاً نیازمند سختافزاری خاص بود و کاربران نهایی مجبور بودند آن را تغییر دهند تا بر روی دستگاه خاص خود اجرا شود یا قابلیتهای خاصی را اضافه کنند.
اکثر افرادی که در این زمان با کامپیوتر تعامل داشتند این کار را در یک محیط کاملاً آکادمیک یا تحقیقاتی انجام دادند. این بدان معناست که منابع محاسباتی اغلب به اشتراک گذاشته میشوند و تغییر نرمافزار برای ایجاد گردشهای کاری کارآمدتر یا راهحلهای قابل اعتمادتر به طور گسترده تشویق میشود. به عنوان مثال، پروژه جن در دانشگاه کالیفرنیا برکلی، سیستم اشتراک زمانی برکلی - یک سیستم عامل اشتراک زمانی که از ابتدا ساخته شده است - با هک کردن کد منبع کامپیوتر SDS 930 آزمایشگاه توسعه داد.
با پیچیدهتر و گرانتر شدن تولید نرمافزار، شرکتهای نرمافزاری به دنبال راههایی برای توقف اشتراکگذاری افسارگسیخته کد منبع بودند تا از جریان درآمد خود محافظت کنند و از دسترسی رقبا به پیادهسازی آن جلوگیری کنند. آنها شروع به اعمال محدودیت های قانونی بر روی محصولات خود کردند، از جمله حق چاپ و قراردادهای اجاره، و همچنین شروع به توزیع محصولات خود تحت مجوزهای اختصاصی کردند. در پایان دهه 1970، اکثر شرکت های نرم افزاری ارسال نرم افزار با کد منبع را متوقف کردند. این امر باعث شد بسیاری از کاربران قدیمی کامپیوتر نارضایتی خود را به زبان بیاورند و اخلاق آنها در نهایت شالوده جنبش نرم افزار آزاد را تشکیل داد.
مقاله پیشنهادی: تفاوت ipv4 و ipv6
# شروع نرم افزار آزاد
جنبش نرم افزار آزاد تا حد زیادی زاییده فکر ریچارد استالمن بود. استالمن تحصیلات خود را در اوایل دهه 1970 قبل از ظهور مجوزهای نرم افزاری اختصاصی آغاز کرد و در اوایل دهه 1980 به عنوان محقق در آزمایشگاه هوش مصنوعی MIT مشغول به کار شد. او که بیش از یک دهه عضو جامعه هکرهای آکادمیک بود، از گسترش نرم افزارهای اختصاصی ناامید شده بود و آن را نقض حقوق مردم برای نوآوری و بهبود نرم افزارهای موجود می دانست.
در سال 1983، استالمن پروژه گنو را راهاندازی کرد – تلاشی برای ایجاد یک سیستم عامل کامل که به کاربران خود آزادی مشاهده، تغییر و اشتراکگذاری کد منبع آن را ارائه دهد. استالمن انگیزه خود را برای این پروژه در مانیفست گنو بیان کرد. در آن، او اعتقاد خود را بیان میکند که مجوزهای اختصاصی، توسعه نرمافزار مبتنی بر جامعه را مسدود میکند، به طور مؤثری نوآوری را مهار میکند و پیشرفت فناوری را فلج میکند.
به گفته استالمن، این کار، بار ناعادلانه ای را بر دوش کاربران و توسعه دهندگانی قرار می دهد که در غیر این صورت می توانند کد را مطابق با نیازهای خود تغییر دهند یا آن را برای ارائه یک عملکرد جدید تغییر دهند. بنابراین، پروژه گنو را می توان هم به عنوان پاسخی به ظهور نرم افزارهای اختصاصی و هم به عنوان پاسخی به دوره قبلی کد منبع به اشتراک گذاشته شده آزادانه و توسعه نرم افزار مشترک در نظر گرفت.
در سال 1985، استالمن با تأسیس بنیاد نرمافزار آزاد (FSF)، یک سازمان غیرانتفاعی که به ترویج مفهوم نرمافزار آزاد برای عموم مردم اختصاص دارد، پروژه گنو را تأسیس کرد. استالمن همچنین بعداً مجوز عمومی گنو را توسعه داد، مجوز نرم افزاری که حقوق کاربران نهایی را برای اجرا، مشاهده و به اشتراک گذاری آزادانه کد منبع تضمین می کند.
طبق گفته FSF، برای اینکه یک نرم افزار واقعاً «رایگان» در نظر گرفته شود، مجوز آن باید چهار آزادی اساسی را برای کاربرانش تضمین کند:
- آزادی اجرای برنامه به دلخواه و برای هر هدفی.
- آزادی مطالعه نحوه عملکرد برنامه، و تغییر آن به گونه ای که محاسبات شما را همانطور که می خواهید انجام دهد. دسترسی به کد منبع پیش شرط این امر است.
- آزادی توزیع مجدد نسخه ها تا بتوانید به همسایه خود کمک کنید.
- آزادی توزیع کپی از نسخه های اصلاح شده خود به دیگران. با انجام این کار می توانید به کل جامعه این فرصت را بدهید که از تغییرات شما بهره مند شوند. دسترسی به کد منبع پیش شرط این امر است.
FSF هر نرم افزاری را که نتواند هر یک از این معیارها را برآورده کند، غیر رایگان و در نتیجه غیراخلاقی می داند.
مقاله پیشنهادی: streaming چیست؟
# ظهور نرم افزار منبع باز
استالمن برچسب «نرمافزار رایگان» را انتخاب کرده بود تا این ایده را که کاربران میتوانند آزادانه کد منبع را تغییر دهند و هر طور که صلاح میدانند به اشتراک بگذارند، انتخاب کرده بود. این امر در طول سالها منجر به سردرگمیهایی شده است، زیرا بسیاری از مردم تصور میکنند که «نرمافزار رایگان» به هر نرمافزاری اطلاق میشود که میتوان آن را با هزینه صفر به دست آورد (که با دقت بیشتری به عنوان «نرم افزار رایگان» یا «افزار اشتراکی» برچسبگذاری میشود). FSF به طرز معروفی انتخاب نام را با این جمله توضیح میدهد: «در آزادی به آزادی بیان فکر کنید، نه مانند آبجو آزاد».
با این حال، در اواخر دهه 1990، نگرانی فزاینده ای در میان برخی از علاقه مندان به گنو و لینوکس وجود داشت که این معنای دوگانه باعث می شود که بخش بزرگی از کاربران فلسفه پشت نرم افزار رایگان و مزایای آن نسبت به کد اختصاصی را از دست بدهند. FSF همچنین به دلیل موضع اخلاقی سختگیرانه خود در برابر انواع نرم افزارهای اختصاصی شناخته شده بود. در میان برخی از طرفداران نرم افزار آزاد نگرانی وجود داشت که این رویکرد برای منافع تجاری بسیار غیردوستانه است و در نهایت مانع گسترش جنبش نرم افزار آزاد می شود.
مقاله پیشنهادی: پراکسی معکوس چیست؟
+ کلیسای جامع و بازار
در سال 1997 اریک اس. ریموند، که در آن زمان حامی و توسعهدهنده نرمافزار آزاد بود، کلیسای جامع(The Cathedral) و بازار(Bazaar) را نوشت. «کلیسای جامع» به یک مدل توسعه از بالا به پایین اشاره دارد که در آن گروهی انحصاری از توسعهدهندگان کد را تولید میکنند که نمونهای از توسعه GNU Emacs است. از سوی دیگر، "بازار" به روشی اشاره دارد که در آن کد به صورت عمومی از طریق اینترنت توسعه می یابد، همانطور که در مورد توسعه هسته لینوکس بود.
بحث اصلی مقاله این است که مدل بازار ذاتاً در یافتن و رفع اشکالات نرم افزار مؤثرتر است، زیرا افراد بیشتری قادر به مشاهده و آزمایش کد منبع هستند. بنابراین، ریموند استدلال کرد، استفاده از یک فرآیند توسعه مبتنی بر جامعه و از پایین به بالا منجر به نرم افزار ایمن تر و قابل اعتمادتر می شود.
تا حدی در پاسخ به ایده های ارائه شده در کلیسای جامع و بازار، نت اسکیپ کد منبع مرورگر وب Communicator خود را به عنوان نرم افزار رایگان در اوایل سال 1998 منتشر کرد. (کد منبع Communicator بعداً اساس Mozilla FireFox 1.0 را تشکیل داد). با الهام از پتانسیل تجاری که نت اسکیپ در این نسخه کد منبع مشاهده کرد، گروهی از علاقه مندان به نرم افزار آزاد (از جمله ریموند، لینوس توروالدز، فیلیپ زیمرمن و بسیاری دیگر) به دنبال تغییر نام جنبش نرم افزار آزاد و تغییر تمرکز آن از اخلاقی یا فلسفی بودند. انگیزه ها این گروه "منبع باز" را به عنوان برچسب خود برای نرم افزارهای قابل اشتراک گذاری آزادانه انتخاب کرد به این امید که ارزش تجاری یک مدل توسعه مشارکتی و جامعه محور را منعکس کند.
اندکی پس از آن، ابتکار منبع باز (OSI) توسط ریموند و بروس پرنز برای تشویق استفاده از اصطلاح جدید و همچنین گسترش اصول منبع باز تأسیس شد. OSI همچنین تعریف منبع باز را توسعه داد - فهرستی از ده اصل که مجوز یک نرم افزار باید به آنها پایبند باشد تا منبع باز در نظر گرفته شود:
1. Free Redistribution - مجوز نباید هیچ طرفی را از فروش یا واگذاری نرم افزار به عنوان جزئی از توزیع نرم افزاری بزرگتر حاوی برنامه هایی از منابع متعدد محدود کند.
2. Source Code - برنامه باید شامل کد منبع باشد، و باید اجازه توزیع در کد منبع و همچنین فرم کامپایل را بدهد.
3. Derived Works - مجوز باید تغییرات و آثار مشتق شده را اجازه دهد، و باید اجازه دهد که آنها تحت شرایط مشابه مجوز نرم افزار اصلی توزیع شوند.
4. Integrity of The Author’s Source Code - مجوز ممکن است تنها در صورتی مانع از توزیع کد منبع به شکل تغییریافته شود.
5. No Discrimination Against Persons or Groups - مجوز نباید علیه هیچ فرد یا گروهی از افراد تبعیض قائل شود.
6. No Discrimination Against Fields of Endeavor - مجوز نباید کسی را از استفاده از برنامه در زمینه کاری خاص محدود کند.
7. Distribution of License - حقوق ضمیمه شده به برنامه باید شامل همه کسانی شود که برنامه برای آنها بدون نیاز به اجرای مجوز اضافی توسط آن طرفین توزیع شده است.
8. License Must Not Be Specific to a Product - حقوق ضمیمه شده به برنامه نباید به این بستگی داشته باشد که برنامه بخشی از یک توزیع نرم افزار خاص باشد.
9. License Must Not Restrict Other Software - مجوز نباید محدودیت هایی را برای سایر نرم افزارهایی که همراه با نرم افزار دارای مجوز توزیع می شوند ایجاد کند.
10. License Must Be Technology-Neutral - هیچ یک از مفاد مجوز نمیتواند بر روی هر فناوری یا سبک رابط کاربری تکی باشد.
مقاله پیشنهادی: Big data چیست؟
# تفاوت نرم افزار رایگان و منبع باز
تا آنجا که به اکثر مردم مربوط می شود، تفاوت معنی بین "نرم افزار آزاد" و "نرم افزار منبع باز" ناچیز است و ناشی از تفاوت جزئی در رویکرد یا فلسفه است. همانطور که Open Source Initiative می بیند، هر دو اصطلاح به یک معنا هستند و تقریباً در هر زمینه ای می توان آنها را به جای هم استفاده کرد. آنها صرفاً برچسب "منبع باز" را ترجیح می دهند زیرا معتقدند که توضیح واضح تری از نرم افزار و قصد سازندگان آن برای نحوه استفاده از آن ارائه می دهد.
اما برای اردوگاه «نرمافزار آزاد»، «متن باز» اهمیت جنبش و مشکلات اجتماعی بلندمدت بالقوه ناشی از نرمافزار اختصاصی را بهطور کامل نشان نمیدهد. بنیاد نرمافزار آزاد OSI را بیش از حد نگران ترویج مزایای عملی نرمافزارهای غیر اختصاصی (شامل سودآوری آن و کارایی یک مدل توسعه مبتنی بر جامعه) میداند و به اندازه کافی به موضوع اخلاقی محدود کردن حقوق کاربران برای تغییر و بهبود کد بر اساس شرایط خود توجه نمیکند.
رایگان یا متن باز بودن یک نرم افزار خاص به این بستگی دارد که تحت کدام مجوز توزیع شده باشد و اینکه آیا آن مجوز توسط ابتکار منبع باز، بنیاد نرم افزار آزاد یا هر دو تایید شده باشد. همپوشانی زیادی بین مجوزهایی که توسط کدام سازمان تأیید می شود وجود دارد، اما چند استثنا وجود دارد. به عنوان مثال، توافقنامه منبع باز ناسا یک مجوز تایید شده توسط OSI است که FSF آن را بسیار محدود کننده می داند. بنابراین، FSF هر کسی را از استفاده از نرم افزار توزیع شده تحت آن مجوز منع می کند. با این حال، به طور کلی، شانس خوبی وجود دارد که اگر بتوان آن را به عنوان نرم افزار رایگان توصیف کرد، با تعریف نرم افزار منبع باز نیز مطابقت داشته باشد.
مقاله پیشنهادی: ماشین مجازی چیست؟
+ نامهای جایگزین
در طول این سالها، نامهای متعدد دیگری برای این نوع نرمافزار پیشنهاد شده است تا به این بحث پایان دهد. «نرمافزار رایگان و منبع باز» – که اغلب به «FOSS» خلاصه میشود – یکی از پرکاربردترینها است و به عنوان یک نرمافزار خنثی امن بین این دو در نظر گرفته میشود. اصطلاح «نرمافزار لیبر» («آزاد» که از چندین زبان رومی مشتق شده و تقریباً به معنای «وضعیت آزادی» است) طرفداران خاص خود را پیدا کرده است، بهطوری که مخفف «FLOSS» (به معنای «نرم افزار منبع باز آزاد» است) نیز نسبتاً رایج شده است.
لازم به ذکر است که هر دو نرم افزار رایگان و متن باز از نرم افزارهای موجود در حوزه عمومی متمایز هستند. نرمافزار آزاد و منبع باز آزادیهای خود را از طریق صدور مجوز تعریف میکند، در حالی که نرمافزار حوزه عمومی ممکن است به برخی از فضایل مشابه پایبند باشد، اما این کار را با خارج شدن از سیستم صدور مجوز انجام میدهد. یک تمایز مهم نرم افزار رایگان و متن باز این است که آثار مبتنی بر کد منبع آزاد یا منبع باز باید با مجوز FOSS نیز توزیع شوند. نرم افزار منتشر شده در حوزه عمومی این الزام را ندارد.
یکی دیگر از مسائل مربوط به نرم افزارهای حوزه عمومی از این واقعیت ناشی می شود که همه کشورهای جهان محتوای غیر دارای حق چاپ را به رسمیت نمی شناسند. این امر باعث میشود که نتوان اظهار نظری در سطح جهانی مبنی بر اینکه یک نرمافزار در مالکیت عمومی است، به رسمیت شناخته شده است. بنابراین نه FSF و نه OSI توسعه دهندگان را تشویق به انتشار نرم افزار در حوزه عمومی نمی کنند.
مقاله پیشنهادی: برنامه نویسی شی گرا چیست؟
# نتیجه گیری
اصطلاحات «نرمافزار آزاد» و «نرمافزار متنباز» برای بیشتر زمینهها قابل تعویض هستند، و اینکه آیا کسی یکی را بر دیگری ترجیح میدهد معمولاً به موضوع معناشناسی یا دیدگاه فلسفی او برمیگردد. با این حال، برای بسیاری از برنامه نویسانی که به دنبال توسعه نرم افزار و ارائه آن به عموم هستند یا برای فعالانی که امیدوارند نحوه نگاه و تعامل مردم با فناوری را تغییر دهند، این تفاوت می تواند یک تفاوت مهم باشد. بنابراین، هنگام انتشار نرمافزار جدید، ضروری است که مزایا و معایب مجوزهای مختلف - از جمله مجوزهای اختصاصی - را به دقت بسنجید و یکی را انتخاب کنید که به بهترین وجه با نیازهای خاص شما مطابقت دارد.