متن باز یا منبع باز (open source) چیست؟
اگر کار یا فعالیت شما مختصر ارتباطی با دنیای نرمافزار داشته باشد حتما تا کنون با این سوال که open source چیست مواجه شدهاید.
اصطلاح منبع باز یا متن باز (open source) اشاره به چیزی است که بدلیل ساختار قابل دسترس توسط عموم، مردم میتوانند آنرا تغییر داده و با اشتراک بگذارند.
این اصطلاح در توسعه نرمافزار، سرچشمه رویکرد خاصی در ایجاد برنامههای رایانهای شد. به هر حال امروز متن باز یا منبع باز (open source) گسترهای از ارزشها که ما آنرا "مسیر متنباز" مینامیم را تعیین میکند.
پروژهها و محصولات متن باز یا منبع باز به تبادل باز، همکاری مشارکتی، نمونهسازی سریع، شفافیت، شایسته سالاری و توسعه جامعه محور (community-oriented development) مشهور شدهاند.
نرم افزار متن باز یا منبع باز (open source) چیست؟
نرم افزار متن باز یا منبع باز به نرم افزاری اطلاق میشود که کد منبع (source code) آن توسط هر کسی قابل بازبینی، بررسی، ویرایش و توسعه است. یعنی برنامهنویسان رایانه می توانند با دستکاری و ایجاد تغییر در بخشی از نرمافزار یا برنامه عملکرد آن را تغییر دهند. برنامهنویسان رایانه که به کد منبع نرمافزار دسترسی دارند، میتوانند اشکالات آنرا رفع و یا ویژگیهای جدیدی نیز به آن اضافه نمایند تا عملکردی بهتری داشته باشد.
تفاوت نرم افزارهای متن باز یا منبع باز با سایر نرمافزارها چیست؟
کد منبع برخی از نرم افزارها به صورت انحصاری، فقط توسط شخص، تیم و یا سازمان ایجاد کننده آن قابل رویت، تغییر و انتشار میباشد. مردم اینگونه نرمافزارها را صلاحاً اختصاصی (proprietary) یا متن بسته (closed source) مینامند.
در نرم افزارهای اختصاصی فقط نویسندگان اصلی حق کپی، بازبینی و تغییر و انتشار نرم افزار را دارند. برای استفاده از نرم افزارهای اختصاصی کاربران باید ابتدا توافقنامهای را امضا کنند (معمولاً در سیستمهای نرم افزاری این توافقنامه در اولین باری که سیستم اجرا شود و یا در حین عملیات نصب نمایش داده شده و توسط کاربر تایید میشود) که در آن تصریح شده که کاربران نباید کاری را که خلاف میل صاحبان نرم افزار است با آن انجام دهند. مایروسافت ویندوز، آفیس و فوتوشاپ نمونههایی از نرم افزارهای اختصاصی (proprietary) هستند.
نرم افزارهای منبع باز یا متن باز (open source) اما متفاوت هستند. نویسندگان و تهیه کنندگان اولیه این نرم افزارها اجازه دسترسی به کد منبع (source code) این نرم افزارها را در اختیار همه کاربران برای مشاهده، یادگیری، اصلاح، تغییر عملکرد، توسعه و یا انتشار، قرار دادهاند. نرم افزارهای اودوو (odoo)، لینوکس (Linux) و لیبره آفیس (libre office) چند نمونه از نرم افزارهای متن باز یا منبع باز هستند.
مانند نرم افزارهای اختصاصی کاربران نرم افزارهای منبع باز یا متن باز (open source) نیز باید قبل از استفاده از این نرم افزارهای شرایط مجوز این نرم افزارها را قبول نمایند، اما این شرایط با شرایط مجوز نرم افزارهای اختصاصی (proprietary) به صورت چشمگیری متفاوت است.
مجوز یا لایسنسهای متن باز یا منبع باز ، راهی را نشان می دهد که کاربران می توانند کدهای منبع نرم افزار را مطالعه، کپی، تغییر و منتشر نمایند. به طور کلی مجوز نرم افزارهای متن باز یا منبع باز به کاربران خود اجازه هرگونه استفادهای که تمایل دارند از نرم افزار را میدهد. برخی از مجوزهای نرم افزارهای متن باز یا منبع باز که توسط عدهای کپیلفت (copyleft) نامیده میشود قیدی برای کسانی که میخواهند تغییری در این نرم افزارها ایجاد کرده و منتشر نمایند ایجاد کرده و انتشار متن باز و دسترسی به کد منبع برنامه جدید در کنار فایل های اجرایی را اجباری مینمایند. علاوه بر این برخی از مجوزهای متن باز تصریح میکند که در صورت تغییر و انتشار یک نرم افزار متن باز شما باید کد منبع برنامه را نیز منتشر نموده و اجازه دریافت هیچگونه مبلغی برای صدور مجوز استفاده یا لایسنس نرم افزار را نخواهید داشت.
نرم افزارهای متن باز ذاتاً همکاری و انتشار را با دسترسی به کد منبع خود و امکان ادغام ماژولها در داخل نرم افزارهای سازمانی ترویج مینمایند. آنها برنامه نویسان رایانه تشویق به دسترسی، مشاهده، تغییر و انتشار نرم افزارهای متن باز یا منبع باز هر زمان که دوست دارند مینمایند، تا زمانی که آنها نیز همین امکان را با دیگران به اشتراک بگذارند.
چرا مردم ترجیح میدهند از نرم افزارهای منبع باز یا متن باز (open source) استفاده کنند؟
دلایل زیادی وجود دارد که مردم ترجیح میدهند از نرم افزارهای متن باز یا منبع باز استفاده کنند. از جمله این دلایل عبارتند از:
کنترل: خیلی از کاربران با توجه به دسترسی عمومی به کد منبع برنامه و امکان کنترل آن توسط خودشان از نرم افزارهای متن باز یا منبع باز استفاده میکنند. آنها میتوانند با بازبینی کد منبع برنامه از عدم انجام کارهایی که نباید انجام شود اطمینان حاصل نموده و یا کارکرد بخشی از نرم افزار را مطابق سلیقه یا نیاز خود تغییر دهند. کاربران غیر برنامه نویس هم به این موضوع علاقه مندند چون میتوانند به هر منظوری که خودشان دوست دارند از نرم افزار استفاده کنند و فقط محدود به مقاصدی که شخص دیگری برای آنها مشخص نموده نیستند.
آموزش: برخی دیگر به نرم افزارهای منبع باز یا متن باز علاقهمندند چون به آنها کمک میکند تا برنامهنویسان بهتری باشند. از آنجایی که کد منبع این نرم افزارها در دسترس عموم قرار دارد دانشاموزان به راحتی می توانند با مراجعه و مطالعه این کدها برنامه نویسی را بهتر بیاموزند.همچنین آنها می توانند با به اشتراک گذاری کد منبع خود از دیگران برای نقد و نظر دعوت کرده و با نظرات آنها توانمندیها و مهارتهای خود را گسترش دهند. هنگامی که افراد اشتباهاتی را در نرم افزارهای متن باز کشف می کنند با اشتراک این اشتباهات از تکرار آن توسط دیگران نیز جلوگیری به عمل میآورند.
امنیت (security): بسیاری از افراد ترجیح میدهند از نرم افزارهای متن باز یا منبع باز (open source) استفاده کنند چون این نرم افزارها را امنتر و پایدارتر از نرم افزارهای اختصاصی (proprietary) مییابند. چون کد منبع آن توسط هرکسی قابل مشاهده بوده و از آنجا که تغییر در بخشهایی از ان مستلزم کسب اجازه از نویسنده اصلی نیست میتوان اشکالات یا خطاهای مشاهده شده را نیز رفع نمود. از آنجایی که معمولاً این نرم افزارها دارای جوامع برنامهنویسی بزرگی نسبت به تیمهای توسعه دهنده نرم افزارهای اختصاصی هستند لذا رفع اشکالات و خطاها نیز در آنها سرعتر انجام میشود.
ثبات (stability): بسیاری از کاربران ترجیح میدهند از برنامههای متن باز یا منبع باز در پروژههای مهم و دراز مدت خود استفاده کنند. چون با توجه به در دسترس بودن کد منبع برنامه این نگرانی که روزی برنامهنویس اصلی سیستم دیگر علاقه یا توان کار کردن بر روی پروژه را نداشته باشد و استفاده کنندگان دچار مشکل شوند وجود ندارد.
چند نمونه از نرمافزارهای متن باز موفق و کاربردی
در ادامه برای آشنایی بیشتر در حوزههای مختلف به معرفی چند نمونه از نرمافزارهای متنباز یا منبع باز موفق و معروف میپردازیم.
ابزارهای برنامهنویسی
Ethereum
بستر تولید نرم افزارها بر پایه block-chain بوده و ابزار بسیار مناسبی برای شروع کار با این تکنولوژی میباشد.
React native
برای استفاده از Java Script در تولید نرمافزارهای تحت اندروید و ios گزینههای مختلفی وجود دارد، اما واقعا React Native چیز متفاوتی است. اول اینکه NPM Style Module را پشتیبانی میکند. دوم اینکه به صورت توسعهپذیر طراحی شده و شامل اجزای Native است. سوم اینکه محصول Facebook است. و در آخر اینکه بر پایه React طراحی شده که یکی از معمولترین و پرکاربردترین چارچوبهای جاوااسکریپتی است.
نرم افزارهای سازمانی و ERP
odoo ERP
یکی از کاربردیترین و پرطرفدارترین ERP های متن باز موجود در دنیا میباشد. این ERP متن باز با ارائه ماژولهای کاملا رایگان و استفاده از تکنولوژی روز و معماری بسیار کارآمد و توسعهپذیر توانسته در زمان کوتاهی نظر افراد و شرکتهای زیادی را به خود جلب نماید. برای آشنایی بیشتر با این نرم افزار میتوانید به مقاله odoo چیست و برای مطالعه تاریخچه این نرم افزار از زبان خالق آن به مقاله داستان odoo مراجعه نمایید.