یکشنبه, ۱۸ آذر, ۱۴۰۳ / 8 December, 2024
مجله ویستا

روش جذب داوطلبان به پروژه‌های توسعه نرم‌افزار آزاد


روش جذب داوطلبان به پروژه‌های توسعه نرم‌افزار آزاد
هر چه زمان می‌گذرد و زندگی پیچیده‌تر می‌شود به نظر می‌رسد که ما وقت کم و کمتری داریم که به پروژه‌های نرم‌افزار آزادی که در دوره آرمانگرایی جوانی‌مان شروع کرده‌ایم اختصاص دهیــم. بجــای رهــا کــردن یک پروژه خوب بخاطر کمبود وقت، به جستن همکارانی از دیگر اعضای جامعه نرم‌افزار آزاد فکر کنید. بــا چند کار ساده می‌توانید یافتن داوطلبانی که شما را در تکمیل پروژه کمک کنند ساده کنید.
● راهنمایی برای یافتن داوطلبان
پیش از اینکه از دیگران انتظار کمک داشته باید لازم است که درک خوبی از پروژه خود داشته باشید. بـه ایـن فکر کرده‌اید که می‌خواهید پروژه‌تان یک سال بعــد بـه کجا برسد؟ به این موضوع فکر کنید. بعد آن را مکتوب نمایید. وقتی که مسیری را که برای پروژه خود درنظر دارید بشناسید می‌توانید درباره شمای کلی آن بـا سایرین گفتگو کنید. هر چه افراد بیشتری هدف نهــایی پروژه شما را بفهمند، بــرای بعضی از آنها تمــایــل بـه کمک برای رسیدن شما به هدفتان بیشتر می‌شود.
ممکن است ایمیلهایی با این مضمون دریافت کنید "چطور می‌توانم کمک کنم؟" و وقتی مردم با پیشنهـاد کمک به سراغ شما می‌آیند باید جوابی بهتر از "نمی‌دانم چه کمکی می‌توانید بکنید.” داشتـه بـاشـیـد. آمــاده بـاشـیـد کـه جوابهایی با وظایفی معین بدهید که در مدت زمانی معقــول قــابـل انجام و تکمیل باشند. باید مطمئن شوید که منافعی که داوطلبان می‌توانند از مشارکت در پروژه شما انتظار داشتــه بــاشند را روشن کــرده‌اید. ایــن منــافع شـاید پول نباشد اما چیزهای با ارزشی هستند که افراد به عنوان داوطلبان نرم‌افزار آزاد می‌توانند از آن بهره‌مند شوند.
اگر اینطور بنظر می‌آید که اینها داده‌های زیادی برای هضم کردن است نگران نباشید، این مقاله هر کدام از این موضوعات را با جزئیات بیشتر توضیح می‌دهد. بعد از خواندن این مقاله شما باید ایده‌های خوبی داشته باشید که چطور می‌شود پروژه نرم‌افزار آزادتان را برای همه دواطلبان با استعداد بالقوه جذاب‌تر کنید.
● گفتگو درباره مقصود پروژه
محتمل است که شما مقصود پروژه خودتان را بهتر از هر کس دیگری بدانید، هــر چه باشد این پروژه شماست و شما آن را طراحی کرده‌اید. اما دیگران چه؟ آیا حد وسط کاربران نرم‌افزار آزاد وقتی پروژه شما را می‌بینند بــا خــودشـان می‌گویند "می‌دانم این پروژه برای چه است و یک سال دیگر به کجا خواهد رسید؟" اتفــاق می‌افتد که شما چنان غرق کدنویسی و انتشار وصله‌های نرم‌افزاری می‌شوید که فراموش می‌کنید شمــای کلـی پروژه خود را به بحث بگذارید. اگر مردم ندانند پروژه به کجا می‌رود نخواهند دانست که چطـور به آن برای رسیدن به هدف کمک کنند. پروژه شما به مقصودی نیاز دارد.
اگر با خودتان می‌گویید "من یک کدنویسم، مدیر حرفه‌ای که نیستم"، و در عجبید کــه چطور باید از پس این قضیه مقصود بربیایید، نگران نباشید. با بررسی بعضی از پروژه‌های متداول نرم‌افزار آزاد روی اینترنت و ایــده گـرفـتن شروع کنید. بیشتر آنها روی سایتشان قسمتی با عنوان “about” دارنــد کــه شـمـای کـلـی پــروژه را بـصـورت شرح وظیفه توضیح می‌دهد. OpenOffice.org را می‌شود مثال آورد.
هدف آنها "به عنوان یک انجمن، خلــق مـجـمــوعـه اداری پیشـروی بین‌المللی‌ای است که بر تمام سکوهای معماری متداول اجرا شده و دسترسی به تمام کاربردها و اطلاعات را به واسطه APIهایی با اجزای باز و یک فرمت فایل مبتنی بر XML فراهم کند.” این یک جمله اهداف تمام پروژه را در خود جمع کرده است.
پروژه شما ممکن است به اندازه OpenOffice.org هدفمند نباشد اما باز هم می‌توانید شــرح وظیفه داشته باشید. شرح وظیفه را مختصر و سر راست نگه دارید و بــه خاطر داشته باشید که شما وضعیت کنونی پروژه را توضیح نمی‌دهید بلکه جایی را که وقتی تمام کارها انجام شد، پروژه به آن خواهد رسید نشان می‌دهید.
برای مثال فرض کنیم شما بر روی یک نرم‌افزار آزاد بی‌نظیر مدیریت دستــور غذا کار می‌کنید. پروژه شما در حــال حــاضـر ظاهر مبتی بــر مــرورگــر خوبی دارد و از زیـرساخـت قـدرتمندی در بانک اطلاعاتی‌اش بهره می‌برد. اما اگر بتواند فایلهای دستور غذای سایر بسته‌های نرم‌افزاری اختصـاصی مدیریت دستور غذا را بخواند خیلی بهتر خواهد بود. مقصود این پروژه را بدین ترتیب می‌شود خلاصه کرد "ایجاد یک سیستم مدیریت دستور غذای قدرتمند، آزاد و مبتنی بر وب که توانایی وارد کردن فایلهای نرم‌افزارهای مدیریت دستور غذای متداول اختصاصی را دارد”. می‌بینید که چندان مشکل هم نبود، بود؟
● مشخص کردن اهداف و وظایف
خلق یک مقصود برای پروژه شبیه به تصمیم‌گیری برای انتخاب مقصد برای تعطیلات است. شاید بدانید که می‌خواهید در یک ساحل آفتابی با یک نوشیدنی خنک در دست باشید اما باید معلوم کنید که چطور می‌خواهید به آنجا برسید. به آنجا پرواز می‌کنید یا با اتومبیل می‌روید؟ اگر با اتومبیل می‌روید کجا نهار می‌خورید؟ نیاز هست کــه در یـک هـتل اتاق بگیرید؟ پروژه‌های نرم‌افزار آزاد سوالهای مشابهی به همراه دارند که باید پاسخ داده شـود. برای جواب دادن به این سوالات شما به چند هدف نیاز دارید.
با تفکیک پروژه به اجزای اصلی تشکیل دهنده آن شروع کنید. به عنوان مثال اگر مقصود پروژه شما این است: "ایجاد یک سیستم مدیریت دستور غذای قــدرتـمند، آزاد و مبتنی بــر وب که توانایی وارد کردن فایلهای نرم‌افزارهای مدیریت دستور غذای متداول اختصاصی را دارد".
▪ می‌توانید اهداف خود را چنین تعیین کنید:
- خلق یک رابط کاربری با استفاده از HTML/PHP که ساده و قابل درک باشد.
- ایجاد یک زیرساخت کارای بانک اطلاعاتی.
- کدنویسی برای ورودی گرفتن فایلهای ثبت سفارش از برنامه‌های دیگر.
اگــر شما روی پروژه کار کرده باشیــد ممــکن اســت فـقـط چـنـد مـورد باشند که نیاز به توجه داشته باشند. این موارد را می‌شود به عنوان وظایف مشخص، تعیین و ثبت کــرد. فــرض کنـیـد شـمـا از تـرکـیـب رابـط کاربری برنامه مدیریت دستور غذایتان راضی هستید امـا این رابط با HTML ۳.۲ تگ‌نویسی شده و حتماً باید به XHTML ارتقاء پیدا کند. پس تنها موردی که شما را از رسیدن به هدف خلق یک رابط کاربری ساده و قابل درک بازمی‌دارد ایــن واقعیت است که تگ HTML شما قدیمی است.
تبریــک، شمــا یـکـی از وظـایف را مشخـص کــرده‌اید. ایـن مورد را ثبت کنید و با نگاهی به سایر اهداف به شناسایی وظــایف دیــگر بپردازید. هــدف دیــگری کــه تعییــن کرده‌اید امکان ورودی گرفتن از فایلهای ثبت سفارش سایر برنامه‌هاست.
▪ که می‌تواند شامل چندین وظیفه همچون موارد زیر باشد:
- کدنویسی برای تبدیل فایلهای Meal Master به فایلهای ویژه برنامه.
- کدنویسی برای تبدیل فایلهای AccuChef به فایلهای ویژه برنامه.
- کدنویسی برای تبدیل فایلهای RecipeBook_XML به فایلهای ویژه برنامه.
به بررسی اهداف و استخراج وظایف ادامه دهید تا جایی که تمام وظایف مهم پروژه را مشخص کرده باشید.
● خلق شرح وظایف
حالا که تعدادی از وظایفی را که باید کامل شوند شناخته‌اید وقت آن رسیده است که کسانی را بیابید که به شما در کار بر روی این وظایف کمک کنند. لحظه‌ای درباره هر وظیفه فکر کنید. آیا کار یکباره انجام می‌شود یا ممتد است؟ تکمیل این بخش از کار چقدر طول می‌کشد؟ آیا یک نفر می‌تواند آن را بــه انـجـام بــرسـانـد یــا بـه چند نفر نیاز است؟ پاسخ به این سوالات کمک خواهد کرد مبنای شرح وظایف، برای کسی که کار را انجام خواهد داد شکل بگیرد. اعلان این شرح وظایف در وبسایت پروژه به شما کمک خواهد کرد تا افراد مناسبی را برای انجام دادن کارها بکار گیرید.
بیشتر پروژه‌های عمده نرم‌افزار آزاد بخشی به نام “tasks” یا “to-do” در ســایت خـود دارند که می‌شود از آن برای شکل دادن شرح وظایف ایده گرفت. قالب آن بیشتر بسته به اولویتهاست اما می‌بایست اطــلاعــات اولیه‌ای درباره چه کسی، چه، کجا، کی، چرا و چطور در شرح وظایف گنجاند. چه کسی می‌تــواند ایـن کار را با موفقیت انجام دهد؟ دقیقاً روی چه چیــزی کــار می‌کند؟ کــار انـجـام شده را کجا باید بفرستد؟ کار باید کی به اتمام برسد؟ چطور باید روی موضوع کار کرد؟ گنجاندن این اطلاعات تضمین می‌کند که دواطلبانی که روی پروژه کــار می‌کـنـنـد می‌دانـند چه چیزی برای تمام کردن آن قسمت از کار لازم است.
مثال ارتقاء تگ HTML ۳.۲ بــه XHTML را در نظــر بـگیرید. شما می‌توانید این کار را خودتان انجام دهید چون فکر می‌کنید یک HTMLنویس ماهر هستید اما متاسفانه وقتش را ندارید. پس نیاز است که یـک HTMLنویس ماهر دیگر پیدا کنید تا به شما کمک کند. تبریک، بخش "چه کسی" را از شرح وظایف معلوم کــردید. شما به "یـک XHTMLنویس ماهر" نـیاز دارید. اگر با چه، کجا و چطور ادامه دهید ممکن است در نهایت به این شرح وظیفه برسید:
XHTML نــویس مــاهری بــرای ارتقاء تـگ‌نـویـسی HTML ۳.۲ بـرای یک سیستم مدیریت دستور غذای مبتنی بر وب نیاز است. حدود ۳۰۰ خط تگ‌نویسی شده، بــایــد ارتـقـاء یــابـد. استـفـاده از ویـرایشگر متن vi الزامیست. در صورت تمایل با admin@free-recipe-project.com تماس بگیرید.
اگــر دقت کرده باشید ممکن است متوجه این نکته شده باشید که سوال "چرا؟" حذف شده است. چون "چرا؟" اغــلـب مشکلترین سوال برای پاسخ دادن است. یــک روز فقط بیست و چهار ساعت دارد و انگار بیشتر مردم حدود بیست و پنج ساعت وقت نیاز دارند. اگــر اینقــدر وقت تنگ اســت چــرا مـردم باید آن را رایگان به شما بدهند؟ وقتی به سوال "چرا؟" پاسخ می‌دهید به این موضوع فکر کنید.
نظر دیگران را جلب کنید تا به مقصود مورد نظر شما بپیوندند دلایل زیادی وجود دارد که مــردم داوطلب کار بر روی پروژه‌های نرم‌افزار آزاد می‌شوند. بعضـی‌ها چالش را دوست دارند یا می‌خواهند مهارتهایشان را ارتقاء دهند، بعضی دیگر احساس تعهد می‌کنند کــه چـیزی به جامعه بازگردانند و برخی فقط می‌خواهند نامشان را در همکاری با یک پروژه مهم نرم‌افزار آزاد ببینند. وقتی از افراد برای اختصاص داوطلبانه وقتشان به پروژه شما درخواست می‌کنید مطمئن شوید آنها آگاهند که در ازای تلاششان چـیـزی باز خواهند ستـانـد. تـوضیـح منافع واقعی ساده‌تر است پس بجــای ایــده‌های انتـزاعی مثل باز پس دادن به جامعه، روی آنها تمرکز کنید. منافع داوطلبین را بخشی از شرح وظایف کنید.
نگاهی دوباره به شرح وظیفه‌ای کــه برای XHTML نــویس ماهر نوشتید بیاندازید و دوباره به سوال "چرا؟” فـکر کنید. چرا کسی باید داوطلب ارتقاء HTML ۳.۲ به XHTML شود؟ خیلی وسوسه‌کننده نیست. امــا اگـر کســی تازه در یـک کـلاس توسعه وب نام‌نویسی کرده باشد چه؟ این نوع از کــارهای دواطلبانه فرصتــهای خـوبــی بــه عنــوان یـک پروژه درسی یا بخشی از روزمه هستند. فکر کردن به موضوعات از نـــگاه داوطلبان بــه شمــا کـمـک می‌کنـد که شرح وظایف را جذاب‌تر بنویسید. شرح وظیفه XHTML نویس ماهر را با این اطلاعات جدید دوباره بنویسید.
" دنبال کسب کمی تجربــه بـه عنوان یک طراح وب هستید؟ پروژه مدیریت دستور غذا در جستجوی یک XHTML نویس ماهر است تا تگ HTML ۳.۲ سیستم مدیریت دستور غذای مبتنی بر وب را ارتقاء دهد. حدود ۳۰۰ خط تگ نیاز به ارتقاء دارد. استفاده از ویرایشگر متن vi الزامیست. در صورت تمـایـل با admin@free-recipe-project.com تماس بگیرید.”
● تمرین مستمر
شما یک دوره متوالی جذب داوطلبانی که زمانی را به کار بر پروژه شما اختصاص دهند بــا افــزودن ایـن اطلاعات به پروژه گذرانده‌اید. مدتی از کدنویسی دست بردارید و نگاهی به شمای کلی پروژه بیاندازید. یک سال بعد از این می‌خواهید این پروژه به کجا رسیده باشد؟ اجزای اصلی پروژه کدامها هستند؟ چه عملیات بخصوصی باید مشخص شوند تا آن اجزای اصلی کامل گردند؟ چه کسی مهارتهای لازم را برای انجام این کارها دارد؟ چطـور قدردانی خود را به کسانی که به شما کمک می‌کنند نشان خواهید داد؟
حالا این داده‌ها را جایی ثبت کنید که همه ببینند. اگــر پروژه شما سایت وب دارد از آن به عنوان یک ابزار تشخیص و جذب داوطلبان استفاده کنید. مقصود پروژه خود را در بالای صفحه اصلی سایت بگذارید. یک صفحه "درخواست کمک" درست کنید و شرح وظایف کارهایی کــه بـایــد انجام شود را در آن لیست کنید. و همچنین یک صفحه "سپاس" درست کنید و تمام کسانی را که داوطلبانه در پیشرفت پروژه شما شرکت داده‌اند نام ببرید.
دیوید هورتون [۱]
مترجم: بهنام بهجت مرندی blixbox@gmail.com
پانوشت‌ها:
[۱] David Horton
[۲] http://creativecommons.org/licenses/by-sa/۲.۰/
منبع : نشریه لینوکس ایران