معمولاً وقتي نام اپن سورس به ميان مي‌آيد، فوراً ذهن مخاطب ياد لينوكس و صنايع نرم‌افزاري حول و حوش آن مي‌افتد، اما در اين مقاله داستان يك پروژه اپن‌سورسي در دنياي خارج از لينوكس و حاميان بنياد نرم‌افزار آزاد را خواهيد خواهند. اين ماجرا به چگونگي تولد و بلوغ پروژه ساخت نرم‌افزار پورتال‌سازي DotNetNuke بر اساس فناوريASP.NET مربوط است. شرح اين قصه اپن‌سورسي را چندي پيش در كتاب DotNetNuke ASP.NET Portals به قلم شاون واكر، مبتكر و مدير اصلي پروژه خواندم و آن را بسيار آموزنده و جالب يافتم. خواننده كتاب با مطالعه اين قصه با چالش‌هاي واقعي يك پروژه اپن‌سورسي و مزايا و معايب آن آشنا مي‌شود. در اين كتاب ارزشمند، مبتكر DotNetNuke يك فصل كامل پانزده صفحه‌اي را به شرح اين داستان اختصاص داده ‌است. در اينجا بخش نخست خلاصه‌اي از اين داستان از نظرتان خواهد گذشت. مطالعه اين ماجرا را به همه كساني كه قصد شروع و هدايت يك پروژه اپن‌سورس دارند، پيشنهاد مي‌كنم.


قصه‌اي براي چالشگران‌

آيا قصد شروع يك پروژه اپن سورس را داريد؟ آيا در ميانه راه مديريت يك پروژه منبع باز هستيد؟ آيا چالش‌هاي عملي دنبال‌كردن پروژه‌هايي از اين دست را مي‌دانيد؟ آيا درباره مشكلات كار تيمي چيزي شنيده‌ايد؟ چگونه مي‌توان در اجراي يك پروژه اپن سورس به موفقيت دست يافت؟

بعد از خواندن اين داستان واقعي، احتمالاً پاسخ بسياري از اين پرسش‌ها را خواهيد يافت. البته اين داستان مربوط به يك پروژه بزرگ نيست، اما ماهيت پروژه‌هايي از اين دست به گونه‌اي است كه مي‌توان بسياري از درس‌هاي آن را به فعاليت‌هاي بزرگ‌تر نيز تعميم داد. گذر از فراز و نشيب‌هاي مديريت يك پروژهِ اپن سورس، تجربه گرانبهايي است كه جز با عمل به دست نمي‌آيد.

در اين داستان كه در دو قسمت از نظرتان خواهد گذشت، با اغلب چالش‌هاي عملي يك پروژه اپن‌سورسي، از جمله مسئله انتخاب يك مدل مجوزدهي (Licensing Model) براي توسعه آتي نرم‌افزار آشنا خواهيد شد. در قسمت اول، شرح چگونگي پيدايش اين پروژه نرم‌افزاري و تبديل آن به يك روند اپن‌سورس را خواهيد خواند.

تولد يك پورتال‌

چنانكه مي‌دانيد، نرم‌افزار پورتال‌سازي دات‌نت نيوك، يكي از پيشرفته‌ترين و موفق‌ترين سيستم‌هاي ساخت پورتال و انجمن آنلاين بر اساس فناوري ASP.NET مايكروسافت است. تاكنون هزاران نفر از سراسر دنيا اين نرم‌افزار را به رايگان دانلود كرده‌اند و به كمك آن براي سازمان، گروه يا شركت خود و ديگران پورتال ساخته‌اند.

شاون واكر (Shaun Walker)، مبتكر پروژه DotNetNuke چنانكه در مقدمه كتاب DotNetNuke ASP.NET Portals تعريف نموده، در ابتدا اصلاً قصد ورود به يك پروژه اپن سورسي را نداشته است، اما نياز او را وادار كرد كه به اين سمت برود.

