نرمافزارهای متن باز را میلیونها نفر استفاده میکنند، اما بسیاری از افرادی که با مرورگر Firefox سایتهای مختلف را جستجو میکنند یا مثلا سیستم عامل Ubuntu را در کامپیوترهای خود بارگیری میکنند، درکی در مورد چگونگی ساخت این نرمافزارها ندارند.
اصطلاح نرمافزار متن باز ریشه در جنبشی به نام جنش متن باز دارد که در دههی هشتاد میلادی شکل گرفت. اما منظور از این نوع نرمافزار چیست و چه ویژگیهایی دارد؟ تعریف و خصوصیات یک نرمافزار متن باز و مزایای آن از جمله موضوعاتی هستند که در این مقاله به آنها اشاره میکنیم.
نرم افزار متن باز (Open Source) چیست؟
نرمافزار متن باز (Open Source Software) یا به اختصار (OSS) به نرمافزارهایی گفته میشود که افراد با استفاده از مجوز کپیرایت میتوانند کد منبع آن را بخوانند، تغییر دهند یا آن را منتشر کنند.
این نرمافزار با همکاری عمومی ایجاد، آزمایش یا اصلاح میشود و میتواند با دیگران به اشتراک گذاشته شود. نرمافزار متن باز معمولا به شیوهی عمومی و اشتراکی تولید میشود.
سیستم اجرای جمعی این نرمافزارها با مدلهای سنتی نرمافزارهای اختصاصی متفاوت است و رویکردی مشارکتی و تکرارشونده برای نوشتن کد دارند؛ به نحوی که تمام افراد میتوانند در مورد مراحل بعدی کار بحث و تبادل نظر کنند. لازم به ذکر است که ما در مقاله زیر در مورد اینکه اساسا نرمافزار چیست و انواع آن صحبت کردهایم که پیشنهاد میکنیم حتما مطالعه کنید.
به گفتهی تورستن بهرنز، از موسسین انجمن Document Foundation، مفهوم یک برنامه نرمافزاری مثل یک خودرو در کارخانه مراحل مختلفی را طی میکند؛ به خصوص در مورد پروژههای نرمافزاری آزاد که مشارکت جدی در آن وجود دارد و تمام مراحل به شکل همزمان انجام میشود.
برخی کد را مینویسند، برخی فایلهای دودویی را تولید میکنند، عدهای آن را تست میکنند و عدهی دیگر مراحل تکمیلی مانند نوشتن متون جانبی را انجام میدهند.
در حالی که این کار ممکن است بینظم و آشفته به نظر برسد، اما در عمل اثربخشی بیشتری دارد. بنابراین پروژههای نرمافزاری آزاد موفق، باعث میشوند که افراد بتوانند در هر زمان و مکانی کار کنند.
تاریخچه جنش متن باز
جنبش نرمافزار آزاد در سال ۱۹۸۳ آغاز شد. این جنبش را بیشتر به فردی به نام ریچارد استالمن نسبت میدهند که در دههی هشتاد میلادی با پروژه گنو آن را استارت زد و بعدها بنیاد نرمافزار آزاد را تاسیس کرد.
در سال ۱۹۹۸، گروهی از برنامهنویسان و متخصصین نرمافزار، اعلام کردند که اصطلاح «نرمافزار متن باز» به عنوان اصطلاحی که ابهام کمتری دارد و برای دنیای سازمانی راحتتر است، باید جایگزین «نرمافزار آزاد» شود.
تولیدکنندگان نرمافزار ممکن است بخواهند نرمافزارهای خود را با یک مجوز متن باز منتشر کنند، تا هر فرد دیگری بتواند همان نرمافزار را بسازد یا از عملکرد داخلی آن سر در بیاورد.
با نرمافزارهای متن باز به طور کلی هر فردی این امکان را دارد که اصلاحاتی در نرمافزار ایجاد کند، آن را به سیستم عاملهای جدید و معماریهای پردازشگر انتقال دهد، با دیگران به اشتراک بگذارد یا در برخی موارد، آن را بازاریابی کند.
«کاسون» و «ریان» دو دانشمندی بودند که دلایل اصولی زیر را برای استفاده از انواع نرمافزارهای متن باز ذکر کردهاند:
- امنیت
- مقرون به صرفه بودن
- شفافیت
- دوام
- قابلیت همکاری با نرمافزارهای دیگر
- متناسبسازی با سیستمهای داخلی کشورها
تفاوت نرم افزار متن باز و آزاد چیست؟
اکثر کارشناسان اعتقاد دارند تفاوتی بین نرمافزار متن باز و آزاد وجود ندارد. اصطلاح نرمافزار آزاد به یک جنبش اجتماعی اشاره دارد که بیشتر به دنبال مشارکت افراد در روند تولید، ایجاد و انتشار یک نرمافزار بود.
بنابراین اصطلاح نرمافزار متن (Open Source Software) باز نیز تحت تاثیر همین رویکرد و بعدها توسط گروهی از برنامهنویسان ایجاد شد. بنابراین بخش قابلتوجهی از نرمافزارهایی که به آنها متنباز میگویند، همزمان آزاد نیز محسوب میشوند.
در واقع نرمافزار آزاد به اعطای برخی مجوزها به افراد اشاره دارد. مجوزهایی مانند آزادی در تولید، اجرا، کپی و توزیع نرمافزار. حال نرمافزار متن باز بیشتر به پیامدهایی اشاره میکند که نتیجه اعطای همین مجوزها است. پیامدهایی که منجر به مشارکت و همکاری افراد در توسعه نرمافزار میشود.
با این حال، برخی تفاوت نرمافزار متن باز و آزاد را اینطور بیان میکنند که نرمافزار آزاد بیشتر در مقابل نرمافزار انحصاری قرار دارد. بنابراین ممکن است یک نرمافزار متن باز باشد، اما آزاد نباشد. به هر حال، اکثر نرمافزارهای آزاد همزمان متن باز نیز هستند و تفاوت فاحشی بین این دو وجود ندارد.
مهمترین ویژگیها و خصوصیات یک نرم افزار متن باز چیست؟
عبارت «متن باز» فقط به معنی دسترسی به کد منبع نرم افزار نیست. بلکه ویژگیهای دیگری نیز دارد. ما در ادامه به مهمترین خصوصیات یک نرمافزار متن باز اشاره میکنیم:
بازتوزیع آزاد
مجوز تولید این نرمافزارها نباید به گونهای باشد که برای هیچ فردی هنگام فروش یا واگذاری نرمافزار محدودیت ایجاد کند. به عبارت دیگر، باید امکان توزیع آزاد نرمافزار بدون نیاز به حق امتیاز یا پرداختی برای فروش وجود داشته باشد.
کد منبع
برنامه نرمافزار باید شامل کد منبع باشد و امکان توزیع این کد به هر شکلی باید وجود داشته باشد. اگر شکلی از یک محصول با کد منبع توزیع نمیشود، برنامهنویس باید بتواند با روشی که هزینهی آن بیشتر از هزینه بازتولید نشود، به کد منبع دسترسی یابد؛ برای نمونه برنامه را بدون پرداخت هزینهای از اینترنت دانلود کند.
انجام اصلاحات
مجوز نرمافزار باید امکان اصلاحات و انجام کارهای بعدی را به وجود آورد. همچنین این امکان را فراهم کند که برنامهها تحت همان شرایط برنامهی اولیه و نرمافزار اصلی تکثیر شوند.
حفظ امانت و تمامیت نویسندهی کد منبع
مجوز نرمافزار باید به صراحت امکان توزیع نرمافزار ایجاد شده از کد منبع اصلاح شده را به وجود آورد. همچنین ممکن است این مجوز نیازمند کارهای اصلاحی برای انتقال یک نام یا نسخه متفاوت از نرمافزار اصلی باشد.
عدم تبعیض علیه اشخاص
مجوز نرمافزار نباید علیه هیچ شخص یا گروهی تبعیض قائل شود.
عدم تبعیض علیه زمینههای فعالیتی
هیچ شخصی نباید به دلیل استفاده از برنامه در یک بخش خاص محدود شود. برای نمونه نباید بین فردی که از این برنامه در بخش کسبوکار استفاده میکند با شخصی که در بخش تحقیقات ژنتیکی از آن استفاده میکند، تمایز قائل شد.
توزیع مجوز
حقوق ضمیمه شده به برنامه، باید برای هر کسی که این برنامه به دست او رسیده کاربرد داشته باشد، بدون اینکه نیاز باشد مجوزی اضافی به اجرا درآید.
مجوز نباید مختص یک کالای خاص باشد
حقوق ضمیمه شده به برنامه نباید وابسته به برنامهای باشد که جزئی از یک توزیع نرمافزاری خاص است. اگر برنامه از آن شبکهی توزیع خارج شده باشد و طبق شرایط مجوز برنامه مورد استفاده قرار بگیرد، تمام افرادی که برنامه به آنها بازتوزیع شده، باید از حقوق یکسان برخوردار باشند.
مجوز نباید نرمافزار دیگری را محدود کند
مجوز نرمافزار نباید برای نرمافزار دیگری که همراه با نرمافزار مجوزدار توزیع شده، محدودیت ایجاد کند.
مجوز باید در برابر تکنولوژی خنثی باشد
هیچ یک از مفاد مجوز نباید مبتنی بر هیچ تکنولوژی واحد یا شیوهی ارتباطی باشد.
معایب و مزایای استفاده از نرم افزار متن باز
گزارشی از موسسه تحقیقاتی Standish Group نشان میدهد که استفاده از مدلهای نرمافزار متن باز، سالانه به صرفهجویی حدود ۶۰ میلیارد دلاری برای مصرفکنندگان منجر میشود.
اما در حالی که بسیاری از کسبوکارها و سازمانهای دولتی اکنون از انواع نرمافزارهای متن باز مانند Linux استفاده میکنند، مشخص است که مزیت این نرمافزارها صرفا به «قیمت پایین» آنها محدود نیست.
اگر اینگونه بود، شرکتهایی که طی رکود بزرگ اقتصادی اخیر این نرمافزار را در اختیار داشتند، به محض آغاز روند بهبود شرایط اقتصادی، به نرمافزارهای گرانقیمت اختصاصی روی میآوردند.
نرمافزارهای متن باز مزایای متعدد دیگری برای کسبوکارها دارند که برخی از آنها با ارزشتر از قیمت پایین این نرمافزارها است. با این حال، کارشناسان و محققان این حوزه، معایبی را نیز برای آنها شناختهاند که در ادامه به ذکر برخی موارد میپردازیم:
مزایای استفاده از نرم افزارهای متن باز
یکی از مهمترین مزایای استفاده از نرمافزار متن باز، کمک به کسبوکارها برای نفوذ بیشتر در بازار است. شرکتهایی که از نرمافزارهای متن باز استفاده میکنند، میتوانند یک استاندارد صنعتی ایجاد کرده و به مزیت رقابتی دست یابند.
همچنین وفاداری به تولیدکنندگان این نرمافزارها، به دلیل احساس مالکیت آنها در مورد محصول نهایی، حفظ میشود. به علاوه برای انواع نرمافزارهای متن باز هزینههای بازاریابی و خدمات لجستیکی کمتری صرف میشود و به شرکتها کمک میکند همواره در برابر پیشرفتهای تکنولوژی آگاه و بهروز باشند.
این نرمافزارها ابزارهای مناسبی برای ارتقاء وجهه و محصولات بازرگانی شرکتها محسوب میشوند. از دیگر مزایای آنها ایجاد پتانسیلی برای استفاده از تکنولوژی انعطافپذیرتر و نوآوری سریعتر است.
نرمافزار متن باز انعطافپذیر است چون سیستمهای مدولار این امکان را برای برنامهنویسها ایجاد میکنند که مثلا تواناییهای جدید را به برنامه بیفزایند. این نرمافزار همچنین نوآورانه است. چون برنامههای متن باز حاصل همکاری میان تعداد زیادی از برنامهنویسان مختلف است و ترکیب چشماندازهای گوناگون، اهداف شرکتی و شخصی نوآوری را سرعت میبخشد.
اعتبار این نرمافزارها از آنجایی است که هزاران برنامهنویس مستقل میتوانند اشکالات نرمافزار را تست و برطرف کنند. در نهایت، نرمافزارهای آزاد میتوانند همراستا با نیازمندیهای صرف فنی ایجاد شوند و نیاز به در نظر گرفتن فشارهای تجاری را که اغلب کیفیت نرمافزارها را کاهش میدهند، ندارند.
این فشارها باعث میشود تولیدکنندگان نرمافزارهای قدیمی به جای اینکه به ملزومات امنیتی توجه کنند، توجه بیشتری به نیازهای مشتری داشته باشند، چون نیازهای امنیتی اغلب از دید مشتری پنهان است.
معایب نرمافزارهای متن باز
گاهی اوقات گفته میشود که فرآیند توسعه متن باز ممکن است به خوبی تعریف نشود و مراحل فرآیند توسعه، مانند تست کردن سیستم و مستندسازی آن ممکن است نادیده گرفته شود. به هر حال، این مساله فقط در رابطه با پروژههای کوچک صدق میکند.
به علاوه، برخی از نرمافزارهای معرفیشده متن باز به قدری ناموفق بودهاند که کارشناسان و محققان نرمافزار هنوز نسبت به توانایی نرمافزارهای متن باز برای تولید سیستمهای کیفی مجاب نشدهاند. مهمترین مشکلات این نرمافزارها را فرآیند مبهم، تاخیر در عیبیابی و عدم وجود سند تجربی دانستهاند.
همچنین طراحی یک مدل کسبوکار تجاری بدون عیب و نقص طبق الگوی متن باز، کار مشکلی است. از نظر امنیتی نیز، نرمافزارهای متن باز در مقایسه با دیگر نرمافزارها، ممکن است به هکران اجازه دهند در مورد ضعفها یا روزنههای برنامه راحتتر اطلاعات به دست آورند.
منابع:
۱) opensource
۲) en. wikipedia
۳) pcpro