کلیسای جامع و بازار - قسمت سوم(725 مجموع کلمات موجود در متن) (4406 بار مطالعه شده است) کلیسای
جامع و بازار، بخش سوم
زمانی
که برنامه دیگر آن برنامه قبلی نبود
با
درک نحوه عملکرد لینوس و خلق یک فرضیه
درباره دلایل موفقیت آن، تصمیمی هوشیارانه
برای تست این تئوری در پروژه جدیدم گرفتم
(که
در قیاس با لینوکس، مسلما بسیار سادهتر
و کوچکتر بود).
اما
اولین کاری که انجام دادم، سازمـاندهی
دوبـاره و ساده سازی نرم افــزار popclient
بود.
پیــاده
ســازی کارل هریس (Carl
Harris) خیلی
دقیق بود، اما نوعی پیچیدگی اضافی در قیاس
با خیلی از برنامه نویسان C
در
برنامهاش به چشم میخورد.
او
با کد برنامه به عنوان بخش اصلی و ساختمان
دادهها به عنوان پشتیبان کد برخورد
میکرد.
نتیجتا،
برنامه بسیار زیبا سازماندهی شده بود،
امــا نــوع طــرح ریــزی ســاخـتــمان
داده بـرنــامه، روشــی معمـول نبود و
تقریبا زشت سازماندهی شده بود (حداقل
در قیاس با استاندار های سطح بالای این
هکر قدیمی LISP).
جدای
این مسائل، دلیل دیگری برای بازنویسی
برنامه درکنار بهبود طرح برنامه و ساختار
ساختمان داده آن داشتم.
در
واقع، میخواستم برنامه را کاملا درک
کنــم.
زیــاد
جالب نیست که مسئول درست کردن برنامهای
باشــی که آن را درک نکردهای!
حدودا
در ماه اول، به پیروی از ساختار پایهای
طرح کارل پرداختم.
اولین
تغییر اساسی که در برنامه انجام دادم،
اضافه کردن پشتیبانی از پروتکل IMAP
بــه
برنامه بود.
این
کار را بوسیله سازماندهی مجدد پروتکلها
در یک درایور عمومی و سه جدول متد (برای
POP2،
POP3
و
IMAP)
انجام
دادم.
این
تغییر و تغیــیــرات قبلی نمایانگر یک
اصل کلــی هسـتند که خوب است برنامه نویسان
آن را بــه خاطر بسپارند، به خصوص در
زبانهای برنامه نویسی از قبــیل C
که
بــه طــور پیش فرض با انواع پویا کار
نمیکنند:
ساختمان
داده ی خوب و برنامه ضعیف بسیار بهتر از
برنامه خوب و ساختمان داده بی ارزش کار
میکند.
فصل
نهم از کتاب بروکس:
"اگر
میخواهی مرا گیج کنی، برنامه ات را به
من نشان بده ولی ساختمان داده برنامهات
را پنهان کن.
اما
اگر ساختمان داده برنامهات را به من
نشان دهی، اغلب دیگر نیازی به دیدن کد
برنامهات ندارم؛ همه چیز واضح و مشخص
است."
البته
منظور او "فلوچارتها"
و
"جداول"
بود.
البته
بــا درنظر گرفتن حرکت ســی ســاله علــمی
و فنی/فرهنـگی،
ایــن دو تقریبا یکی هستند.
در
این زمان (اوائــل
سپتامبر سال 1996،
حدودا شش هفتــه پس از شروع کار)،
بــه این فکر افتادم که بهتر است که نام
نرم افزار را تغییر دهم.
پس
از همه این تغییرات، برنامه مذکور تـنها
یک POP
client ساده
نبود.
اما
دچار تردید شدم، چرا که تا آن زمان هیچ
کار کاملا جدیدی در ساختــار بــرنــامه
انــجــام نـداده بودم.
نسخه
popclient
من،
هنوز هویت قبلی خود را داشت.
این
تغییر بنیادی زمانی بوجود آمد که برنامه
fetchmail
قادر
به ارسال کردن نامه های دریافت شــده به
پورت SMTP
شد.
درباره
اش خواهم گفت؛ اما قبل از آن:
قبــلا
گفتم که تصمیم داشتم کـه این پروژه را
برای تست تئوریام دربــاره آنچه که
لینوس توروالدز انجام داده بود، به کار
بگیرم.
ممکن
است بپرسید چطور این کار را کردم؟ به روش
های زیر:
۱)
برنامهام
را زود و به تناوب منتشر میکردم (تکرارش
تقریبا کمتر از هر ده روز یک بار نمیشد،
اما در طی دوران اوج برنامه نویسی، هر روز
این کار انجام میشد)
۲)
هر
کس را که با من به نحوی درباره fetchmail
درتماس
بود را به لیست بتای خودم اضافه میکردم.
هر
زمانی که نسخه جدیدی را انتشار میدادم،
آگهیهای زیادی را به لیست بتای خودم
ارسال میکردم تا آنها را به مشارکت در
پروژه تشویق کنم.
۳)
به
تست کنندههای نسخه بتای نرم افزارم گوش
میکردم، نظــر آنها را درباره تصمیماتم
جـویا میشدم و هر زمان که آنها بستههای
نرم افزاری و یا نظراتشان را برایم ارسال
میکردند، از آنها تشکر میکردم.
نتیجه
نهائی این کمک های کوچک، بسیار سریع اثر
خود را نشان داد.
از
آغاز پروژه، بـا گزارشهای با ارزشی در
ارتباط با خطاهای برنامه مواجه شدم که
برنامه نویسان حاضرند به خاطرش جان بدهند!
کــه
اغــلب بــا راه حــلهـای خــوبی نیز
همراه بود.
من
متفکرانه مورد نقد قرار گرفتم، نامه های
بسیاری بدستم رسید و نظرات هوشمندانهای
نیـز دریافت کردم.
که
همگی مرا به این نکته هدایت کرد:
اگر
شما با تست کنندههای نسخه بتای برنامهتان،
چنان که آنها با ارزشترین منبع شما هستند،
برخورد کنید، آنها به عنوان با ارزش ترین
منبع شما به شما پاسخ خواهند داد.
یک
نکته ارزشمند از موفقیت fetchmail،
تعداد اعضای لیست نــسخه بتــای پــروژه،
یعنــی دوستــان fetchmail-friends
است.
در
زمان نوشتن این مقاله، لیست مذکور ۲۴۹
عضــو داشت که هر دو یا سه هفته یکبار به
تعداد اعضای آن اضافه میشود.
عملا،
با اصلاح نرم افزار در اواخر ماه مه سال
1997،
لیست مذکور از آن تـعداد زیـاد اعضایش که
به سیصد نفر میرسید، به دلیل جالبی
تعدادی از اعضایش را از دست داد.
خیلی
از افراد از من میخواستند تا آنــهـا
را از لیــست خارج کنم، چرا که برنامه
fetchmail
به
حدی خوب عمل میکرد، کــه دیــگـر نیازی
به بودن در لیست احساس نمیکردند!
شاید
این یک بخش از چرخه حیات پروژه کاملی باشد
که در سبک بازار نوشته شده است.
ترجمه:
نیما ابوطالبی
nima717a@yahoo.com
منبع:
http://www.catb.org/~esr/writings/cathedral-bazaar/
PDF Version
|