او زماني به فكر توليد يك نرم‌افزار پورتال‌سازي مي‌افتاد كه وضعيت شركت نرم‌افزاري كه در آن مشغول به كار بود، به دليل رقابت سنگين صنعت IT چين و هند با ايالات متحده دچار بحران مي‌شود و ناگزير دست به تجديد ساختار مي‌زند و در اين حين زيربناي برخي محصولات و توليدات خود را از فناوري مايكروسافت به فناوري جاوا تغيير مي‌دهد.

همزمان زرنگي شركت‌هاي چيني و هندي‌ در بهره‌برداري از رهيافت برون‌سپاري (Outsourcing) موجب مي‌شود به تدريج تعداد قابل ملاحظه‌اي از مشتريان و سازمان‌هاي آمريكايي هنگام تصميم‌گيري براي خريد يك نرم‌افزار يا راهكار، گزينه‌هاي چيني را به دليل ارزان‌تر بودن نسبت به محصولات و خدمات شركت‌هاي بومي خود، ترجيح دهند.

لذا تعدادي از كاركنان شركت به منظور كاستن از هزينه‌ها بركنار مي‌شوند و سمت شاون واكر از برنامه‌نويس به مدير پروژه تغيير مي‌يابد؛ زيرا دانش او در زمينه برنامه‌نويسي روي پلتفرم مايكروسافت ديگر كاربردي نمي‌يابد. اين اتفاقات درست مصادف مي‌شود با معرفي و عرضه فناوري دات‌نت از سوي مايكروسافت و واكر كه طي آن سال‌ها شاهد برتري فناوري جاوا بر پلتفرم مايكروسافت‌ - به دليل بهره‌گيري از معماري شيء گرا و عدم وابستگي به سيستم‌عامل- بوده است، از معرفي يك فناوري كاملاً شي‌ءگرا توسط مايكروسافت بسيار خوشحال مي‌شود و تصميم مي‌گيرد آن را بياموزد.

واكر خيلي زود متوجه مي‌شود كه مايكروسافت براي تبليغ اين فناوري جديد، سورس چند پروژه نرم‌افزاري كامل و جالب، از جمله مديريت محتواي سايت (CMS) با استفاده از ASP.NET را به رايگان در اختيار عموم قرارداده است و كنجكاو مي‌شود.

براي واكر خيلي جالب بود كه مايكروسافت در مجوز بهره‌برداري از سورس‌ها براي كاربر نهايي EULA يا End-User License Agreement به برنامه‌نويسان اجازه مي‌دهد به طور نامحدود از آن‌ها استفاده  كنند.

پروژه‌اي كه در اين ميان براي واكر جالب مي‌نمايد، IBuySpy است كه بعداً واكر بر اساس آن، ‌DotNetNuke را مي‌سازد (شكل 1).

او با خود فكر مي‌كند كه شايد بتواند تغييراتي در اين سورس بدهد، آن را بهتر كند و به عنوان محصول خودش به فروش برساند (چون مجوز مذكور چنين اجازه‌اي به او مي‌داد).

با اين حال سير حوادث او را به سمتي مي‌برد كه متوجه مي‌شود هيچ راهي براي نجات پروژه DotNetNuke جز اپن‌سورس كردن آن وجود ندارد و تنها آن زمان است كه واكر متوجه مي‌شود كه اصولاً يكي از دلايلي كه بعضي از برنامه‌نويسان را به سمت اپن سورس مي‌كشاند، عدم امكان تحقق آرمان‌هايشان از طرق ديگر است.

بنابراين به زعم او خيلي از پروژه‌هاي اپن سورس ابتدا با هدف كسب سود و توليد نرم‌افزار تجاري شروع شده‌اند، اما در ميانه راه متوجه مي‌شوند كه هدف و كارايي واقعي نرم‌افزار آن‌ها شناخته نخواهد شد؛ مگر اين‌كه راه اپن‌سورس را در پيش بگيرند.

پاتوق آنلاين‌

