An Introduction to Open Source
متنباز یا Open Source چیست؟
متنباز اصطلاحی است که در اصل به نرمافزارهای متنباز (OSS) اطلاق میشود. نرمافزار متنباز کدی است که برای دسترسی عمومی طراحی شده است، هر کسی میتواند کد را به دلخواه خود ببیند، اصلاح و یا توزیع کند. یک نرمافزار متنباز با تکیه بر بررسی نظیر و تولید جامعه به روشی غیر متمرکز و مشترک توسعه مییابد.
نرمافزار متنباز اغلب ارزانتر، انعطافپذیرتر میباشد و از ماندگاری بیشتری نسبت به همتایان اختصاصی خود برخوردار است، زیرا توسط جوامع توسعه یافته است نه یک توسعه دهنده یا شرکت واحد. مفهوم متنباز به یک جنبش و روشی تبدیل شده است و حتی فراتر از تولید نرمافزار رفته است. جنبش متنباز از ارزش ها و مدل تولید غیرمتمرکز نرمافزار متنباز برای یافتن راه های جدید برای حل مشکلات در جوامع و صنایع خود استفاده میکند.
نرم افزار متنباز یا Open Source Software چیست؟
یک نرمافزار متنباز از طریق نوع خاصی از مجوزها منتشر میشود که کد منبع خود را بطور قانونی در دسترس کاربران نهایی قرار دهد. مجوزهای زیادی وجود دارند، اما بطور معمول یک نرمافزار زمانی متنباز در نظر گرفته میشود که:
- به صورت کد منبع و بدون هزینه اضافی در دسترس است، بدین معنی که کاربران میتوانند کدی را که نرمافزار را تشکیل میدهد، مشاهده کرده و هر نوع تغییری که میخواهند، در آن بدهند.
- کد منبع میتواند در سایر نرمافزارهای جدید قرار گیرد، به این معنی که هر کسی میتواند کد منبع را گرفته و برنامه خود را از آن توزیع کند.
آیا نرمافزار متنباز رایگان است؟
نرمافزار متنباز لزوماً به این معنی نیست که نرم افزارهای اجرایی بصورت رایگان انتشار داده میشوند. بلکه در حقیقت بدان معناست که کد منبع آنها بصورت رایگان در دسترس است. به عنوان مثال، کد منبع Red Hat Enterprise Linux بصورت آزاد در دسترس همه قرار دارد، اما تبدیل این کد منبع به کد قابل اجرا به تخصص، زمان و سرور نیاز دارد. هنگامی که سازمانها کد آماده تولید برای لینوکس RHEL را بدون نیاز به بازسازی خود از کد منبع بخواهند، میبایست اشتراک دریافت کنند.
نرمافزار متنباز همچنین گاهی اوقات با جنبش نرمافزار آزاد همراه است، که میتواند به سردرگمی در مورد اینکه آیا متنباز به معنای "رایگان" است، اضافه شود. جنبش نرمافزار آزاد از فرهنگ هکرهای دهه 1970 رشد کرد و بطور رسمی توسط ریچارد استالمن به عنوان بخشی از پروژه GNU و بنیاد غیرانتفاعی نرمافزار آزاد تاسیس شد. معمولاً منظور از "نرم افزار رایگان" تأکید بر آزادی در حقوق کاربران نهایی است، اما گاهی اوقات میتواند به معنای "بدون هزینه" اشتباه گرفته شود.
در حقیقت، نه نرمافزار رایگان و نه نرمافزار متنباز چیزی راجع به هزینه نشان نمیدهند. هر دو نوع نرمافزار را میتوان به صورت قانونی فروخت یا به آنها داد. در عوض، تفاوت اصلی بین آنها به اشتراک گذاری مربوط میشود. برای نرمافزار رایگان، اگر تغییراتی در کد منبع ایجاد کنید و بخواهید آنها را به اشتراک بگذارید، باید آن تغییرات را با پروژه اصلی نیز به اشتراک بگذارید. برای نرمافزارهای متنباز، معمولاً چنین محدودیتی وجود ندارد. با وجود تفاوتهای عملی، نرمافزار رایگان و نرمافزار متنباز دارای ارزشهای مشترکی هستند. در حقیقت، این اصطلاحات گاهی اوقات در جمله معروف "نرمافزار متنباز و آزاد" (FOSS) ترکیب میشوند.
چه تفاوتی بین نرمافزار رایگان، بسته و متنباز وجود دارد؟
برای مدت طولانی نرمافزار متنباز برچسب قبلی "نرم افزار رایگان یا آزاد" را در اختیار داشت. جنبش نرمافزار آزاد بطور رسمی توسط ریچارد استالمن در سال 1983 از طریق پروژه GNU تاسیس شد. جنبش نرمافزار آزاد خود را حول ایده آزادی های کاربر سازمان داد: آزادی دیدن کد منبع، اصلاح آن، توزیع مجدد آن، در دسترس قرار دادن آن و کار برای کاربر به هر روشی که کاربر برای کار به آن نیاز داشته باشد.
نرمافزار آزاد به عنوان همتای نرمافزار اختصاصی یا "منبع بسته" وجود دارد. نرمافزار منبع بسته بسیار محافظت میشود. فقط دارندگان کد منبع حق قانونی دسترسی به آن کد را دارند. کد منبع بسته را نمیتوان بطور قانونی تغییر داد یا کپی کرد، و کاربر فقط برای استفاده از این نرمافزار هزینه پرداخت میکند. آنها نمیتوانند آن را برای استفادههای جدید اصلاح کنند و یا آن را با انجمن های خود به اشتراک بگذارند.
نام "نرم افزار آزاد"، باعث سردرگمی بسیاری شده است. نرمافزار آزاد لزوماً به معنای داشتن مالکیت آزاد نیست، فقط استفاده رایگان از چگونگی استفاده از آن رایگان است. کریستین پیترسون، که اصطلاح "متنباز " را ابداع کرد، سعی کرد با جایگزینی "نرمافزار آزاد" با "متنباز" این مشکل را حل کند: "مشکل برچسب اصلی قبلی،" نرمافزار آزاد "، مفهوم سیاسی آن نبود، بلکه به نظر میرسد تمرکز آن روی قیمت مورد توجه است.
اصطلاحی مورد نیاز بود که بر روی مسئله اصلی کد منبع متمرکز باشد و این افراد بلافاصله افراد تازه وارد این مفهوم را سردرگم نمیکند. پیترسون ایده جایگزینی "نرمافزار آزاد" با اصطلاح "منبعباز " را به یک گروه کاری پیشنهاد کرد. این گروه میخواستند که جهانیان بدانند که وقتی نرمافزار به اشتراک گذاشته میشود بهتر است. زمانی که مشارکتی، باز و قابل تغییر است. اینکه میتوان از آن برای استفادههای جدید و بهتر استفاده کرد، انعطافپذیرتر، ارزانتر و میتواند بدون قفل فروشنده از ماندگاری بالاتری برخوردار باشد.
در اوایل سال 1998 ابتکار متنباز (OSI) تاسیس شد، اصطلاح متنباز را رسمی کرد و تعریفی مشترک و گسترده در صنعت ایجاد کرد. گرچه جنبش متنباز از اواخر دهه 1990 تا اوایل سال 2000 همچنان با اطمینان و سوءظن شرکتها روبرو شد، اما بطور پیوسته از حاشیه تولید نرمافزار خارج شده و به استاندارد صنعتی امروزی تبدیل شده است.
تفاوت کلیدی بین نرمافزار اختصاصی و FOSS در دسترس بودن کد منبع است. نرمافزارهای اختصاصی یا تجاری مانند Microsoft Windows و Adobe Photoshop به عنوان کد منبع در دسترس کاربران نهایی نیستند. نرمافزار رایگان مانند هسته لینوکس (اساس Red Hat Enterprise Linux) و نرمافزار من متنباز مانند Google Chromium (اساس مرورگر وب Chrome) از طریق مجوزهای مربوطه به عنوان کد منبع در دسترس عموم هستند.
از آنجا که لینوکس یک نرمافزار رایگان است، Redhat تغییراتی را که برای ایجاد مجدد Red Hat Enterprise Linux ایجاد میکند با جامعه متنباز به اشتراک میگذارد. از آنجا که Chromium یک نرمافزار متنباز است، Google مجبور نیست تغییراتی را که برای نوشتن مجدد Chrome در کد منبع ایجاد میکند، به اشتراک بگذارد.
انواع مختلفی از مجوزهای متنباز نیز وجود دارد. به عنوان مثال، اگر کسی کد منبع شما را به یک نرمافزار جدید تبدیل کند، آیا از او خواستهاید که آن را تحت همان مجوز (همانند GNU GPL) منتشر کند یا میتواند آن را تحت مجوز دیگری (همانطور که در GNU LGPL مجاز است) منتشر کند؟ اینترنت و مدل رایانش ابری که بطور فزایندهای محبوب شده است، اگر ریشه آنها بر اساس نرمافزارهای متنباز نباشد، بسیار متفاوت خواهند بود.
چرا نرمافزار متنباز مهم است؟
نرمافزار متنباز برای همه مهم است، نه فقط برنامهنویسان، زیرا پتانسیل افراد بیشتری را برای تبدیل شدن به یک مبتکر از یک مدل منبع بسته باز میکند. به عنوان مثال، انجمنهای متنباز در اطراف پروژههای متنباز سازماندهی میشوند كه هر كسی با مهارت خاص خود، میتواند به آنها بپیوندد و به آنها كد ارائه دهد. این گروه ها هنوز استانداردهای مربوط به مشارکت در پروژههای متنباز را درست مانند تیم های نرمافزاری اختصاصی حفظ میکنند، اما این روند را برای هر کسی در دنیا که میخواهد مشارکت کند، باز میکنند.
این مدل توسعه متنباز منجر به تولید مهم ترین سرویسها و سیستمعامل های ابری امروزی شده است. محبوب ترین آنها شامل LAMP، سایر نمونههای فنآوریهای متنباز محبوب شامل سیستمعامل موبایل آندروید، مرورگر وب Mozilla Firefox، سیستم کنترل نسخه پرکاربرد Git و دو مجموعه اداری مرتبط OpenOffice و LibreOffice هستند. در مقیاس گستردهتر، بیشتر نوآوریها در زمینه رایانش ابری، کلان دادهها و هوش مصنوعی از پروژههای نرمافزار متنباز حاصل شدهاند.
علاوه بر نقشی سودمند که در اوایل وب و برخی از محبوبترین برنامههای کاربردی امروزه دارد، نرمافزارهای متنباز مزایای دیگری نیز برای مشاغل و برنامهنویسان منفرد دارند. وقتی کد منبعباز است، مطالعه آن برای توسعه مهارت های جدید برنامهنویسی را برای هر کسی آسان میکند. مجوز منبعباز همچنین به دانشجویان امکان میدهد با ویرایش کد و به اشتراکگذاری آن با دوستان و جامعه گستردهتر متنباز یا حتی کمک به رفع اشکال در پروژههای متنباز موجود، تمرینات خود را انجام دهند.
نرمافزار متنباز همچنین این امکان را برای مشاغل فراهم میکند که بتوانند آن را برای پاسخگویی به نیازهای خاص خود، یا تجربیات جدید مشتری که در کد منبع اصلی وجود ندارد، شخصی سازی کنند. برخی نیز نرمافزار متنباز را ترجیح میدهند زیرا هنگامی که کد منبع بطور آشکار در دسترس است و جامعه فعال از آن پشتیبانی میکند، تعداد بیشتری از توسعهدهندگان که به دنبال آسیبپذیریهای امنیتی هستند، وجود دارند و آن کد منبع را بررسی میکنند.
نرمافزار متنباز نتیجه یک مدل توسعه متنباز است. مدل توسعه متنباز غیرمتمرکز است و همکاری باز و تولید همتا را تشویق میکند. این امر بر جنبش وسیعتری در توسعه نرمافزار تأثیر گذاشته است و مردم اغلب از اصول اصلی آن به عنوان "روش متنباز " یاد میکنند.
روش متنباز بسیار کارآمد است زیرا میتواند استعداد فنی فوقالعادهای را به خود جلب کند. بیشتر نوآوریها در فناوری در جامعه متنباز اتفاق میافتد و سرانجام مردم در سراسر جهان از نرم افزارهای متنباز استفاده میکنند. پشت بسیاری از وب سایتها و برنامههای معروف میتوانید پروژههایی مانندLinux ، Kubernetes و Git را پیدا کنید و افراد با مرورگرهای متنباز مانند Firefox و Chromium به اینترنت دسترسی پیدا میکنند.
لینوکس و متنباز
لینوکس یک سیستمعامل آزاد و متنباز است که تحت مجوز عمومی GNU (GPL) منتشر شده است. همچنین این پروژه به بزرگترین پروژه نرمافزار متنباز در جهان تبدیل شده است. سیستم عامل لینوکس به عنوان یک نسخه جایگزین، رایگان و متنباز از سیستم عامل MINIX ایجاد شده است که خود براساس اصول و طراحی یونیکس بوده است. از آنجا که لینوکس تحت مجوز متنباز منتشر میشود، که مانع از محدودیت استفاده از نرمافزار میشود، هر کسی میتواند کد منبع را اجرا، مطالعه، اصلاح و توزیع مجدد کند یا حتی کپی از کد اصلاح شده خود را بفروشد، به شرطی که این کار را تحت همان مجوز انجام دهد.
ارزش های متنباز
دلایل زیادی وجود دارد که مردم متنباز را به جای نرمافزار اختصاصی انتخاب میکنند، اما متداولترین آنها عبارتند از:
- بررسی همتا یا Peer Review: از آنجا که کد منبع آزادانه در دسترس است و جامعه متنباز بسیار فعال است، کد متنباز بطور فعال توسط برنامهنویسان بررسی و بهبود مییابد. به جای کدهایی که بسته شده و راکد میشوند، آن را به عنوان کد روان در نظر بگیرید.
- شفافیت یا Transparency: باید دقیقاً بدانید که چه نوع داده ای به کجا منتقل میشود یا چه تغییراتی در کد اتفاق افتاده است؟ متنباز به شما اجازه میدهد بدون اینکه به وعده های فروشنده اعتماد کنید، این مورد را برای خود بررسی و پیگیری کنید.
- قابلیت اطمینان یا Reliability: کد اختصاصی برای به روزرسانی، وصله و کارکردن، به توسعهدهنده یا شرکت کنترل کننده آن کد متکی است. کد متنباز از توسعهدهندگان اصلی خود بیشتر عمر میکند زیرا بطور مداوم از طریق انجمنهای متنباز فعال بروز میشود. استانداردهای باز و بررسی همگانی اطمینان حاصل میکند که کد متنباز بطور مناسبی آزمایش میشود.
- انعطاف پذیری یا Flexibility: به دلیل تأکید آن بر اصلاح، میتوانید از کد متنباز برای حل مشکلاتی که منحصر به کسب و کار یا جامعه شما است استفاده کنید. شما در استفاده از کد به هیچ روشی خاص قفل نیستید و میتوانید هنگام اجرای راه حلهای جدید به کمک انجمن ها اعتماد کنید.
- هزینه کمتر یا Lower Cost: با وجود متنباز خود کد نیز رایگان است. آنچه در هنگام استفاده از شرکتی مانند Red Hat پرداخت میکنید پشتیبانی، تقویت امنیت و کمک به مدیریت قابلیت همکاری است.
- بدون قفل فروشنده یا No vendor lock-in: آزادی برای کاربر به این معنی است که میتوانید کد متنباز خود را به هر کجا ببرید و از آن برای هر مکانی و در هر زمان استفاده کنید.
- همکاری باز یا Open Collaboration: وجود جوامع متنباز فعال به این معنی است که میتوانید کمک، منابع و چشم اندازهایی پیدا کنید که فراتر از یک گروه یا یک شرکت باشد.