باز فکر کن مثل Open Source

ما ایرانی ها یک مثالی داریم که میگیم : همه چیز را همگان دانند.دقیقا این همون جواب سوال « چرا Open Source؟»بگذارید مثل روند همیشگمون قبل از ادامه اول چند اصطلاح ریز و درشت رو بیان کنیم.Open Source : متن‌بازاگر خیلی ساده بخواهم بگویم، متن‌باز بودن یعنی بتوانیم به هرآنچیز که داخل یک نرم‌افزار باشد دسترسی داشته باشیم، بتوانیم ویرایش کنیم و یا از آن نسخه‌ای خاص برای خودمان داشته باشیم.هرچند ریشه اصلی متن‌باز بودن در برنامه نویسی است، اما امروزه این واژه در جاهای دیگری نیز به چشم میخورد. میخواهد طرح یک پوستر باشد، متن کتابی و یا مقاله ایی علمی. تمام اینها میتوانند به صورت متن‌باز در دست عموم قرار بگیرد.Open source از کجا آمد؟در آن زمان که کامپیوتر ها دستگاه هایی غولپیکر و ناعاقلی بودند. مهندسان، برنامه نویسان و توسعه دهندگان برای یادگیری از یکدیگر و فهم بهتر این موجودات و همچنین تکمیل محسبات اطلاعاتشان را به اشتراک گذاشتند.در میان دهه ها ۷۰ تا ۸۰ میلادی بود که اصطلاح Open-Source به میان آمد. تا مدت زیادی این روند ادامه داشت که در سال ۱۹۹۷ آقای اریک ریموند مقاله ای با نام The Cathedral and the Bazaar نوشت که بعدها در سال ۱۹۹۹ این مقاله تبدیل به یک کتاب شد و در اختیار عموم قرار گرفت.این کتاب از تجربه های شخصی آقای ریموند بر پایه مشاهداتش بر هسته لینوکس و مدیریت پروژه متن‌باز نوشته شده بود. آقای ریموند در این کتاب با دیدی وسیع، دو سبک نرم افزار های متن‌باز و نرم افزار های تجاری آن دوران را با یکدیگر مقایسه کرد. اینجا بود که عموم مردم بصورت واضح با Open-Source آشنا شدند.کمتر از یکسال بعد این مقاله چنان رشد چشمگیری داشت که باعث ایجاد یک انگیزه قوی در شرکت ارتباطات Netscape شد تا کدهای نرم افزار محبوب خود را با همین اسم بصورت متن‌باز در بیاورد. لازم به ذکر است که همین کدها بودند تا باعث بوجود آمدن نرم افزار هایی مثل SeaMonkey ، Mozilla Firefox ، Thunderbird و KompoZer شد.جنگ،جنگ تا قیامتدر حالی که Open source با قدرت داشت پیش میرفت و عموم را ترغیب میکرد تا راه او را پیش بگیرند، شرکت های تجاری و فروشندگان نرم افزار خود را در خطر دیدند. این موضوع به حدی جدی بود که یکی از مدیران مایکروسافت در سال ۲۰۰۱ چنین گفت: « متن‌باز یک خرابکار است. هیچ چیز بد تر از این در دنیای نرم افزار نخواهد بود...».اما این حرف به نظر شخصی من کاملا اشتباه است. میخواهم خودم این مورد را اصلاح کنم. متن‌باز یک قهرمان است. هیچ چیز قدرتمند تر از این در دنیای نرم افزار نخواهد بود.درست است متن‌باز نیمی از تجارت پر سود دنیای نرم‌افزاری را ویران کرده اما در دل دنیای نرم افزار یک دنیایی دیگر ساخت، دنیایی که مورد حمایت شرکت هایی نظیر google , IBM , Oracle قرار گرفت و این شرکت ها تنها مشتی از خروارْ شرکت هایی هستند که متن‌باز را حمایت کردند.همین حامیان بودند که باعث ایجاد یک تغییر در دنیای نرم افزار شدند و طرفداران نرم‌افزار های تجاری و فروشندگان نرم افزار را به عقب نشینی وا داشتند.FOSSشاید بیشتر ما در یک اشتباه بزرگ توافق نظر داشته باشیم . ‌Open source باید رایگان باشد !با رعایت ادب و لبخندی بر لب باید بگویم خیر این مسئله اصلا درست نیست.سوال: خب پس چرا بیشتر نرم افزار های متن‌باز رایگان است؟در جواب این سوال باید واژه FOSS را برای شما شرح دهم. FOSS سرواژه کلمه Free Open Source Software است و به معنی " نرم افزار آزاد متن‌بار" است. در حقیقت ما از این نرم افزار ها استفاده میکنیم و به آنها نرم افزار های Open source میگوییم. هرچند اشتباه نمی کنیم اما مسیر را هم کامل نمیرویم.سوال: پس تمام نرم افزار های رایگان متن‌باز هستند؟باز هم با همان ادب و لبخند سوال پیش میگویم خیر.ما در دنیای کامپیوتر چیزی هم داریم به اسم Free-ware که یک شکل کلی تر از نرم افزار های رایگان هستند. این دسته نرم افزار ها میتوانند هم متن‌باز باشند و هم خیر.یک قدم نزدیک تر به Open sourceاین که ما به یکسری کد نرم افزار دسترسی داشته باشیم قطعاً به معنی متن‌باز بودن آن نیست. هرچند برای تعریف Open source به همین مسئله اکتفا گفتیم. اما یک نرم افزار باید از ۱۰ خان عبور کند تا تبدیل به یک نرم افزار متن‌باز شود.۱. توزیع مجدد آزاد.نرم‌افزار باید بدون نیاز به حق امتیاز یا هر گونه پرداختی برای فروش، امکان توزیع به صورت آزاد را داشته باشد.۲. کد منبع.کد نرم‌افزار باید شامل نرم‌افزار باشد و اجازه توزیع کد نرم‌افزار داده بشود (برای مثال از یک صفحه وب قابل دانلود باشد).۳. کار مشتق‌شده.اعمال تغییرات و کارهای بعدی روی نرم‌افزار امکان‌پذیر باشد و این نرم‌افزار جدید را بتوان تحت همان شرایط نرم‌افزار اولیه و اصلی تکثیر کرد.۴. نگهداری تمامیت کد منبع نویسنده اصلی نرم‌افزار.مجوز نرم‌افزار ممکن است اجازه تغییر در اصل متن برنامه را به کاربران ندهد و تنها اجازهٔ افزودن وصله‌های نرم‌افزاری و کامپایل مجدد برنامه را بدهد. در این شرایط توسعه دهندگان تنها می‌توانند توزیع‌هایی به کمک وصله‌های نرم‌افزاری خود ایجاد نمایند. مجوز نرم‌افزاری می‌باید صراحتاً ایجاد توزیع تازه با تغییر مجدد در کد اصلی را محدود نماید. نرم‌افزار توزیع شده تحت این مجوز می‌باید حتمن نام نسخه‌ای تازه را داشته باشد.۵. بین افراد و گروه‌ها تبعیضی گذاشته نشود.اجازه‌نامه نباید بین افراد یا گروه‌ها تبعیضی بگذارد.۶. هیچ تبعیضی در نوع استفاده از نرم‌افزار وجود نداشته باشد.هیچ گونه تبعیض و تمایزی بین هر فعالیتی که در راستای نرم‌افزار انجام می‌گیرد، وجود نداشته باشد. برای مثال نرم‌افزاری نباید بین استفادهٔ تجاری یا تحقیقاتی تبعیض قائل شود.۷. توزیع اجازه‌نامه.مجوز باید به هرکسی که یک کپی از نرم‌افزار را دریافت می‌کند نیز اختصاص یابد، بدون این‌که آن‌ها نیاز به توافق و هماهنگی با اجازه‌نامهٔ دیگری داشته باشند.۸. اجازه‌نامه نباید مخصوص یک محصول باشد.حقوق داده شده در مجوز یک نرم‌افزار نباید وابسته به این باشد که بخشی از بسته بزرگتری است. در صورتی که نرم‌افزار از محصول دریافت شده نیز جدا شود، باید همان حقوق را در استفاده، توزیع و ویرایش، به دریافت کننده نرم‌افزار را اعطا کند. تمام کسانی که آن نرم‌افزار را، که قبلاً به عنوان بخشی از محصول بزرگتری بوده است، دریافت یا توزیع مجدد می‌کنند باید تمامی حقوق را مانند محصول اصلی داشته باشند.۹. اجازه‌نامه نباید نرم‌افزارهای دیگر را محدود کند.شرایط تعریف شده در مجوز نباید توزیع نرم‌افزار را درکنار نرم‌افزارها با مجوزهای دیگر محدود کند. برای نمونه نمی‌تواند تعیین کند که تمامی نرم‌افزارهای ارائه شده در لوح فشرده ارائه شده باید متن باز باشند.۱۰. اجازه‌نامه باید از نظر تکنولوژی بی‌طرف باشد.اجازه‌نامه نباید مختص یک تکنولوژی خاص باشد.منبع این ده مورد وب سایت ویکی‌پدیا است.امنیت Open source !شاید باور کردنش سخت باشد، اما امنیت نرم افزار های متن‌باز خیلی بیشتر از نرم افزار های دیگر است. چرا که چیزی برای پنهان کردن ندارند. در حقیقت قدرت پنهان کردن ندارند.هیچ وقت یک هکر،برنامه مخرب خود را بصورت متن باز قرار نمیدهد. چرا که با این کار شما و یا هر شخص دیگری که قدرت خواندن کد را داشته باشید نه تنها متوجه مخرب بودن آن می شوید بلکه ممکن است حفره امنیتیی را برای شما روشن کند که شما از آن بی خبر بودید.اما این امنیت فقط برای کاربر نیست. خیلی از نرم افزار های انحصاری برای در امان ماندن نرم افزار های خود به هزار و یک روش آن را رمز گذاری میکنند تا مبادا شما بصورت رایگان و یا با هزینه کمتر به آن دسترسی پیدا کنید. اما افرادی هستند که سر شوخی را با آنها باز میکنند و این قفل و بست ها را دور میزنند و نرم افزار را یا بصورت رایگان در اختیار عموم قرار میدهند و یا با هزینه کمتر آن را میفروشند. اما این روش چندان برای نرم افزار های متن‌باز جوابگو نیست، مخصوصا نرم افزار های FOSS . تصور کنید وارد وب سایتی میشوید و میگوید به من ۱ دلار بدهید تا گوگل کروم را به شما بدهم! آیا اینکار را میکنید؟مزایا Open sourceدسترسی به نرم افزار های متن‌باز خیلی راحت تر است. کافیست شما به وب سایت رسمی نرم افزار سر بزنید و آن را از سرور بی زبانش طلب کنید و یا وارد مخازن کد هایش شوید و آن ها را برای خود به اصطلاح کامپایل کنید.موضوع بعدی سمت دیگر است. اگر نرم افزار متن بازی معرفی شود، مشکلات و باگ هایش خیلی سریع تر، هم دیده میشود و هم بر طرف میشود. تصور کنید نرم افزار فوتوشاپ عکس بخصوصی را نتواند لود کند ( بعید است... گفتم تصور کنید) خب شما باید به کمپانی ادوبی پیامی بدید و منتظر بمانید تا با بروزرسانی جدید این مشکل بر طرف شود. اما این موضوع در دنیای متن‌باز نیست. شما میتوانید خود،مشکل را برطرف کنید و یا با عنوانش در گپ های مخصوص راهکاری از دوستان خود جویا شوید. به همین راحتی.موضوع دیگر اطمینان است. من شخصا به نرم افزاری که هزاران برنامه نویس آن را زیر نظر گرفتند بیشتر اعتماد میکنم تا نرم افزاری که گروهی کوچک آن را زیر نظر میگیرند.طرف دیگر ، نرم افزار های متن‌باز کاملا قابل انعطاف هستند. نه تنها به دلیل اینکه شما میتوانید کد ها را بخوانید و قسمت‌هایی که میخواهید را به آن اضافه کنید بلکه بیشتر آنها ماژولار هستند. به این معنی که یا شما و یا افراد دیگر قسمت هایی را که دوست داشتید این نرم افزار داشته باشد برای خود نوشته ایید و در یک پک جداگانه در اختیار عموم قرار دادید تا باقی مردم نیز از آن بهرمند شوند.یک بازی برد بردتوسعه دهندگان و برنامه نویسان با فداکاری بسیار فرزند خود را که چند شبانه روز برای بزرگ کردنش زحمت کشیدند را در اختیار عموم قرار میدهند. این مسئله نه تنها برای کاربران خوب است بلکه کمک بزرگی برای توسعه بیشتر و نوآوری میشود. همین مسئله است که باعث میشود یک برنامه نویس برای ساخت نرم‌افزار جدیدش دوباره نرود و چرخ را از ابتدا اختراع کند!از طرف دیگر همانطور که پیش تر گفته بودم، بعد از انتشار نرم‌افزار تعداد بیشتری برنامه نویس و توسعه دهنده بر روی نرم افزار کار میکنند که خود این هم باعث تسریع در انتشار نسخه بعد میشود و هم باعث بر طرف شدن کدهای اشتباه و باگ ها میشود.سخن پایانیبعنوان یک طرفدار از Open source هر چه میدانستم را نوشتم و بعنوان یک نویسنده سعی کردم آن را روان عنوان کنم. اما خیلی از مطالب را از قلم انداختم. چرا که از حوصله مقاله خارج بود و سعی میکنم در مقاله های بیشتر تک تک موارد جا مانده را برای شما به قلم بیاورم.بعنوان کلام پایانی دوست دارم نقل قولی از آقای لینوس توروالدز داشته باشم که با Open source شوخی کرده:من آدم تنبلی هستم، برای همین از متن‌باز استفاده میکنم تا دیگران جای من کد بزنند :)از اینکه تا اینجا با من همراه بودید از شما سپاسگذارم.پست ها و مقاله های بیشتر من را میتوانید هم در ویرگول و هم در وب سایت آموزشی اندروید‌آرنا دنبال کنید.منبعبا نظر دادن هم من رو برای بهتر نوشتن کمک میکنید و هم به من انگیزه میدید که بیشتر بنویسم