درست زماني كه واكر به سمت IBuySpy مي‌رود، مايكروسافت سايت معروف www.asp.net را براي پشتيباني از برنامه‌نويسان ‌ASP.NET برپا مي‌كند و خيلي زود انجمن‌هاي آنلاين اين سايت به پاتوق طراحان و برنامه‌نويسان وب تبديل مي‌شود (شكل 2).

در اين سايت انجمني هم به IBuySpy اختصاص يافته بود كه در آن علاقمندان اين پروژه و كساني كه عملاً استفاده از آن را شروع كرده بودند، دور هم جمع مي‌شدند تا مشكلاتشان را با هم در ميان بگذارند و قابليت‌هاي نرم‌افزار را توسعه دهند.

شاون واكر، يكي از فعال‌ترين كاربران اين محفل بود. از شرح نوشته شده در كتاب چنين برمي‌آيد كه واكر از طريق پياده‌سازي IbuySpy براي مشتريان طراحي سايت، به ويژه كساني كه واكر با عنوان «سايت‌هاي ورزشي آماتوري» از آن‌ها ياد مي‌كند، به كسب درآمد مي‌پرداخته و براي او بسيار مهم بوده ‌است كه اين سيستم را به نرم‌افزاري كارامد تبديل كند. طوري كه به بهترين شكل نيازهاي مشتريانش را پوشش دهد.

يكي از قابليت‌هايي كه IBuySpy را به نرم‌افزاري پرطرفدار تبديل كرد، توانايي بالقوه آن در مديريت همزمان بيش از يك پورتال بود، اما اين قابليت به خوبي پياده‌سازي و تكميل نشده بود. به نظر مي‌رسيد شركت مايكروسافت و ورتيگو كه مشتركاً اين محصول را ساخته بودند، چنين قابليتي را براي توسعه آتي محصول پيش‌بيني كرده بودند، اما فرصت كافي براي تكميل آن پيدا نكرده بودند يا اساساً قصد چنين كاري را نداشتند.

اگر اين قابليت تكميل مي‌شد، يك شركت ميزباني وب مي‌توانست با يك ‌بار نصب اين سيستم روي سرور خود، به تعداد نامحدودي از مشتريانش سرويس دهد. اين نرم‌افزار مي‌توانست صرفاً بر اساس نام دامين سايت مشتري، تمام محتويات و تنظيمات خاص آن سايت را از ديتابيس مركزي بارگذاري كند و نمايش دهد.

بنابراين شاون واكر يك زمينه خيلي خوب براي توسعه سيستم پيدا كرد و آن را مبناي كار خود قرار داد. چنين قابليتي سبب شد اين نرم افزار خيلي زود به عنوان برنامه‌اي منبع باز محبوبيت پيدا كند. واكر به همراه برنامه‌نويس ديگري كه در پايگاه asp.net با وي آشنا شده بود، حدود يك سال روي پروژه كار كردند و قابليت‌ها و امكانات آن را توسعه دادند.

انگيزه اوليه آنان اين بود كه اين سيستم را به محصولي قابل ارايه به بازار تبديل كنند، اما از آنجا كه هر دو نفر فقط مي‌توانستند در ساعات فراغت از شغل اصلي خود روي پروژه كار كنند، خيلي زود متوجه شدند كه يا بايد شغل خود را كنار بگذارند و روي بازاريابي اين محصول كار كنند، كه در اين صورت به منابع و پشتيباني مالي احتياج داشتند، يا اين‌كه با اين وقت محدود خود، از ايده تبديل نرم‌افزار به يك بسته تجاري بگذرند و راه ديگري براي توسعه آن پيدا كنند. سرانجام آن دو تصميم گرفتند روش‌هاي غير تجاري را انتخاب كنند تا دست كم حاصل يك سال زحمات خود را نجات دهند.

