توسعه نرمافزار آزاد در شرکتها
در این مقاله، ما به دنیای تولید نرمافزار آزاد و مرتبطترین ویژگیهای آن برای محصول، شرکت و جامعه کاربران میپردازیم.
برای شروع، توسعه نرمافزار آزاد را از دیدگاه پروژه، با در نظر گرفتن جنبههای اصلی موثر بر جمعیت و مدیریت پروژه و مشارکت جامعه کاربران در جنبههای مختلف، مورد بحث قرار میدهیم.
پروژه نرمافزار آزاد، رابطه بین شرکت و جامعه کاربران را رسمیت میبخشد. تطبیق ویژگیهای خاص این رابطه برای دستیابی به اهداف پروژه ضروری است.
تولید نرمافزار آزاد
در این بخش، ما بر تولید نرمافزار آزاد از منظر توسعه یا خلق آن تمرکز خواهیم کرد، یعنی بدون در نظر گرفتن مدلهای تجاری احتمالی که از آن برای سودآوری بهرهبرداری میکنند.
مثال 1) پروژههای محبوب
برای مثال لیبرهآفیس و موزیلا
تولید نرمافزار آزاد، مانند تولید هر نرمافزار دیگری، در پاسخ به نیاز به حل یک مشکل خاص فناوری است.
اگرچه فرآیند تکنولوژیکی اصلاح و توسعه یک نرمافزار آزاد ممکن است شباهتهای زیادی با یک نرمافزار مبتنی بر نرمافزار انحصاری داشته باشد، اما تفاوتی که با باز بودن مدل مشخص میشود، نوع خاصی از عملکرد را به آن میدهد. به عبارت دیگر، ماهیت باز و مشارکتی تولید آن بر ساختار تکامل کمی و کیفی در نسخههای بعدی تاثیر میگذارد.
نویسندگان زیادی در مورد ویژگیهای تولید نرمافزار آزاد نوشتهاند. از آنجایی که هدف این مقاله شرح یا تفصیل این ویژگیها نیست، با توجه به اینکه در مباحث دیگر به طور جامع به آنها پرداخته شده است، در اینجا بر اشاره به برخی از موارد جالبتر تمرکز خواهیم کرد.
برای انجام این کار، برخی از مفاهیم موجود در مقاله اریک اس. ریموند با عنوان «کلیسای جامع و بازار» را بررسی خواهیم کرد که ویژگیهای خاص نرمافزار آزاد، به ویژه گنو/لینوکس، را تجزیه و تحلیل میکند.
منشا تولید
به طور کلی، تولید نرمافزار آزاد از نیازهای خاص کاربر یا توسعهدهنده در فعالیتهای روزانهاش ناشی میشود. به عبارت دیگر، همکاری در توسعه نرمافزار زمانی آغاز میشود که ما به دنبال مشکلی میگردیم و آن را پیدا میکنیم که میخواهیم یا نیاز به حل آن داریم.
مثال 2) مراحل اولیه تولید
بخش عمدهای از مبانی نرمافزار آزاد بر اساس انتشار اقتباسها یا توسعههای خاص انجام شده توسط کارگران در انجام کار روزانهشان است.
جامعه کاربران
جامعه کاربران نرمافزار آزاد، که شامل کاربران نهایی و توسعهدهندگان و برنامهنویسان میشود، ستونی است که به تعریف توسعه نرمافزار آزاد معنا میبخشد.
در نظر گرفتن کاربران به عنوان شریک در پروژه تولید، سادهترین راه برای اشکالزدایی و بهبود سریع کد است (اگر تعداد همکاران به اندازه کافی زیاد باشد).
بنابراین، همکاران یکی از ارزشمندترین منابع برای توسعه برنامه هستند، بنابراین تشخیص ایدههای خوب و راهکارهایی که ارائه میدهند نیز مفید است.
نسخههای برنامه
یکی از ویژگیهای تولید نرمافزار آزاد، استفاده مجدد و بازنویسی کد منبع برای ایجاد کد جدیدی است که یا بدون خطا باشد یا دارای ویژگیهای جدید یا عملکرد بهبود یافته (و جنبههای دیگر) باشد.
علاوه بر این، پروژههای توسعه نرمافزار آزاد، انتشار سریع و منظم کد را تشویق میکنند، به این معنی که فعالیت پروژه پویا و مداوم است.
هماهنگی تولید
فرد یا افرادی که پروژه را هماهنگ میکنند باید بتوانند پتانسیل جهانی جامعه کاربران را مدیریت کنند، تکامل پروژه را بدون اجبار هدایت کنند و از منابع و همافزاییهای ارائه شده توسط شبکههایی مانند اینترنت بهره ببرند.
میراث کد برنامه و مدیریت هماهنگی برای آینده پروژه توسعه نرمافزار آزاد مهم است. انتخاب جانشین برای کنترل و مدیریت تولید نباید به شانس واگذار شود.
پروژه نرمافزار آزاد
علاوه بر ملاحظات فنی و عملکردی برنامههای مبتنی بر نرمافزار آزاد، یکی از اهداف اصلی هر پروژه نرمافزار آزاد، انتشار برنامه یا به دست آوردن تعداد قابل توجهی از کاربران است.
به عبارت دیگر، اگر کد تولید شده توسط کاربران بالقوه شناخته شده و به کار گرفته نشود، حتی اگر مشکلات یا کاستیهای خاص برطرف شده باشند، برای آینده پروژه چندان مفید نخواهد بود. این همچنین یک هدف ضروری برای نگهداری و تکامل بعدی آن در طول زمان است. در مورد نرمافزار آزاد، تحقق این جنبه برای ایجاد یک جامعه کاربری پایدار و بادوام ضروری است.
چندین راهنما نوشته شده است که کم و بیش مفاهیم لازم برای ایجاد و مدیریت پروژههای مبتنی بر نرمافزار آزاد را ارائه میدهند. در این بخش، ما این موضوع را با استفاده از مقاله «چگونه میتوان پروژه نرمافزار آزاد را مدیریت کرد» نوشته بنجامین ماکو، که ویژگیهای اصلی پروژه را از زاویه عملی بررسی میکند، بسط خواهیم داد.
راهاندازی (Launch)
قبل از راه اندازی یک پروژه مبتنی بر نرم افزار آزاد، طراحی یک ساختار مستحکم که با ضمانت های کافی در برابر فرآیند توسعه بعدی مقاومت کند، بسیار مهم است.
به طور کلی، ساختار اساسی پروژه باید موارد زیر را در نظر بگیرد:
- نیاز به ایجاد یک پروژه جدید، چه با ایدهها و اهداف خاص خود و چه از طریق پروژههای مرتبط موجود.
- تعریف ویژگیهای اصلی برنامه (عملکرد، مجوز، شمارهگذاری و غیره).
- زیرساخت اساسی برای پشتیبانی از انتشار پروژه جدید و همکاری در توسعه آن (وبسایت، ایمیل تماس و غیره).
توسعهدهندگان
پس از راهاندازی پروژه، هدف بعدی ادغام و تحکیم کاربران و توسعهدهندگان برنامه خواهد بود. ما باید سیاستها و استراتژیهایی ایجاد کنیم که به ما امکان تعریف و ساختاردهی همکاری بین این دو را بدهد.
سیاستهای همکاری باید دو هدف اصلی را برآورده کنند:
- هماهنگی تولید داخلی و خارجی، شامل تفویض مسئولیتها و پروتکلهای پذیرش مشارکتها.
- مدیریت تولید، مانند ساختار شاخههای توسعه و مخازن مرتبط با آنها.
کاربران
در محصولات مبتنی بر نرمافزار آزاد، کاربران اغلب توسعهدهندگان نیز هستند (و برعکس). یکی از اهداف اصلی که باید در نظر گرفته شود، تستهای برنامه کاربردی است، چه عملکردی، عملیاتی، کیفی و غیره.
زیرساخت پشتیبانی
فعالیتهای روزانه یک پروژه مبتنی بر نرمافزار آزاد، بدون زیرساخت پشتیبانیِ منطبق با اهداف مشارکتی آن، قابل انجام نیست.
اقدامات کلیدی در این زمینه در طول راهاندازی پروژه انجام میشود. با این حال، پس از راهاندازی و بهرهبرداری، ما نیاز به تطبیق، بهبود و تکمیل منابع موجود متناسب با پیشرفت پروژه خواهیم داشت.
مثال 3) منابع معمول
برخی از رایجترین منابع در پروژههای نرمافزار آزاد عبارتند از: مستندات، فهرستهای پستی، سیستمهای ردیابی اشکال و نسخههای آنها، انجمنها، چتها، ویکیها و غیره.
برنامه
بدون شک مهمترین جزء پروژه، برنامه کاربردی است که بقیه جنبههای مورد بررسی بر اساس آن بنا شدهاند. یکی از ویژگیهای کلیدی مورد نیاز یک برنامه کاربردی، تضمین کافی کاربر در مورد عملکرد هر نسخه منتشر شده است.
انتشار نسخهها مسئله حساسی است که نیاز به تفکر دقیق دارد. به طور کلی، باید موارد زیر را در نظر بگیریم:
- کنترل اصلاحات برای عملکرد و اشکالزدایی (نسخههای آلفا و بتا، توزیع کاندید و غیره).
- چه زمانی نسخه کامل را منتشر کنیم، یعنی چه زمانی کد آماده ارائه ضمانتهایی باشد که ما و کاربران انتظار داریم.
- نحوه انتشار نسخه (بستهبندیشده، کد منبع، باینری و غیره).
انتشار پروژه
در نهایت، همانطور که در ابتدا توضیح دادیم، افزایش آگاهی در مورد این پروژه مهم است، اما این کار باید با در نظر گرفتن این موضوع انجام شود که آیا میخواهیم پایههای آن را در طول زمان تقویت کنیم یا خیر.
با پیشرفت پروژه، باید به انتشار آن در فهرستهای پستی نرمافزارهای آزاد یا در Usenet، گنجاندن پروژه در سایر پورتالهای عمومی (مانند Freshmeat یا SourceForge)، یا تبلیغ نسخههای جدید برنامه در فهرستهای پستی خود پروژه فکر کنیم.
مدیریت پروژه
در این بخش، به تفصیل جنبههایی از مدیریت پروژه را شرح خواهیم داد که به عنوان بنیانگذاران یک پروژه، باید برای تضمین موفقیت در نظر داشته باشیم.
مفاهیمی که در این بخش شرح میدهیم، مکمل مفاهیم بخشهای فوق هستند، زیرا به ما امکان میدهند اقدامات مختلف مورد نظر را مشخص و بهبود بخشیم. از این رو، میتوان تطابقهای مستقیم و غیرمستقیمی با این استدلالها یافت.
برای نشان دادن اصول اولیه مدیریت پروژههای مبتنی بر نرمافزار آزاد، ملاحظات مطرحشده در کتاب «تولید نرمافزار متنباز» نوشته کارل فوگل، بهویژه فصل ۵ با عنوان «پول»، را در نظر خواهیم گرفت.
بودجه
ویژگیهای خاص پروژههای نرمافزار آزاد به این معنی است که بسیاری از مشارکتها به صورت غیررسمی یارانه دریافت میکنند (برای مثال، وقتی یک کارمند شرکت، اصلاحاتی را که در طول فعالیتهای روزانه خود روی کد انجام داده است، منتشر میکند).
کمکهای مالی و بلاعوض نیز انجام میشود که درآمد مستقیمی برای ادامه پروژه ایجاد میکند، اما باید مدیریت این وجوه را در نظر بگیریم، زیرا بخش زیادی از حمایتهای ارائه شده به یک پروژه نرمافزار آزاد بر اساس اعتبار شرکتکنندگان آن است.
انواع مشارکت
انواع مختلفی – و ترکیبهای ممکن – از مشارکت مالی در یک پروژه نرمافزار آزاد وجود دارد. این مدل تامین مالی همچنین بر جنبههایی تاثیر میگذارد که نه تنها به پروژه، بلکه به محیط و زمینه عمل آن نیز بستگی دارند.
به طور کلی، مشارکت در یک پروژه نرمافزار آزاد به همکاری شرکتکنندگان آن، مدل کسبوکار مورد استفاده توسط شرکتی که آن را ترویج میدهد (در صورت وجود)، فعالیتهای بازاریابی انجام شده، صدور مجوز محصولات مربوطه و کمکهای مالی انجام شده مربوط میشود.
قراردادهای باز
تیم توسعهدهندگان برنامه برای توسعه پروژه و تکامل آینده آن بسیار مهم است. ثبات و ماندگاری شرکتکنندگان در سمتهای مسئولیتی خود، پایهها و اعتبار پروژه را در مقابل جامعه کاربران تقویت خواهد کرد.
یک پروژه پایدار
اعتبار برای همه بازیگرانی که به طور مستقیم یا غیرمستقیم در پروژه دخیل هستند ضروری است، زیرا این اعتبار قابل انتقال به جایگزینها نیست. علاوه بر این، از دست دادن اعتبار میتواند آینده برنامه و پروژه را تا درجات مختلفی تحت تاثیر قرار دهد، بنابراین باید اقدامات مناسبی را برای نظارت و مدیریت فعال پروژه انجام دهیم.
تمرکززدایی
یکی از مرتبطترین – و مطلوبترین – ویژگیهای جوامع کاربری نرمافزار آزاد، توزیع و عدم تمرکز تصمیمات گرفته شده در پروژه است.
از این رو، سازمان پروژه باید این ساختار را به عنوان راهی برای ایجاد انگیزه و تقویت جامعه کاربران برنامه در نظر بگیرد و اطمینان حاصل کند که اجماع از تعامل بین اعضا حاصل میشود.
شفافیت
جنبه فوق از تمرکززدایی، به ما ایدهای در مورد شفافیت و توجیهی که باید در رابطه بین پروژه و جامعه وجود داشته باشد، میدهد.
هم اهداف پروژه و هم خطوط تکامل برنامه باید برای همه افراد درگیر در آن واضح و شناخته شده باشد. تاثیر بنیانگذار بر رفتارهای آینده باید به روشی صادقانه و شفاف اعمال شود تا اعتبار پروژه تضمین شود.
اعتبار
اعتبار پروژه (چه به طور کلی و چه از نظر اعضای آن) در تعدادی از مسائلی که قبلا مورد بحث قرار دادهایم، نمایان شده است. اهمیت آن ارتباط نزدیکی با جامعه کاربران نرمافزار آزاد دارد و پیشنیاز مهمی برای حفظ پروژه در طول زمان است.
پول یا موقعیت سلسله مراتبی نمیتواند اعتبار لازم را در اقدامات تک تک اعضا در هر زمان معین ایجاد کند. به عبارت دیگر، روششناسی، رویهها یا پروتکلهای تعیینشده، یا نحوهی کار یا عملیات باید برای همه، بدون استثنا، یکسان باشد.
قراردادها
استخدام کارمندان جنبه دیگری است که باید در نظر گرفته شود، به ویژه در پروژههای نرمافزار آزاد، به دلیل تاثیر آن بر ساختار و عملکرد. ما باید اطمینان حاصل کنیم که تمام جزئیات و فرآیندهای استخدام، شفاف و آشکار هستند.
در واقع، بررسی و تایید این تغییرات با همکاری جامعه کاربران بسیار مهم است، تا جایی که در برخی موارد، ممکن است ترجیح داده شود یا مطلوب باشد که مستقیما با توسعهدهندگان جامعه با مجوزهای نوشتن در مخزن رسمی (اعمالکنندگان کد) قرارداد بسته شود.
منابع
پروژههای نرمافزار آزاد نه تنها بر اساس تکامل و نگهداری کد یک برنامه مبتنی بر نرمافزار آزاد هستند؛ بلکه باید جنبههای اضافی پشتیبانی را نیز در نظر بگیرند.
مثال 4) منابع اضافی
این مورد در مورد مدیریت کیفیت کد تولید شده، حمایت قانونی از مشارکتها، مستندسازی و سودمندی برنامه و تامین منابع زیرساختی برای جامعه نرمافزار آزاد (وبسایتها، سیستمهای کنترل نسخه و غیره) صدق میکند.
این منابع میتوانند تفاوتهای قابل توجهی در انتشار و محبوبیت برنامه و پروژه در جامعه کاربران نرمافزار آزاد ایجاد کنند.
مارکتینگ
در نهایت، اگرچه ما با پروژهای مبتنی بر نرمافزار آزاد سر و کار داریم، اما باید اقدامات بازاریابی را برای انتشار و محبوبیت برنامه و کل پروژه انجام دهیم.
از این رو، باید به خاطر داشته باشیم که کل عملکرد پروژه در معرض دید عموم است و هر یک از ادعاهای مطرح شده را میتوان به راحتی اثبات یا رد کرد. ایجاد اقداماتی برای کنترل تصویر و عملکرد پروژه باید به آن امکان دهد تا اعتبار، شفافیت و قابلیت تایید پیدا کند.
این اقدامات شامل اهمیت حفظ یک سیاست باز، صادقانه و بیطرفانه در مورد پروژههای رقیب است. اولا، به این دلیل که ارزش خاصی را برای جامعه کاربران تشویق میکند و ثانیا، به این دلیل که توسعه استراتژیهای همکاری-رقابتی با پروژههای همسو را تقویت میکند.
جامعه کاربران
همانطور که در بخش اول این مقاله توضیح داده شد، نقش جامعهی کاربران نرمافزار آزاد در الگوی توسعه نرمافزار آزاد بسیار مهم است.
هم کاربران و هم توسعهدهندگانی که بخشی از جامعه را تشکیل میدهند، در طول زمان در نگهداری، پشتیبانی و تکامل برنامه همکاری میکنند و از این طریق انسجام و پایداری پروژه را تضمین میکنند.
در نتیجه، مشارکت آنها برای تامین اهداف پروژه ضروری است و باید توسط هر سازمان پولسازی که به دنبال بهرهبرداری از یک فرصت تجاری مبتنی بر تولید نرمافزار آزاد است، به عنوان یک ضرورت در نظر گرفته شود.
از این نظر، رابطه بین جامعه و کسبوکار باید بر اساس اعتبار و شفافیت تمام اقدامات و تصمیمات اتخاذ شده بنا شود، به طوری که هر دو طرف بتوانند از این رابطه بهرهمند شوند. جای تعجب نیست که جایگاه شرکت در رابطه با محصولات مبتنی بر نرمافزار آزاد باید به خوبی تعریف و ساختار یافته باشد تا ایجاد جامعهای از همکاران پیرامون آن را تشویق کند.
توجه داشته باشید که جامعه کاربران یک سازمان پویا است که با گذشت زمان تکامل مییابد، بنابراین برای حفظ یک رابطه بهینه، ایجاد روشهای مدیریتی ضروری خواهد بود. این مدیریت شامل ایجاد رویههایی برای شناسایی وضعیت فعلی جامعه، ارزیابی کیفیت مشارکت اعضا در پروژه و تعریف جنبههای قانونی موثر بر این مشارکتها است.
بخشهای بعدی به نوبت هر یک از این جنبهها را بررسی خواهند کرد.
مدیریت جامعه
برای تامین اهداف پروژه، شرکتی که یک پروژه توسعه نرمافزار آزاد را انجام میدهد، باید رابطه خود را با جامعه کاربران با دقت سازماندهی کند.
در بخش اول این مقاله، به جنبههای اصلی زیربنای یک پروژه نرمافزار آزاد پرداختیم. اگر شرکتی به عنوان بنیانگذار پروژه عمل کند، باید استراتژیای را متناسب با اهداف تجاری ایجاد و سازماندهی کند، البته با در نظر گرفتن اینکه باید همکاریای را که امیدوار است از جامعه کاربران به دست آورد، جبران کند.
از این رو، مانند هر پروژه نرمافزار آزاد دیگری، مسائلی مانند اعتبار و شفافیت، در کنار سایر موارد، نقش بسیار مهمی در ایجاد جامعهای از کاربران پیرامون پروژه دارند.
بن کالینز ساسمن و برایان فیتزپاتریک در کنفرانس OSCON 2007 با عنوان «چه سودی برای من دارد؟»، استراتژیهای مختلف متنباز را که میتوانند توسط یک شرکت مبتنی بر توسعه نرمافزار آزاد اتخاذ شوند، شناسایی و طبقهبندی کردند.
این طبقهبندی، دو مولفه اصلی رابطه بین شرکت و جامعه را مشخص میکند:
- از یک سو، جهتگیری، ساختار و عملکرد کلی پروژه و مسئولیت شرکت در این زمینه.
- و از سوی دیگر، مزایا و معایبی که برای شرکت و جامعه کاربران ناشی از انتخاب یک استراتژی خاص برای اجرای پروژه است.
از این رو، کار کالینز-ساسمن و فیتزپاتریک راهنمایی برای بهترین شیوهها در رسمیت بخشیدن به یک رابطه سالم بین شرکت و جامعه کاربران است.
در بخشهای بعدی، به طور خلاصه ویژگیهای اصلی این طبقهبندی استراتژی متنباز را معرفی خواهیم کرد.
متنباز جعلی
این استراتژی مبتنی بر باز کردن یا انتشار کد منبع برنامه تحت مجوزی است که توسط OSI تایید نشده است.
این واقعا یک استراتژی متنباز نیست، زیرا نه تنها مزایا از بین میرود، بلکه برخی از اعضای جامعه حتی ممکن است پروژه را تحریم کنند.
با این وجود، این پروژه میتواند با تلاش و هزینه نسبتا کم، پوشش رسانهای کسب کند و توجه را به خود جلب کند.
کد را از روی دیوار پرتاب کنید
این استراتژی مشابه استراتژی بالا است، با این تفاوت که این بار شرکت کد را تحت مجوز مورد تایید OSI باز یا منتشر میکند، اگرچه هنوز نگران آینده پروژه نیست یا مسئولیتی در قبال آن نمیپذیرد.
به عبارت دیگر، با باز کردن کد و فراموش کردن آن، شرکت تصویری از اعتبار ضعیف را به تصویر میکشد، زیرا برنامهای را منتشر میکند که هیچ جامعه کاربری برای زنده نگه داشتن پروژه وجود ندارد. در این حالت، ممکن است جوامع جایگزین برای توسعه نرمافزار خارج از اهداف تجاری ظهور کنند.
توسعه داخلی، انتشار خارجی
این استراتژی مبتنی بر توسعه داخلی برنامه در داخل شرکت و انتشار پیشرفت آن در یک مخزن عمومی است.
این بار، شرکت هم روابط عمومی خود را با جامعه کاربران و هم اعتبار خود را در دنیای نرمافزار آزاد بهبود میبخشد. از طرف دیگر، جامعه میتواند هر از گاهی در این پروژه همکاری کند. با این وجود، یک توسعه کاملا داخلی، توسعه جوامع موازی را که از تقویم کاری پیروی نمیکنند (که باعث ایجاد عنصر بیاعتمادی میشود) تشویق خواهد کرد.
سلطنت آزاد
این استراتژی مبتنی بر عمومیسازی بحثها و مخزن برنامه است، اگرچه کاربران دارای حق دسترسی به آن از شرکت هستند.
در این حالت، اعتبار و شفافیت شرکتها و ورودیهای جامعه بهبود مییابد (که منجر به کد بهتر میشود) اما شرکت هنوز حرف آخر را در مورد تمام تصمیمات گرفته شده میزند. این امر ریسکی برای نگهداری طولانی مدت جامعه، از جمله احتمال انشعاب در پروژه، محسوب میشود.
توسعه مبتنی بر اجماع
این استراتژی تقریبا از تمام روابط ممکن بین شرکت و جامعه بهرهبرداری میکند، با توجه به اینکه تقریبا همه چیز در ملاء عام انجام میشود.
در این مورد، پروژه هم بر اساس تصمیمگیری توزیعشده و غیرمتمرکز و هم بر اساس سیستمهای کاری شایستهسالارانه در بین همکاران بنا شده است.
این ویژگیها مدلی با داوطلبان باکیفیت ایجاد میکنند که در درازمدت پایدار است، زیرا شرکت از نظر جامعه و سایر شرکتهای نرمافزار آزاد، اعتبار، شفافیت و قابلیت اطمینان بیشتری کسب میکند.
با این وجود، مزایای کوتاهمدت محدود و حجم کار قابل توجه است. در این مورد، نقش رهبران پروژه برای عملیات استراتژیک کل سازمان مرتبط است.
ویژگیهای جامعه
جامعه کاربران نرمافزار آزاد، سازمانی پویا و تکاملی است، به این معنا که عوامل متعددی وجود دارند که به درجات مختلف بر وضعیت و روندهای آیندهی آن تأثیر میگذارند و آن را شکل میدهند.
هنگام بررسی یک پروژه نرمافزار آزاد، مطلوب است که یک جامعه کاربری اولیه و قوی پیرامون برنامه ایجاد شود، با توجه به اینکه بخشی از موفقیت و اهداف پروژه به آن بستگی دارد.
پس از ایجاد جامعه، برنامهریزی فعالیتهایی که نه تنها آن را پایدار نگه میدارند، بلکه آن را گسترش داده و تکامل میدهند، حداقل با همان سرعتی که محصول توسعه مییابد، بسیار مهم است. قبل از هرگونه اقدامی در این زمینه، باید وضعیت فعلی جامعه کاربران و روند تکاملی اخیر آن را در رابطه با پروژه مشخص کنیم.
شناسایی دقیق وضعیت فعلی یک جامعه کاربری میتواند در عمل نسبتا پیچیده باشد، عمدتا به دلیل ویژگیهای توزیع و تمرکززدایی آن.
با این وجود، میتوانیم مجموعهای از شاخصها را در نظر بگیریم که به ما امکان میدهد رویکردی به اندازه کافی واقعبینانه برای تصمیمگیری در مورد این موضوع ایجاد کنیم.
مقاله «ارزیابی سلامت یک جامعه FLOSS» نوشته کروستون و هاویسون، یک راهنمای ساده اما موثر برای شناسایی و ارزیابی وضعیت یک جامعه از کاربران نرمافزار آزاد را شرح میدهد. این راهنما شاخصهای اصلی را که باید هنگام ارزیابی سلامت جامعه و به تبع آن، پروژه نرمافزار آزاد در نظر گرفته شوند، در نظر میگیرد.
بخشهای بعدی به طور خلاصه برخی از یافتههای آنها را معرفی میکنند.
چرخه زندگی و انگیزهها
نویسندگان مختلف اتفاق نظر دارند که پروژهها قبل از ساختاردهی و توسعه عمومی، توسط گروه کوچکی از بنیانگذاران آغاز میشوند.
پس از راهاندازی پروژه، مرحله دوم باید آغاز شود که امکان اصلاح تدریجی مفهوم اولیه را فراهم میکند. به عبارت دیگر، به اشتراک گذاشتن ایدهها، پیشنهادها و دانش باید مفهوم اولیه را متحول کند. این فرآیند بدون همکاری جامعه نرمافزار آزاد نمیتواند تکمیل شود.
علاوه بر این، مشارکت اعضای جامعه در پروژه عمدتا با انگیزههای توسعه فکری، به اشتراک گذاری دانش، علاقه به کاربرد، ایدئولوژی یا فلسفه پشت پروژه یا نرمافزار آزاد، شهرت و تعهد جامعه صورت میگیرد.
ساختار و اندازه جامعه
جامعه کاربری یک برنامه مبتنی بر نرمافزار آزاد میتواند به روشهای مختلفی ساختار یابد، که این امر با در نظر گرفتن اقدامات و تصمیمات بنیانگذاران پروژه و ویژگیهای برنامه و/یا تولید آن صورت میگیرد.
به طور کلی، میتوانیم جامعه کاربری یک برنامه را سالم بدانیم اگر ساختار سلسله مراتبی عملکردی همسو با اهداف آن پیرامون یک هسته فعال از توسعهدهندگان داشته باشد.
ساختار سلسله مراتبی
این مفهوم را میتوان با ساختار لایههای یک پیاز (به شکل پیاز) مقایسه کرد، که در آن فعالترین اعضای پروژه در هسته و اعضای کممشارکتتر در بیرونیترین لایه قرار دارند.
به طور کلی، میتوانیم انواع زیر از اعضا را در یک پروژه شناسایی کنیم:
- توسعهدهندگان هسته برنامه، با مجوزهای نوشتن در مخزن و سابقه قابل توجهی از مشارکتها در پروژه.
- رهبران پروژه، که پروژه و جامعه کاربری آن را به بلوغ و ثبات انگیزه میدهند و رهبری میکنند.
- توسعهدهندگان به طور کلی، کسانی که کد ارائه میدهند اما مجوز نوشتن در مخزن را ندارند. آنها اغلب وظایف بررسی را انجام میدهند.
- کاربران فعال، که برنامه را آزمایش میکنند، اشکالات را گزارش میدهند، مستندات را تهیه میکنند و پروژه را با کاربران غیرفعال مرتبط میکنند، و فعالیتهای دیگری نیز انجام میدهند.
این طبقهبندی اولیه از گونهشناسیها یک ساختار بسته نیست، زیرا هر پروژه آن را متناسب با ویژگیهای خاص خود تطبیق میدهد.
فرآیندهای توسعه
فرآیند توسعه نرمافزار آزاد اغلب میتواند در پروژهها به طور ناکافی رسمیسازی شود، که عمدتا به دلیل عدم وجود نقشه راه، تخصیص صریح کار یا عدم اولویتبندی در ویژگیهای برنامه است.
سازماندهی پروژه به عملکرد و هماهنگی تولید مربوط است، اگرچه میزان مشخصی از تکرار تلاش میتواند نشانه مثبتی از رابطه و مشارکت جامعه با پروژه تلقی شود.
به همین ترتیب، چرخه ارزیابی و پذیرش بعدی کمکهای اعضای جامعه به پروژه، اطلاعات دقیقی در مورد سلامت آن ارائه میدهد. به عنوان مثال، رد یک کمک میتواند چشمانداز منسجم و کیفی پروژه را در درازمدت آشکار کند.
مدیریت کیفیت
کیفیت نرمافزار آزاد گاهی اوقات بحثهایی را بین طرفداران و مخالفان آن برانگیخته است، به ویژه در مورد جنبههایی مانند باز بودن مدل توسعه یا سطح مهارت همکارانی که در پروژه مشارکت دارند.
همانند هر پروژه نرمافزاری، تولید نرمافزار آزاد باید در طول چرخه حیات خود معیارهایی برای کنترل کیفیت ایجاد کند. به عبارت دیگر، ما باید بتوانیم کیفیت آن را ارزیابی کنیم و آن را با سطوح مورد انتظار در هر مرحله از تولید یا بهرهبرداری و از هر زاویهای (بنیانگذاران، کاربران یا جامعه) مقایسه کنیم.
اگرچه باز بودن و تمرکززدایی مدل توسعه نرمافزار آزاد، امکان کنترل کیفیت و مکانیسمهای مدیریتی را فراهم میکند، اما آنها به خودی خود یک راهکار نیستند و برنامهریزی نباید به دلیل این ویژگیها نادیده گرفته شود.
برای توسعه جنبههای کیفی تولید نرمافزار آزاد، مقاله «مدیریت کیفیت در نرمافزار متنباز» نوشته درو موهیندرا را مطالعه خواهیم کرد که تجزیه و تحلیل دقیقی از کنترل کیفیت در محیطهای نرمافزار آزاد انجام میدهد. در بخشهای بعدی، ایدههای اصلی مقاله را مرور خواهیم کرد.
کیفیت در نرمافزار آزاد
به طور کلی، کیفیت یک راهکار نرمافزاری را میتوان هم از طریق معماری یا طراحی داخلی آن و هم از طریق عملکردی که به کاربر ارائه میدهد، ارزیابی کرد.
ویژگیهای خاص باز بودن و تمرکززدایی مدل توسعه نرمافزار آزاد، زیرساختی را ایجاد میکند که امکان ایجاد سیاستهای مدیریت کیفیت را از طریق شناسایی و حل مشکلات، در میان جنبههای دیگر، فراهم میکند. با این حال، فقدان وضوح و/یا ساختار در فرآیندهای تولید گاهی اوقات میتواند نتایج غیرمنتظرهای ایجاد کند.
ارزیابی کیفیت
چندین روش و معیار رسمی برای ارزیابی کیفیت عملکردی یک برنامه وجود دارد. معیارهای قابل سنجش تا حد زیادی به نوعشناسی خود نرمافزار بستگی دارند، بنابراین باید مطابق با ویژگیها و اهداف برنامه انتخاب شوند.
جامعه نرمافزار آزاد نقش مهمی در کیفیت غیرقابل سنجش ایفا میکند: اولا، در آزمایشهای انجام شده توسط تیم کیفیت، و ثانیا، در فعالیت کاربران برنامه که شواهدی از نقص یا بهبود محصول را گزارش میدهند.
از این نظر، ماهیت و عملکرد غیرمتمرکز و توزیعشدهی جامعه کاربران برای افزایش تضمین کیفیت فرآیند تولید مهم است.
کنترل و بررسی
یک عامل مهم در کیفیت محصول نهایی، کنترل و بررسی کل فرآیند توسعه است. به طور کلی، پروژههای تولید نرمافزار آزاد از سیستمهای کنترل نسخه برای پشتیبانی کارآمد و موثر از تکامل اجزای متنوع پروژه استفاده میکنند.
روشهای مختلفی برای سازماندهی کنترل و بررسی تکامل نرمافزار و شاخههای توسعه و مخازن آن، در کنار سایر جنبهها، وجود دارد. با این حال، در همه موارد، ایده خوبی است که روششناسی تولید و سیستمهای کنترل و بررسی تغییرات را با ویژگیهای خاص پروژه و محصول در حال تولید تطبیق دهید.
افسانههای نرمافزار آزاد
با وجود گذشت زمان، هنوز هم برخی افسانهها، چه مثبت و چه منفی، در رابطه با نرمافزار آزاد وجود دارد که میتواند تا درجات مختلفی بر ارزیابی آن تاثیر بگذارد.
این افسانهها هیچ پایه و اساس محکمی ندارند که بتوان بر اساس آن یک مدیریت کیفیت منسجم و پایدار بنا کرد، بنابراین باید هر یک را جداگانه شناسایی و ارزیابی کنیم.
سپس در مورد برخی از افسانههای رایج مرتبط با کیفیت نرمافزارهای آزاد بحث خواهیم کرد.
- عمومی بودن کد منبع تضمین نمیکند که امن و/یا باکیفیت باشد، زیرا این امر به علاقه و بررسیهای جامعه بستگی دارد.
- ثابت نگه داشتن ویژگیها به خودی خود باعث افزایش پایداری برنامه نمیشود، زیرا نکته مهم این است که از همان ابتدا کد خوبی بنویسید.
- بهترین راه برای درک یک پروژه، اصلاح کاستیهای احتمالی آن نیست، زیرا مستندات برای این منظور به طور قابل توجهی بهتر هستند.
- معمولا کاربران آخرین نسخه مخزن را که شامل بهروزرسانیهای رفع اشکال باشد، ندارند.
به طور کلی، فرآیندهای آزمایش و بررسی، و بحثهای عمومی و فرهنگ هکری مختص جامعه کاربران باید با برنامهریزی و مدیریت فعال کیفیت تولید تکمیل شوند.
این مدیریت باید به دنبال پر کردن هرگونه شکاف در یک یا چند جنبه از محصول باشد، مثلا برنامهریزی تولید، توسعه ویژگیها یا مستندسازی کاربرد.
ملاحظات کیفی
به طور کلی، هم انتشار کد منبع و هم گنجاندن سیستمهای مدیریت خطا و تقسیم مسئولیت محصول بین همه افراد درگیر، جنبههای کلیدی مدیریت کیفیت هستند.
از این رو، برای کیفیت کلی پروژه نیز مهم است که شفافیت در تمام اقدامات در نظر گرفته شود، به تیم توسعه اعتماد شود، تمام بخشهای کد منبع بررسی و آزمایش شود و فلسفه همتا به همتا و اهمیت انجام درست کارها از ابتدا ترویج شود.
قانونی بودن و مشارکتها
در یک پروژه مبتنی بر نرمافزار آزاد با مشارکت جامعه کاربران، مدیریت حقوقی مشارکتهای هر عضو درگیر از اهمیت ویژهای برخوردار است.
این مدیریت هم برای بنیانگذاران پروژه و هم برای اعضای جامعه بسیار مهم است، زیرا ویژگیهای نویسندگی و مالکیت حقوق مربوط به کد حاصل را تعیین میکند. اهمیت آن همچنین به شدت تحت تاثیر پیامدهایی است که ترکیب کدهای نویسندگان مختلف میتواند بر یک محصول واحد داشته باشد.
در مورد آثاری که توسط چندین نفر نوشته شدهاند، چندین حالت ممکن وجود دارد:
- یک کار مشارکتی، نتیجه واحدی از ترکیبی از بخشهای مختلف است که میتوانند به طور مستقل مورد استفاده قرار گیرند.
- یک کار جمعی، مجموعهای از مشارکتهای متنوع است که نمیتوان از آنها به طور مستقل بهرهبرداری کرد.
- در یک اثر سفارشی (یا اثری که با دریافت وجه نقد همراه است)، حق تالیف بر عهده شخص یا نهادی است که سفارش را انجام میدهد.
در نرمافزار آزاد، حق تالیف تا حد زیادی به ملاحظات فوق بستگی دارد، با در نظر گرفتن اینکه انتقال مالکیت گاهی اوقات میتواند مفید و کاربردی باشد.
علاوه بر این، شرایطی که تحت آن آثار مشتق شده (محتوای از پیش موجود) ایجاد میشوند، ممکن است به دلیل نویسنده و خود اثر، تفاوت اساسی داشته باشند. در هر صورت، مجوزهای آزاد باید شرایط استخراج و توزیع مجدد آثار را مشخص کنند.
مالک اصلی و مالک مشتق
مالک اصلی اثر همیشه نویسنده است. با این حال، برخی از حقوق مربوط به اثر ممکن است به افراد یا نهادهای دیگر منتقل شود.
در این حالت، دریافتکنندهی انتقال بخشی از حقوق یک اثر، دارنده مشتق آن میشود. توجه داشته باشید که فقط دارنده یک حق خاص میتواند آن حق را مجوز دهد.
شناسایی دارنده
برای اعمال حقوق فوق، باید بتوانیم نویسنده هر اثر را شناسایی کنیم. این امر در نرمافزارهای آزاد میتواند دشوار باشد زیرا مشارکتکنندگان در پروژه ممکن است بسیار زیاد و متنوع باشند.
برای حل این مشکلات، پروژههای مبتنی بر نرمافزار آزاد فهرستی از نویسندگانی که در آنها مشارکت داشتهاند را نگهداری میکنند. گاهی اوقات، این پروژهها ممکن است قبل از پذیرش مشارکت، نیاز به انتقال تمام یا بخشی از حقوق داشته باشند.
درباره فرشید نوتاش حقیقت
همیشه نیازمند یک منبع آموزشی فارسی در حوزه نرمافزارهای آزاد/ متنباز و سیستمعامل گنو/لینوکس بودم. از این رو این رسالت رو برای خودم تعریف کردم تا رسانه «محتوای باز» رو بوجود بیارم.
نوشتههای بیشتر از فرشید نوتاش حقیقتاین سایت از اکیسمت برای کاهش جفنگ استفاده میکند. درباره چگونگی پردازش دادههای دیدگاه خود بیشتر بدانید.
دیدگاهتان را بنویسید