اپن ‌سورس چیست؟

اپن ‌سورس چیست؟

Open Source اساساً به چیزی اطلاق می‌شود که امکان ویرایش و اشتراک‌گذاری آن برای همه فراهم است زیرا طراحی آن در دسترس عموم مردم قرار دارد. این اصطلاح، در توسعهٔ نرم‌‌افزار و ایجاد یک روش خاص در تولید برنامه‌های کامپیوتری ریشه دارد؛ با این حال، امروزه اصطلاح اپن‌سورس مجموعه‌ای از مرزها و ارزش‌ها را تعریف می‌کند که در مجموع رویکرد اپن‌سورسی نامیده می‌شوند. در پروژه‌ها، محصولات و نوآوری‌های اپن‌سورس، اصولی همچون تبادل باز، مشارکت چندجانبه، ساخت سریع نمونهٔ‌ اولیه (MVP)، شفافیت و توسعهٔ جامعه‌محور رعایت شده و مورد احترام قرار می‌گیرند.

نرم‌افزار اپن‌سورس چیست؟
نرم‌افزار اپن‌سورس، نرم‌افزاری است که هر کسی می‌تواند سورس‌کد آن را ببیند و آن را ویرایش کند و یا توسعه دهد. Source Code بخشی از نرم‌افزار است که اکثر کاربران کامپیوتر هرگز آن را نمی‌بینند. برنامه‌نویسان با نوشتن سورس‌کد، تعیین می‌کنند که بخش‌های مختلف یک نرم‌افزار -برنامه یا اپلیکیشن- چه‌طور باید کار کند. هر برنامه‌نویسی که به سورس‌کد یک برنامه دسترسی داشته باشد، می‌تواند با افزودن قابلیت‌هایی خاص، عملکرد برنامه را بهبود بخشیده و یا مشکلات آن را برطرف نماید.

نرم‌افزارهای اپن‌سورس چه فرقی با سایر نرم‌افزارها دارند؟
بعضی از نرم‌افزارها سورس‌کدی دارند که تنها در اختیار شخص برنامه‌نویس، تیم یا شرکت تولید‌کنندهٔ‌ آن قرار دارد و هیچ‌ کس دیگری نمی‌تواند به آن دسترسی داشته باشد که این‌‌گونه نرم‌افزارها اصطلاحاً Proprietary (اختصاصی) یا Closed Source (منبع بسته) نام دارند.

در مورد نرم‌افزارهای اختصاصی، صرفاً تولیدکنندگان اصلی نرم‌افزار می‌توانند به سورس‌کد آن دسترسی داشته، آن را تغییر دهند و یا به صورت قانونی آن را کپی کنند. علاوه بر این، استفاده از این نرم‌افزارها مشروط به پذیرفتن توافق‌نامه‌ای است که در هنگام نصب برنامه و در نخستین بار استفاده از نرم‌افزار برای کاربر نمایش داده می‌شود و کاربر می‌پذیرد که تغییرات غیرمجاز را در نرم‌افزار ایجاد نکند و از نرم‌افزار تنها در مواردی استفاده کند که در توافق‌نامه مجاز شمرده شده‌اند (Microsoft Office و Adobe Photoshop دو نمونه از نرم‌افزارها با منبع بسته هستند). به طور مثال، برای آشنایی توافق‌نامهٔ ویندوز ۱۰، به آموزش چرا باید به لینوکس مهاجرت کنیم؟ مراجعه نمایید.

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

مجوزهای اپن‌سورس بر نحوهٔ استفاده از نرم‌افزار، مطالعه و حتی ویرایش و اعمال تغییرات در سورس‌کد آن تأثیر گذاشته‌اند. به طور کلی، مجوزهای اپن‌سورس این اجازه را به کاربران می‌دهند که نرم‌افزار را با هر هدف دلخواه مورد استفاده قرار دهند. در برخی از مجوزهای اپن‌سورس -که بعضی از مردم آن را مجوز Copyleft می‌نامند- قید شده است که اگر شخصی برنامه‌ای را ویرایش نموده و سپس منتشر کرد، ملزم است که سورس‌کد اصلی آن را نیز به همراه برنامهٔ ویرایش شده منتشر نماید.

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

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