با اين حال، اين تنها مشكلي نبود كه با آن روبه‌رو شدند. در حقيقت IbuySpy يك پروژه ايستا بود كه يك بار براي هميشه توليد شده بود و كسي (نه مايكروسافت، نه ورتيگو) مسئوليت توسعه و پشتيباني آن‌ را نپذيرفته بود. بنابراين تمام تلاش‌هايي كه در راستاي توسعه اين محصول در محفل آنلاين كاربرانش صورت گرفته بود، بدون مديريت و نظارت متمركز صورت گرفته بود.

هر برنامه‌نويس خلاقي يك ويرايش خاص خود از برنامه پديد آورده بود كه بعضاً در اختيار عموم هم قرار نمي‌گرفت؛ شايد با اين پيش‌فرض كه آنان نيز به نوبه خود در انديشه تبديل نسخهِ توسعه داده شده خود از IbuySpy به يك محصول تجاري بودند.

ديگراني هم كه كدهاي خود را به محفل آنلاين مي‌فرستادند، تحت يك مديريت متمركز نبودند و پروژه عملاً به بي‌نظمي مبتلا شده بود. در چنين مقطعي واكر تصميم ‌گرفت هم براي حفظ زحماتشان و هم به منظور سروسامان دادن به روند توسعه محصول يك برنامه اپن‌سورس را آغاز كند. در حالي كه او چيز زيادي درباره فلسفه اپن سورس و قواعد آن نمي‌دانست.

انتشار رسمي نرم‌افزار جديد

چنانكه واكر تعريف مي‌كند، او براي انتشار رسمي نسخه توسعه يافتهِ خود در آستانه كريسمس سال  2003 سه كار مهم و بجا انجام داد كه تأثير بسزايي در موفقيت اولين توزيع محصول جديد گذاشت: نخست اين‌كه، نام IBurSpy Workshop را براي نرم‌افزار انتخاب مي‌كند تا براي كاربران هم يادآور اين واقعيت باشد كه اين محصول نسخه جديدتري از همان برنامه محبوب IbuySpy است و هم با افزودن يك كلمه ديگر آن را از نرم‌افزار اوليه متمايز كند تا نشان‌دهنده تغييرات و اصلاحاتي باشد كه اين محصول  به خود ديده است. جالب اين‌كه، مخفف نام اين محصول، يعني IBSW به شكل زيركانه‌اي مخفف نام خود او (SW) را نيز در خود داشت!

دوم، او يك سايت جداگانه براي اين محصول برپا كرد و كاربران علاقمند به دانلود برنامه‌ را وادار ساخت تا قبل از دريافت رايگان نرم‌افزار، در سايت ثبت‌نام كنند و او بتواند بعداً از طريق ايميل انتشار اصلاحات و نسخه‌هاي جديدتر برنامه‌ را به اطلاع آنان برساند.

و سرانجام اين‌كه، او يك اطلاعيه محترمانه و بي‌تكلف در سايت asp.net گذاشت (شكل3) تا مردم را به دريافت اين برنامه دعوت كند.

اين سايت كه محل برو و بياي تعداد زيادي از طراحان وب بود، بهترين مكاني بود كه واكر مي‌توانست در آن موجوديت نرم‌افزارش را اعلام كند.

وقتي واكر از تعطيلات كريسمس برگشت و به سايت پروژه و نيز انجمن asp.net مراجعه نمود، از ميزان زياد ايميل‌هايي كه برايش رسيده بود، شگفت‌زده شد. بسياري از برنامه‌نويسان از او به خاطر انتشار اين نرم‌افزار تشكر كرده بودند و خواستار پشتيباني و توسعه آتي نرم‌افزار شده بودند.

اين استقبال گرم برنامه‌نويسان او را به اين نتيجه رساند كه انتخاب او روش درستي بوده است و اكنون دلگرم بود كه اگر حتي نتواند به تنهايي اين پروژه را ادامه دهد، دست‌كم اين جامعه كوچك از برنامه‌نويسان خودبه‌خود پروژه را جلو خواهند برد.

