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 نام برد که یکی از پلتفرمهای اپنسورس رایانش ابری است.
چرا برخی کاربران ترجیح میدهند از نرمافزارهای اپنسورس استفاده کنند؟
برخی کاربران به دلایل متعددی ترجیح میدهند که از نرمافزارهای اپنسورس استفاده کنند که عمدهترین این دلایل عبارتند از:
کنترل: بسیاری از مردم به این دلیل از نرمافزارهای اپنسورس استفاده میکنند که کنترل بیشتری بر روی این نوع از نرمافزارها دارند. کسانی که با برنامهنویسی آشنایی دارند میتوانند سورسکد برنامه را مورد بررسی قرار دهند تا مطمئن شوند که این برنامه کاری به جز چیزی که آنها میخواهند انجام نمیدهد. کاربرانی که برنامهنویس نیستند نیز از این جنبهٔ نرمافزارهای اپنسورس بهرهمند میشوند زیرا کسی از قبل برای آنها تعیین تکلیف نکرده که این نرمافزار را با چه هدفی مورد استفاده قرار دهند و آنها مختارند که با هر هدفی که مد نظر دارند، از نرمافزار خود استفاده کنند.
تمرین و آموزش: عدهٔ دیگری از مردم به این دلیل به نرم افزارهای اپن سورس روی میآورند که این نرم فزارها می توانند آنها را به برنامه نویسان بهتری تبدیل کنند. از آنجا که سورس کد نرم افزارهای اپن سورس در دسترس همه قرار دارد، افراد علاقمند میتوانند با مطالعه و بررسی آن، بیاموزند که چطور برنامهٔ بهتری بنویسند. آنها همچنین میتوانند کارهای خود را به اشتراک گذاشته و از نظرات و انتقادات سایر برنامه نویسان بهرهمند شوند. علاوه بر این، دولوپرها میتوانند اشتباهات و خطاهای موجود در سورسکد برنامهها را پیدا نموده و با دیگران به اشتراک بگذارند تا آنها نیز دچار اشتباهات مشابهی نشوند.
امنیت: بعضی از مردم به خاطر امنیت به سراغ نرم افزارهای اپن سورس می روند زیرا نرم افزارهای اپن سورس را امن تر و پایدارتر از نرم افزارهای اختصاصی می دانند. از آنجا که هر کسی می تواند به سورس کد نرم افزارهای اپن سورس دسترسی داشته باشد، دیگران می توانند اشتباهات و یا غفلتهای خالق برنامه را برطرف کرده و آن را بسیار سریع تر از نرم افزارهای اختصاصی به روزرسانی نموده و ارتقاء دهد.
ثبات و پایداری: برخی از کاربران ترجیح میدهند که برای پروژههای مهم و طولانی مدت خود از نرم افزارهای اپن سورس به جای نرم افزارهای اختصاصی استفاده کنند زیرا در مورد نرمافزارهای اختصاصی همواره این نگرانی وجود دارد که تولید کنندهٔ نرم افزار، تولید و یا پشتیبانی از آن را متوقف کند و به این ترتیب ابزار مورد استفاده کاربردی که باید داشته باشد را از دست دهد اما این در حالی است که سورس کد نرم افزارهای اپن سورس در اختیار کاربر قرار دارد و کاربر میتواند تا هر زمانی که بخواهد از آن استفاده کند.
آیا اپن سورس بودن صرفاً به معنای رایگان بودن است؟
پاسخ کوتاه خیر است. این یک سوء تفاهم رایج در مورد اپن سورس است که تصور میشود مفاهیم اپن سورس در رابطه با مسائل اقتصادی است! برنامه نویسان نرم افزارهای اپن سورس می توانند برای محصولی که تولید نمودهاند و یا در تولید آن شرکت داشتهاند، مبلغی را دریافت کنند. با این وجود، در بعضی موارد مجوز اپن سورس ممکن است آنها را ملزم کند که در هنگام فروش نرم افزار، سورس کد آن را نیز در اختیار خریدار قرار دهند؛ از این رو، برخی از تولید کنندگان نه در ازای نرم افزار بلکه در ازای خدمات و پشتیبانی مبالغی را از دیگر کاربران دریافت میکنند و بدین ترتیب، خودِ نرمافزار همچنان رایگان باقی می ماند اما هنوز برنامه نویس این امکان را خواهد داشت که در ازای کمک و راهنمایی کاربران در مورد نصب، استفاده و رفع مشکلات احتمالی، کسب درآمد نماید (برای کسب اطلاعات بیشتر، به مقالهٔ نرم افزارهای اپن سورس با نرم افزارهای رایگان چه تفاوتی دارند؟ مراجعه نمایید).
با این حال، مهارت داشتن در برنامهنویسی و توانایی در رفع مشکلات برنامههای اپنسورس نیز میتواند به خودی خود ارزشمند باشد زیرا بسیاری از شرکتها به دنبال برنامهنویسانی هستند که تجربهٔ کار در پروژههای اپن سورس را داشته باشند. در همین راستا، توصیه میکنیم به مقالهٔ اگر دولوپر اپنسورس نیستید، لااقل به یک حامی اپنسورس تبدیل شوید! مراجعه نمایید.
با این همه، اپنسورس فراتر از مقولهٔ نرمافزار به چه معنا است؟
همانطور که در ابتدای مقاله گفتیم، اپنسورس یک نگرش (رویکرد) است و این در حالی است که چنین نگرشی به دنیای نرمافزار محدود نیست و میتوان آن را در ابعاد مختلف زندگی پیاده کرد. به عبارت دیگر، اپنسورس بودن در زندگی واقعی به معنای ایفای نقشی فعال در ارتقاء و پیشرفت جامعه و کمک برای ایجاد تغییرات مثبت در آن است و پیاده کردن این دیدگاه در زندگی با اشتیاق به همکاری و به اشتراک گذاری دانش، شکستها و پیروزیهای خود با دیگران و یا رعایت اصل صداقت و شفافیت محقق خواهد شد.