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