در عين حال نگران بود كه او لوكوموتيو قطاري را به راه انداخته است كه اكنون ديگر در مسير خود سرعت گرفته و شايد حتي لازم باشد انرژي بيشتري مصرف كند تا آن را در مسير صحيح خود كنترل و هدايت كند. به تدريج كه پروژه جلو مي‌رفت، او احساس كرد اين مسئله حتي روي زندگي زناشويي و خانوادگي او تأثير منفي گذاشته است؛ زيرا تنها مي‌توانست در اوقات فراغت خود، كه قاعدتاً بايد به زندگي خصوصيش اختصاص مي‌يافت، به مديريت پروژه بپردازد.

به عقيده واكر، مديريت و پشتيباني از كاربران يك نرم‌افزار يك موضوع اساسي در فرايند توسعه هر نرم‌افزاري است و به راستي اين كاربران گنجينه‌اي هستند كه بازخوردها و اظهارنظرهاي آن‌ها مي‌تواند نقش مهمي در ارتقاي كيفيت نسخه آتي محصول داشته باشد.

اهميت اين موضوع در نرم‌افزارهاي اپن سورس دوچندان است؛ زيرا اصولاً بخش بزرگي از تغييرات و اصلاحات در يك نرم‌افزار اپن‌سورس حاصل ديدگاه‌ها، نيازها و انتقادات كاربراني است كه هم‌اكنون مشتري آن هستند. واكر نوشته است: يك اصطلاح معروف در دنياي اپن سورس اين است كه «هيچ كاربري نبايد در بن‌بست يك زيرشاخهِ مشتق‌شده از فرايند تكامل نرم‌افزار تنها بماند.»
 
يكي از معاني اين شعار آن است كه مديريت يك پروژه اپن‌سورس بايد مراقب باشد تا اگر يك شاخه فرعي و خاص از روند عمومي توسعه نرم‌افزار مبتكرانه و جالب به نظر مي‌رسد، حمايت شود و آن ايده و تلاش خلاقانه در فرايند كلي توسعه نرم‌افزار جذب و حل گردد.

واكر سه عامل را در تحليل علت استقبال برنامه‌نويسان از پروژه اپن‌سورسي IBSW برمي‌شمارد: يكي، فقدان پشتيباني از نرم‌افزار اپن‌سورس IbuySpy از سوي مايكروسافت كه كاربران را با مشكلاتشان تنها گذاشته بود. ديگري، فراواني تعداد قابليت‌ها و امكاناتي كه در نسخه اوليه IbuySpy موجود نبود و IBSW را به جايگزين قطعي آن تبديل كرده بود. سوم، نكته‌اي بود كه واكر از آن تحت عنوان فقدان حمايت جدي مايكروسافت از برنامه‌نويسان ويژوال بيسيك دات‌نت (در دو سال نخست عرضه فناوري دات نت) نام مي‌برد.

مايكروسافت طي آن سال‌ها روي اهميت و قابليت‌هاي زبان سي شارپ خيلي مانور مي‌داد تا بر قابل رقابت بودن آن با زبان جاوا تأكيد كند و بتواند تعدادي از برنامه‌نويسان جاوا را به اين سمت بكشاند. اين استراتژي سبب شده بود حمايت مايكروسافت از برنامه‌نويسان ويژوال بيسيك تحت‌الشعاع قرار گيرد و سورس كد اغلب مثال‌هاي مايكروسافت از جنس سي‌شارپ باشد.

در چنين شرايطي ارايه يك نرم‌افزار كامل و قدرتمند براي پورتال‌سازي، آن‌هم به زبان ويژوال بيسيك دات‌نت، واقعاً موجب خوشحالي برنامه‌نويساني شده بود كه تازه از دنياي ويژوال استوديوي 6 به دنياي دات نت مهاجرت مي‌كردند. خوشبختانه در اين حين، راب هوارد، يكي از مبتكران فناوري ASP.NET و مدير سايت آن، به كمك واكر شتافت و به درخواست او، يك انجمن اختصاصي برايIBSW  ايجاد كرد تا از IbuySpy متمايز شود.

