عموماً وقتی که با مردم در مورد نرمافزارهای آزاد صحبت میکنیم، نخستین ابهامی که براشون پیش میآد اینه که خب این وسط تکلیف توسعهدهندهی برنامه چی میشه؟ یعنی یه نفر بیاد و وقت و سرمایهاش رو بذاره و یه برنامهای بنویسه، اون وقت همه بیان و از اون برنامه استفاده کنن بدون این که هیچ سودی نصیب توسعهدهنده بشه؟ خب اینجوری که دیگه کسی برای نوشتن برنامههای جدید رغبت پیدا نمیکنه! و بسیاری از این مدل سؤالهای فراوون که بعضاً حتا گفته هم نمیشن و فقط باعث ایجاد یه حس بیاعتمادی نسبت به حرفهای ما میشه.
تا اینجای کار البته مشکلی نیست و اگه مبلّغ ما جواب این سؤالها رو بدونه، میتونه در خلال معرفیاش این مفاهیم رو به صورتی بگنجونه که دیگه این قبیل سؤالات برای فرد موردنظر پیش نیاد. ولی مشکل اینجاست که اغلب دوستانی که به این امر شریف میپردازند خودشون هم پاسخی برای این سؤالات در ذهنشون ندارند و این فاجعهست. برای همین تصمیم گرفتم در مورد مدل توسعهی نرمافزار آزاد توضیحاتی ارائه کنم.
اصولاً پرسیده شدن این سؤالات از اونجا ناشی میشه که افراد نسبت به نرمافزار آزاد همون دیدی رو دارند که نسبت به نرمافزارهای تجاری دارند. حتماً همهی ما دیدیم افرادی که تازه از ویندوز مهاجرت کردند وقتی به مشکلی در سیستم گنو بر میخورند، به دنبال راهحلهای ویندوزی میگردند. اگه این افراد در تالارهای گفتوگو یا جاهای دیگه به خوبی راهنمایی بشن کمکم تفکر ویندوزی رو کنار میگذارند و روش حل مشکلاتشون رو یاد میگیرند؛ وگرنه بعد از مدتی که میبینند نه، این جداً با ویندوز فرق داره، دوباره به همون سمت ویندوز برمیگردند. این حالت دقیقاً در مورد توسعهی نرمافزارهای آزاد و تجاری هم صدق میکنه. برای فهم بهتر این موضوع خوبه که اوّل با مدل توسعهی نرمافزارهای تجاری آشنا بشیم.
در نرمافزارهای تجاری ما یک شرکت بزرگ داریم که صاحب سرمایه هست. این شرکت یه سری توسعهدهنده استخدام میکنه که نقش کارگر رو براش دارند. یک گروه تحقق و توسعه هم داره که میبینند چهطور میشه نرمافزاری طرّاحی کرد که بیشترین سود رو برای شرکت داشته باشه (و البته ضعفهایی داشته باشه که رفع شدن اونها در نسخههای بعدی باعث ترقیب مردم به خرید نسخهی جدید بشه). بعد از این که طراحی نرمافزار مزبور مورد تأیید قرار گرفت، توسعهی اون به توسعهدهندهها تحمیل میشه و توسعهدهندهی نرمافزاری – که باید حرف اول رو در طراحی نرمافزار بزنه – دیگه هیچ دخل و تصرفی در مدل توسعه نداره. از اون طرف شرکت یک تیم تبلیغاتی داره که علاوه بر بزرگنمایی امکانات و قابلیتهایی که نیاز کاربران رو برآورده میکنه، این وظیفه رو داره که نیازهای کاذب جدیدی در بین کاربران ایجاد کنه که جواب اونها در نرمافزار تولید اون شرکت داده شده. در نهایت هم همهی این پروسه تقریباً نادیده گرفته میشه و محصول نهایی به اسم اون شرکت صاحب سرمایه تموم میشه. در این زنجیره توسعهدهندهها بیارزشترین عضو تلقی خواهند شد. اگه بخوایم گواه مشهودی بر این ادّعا بیاریم کافیه بپرسیم که کدوم یکی از ما اسم توسعهدهندههای ویندوز رو میدونه و در مقابل، چند نفر بیل گیتس رو میشناسند! حتا شرکتهای انحصارطلب دیگری هم هستند که پروسه رو عیناً برای سختافزار هم پیادهسازی کردند. اینجا هم چه خوبه که نگاهی دوباره به آیفون بیندازیم و مراحل گفته شده رو این بار در مورد سختافزار مشاهده کنیم
اما سؤال اینه که پس مدل توسعهی نرمافزار آزاد چهطوره؟
مدل توسعهی نرمافزار آزاد به جای تکیه بر سود، بر مبنای نیاز شکل گرفته. به این صورت که تا نیازی از سوی جامعه احساس نشه، نرمافزاری هم شکل نمیگیره. بنابراین ایجاد نیازهای کاذب جایی در این میان نداره. این روند رو میشه با سناریوی زیر تشریح کرد:
شما یک نیاز نرمافزاری احساس میکنید که قبلاً نرمافزاری برای اون نبوده یا نرمافزارهای موجود نیاز شما رو به طور کامل برطرف نمیکنند. اگه شما خودتون توسعهدهنده باشید که خیلی عالیه و نرمافزار مورد نیاز خودتون رو توسعه خواهید داد. ولی اگه نباشید یه توسعهدهنده پیدا میکنید که در ازای گرفتن حقالزّحمه، برنامهی مورد نیاز شما رو توسعه بده. بعد از توسعهی نرمافزار موردنظر ، اون رو با افراد دیگری هم که ممکن بوده نیازی مشابه نیاز شما رو احساس کنن به اشتراک میذارید که این پروسه دوباره تکرار نشه یا حداقل نفر بعدیای که نیاز مشابهی احساس کرد، دوباره چرخ رو از اول اختراع نکنه.
همونطور که مشاهده میشه، در هر دو صورت در مدل توسعهی نرمافزار آزاد حقوق توسعهدهنده حفظ میشه. در حالت نخست با رفع نیازش و در حالت دوم هم با حقالزّحمهای که برای توسعهی برنامه میگیره. در ضمن در این حالت دست توسعهدهنده در قبول یا عدم قبول توسعهی نرمافزار بازه و هرگز مجبور به انجام کاری که دستورش از بالا اومده نخواهد شد. همچنین حقوق کارفرما هم حفظ میشه، چون مبلغ اضافیای بابت امکاناتی که نیازی به اونها نداره نمیپردازه و دستش در انتخاب توسعهدهنده و مدل توسعه بازه و میتونه از مشورت توسعهدهندهها که در این کار تخصّص دارند استفاده کنه. در کنار اینها همونطور که گفته شد نفع این کار هم به جامعه میرسه و بقیهی مردم خواهند تونست از نتیجهی کار اونها استفاده کنند. پس نفر بعدیای که نیاز بیشتری نسبت به نفر نخست داشته باشه، به جای این که دوباره نرمافزاری رو از ابتدا توسعه بده، روی نرمافزار قبلی کار میکنه. این کار باعث میشه که به جای تولید صدها نرمافزار سطح پایین (مثل هزاران نرمافزار حسابداری که این روزها در بازار نرمافزاری کشور مشاهده میکنیم)، تعداد کمتری نرمافزار داشته باشیم که از امکانات و قدرت بسیار بالایی برخوردارند.
پس همونطور که در بالا مشاهده شد گسترش نرمافزارهای آزاد نهتنها به نفع مصرف کننده، بلکه بیشتر از اون به سود توسعهدهنده و حتا کارفرما هست.