آیا رویکرد اپن‌سورس،‌تنها برای برنامه‌نویسان مهم است؟
پاسخ کوتاه خیر است. هم فعالان صنعت توسعهٔ نرم‌افزار و هم فعلان دیگر صنایع از تفکر و رویکرد اپن‌سورس و از تکنولوژی‌های اپن‌سورس بهره می‌برند. اولین پایه‌گذاران اینترنت، بخش عمدهٔ‌ آن را بر پایهٔ تکنولوژی‌های اپن‌سورس -مانند سیستم‌عامل گنو/لینوکس و وب‌سرور آپاچی- بنا کردند؛ از این‌ رو، هر کسی که امروزه از اینترنت استفاده می‌کند، به نحوی در حال بهره بردن از نرم‌افزارهای اپن‌سورس است (و یا هر کسی که گوشی اندرویدی دارد، به نوعی یکی از کاربران کامیونیتی اپن‌سورس محسوب می‌شود).

هر بار که کاربری صفحه‌ای از یک سایت را باز می‌کند، ایمیل خود را چک می‌کند،‌ با دوستان خود چت می‌کند، به صورت آنلاین موسیقی گوش داده و یا در بازی‌های ویدئویی چند کاربره شرکت می‌کند، دیوایس‌های ایشان اعم از کامپیوتر، گوشی تلفن همراه و یا کنسول بازی وی به شبکه‌ای جهانی از کامپیوترهایی وصل می‌شود که برای مسیریابی و انتقال داده‌ها به دستگاه لوکال مورد استفادهٔ کاربر، از نرم‌افزارهای اپن‌سورس استفاده می‌کنند. کامپیوترهایی که انجام این وظایف مهم را به عهده دارند، معمولاً در جایی دور از دسترس فیزیکی کاربران قرار دارند و به همین دلیل است که بعضی از مردم این کامپیوترها را Remote Computers (کامپیوترهای راه‌ دور) می‌نامند.

درآمدی بر کلود
روز به روز تکیه و اعتماد مردم نسبت به کامپیوترهای ریموت افزایش می‌یابد. امروزه مردم حتی کارهایی که می‌توانند بر روی دستگاه‌های شخصی خود انجام دهند را نیز بر روی این کامپیوترها انجام می‌دهند. به عنوان مثال، از ویراشگر متن آنلاین استفاده می‌کنند، ایمیل‌های خود را مدیریت می‌کنند و یا از نرم‌افزار ویرایش تصویری استفاده می‌کنند که برای استفاده از آن نیازی به نصب و اجرای آن بر روی کامپیوتر شخصی نیست و این در حالی است که کلیهٔ این برنامه‌ها و نرم‌افزارها بر روی کامپیوترهای ریموت اجرا می‌شوند.

هنگامی که کاربران از این برنامه‌ها استفاده می‌کنند، اصطلاحاً گفته می‌شود که مشغول Remote Computing (رایانش از راه‌ دور) هستند. برخی افراد به جای اصطلاح Remote Computing از اصطلاح Cloud Computing یا رایانش ابری استفاده می‌کنند زیرا این فرآیند شامل کارهایی است که هم دستگاه شخصی کاربر و هم کامپیوترهای ریموت را درگیر می‌کند؛ مانند ذخیرهٔ فایل‌ها، اشتراک‌گذاری تصاویر و یا تماشای یک ویدئو. از آنجا که شبکهٔ جهانی کامپیوترهای ریموت مانند اَبری کاربران را فراگرفته‌اند، به انجام عملیاتی که این کامپیوترهای را نیز درگیر می‌کند، رایانش ابری اطلاق می‌شود (برای آشنایی بیشتر، به مقالهٔ کلود چیست؟ مراجعه نمایید.)

اهمیت رایانش ابری به طور فزاینده‌ای در حال افزایش است به طوری که امروزه این موضوع به بخشی از زندگی روزمرهٔ کاربران اینترنت تبدیل شده است. Google Apps نمونه‌ای از اپلیکیشن‌های اختصاصی رایانش ابری است. در واقع، اپلیکیشن‌های اجرا شده بر بستر رایانش ابری، خود بر روی نرم‌افزارهای جانبی دیگری اجرا می‌شوند که این نرم‌افزارهای جانبی برای اپلیکیشن‌های رایانش ابری به عنوان یک پلتفرم عمل می‌کنند که در این حالت گفته می‌شود که این نرم‌افزار جانبی تحت اپلیکیشن رایانش ابری در حال اجرا است. به طور کلی، پلتفرم‌های رایانش ابری ممکن است اپن‌سورس (منبع باز) و یا کلوزدسورس (منبع بسته) باشند. برای مثال می‌توان از OpenStack نام برد که یکی از پلتفرم‌های اپن‌سورس رایانش ابری است.