آغاز بحران‌

به زودي نگراني اوليه واكر درباره چالش‌هاي مديريت اين لوكوموتيو پرشتاب رنگ واقعيت به خود گرفت. واكر كه تمام اوقات فراغت از كار را در شبانه روز به هدايت پروژه، پاسخگويي به ايميل‌ها، پشتيباني از كاربران و توسعه و اصلاح نرم‌افزار اختصاص داده بود، احساس كرد زندگي خصوصي او به خطر افتاده است.

بنابراين زير فشار استرس رواني ناشي از مديريت 2000 كاربر ثبت شده‌ در سايت IBSW تصميم گرفت سرويس پشتيباني و بخش دانلود سايت را پولي كند و براي آن حق اشتراكي بين بيست تا سي دلار در ماه تعيين كند. او در اين انديشه بود كه با درآمد حاصل از اين اشتراك‌ها هزينه پشتيباني و توسعه پروژه را تأمين كند تا بتواند تعادلي ميان زندگي شغلي، زندگي خانوادگي و حيات IBSW ايجاد كند.

به همين منظور، يك اطلاعيه در سايت asp.net منتشر كرد و اعلام نمود از اين پس كاربراني كه مايلند نسخه‌هاي جديد را دريافت كنند يا از پشتيباني برخوردار شوند، بايد حق اشتراك بپردازند. 

او در ادامه جزئيات اين شيوه جديد را توضيح داد (شكل4).

با اين حال به مجرد اين اعلان، سيل انتقادها به سوي واكر سرازير شد. او را به دروغ‌گويي درباره اپن‌سورس‌بودن پروژه متهم كردند و اين نظريه عمومي قوت گرفت كه همه اين ماجرا فريبي بيش نبوده و واكر خواسته است از محل دريافت حق اشتراك از كاربراني كه اكنون ديگر وابسته او شده بودند، پول كلاني به جيب بزند! به اين ترتيب واكر در مقياس وسيعي به بي‌كفايتي در هدايت پروژه متهم شد.

اين جار و جنجال توجه شركت مايكروسافت را جلب كرد. به طوري كه اسكات گوتريه، يكي از طراحان فناوري ASP.NET در اين شركت نامه‌اي به واكر نوشت و به او پيشنهاد كرد با توجه به زحماتي كه براي اين پروژه كشيده‌ است، در تصميم خود تجديد نظر نمايد. به نظر مي‌رسيد مايكروسافت از اهميت حيات اين پروژه آگاه است و مايل نيست به خاطر چنين اشتباهي، پروژه متلاشي شود.

در اين مقطع يكي از دوستان واكر يك مشاور فني به او معرفي كرد كه واكر را در تنظيم يك پوزش‌نامه ياري مي‌دهد و سرانجام واكر نامه ديگري تنظيم مي‌كند و خاكسارانه از همه كاربران به خاطر اين اشتباه پوزش مي‌خواهد و توضيح مي‌دهد كه همه كساني كه پس از انتشار نامه نخست بابت اشتراك در سيستم حق عضويت پرداخته‌اند، مي‌توانند پول خود را پس بگيرند و به اين ترتيب غائله را خاتمه مي‌دهد.

اما مشكل واكر همچنان باقي مانده بود. واقعاً چه راه ديگري براي واكر وجود داشت؟ از يك سو نمي‌توانست بيش از اين زندگي شغلي و خانوادگي خود را به خطر بيندازد و از سوي ديگر، راه‌اندازي سرويس پولي آن در بدو اعلام، شكست خورده  بود. آيا مي‌توانست IBSW را رها كند و آن را به كاربران عضو انجمن بسپارد؟ يا راه حل ديگري هم وجود داشت؟ اگر شما جاي شاون واكر بوديد، چه مي‌كرديد؟ ادامه اين ماجرا را در مطلب بعدی بخوانيد.