نرمافزار آزاد یا در اصطلاح Free با برنامههای متن باز یا OSS مخفف Open-Source Software تقریبا در یک محدوده از برنامهها قرار دارند. این دو نوع از نرمافزار اگرچه شباهتهای زیادی با هم دارند اما در برخی از جزییات متفاوت هستند. در ادامه تفاوتها، شباهتها و کاربردهای این نرمافزارها را مورد بررسی قرار خواهیم داد.
نرمافزار متن باز چیست؟
نرمافزار منبع باز نرمافزاری است که کد منبع آن بدون دریافت هزینه اضافی در اختیار عموم قرار میگیرد و هر کس میتواند این کدها را مورد بازرسی، اصلاح و بهبود قرار دهد. به طور کلی میتوان گفت این نوع از نرمافزار به دلیل اعطای آزادی کامل در استفاده از کدهای آن برای توسعه و ایجاد نرمافزار جدید بیشتر مورد استقبال کاربران قرار گرفته است.
معنی واژهی متن باز (Open Source)
متن باز یا Open Source اصطلاحی است که به نرمافزارهای متن باز ارجاع داده است. Open Source به یک جنبش و راهی برای کار تبدیل شده است که فراتر از تولید نرمافزار است. جنبش Open Source با استفاده از الگوی تولید غیر انحصاری نرمافزارهای متن باز راههای جدیدی را برای حل مشکلات در جوامع و صنایع ارائه میدهد.
کد منبع (Source Code) چیست؟
کد منبع یک نرم افزار در حقیقت بخشی از نرم افزار است که اکثر کاربران رایانه هرگز آن را نمیبینند و این کد است که برنامه نویسان را قادر به تعیین نحوه کار یک قطعه از نرم افزار یا یک برنامه میکند. برنامه نویسان به کد منبع یا کد خام برنامهای که در سیستم کامپیوتری شما اجرا میشود دسترسی دارند و میتوانند با افزودن ویژگی هایی به آن یا رفع بخشهایی که برخی از اوقات درست کار نمیکند، آن برنامه را بهبود ببخشند.
مشخصات برنامههای متن باز
یک برنامه متن باز باید آزادی در بازنشر لایسنس (مجوز) داشته باشد. یعنی نباید از فروش یا قرض دادن نرمافزار به عنوان جزیی از یک توزیع نرم افزاری جلوگیری نماید، این برنامه باید شامل کد منبع باشد، یعنی دقیقا همانند کدی که از روی آن کامپایل میشود در اختیار کاربران قرار گیرد.
یک برنامهی متن باز میبایست اجازه تغییرات و مشتق شدن را به توسعه دهندگان خود بدهد و همچنین اجازه نشر آن را بر اساس لایسنس نرم افزاری اصلی فراهم کند، در یک نرمافزار متن باز یکپارچگی کد منبع و نویسنده میتواند از انتشار کد به فرم تغییر شکل یافته برنامه جلوگیری کند و تنها زمانی که فایلهای توسعه یافته و کد منبع تغییر نمایند امکان انتشار دارند.
یک نرمافزار اوپن سورس نباید در مقابل فرد، گروهها، قومیت یا ملیت مختلف تبعیض قائل شود، این نرمافزار نباید از استفاده از کدهای خود در زمینههای مختلف جلوگیری نماید. به عنوان مثال استفاده در یک نرمافزار مالی یا مدیریتی و…
مجوزهای زیادی در این زمینه وجود دارد، اما به طور کلی در صورتی یک برنامه متن باز خواهد بود که:
کدهای منبع بدون هزینه اضافی در دسترس همگان قرار گیرد، به این معنی که کاربران میتوانند کدی را که نرمافزار توسط آن نوشته شده است مشاهده کرده و هر نوع تغییری را به صورت دلخواه در آن ایجاد کنند و بتوان کدهای آن را در نرمافزار جدید مورد استفاده قرار داد، به این معنی که هر کس بتواند کد منبع را بگیرد و برنامه خود را از طریق آن ایجاد و منتشر کند.
نرم افزار آزاد (Free) چیست؟
نرمافزار آزاد روی آزادی کاربران تاکید دارد و به نوعی هدف از آن احترام به جامعه و آزادی کاربران است. این به آن معنا است که کاربران بتوانند به صورت آزادانه اقدام به اجرا، کپی، انتشار، مطالعه، تغییر و بهبود نرمافزار کنند. این نکته در مورد نرمافزار آزاد حائز اهمیت است که نرمافزارهای آزاد لزوما رایگان نیستند. بلکه در واقع این نرمافزار به آزادی اهمیت میدهد نه به قیمت، و این همان ماهیت کلمهی Free در زبان انگلیسی است. برای درک بهتر مفهوم نرم افزار آزاد بهتر است به یک آزادی مانند آزادی بیان فکر کنید نه یک ابزار رایگان، مشخصات این نرمافزار شامل موارد زیر است:
- آزادی در اجرای برنامه برای هر منظوری
- آزادی در توزیع کپیهای ایجاد شده از آن
- آزادی در تغییر، بهبود برنامه و انتشار تغییرات
- آزادی در مطالعه و بررسی عملکرد برنامه و تغییر آن
بنابراین این به آن معنا است که یک نرمافزار آزاد میتواند یک نرمافزار متن باز نیز باشد، در صورتی که شرایط بالا را برآورده کند.
تفاوت بین نرمافزار آزاد و برنامههای متن باز
زمانی که صحبت از مجوز نرم افزار میشود، این دو اصطلاح کاملاً قابل تعویض هستند، زیرا (با در نظر گرفتن برخی موارد استثنا) بین مجوزهای نرم افزار آزاد و مجوزهای منبع آزاد همپوشانی زیادی وجود دارد و تفاوت زیادی بین آنها وجود ندارد. تقریبا همه برنامههای متن باز در واقع آزاد هستند. این نرم افزارها از طریق نوع خاصی از مجوز منتشر میشوند و کدهای اصلی آن به صورت قانونی در دسترس کاربران نهایی قرار میگیرد.
بیشتر تفاوتها در این نرمافزارها به مجوزها و تاکید روی آنها بستگی دارد. به عنوان مثال اصول نرمافزارهای متن باز بر اساس آزادی است و آزادی ارزشی است که از هر مزیت اقتصادی مهمتر است. اما از نظر برنامههای متن باز آزادی یک مفهوم مطلق نیست و باید مجاز باشد. همچنین برنامههای متن باز تمرکز بیشتری بر روی آزادی در دسترسی به کدها و تغییرات در آنها دارد و نرمافزار آزاد تاکید بر آزادی کلی کاربران دارد.
تاریخچهی برنامههای متن باز
تاریخچه برنامههای متن باز در حقیقت با تاریخچه اینترنت برابر است. در دهه 1950 و 1960 محققان در حال توسعه فناوریهای اولیهی اینترنت و پروتکلهای شبکه ارتباطی بودند که به یک محیط تحقیقاتی باز و مشارکتی متکی باشد. شبکه پروژههای تحقیقاتی ARPANET که بعدها پایه و اساس اینترنت مدرن شد، بررسی شبکههای همتا و ایجاد یک روند دریافت بازخورد را ارائه کرد.
گروههای کاربری بر اساس کد متن باز اطلاعات را با یکدیگر به اشتراک گذاشته و ساخته شدهاند. انجمنها به تسهیل گفتگو و ایجاد استانداردهای لازم برای ارتباطات و همکاریهای باز کمک کردند، در زمان تولد اینترنت در اوایل دهه 1990، ارزشهای همکاری، بررسی همکار، ارتباط و باز بودن در پایههای آن نوشته شده بود که این روش شروع ایجاد برنامههای متن باز بود.
مدل توسعهی برنامههای متن باز
یک مدل توسعه برنامه متن باز فرآیندی است که توسط یک پروژه در جامعهی منبع باز برای توسعه نرمافزارها استفاده میشود. بسیاری از پروژههای منبع باز در GitHub میزبانی میشوند، جایی که میتوانید به مخازن دسترسی پیدا کنید یا در پروژههای جامع شرکت کنید، Linux و Ansible و Kubernetes نمونهای از پروژههای محبوب منبع باز هستند.
هنگامی که مشتریان از نرمافزار استفاده میکنند بازخورد ارائه میدهند، گزارش مشکلات را ارسال میکنند و با تغییر نیازهای خود ویژگیهای اضافی درخواست میکنند. این ورودی راهنمای توسعه برنامههای متن باز است.
مزایای برنامههای متن باز
دلایل زیادی وجود دارد که مردم برنامههای متن باز را به نرمافزارهای اختصاصی ترجیح میدهند، که در ادامه برخی از متداولترین دلایل را با هم بررسی میکینم.
بررسی برنامههای همتا
از آنجا که کد متن باز آزادانه در دسترس است و جامعه منبع باز بسیار فعال است، کد برنامههای متن باز به طور فعال توسط برنامه نویسان همکار بررسی و بهبود مییابد. به جای کدهایی که بسته شده و انحصاری میشود، کد متن باز امکان مقایسه و بهبود را به راحتی فراهم میکنند.
شفافیت
برای ایجاد اعتماد در نرمافزارها لازم است بدانید دقیقا چه نوع دادهها در حال جابجایی هستند، یا چه نوع تغییراتی در کد اتفاق افتاده است. برنامههای متن باز به شما امکان میدهد بدون نیاز به اعتماد به وعدههای فروشنده، این مسئله را برای خودتان بررسی و پیگیری کنید.
قابلیت اطمینان
نرم افزار اختصاصی به یک نویسنده یا شرکت کنترل کننده آن کد متکی است تا بتواند آن را به روز کرده و بهبود دهد. اما نرم افزارهای متن باز از نویسندگان اصلی خود پیروی میکند زیرا به طور مداوم از طریق مجامع فعال منبع باز به روز میشود. استانداردهای باز و بررسی نرمافزارهای همتا اطمینان حاصل میکند که کد نرم افزارهای متن باز به طور مناسب به روز شده و غالبا مورد آزمایش قرار میگیرد.
انعطاف پذیری
به دلیل تاکید کدهای متن باز بر اصلاح، میتوانید از کد آن برای رفع مشکلات و نیازهای منحصر به فرد در تجارت یا فعالیت استفاده کنید. شما برای استفاده از کد به روشهای خاص محدود نیستید و میتوانید هنگام اجرای روشهای جدید خودتان به کمک انجمن و بررسی برنامههای همتا کد را تغییر دهید.
هزینهی کمتر
در کنار برنامههای منبع باز که کد آنها به صورت رایگان ارائه میشود، هزینههایی همچون پشتیبانی، امنیت و مدیریت بسیار کاهش مییابد. البته این به آن معنا نیست که تمامی برنامههای متن باز رایگان هستند. اما به دلیل ماهیت وجود این نرمافزارها، تاثیر زیادی در کاهش هزینه دارند.
کد همیشه در دسترس
آزادی برای کاربر یک نرم افزار بدین معنی است که شما کد نرم افزار متن باز خود را در هر نقطه و هر زمان که بخواهید مورد استفاده قرار دهید.
همکاری آزاد
وجود اجتماعات منبع باز فعال تاثیر بسیاری در پیشرفت این نرمافزارها دارند. از این طریق میتوانید کمک، منابع و چشماندازهایی پیدا کنید که فراتر از یک گروه علاقه یا یک شرکت باشد.
آیا برنامههای متن باز رایگان هستند؟
معمولاً نرمافزارهای آزاد یا متن باز به معنای تاکید بر آزادی در حقوق کاربران نهایی است، اما گاهی اوقات این نامها با رایگان بودن اشتباه گرفته میشود. همانطور که گفته شد نرمافزار متن باز لزوما به صورت رایگان ارائه نمیشود. بلکه به این معنی است که کد منبع آن به صورت رایگان در دسترس قرار خواهد گرفت.
در بسیار از موارد برنامههای متن باز با برنامههای آزاد اشتباه گرفته می شود. اما در حقیقت، نه نرمافزار آزاد و نه نرمافزار منبع باز، قانونی درباره رایگان بودن هزینه ارائه نمیدهند و هر دو نوع نرمافزار را میتوان به صورت قانونی فروخت.
در عوض، تفاوت اصلی بین آنها مربوط به اشتراک است. در نرمافزار آزاد، اگر تغییراتی در کد منبع ایجاد کرده و میخواهید آنها را به اشتراک بگذارید، باید آن تغییرات را با پروژه اصلی نیز به اشتراک بگذارید. اما در نرمافزار منبع باز، معمولاً چنین محدودیتی وجود ندارد. با وجود تفاوتهای عملی این نرمافزارها، برنامههای آزاد و متن باز ارزشهای مشترکی با یکدیگر دارند.
دلیل اهمیت برنامههای متن باز
برنامههای متن باز نه تنها برای برنامه نویسان بلکه برای همه مهم هستند. زیرا رویکرد این نرمافزارها باعث میشود بسیاری از افراد در بهبود و رفع مشکلات احتمالی در آن سهیم شوند. به عنوان مثال، جوامع منبع باز در پروژههای متن باز سازماندهی میشوند و هر کس با مهارتهایی که دارد میتواند به پیشرفت آن کمک کند.
این گروهها همچنان استانداردهای مربوط به مشارکت در پروژههای منبع باز را دقیقا مانند تیمهای نرمافزاری اختصاصی حفظ میکنند، اما این فرآیند را برای هر کسی در جهان که میخواهد مشارکت کند باز میگذارند.
این مدل توسعه در برنامههای متن باز امروزه منجر به استفاده برخی از مهمترین برنامهها و سیستم عاملهای ابری از آنها شده است. محبوبترین آنها شامل LAMP، مدلی از پشتههای خدمات است که قسمت اعظم وب را تحت پوشش خود قرار میدهد، عبارت LAMP مخفف ۴ پروژهی زیر است:
- لینوکس: سیستم عامل متن باز و بزرگترین پروژه منبع باز در جهان.
- آپاچی: سرور وب متن باز که در وب اولیه نقش اساسی داشته است.
- مایاسکیوال: یک سیستم مدیریت پایگاه داده رابطهای منبع باز است.
- پیاچپی: یک زبان برنامه نویسی است که برای توسعه وب استفاده میشود.
البته حرف P گاهی اشاره به زبانهای پرل و پایتون نیز دارد، نمونههای دیگر از برنامههای متنباز محبوب شامل سیستم عامل موبایل اندروید، مرورگر وب موزیلا فایرفاکس، سیستم کنترل نسخهی Git و همچنین دو مجموعه اداری مرتبط OpenOffice و LibreOffice است، در مقیاس گستردهتر، بیشتر نوآوریها در زمینههای رایانش ابری، دادههای بزرگ و هوش مصنوعی از پروژههای نرمافزار منبع باز حاصل شده است.
نرمافزار منبع باز علاوه بر نقش ابزاری که در وب اولیه و برخی از محبوبترین برنامههایی که امروزه مورد استفاده قرار میگیرد، مزایای دیگری برای مشاغل و برنامه نویسان دارد. هنگامی که کد منبع در یک نرمافزار آزاد است، آموزش مهارتهای جدید برنامه نویسی را برای هر کسی آسانتر میکند. صدور مجوز منبع باز همچنین به دانشجویان اجازه میدهد تا در کنار تمرین، به وسیله ویرایش کد و به اشتراک گذاری آن با دوستان و جامعه منبع باز به اصلاحات در پروژههای منبع باز موجود کمک کنند.
بسیاری از افراد متخصص در این زمینه برنامههای متن باز را ترجیح میدهند زیرا بسیاری از توسعه دهندگان به دنبال رفع آسیب پذیریهای امنیتی در آن هستند و جامعه فعال در این زمینه نرم افزار را پشتیبانی میکند. شما در پشت بسیاری از وب سایتها و برنامههای محبوب میتوانید پروژههای منبعباز بسیاری را پیدا کنید!