چرا برخی کاربران ترجیح می‌دهند از نرم‌افزارهای اپن‌سورس استفاده کنند؟
برخی کاربران به دلایل متعددی ترجیح می‌دهند که از نرم‌افزارهای اپن‌سورس استفاده کنند که عمده‌ترین این دلایل عبارتند از:
کنترل: بسیاری از مردم به این دلیل از نرم‌افزارهای اپن‌سورس استفاده می‌کنند که کنترل بیشتری بر روی این نوع از نرم‌افزارها دارند. کسانی که با برنامه‌نویسی آشنایی دارند می‌توانند سورس‌کد برنامه را مورد بررسی قرار دهند تا مطمئن شوند که این برنامه کاری به جز چیزی که آن‌ها می‌خواهند انجام نمی‌دهد. کاربرانی که برنامه‌نویس نیستند نیز از این جنبهٔ‌ نرم‌افزارهای اپن‌سورس بهره‌مند می‌شوند زیرا کسی از قبل برای آن‌ها تعیین تکلیف نکرده که این نرم‌افزار را با چه هدفی مورد استفاده قرار دهند و آن‌ها مختارند که با هر هدفی که مد نظر دارند، از نرم‌افزار خود استفاده کنند.

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

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

ثبات و پایداری: برخی از کاربران ترجیح می‌دهند که برای پروژه‌های مهم و طولانی‌مدت خود از نرم‌افزارهای اپن‌سورس به جای نرم‌افزارهای اختصاصی استفاده کنند زیرا در مورد نرم‌افزارهای اختصاصی همواره این نگرانی وجود دارد که تولید‌کنندهٔ نرم‌افزار، تولید و یا پشتیبانی از آن را متوقف کند و به این ترتیب ابزار مورد استفاده کاربردی که باید داشته باشد را از دست دهد اما این در حالی است که سورس‌کد نرم‌افزارهای اپن‌سورس در اختیار کاربر قرار دارد و کاربر می‌تواند تا هر زمانی که بخواهد از آن استفاده کند.

آیا اپن‌سورس بودن صرفاً به معنای رایگان بودن است؟
پاسخ کوتاه خیر است. این یک سوءتفاهم رایج در مورد اپن‌سورس است که تصور می‌شود مفاهیم اپن‌سورس در رابطه با مسائل اقتصادی است! برنامه‌نویسان نرم‌افزارهای اپن‌سورس می‌توانند برای محصولی که تولید نموده‌اند و یا در تولید آن شرکت داشته‌اند، مبلغی را دریافت کنند. با این وجود، در بعضی موارد مجوز اپن‌سورس ممکن است آن‌ها را ملزم کند که در هنگام فروش نرم‌افزار، سورس‌کد آن را نیز در اختیار خریدار قرار دهند؛ از این رو، برخی از تولیدکنندگان نه در ازای نرم‌افزار بلکه در ازای خدمات و پشتیبانی مبالغی را از دیگر کاربران دریافت می‌کنند و بدین ترتیب، خودِ نرم‌افزار همچنان رایگان باقی می‌ماند اما هنوز برنامه‌نویس این امکان را خواهد داشت که در ازای کمک و راهنمایی کاربران در مورد نصب، استفاده و رفع مشکلات احتمالی، کسب درآمد نماید (برای کسب اطلاعات بیشتر، به مقالهٔ نرم‌افزارهای اپن‌سورس با نرم‌افزارهای رایگان چه تفاوتی دارند؟ مراجعه نمایید).

با این حال، مهارت داشتن در برنامه‌نویسی و توانایی در رفع مشکلات برنامه‌های اپن‌سورس نیز می‌تواند به خودی خود ارزشمند باشد زیرا بسیاری از شرکت‌ها به دنبال برنامه‌نویسانی هستند که تجربهٔ کار در پروژه‌های اپن‌سورس را داشته باشند. در همین راستا، توصیه می‌کنیم به مقالهٔ اگر دولوپر اپن‌سورس نیستید، لااقل به یک حامی اپن‌سورس تبدیل شوید! مراجعه نمایید.

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

منبع


رائفه خلیلی