You are on page 1of 25

‫الكاتدرائية والسوق‪/‬البزار‬

‫وثائق أعجوبة‬
‫‪http://docs.ojuba.org‬‬

‫رابط الوثيقة ‪ :‬الكاتدرائية_والسوق‪http://www.ojuba.org/wiki/docs:‬‬


‫ساهم في تحرير هذه الوثيقة ‪:‬‬

‫أول تحرير بواسطة زياد الهندي بتاريخ ‪18:37 2010/02/18‬‬


‫آخر تحرير بواسطة زياد الهندي بتاريخ ‪18:37 2010/02/18‬‬
‫تم تصدير هذه الوثيقة بتاريخ ‪19:04 2010/02/18 :‬‬

‫تمثل هذه الوثيقة تصديرا لنص على موقع أعجوبة‪ ،‬ولكن رغم ذلك‬ ‫تنويه ‪:‬‬
‫ل يتحمل الموقع أية مسئولية قانونية عن صحة أو خطا ما يرد فيها‪.‬‬
‫يسمح لك نسخ أو توزيع أو تعديل هذا المستند‬
‫وفق شروط الرخصة الحرة المحددة‬
‫حقوق النسخ محفوظة ©‬
‫مشروع وثائق أعجوبة‬
‫الكتدرائية والسوق‪/‬البار‬

‫جدول المحتويات‬
‫‪4..........................................................................................................................‬‬
‫‪ .1‬الكاتدرائية والسوق‪/‬البار‬
‫‪ .1.1‬حول هذه القالة‪4...............................................................................................................................‬‬
‫‪ .1.2‬مقدمة‪4.............................................................................................................................................‬‬
‫‪4............................................................................................................‬‬
‫‪ .1.3‬الكاتدرائية والسوق )البازار( ‪:‬‬
‫‪ .1.4‬البيد يجب ان يعب ‪5.......................................................................................................................:‬‬
‫‪ .1.5‬أهمية الستخدمي ‪7..........................................................................................................................:‬‬
‫‪ .1.6‬الصدار في وقت مبكر ‪ ،‬و الصدار التكرر ‪8........................................................................................:‬‬
‫‪ .1.7‬ما هو عدد الطلعي‪ ,‬و ما هي تعقيدات تكوين الفريق؟ ‪10......................................................................:‬‬
‫‪11...........................................................................................‬‬
‫‪ .1.8‬مت يكون ورد الجوري ليس وردا جوريا ‪:‬‬
‫‪ Popclient .1.9‬يصبح ‪13...............................................................................................Fetchmail :‬‬
‫‪ Fetchmail .1.10‬يكب ‪14....................................................................................................................:‬‬
‫‪ .1.11‬مزيد من الدروس في‪16..............................................................................................Fetchmail :‬‬
‫‪17............................................................................‬‬
‫‪ .1.12‬الشوط الضورية السبقة لنمط البازار )السوق( ‪:‬‬
‫‪ .1.13‬السياق الجتماعي في البمجيات الحرة‪18..........................................................................................:‬‬
‫‪ .1.14‬عن الدارة و خط ماجينوت ‪21.........................................................................................................:‬‬
‫‪ .1.15‬خاتمة الكتاب‪ :‬نيتسكيب ‪ Netscape‬تحتضن السوق "البار" ‪24........................................................:‬‬

‫صفحة ‪3‬من أصل ‪25‬‬

‫الكاتدرائية_والسوق‪http://docs.ojuba.org/‬‬
‫مشروع وثائق أعجوبة‬

‫‪ .1‬الكتدرائية والسوق‪/‬البار‬ ‫الكتدرائية والسوق‪/‬البار‬

‫‪ .1‬الكاتدرائية والسوق‪/‬البار‬
‫‪ .1.1‬حول هذه القالة‬
‫الكاتدرائية و السوق )البار( وثيقة مقارنة بي بيئة تطتتوير البمجيتتات الغلقتتة و الفتوحتتة )الحتترة( وهتتي أيضتتا كتتتاب‬
‫مطبوع نشته بالنجليية‪O'Reilly‬‬
‫•الؤلف‪ :‬إريك ستيفي ريموند‪Eric Steven Raymond‬‬
‫•ترجمة‪ :‬زياد عبد الرحمن الهندي‬
‫•التدقيق اللغوي‪ :‬ريوف عبد الرحمن الهندي‬
‫•الرخصة‪ :‬رخصة النش الفتوح‪Open Publication License, version 2.0‬‬
‫•يمكن الوصول للوثيقة باللغة النجليية على الرابط‪/http://catb.org/esr/writings/homesteading‬‬

‫‪ .1.2‬مقدمة‬
‫لقتتد قمتتت بتحليتتل الشتتوع الناجتتح )فيتتتش ميتتل ‪ (fetchmail‬وهتتو حتتر الصتتدر‪ ،‬والتتذي طبتتق كمشتتوع اختبتتار‬
‫للفرضيات الدهشة في هندسة الحاسوب والتتذي استتتنبط متتن تاريتتخ نظتتام التشتتغيل “لينكتتس”‪ ،‬وستتوف يتتتم مناقشتتة‬
‫هذه الفرضيات من جانبي أساسي مختلفي كليا‪ ,‬الجانب الول مبدأ “الكاتدرائية” وهتتو الستتائد لن العتتالم التجتتاري‬
‫التقن يستخدم هذا البدأ‪ ،‬والجانب الخر هو “السوق” ويسمى أيضتتا “البتتازار” ويستتتخدم غالبتتا فتتي بيئات لينكتتس‪.‬‬
‫وسأقوم باستعراض هذه البادئ الت يتم استنباطها من وجهات نظر مختلفة في طبيعتتة مهتتام تنقيتتح البمجيتتات‪ .‬بعتتد‬
‫‪Given enough eyeballs, all‬‬ ‫ذلك وانطلقا من حصيلة خبات لينكس ستتوف أنتتاقش الفرضتتية التتت تقتتول “‬
‫‪ ،”bugs are shallow‬وتعنت أنتته كلمتتا زاد عتتدد الستتتخدمي قلتتت العلتتل‪ ،‬وهتتي تتتوحي بالقارنتتات الفعالتتة متتع‬
‫النظمة ذاتية التصحيح و التتت تحتتتوي علتتى وكلء أنتتانيي‪ ،‬وأخيتتا ستتوف أختتتم ببعتتض التعقيتتدات التتت تتتواجه هتتذا‬
‫البدأ بالذات فيما يخص مستقبل البمجيات ‪.‬‬

‫‪ .1.3‬الكاتدرائية والسوق )البازار( ‪:‬‬


‫من كان يظن حت قبل خمس سنوات )‪ (1991‬أن نظتتام تشتتغيل عتتالي ممكتتن أن يتكتتون ويتشتتكل كمتتا لتتو كتتان نوعتتا متتن‬
‫السحر من مجموعة مختتتقي )هتتاكرز‪ (Hakers‬التتذين يعملتتون علتتي تطتتويره بشتتكل جتتزئي‪ ،‬ومتواجتتدين فتتي منتتاطق‬
‫جغرافية مختلفة حول العالم‪ ،‬قاموا بالتواصل مع بعضهم البعض فقط عن طريق النتنت‪.‬‬
‫بكل تأكيد أنا أعتقدت أن هذا غي ممكن‪ ،‬عندما تنامت معلومات لينكس لدي في أوائل‪ ،1993‬كنت في وقتها أعمتتل علتتى‬
‫منصات يونكس ‪ Unix‬ولي أعمال في تطوير برمجيات حتترة الصتتدر لتتدة عشت ستتنوات‪ .‬فتتي منتصتتف‪ 1980‬كنتتت متتن‬
‫أوائل الساهمي في ‪ .GNU‬وكنت قتتد أصتتدرت عتتددا جيتتدا متتن البمجيتتات حتترة الصتتدر علتتى شتتبكة النتتتنت‪ ،‬وأيضتتا‬
‫قمتتت بتطتتوير عتتدة برامتتج ستتواء بشتتكل مباش ت أو غي ت مباش ت مثتتل )‪nethack, Emacs's VC and GUD‬‬
‫‪ (modes, xlife, and others‬منهتتا متتا يتتزال يستتتخدم حتتت يومنتتا هتتذا‪ ،‬ولتتذلك اعتقتتدت أنتتي أعتترف كيتتف يتتتم‬
‫التطوير في بيئة حرة الصدر‪ ،‬ولكن لينكس قلب مفاهيمي رأسا على عقب‪.‬‬
‫ستتابقا كنتتت أتبتتع مبتتادئ يتتونكس‪ ،‬برمجيتتات صتتغية‪ ،‬نمتتاذج متكتتررة وبرمجيتتات ثوريتتة لستتنوات‪ .‬بالضتتافة إلتتى‬

‫صفحة ‪4‬من أصل ‪25‬‬

‫الكاتدرائية_والسوق‪http://docs.ojuba.org/‬‬
‫مشروع وثائق أعجوبة‬
‫‪ .1‬الكتدرائية والسوق‪/‬البار‬ ‫الكتدرائية والسوق‪/‬البار‬

‫اعتقادي بوجود تعقيدات حرجة بحيتتث لبتتد أن تتتتم فتتي بيئة مركزيتتة‪ ،‬واعتقتتدت أن أهتتم البامتتج هتتي ) نظتتم التشتتغيل‬
‫والبمجيات الكبية مثل بيئة تطوير ايماكس‪ ( Emacs‬لبد أن تبن فتتي بيئة الكاتدرائيتتة‪ ،‬بحيتتث يتتتم التطتتوير بكتتل‬
‫عناية علي أيدي سحرة أو عصابات صغية يعملون في عزلة تامة عن العالم‪ ،‬بحيتتث ل يصتتدر أي إصتتدار أولتتي )بيتتتا‬
‫‪ (beta‬لي برنامج قبل وقته‪ .‬لذلك كان لبد من وجود نهتتج مبتكتتر‪ .‬صتتدر أستتلوب لينتتوس ترافولتتدس للتطتتوير مبكتترا‬
‫وبشكل مستتتمر‪ ،‬وكتتان شتتفافا إلتتى درجتتة الوضتتوح التتتام‪ .‬وهتتذا كتتان مفتتاجئا بتتل ثوريتتا‪ ،‬بحيتتث ل يوجتتد أستتلوب البنتتاء‬
‫الكاتدرائي هنا‪ ،‬بل على العكس تماما‪ ،‬بحيث مجتمعات لينكتتس كتتانت تبتتدو وكأنهتتا تمثتتل حركتتة الستتوق )البتتازار( فيمتتا‬
‫يخص جدولة العمال والتواصل ) هذا تمثل بكل كفتتاءة فتتي مواقتتع أرشتتفة لينكتتس التتت تقبتتل الستتاهمة متتن أي شتتخص‬
‫كان( من هنا ينشأ نظام ثابت ومتماسك‪ ،‬وهذا ل يحدث بدون تسهيلت أو معجزة‪.‬‬
‫في الواقع إن نظام السوق )البازار( هذا فّعال بل ويعمتتل بكفتتاءة عاليتتة بحيتتث كتتان هتتذا مفتتاجئا جتتدا‪ .‬وفيمتتا أنتتا أتعلتتم‬
‫الحيثيات عملتتت بجهتتد ليتتس فقتتط علتتى مشتتاريع فرديتتة‪ ,‬بتتل حتتاولت أن أستتتوعب لتتاذا عتتالم لينكتتس التتذي يعمتتل بهتتذه‬
‫الطريقة لم يتفكك أو يصاب بحالت من الفوض والذهول‪ ،‬بل على العكس تماما كان ينتقتتل متتن حالتتة قويتتة إلتتى حالتتة‬
‫أقوى بسعة ل يستطيع أحد تخّيلها حت نظام الكاتدرائية‪.‬‬
‫بحلول منتصف عام ‪ 1996‬تسّنت لي طريقة ممتازة لختبار نظريت بمحتتض الصتتدفة‪ ،‬عتتن طريتتق برنامتتج حتتر الصتتدر‬
‫و التتذي بواستتطته استتتطعت تجربتتة التطتتوير باتبتتاع أستتلوب الستتوق )التتبار(‪ ،‬وفعل نجحتتت التجربتتة و كتتانت نجاحتتا‬
‫باهرا وانطلقا من هذه التجربة اعتقدت أنن بدأت أفهم‪ ،‬وهذه هي قصة هذا الشوع‪.‬‬
‫وليس كل ما سأذكره تع ّلمته من أول تعامل لتتي متتع عتتالم لينكتتس‪ ،‬ولكتتن ستتوف نتترى كيتتف أن عتتالم لينكتتس هتّذب هتتذا‬
‫الفكر‪ ،‬وسأذكر كيف سيساعدك على فهم ما هتتو بالضتتبط وفهتتم متتا التتذي يجعتتل متتن مجتمتتع لينكتتس مثتتل الينبتتوع متتن‬
‫البامج الجيدة‪ ،‬وربما‪ ،‬سوف يساعدك على أن تصبح أكث إنتاجا‪.‬‬

‫‪ .1.4‬البيد يجب ان يعب ‪:‬‬


‫منذ ‪ 1993‬و انا ادير الجانب التقن متتن برنامتتج صتتغي يتتوفر لتتي خدمتتة انتتتنت مجانتتا تستتمي‪Chester County‬‬
‫‪ (InterLink (CCIL‬في غرب تشست في و لية بنسيلفينيا‪ .‬قمت بالشتتاركة فتتي تأستتيس‪ CCIL‬و كتبتتت )طتتورت(‬
‫‪telnetting‬‬ ‫لوحتتة اعلنتتات متميتتة تختتدم عتتدة مستتتخدمي فتتي نفتتس التتوقت ويمكنتتك التحقتتق متتن ذلتتك متتن قبتتل )‬
‫‪ .(.locke.ccil.org‬واليتتوم يختتدم تقريبتتا ثلثتتة الف مستتتخدم علتتى ثلثي ت ختتط‪ .‬هتتذا العمتتل اتتتاح لتتي استتتخدام‬
‫النتنت من خلل ‪ CCIL‬بحيث العمل تطلب ذلك‪.‬‬
‫‪ (telnet‬بشتتكل مستتتمر لتفحتتص البيتتد‬
‫كنت قد تعودت علي البيد اللكتوني الفوري‪ .‬كما وجدت ان استخدام تلنتتت )‬
‫كان مزعجا بعتتض الشتت‪ .‬ومتتاكنت اريتتده ان يتتتم ارستتال البيتتد التتى جهتتازي الختتاص بحيتتث يتتتم اخطتتاري عنتتد وصتتول‬
‫البيد واستطيع ان اتعامل مع البيد بالدوات الوجودة لدي‪.‬‬
‫فقتتد كتتان التتبتوكول الستتتخدم بشتتكل تلقتتائي علتتى النتتتنت لرستتال البيتتد هتتو‪ ,SMTP‬و يتطلتتب ان يكتتون متصتتل‬
‫بالنتنت بشكل دائم‪ .‬بينما جهازي الخاص لم يكن متصل بالنتنت بشكل دائم‪ .‬و ل املتتك عنتتوان‪ IP‬ثتتابت‪.‬و متتاكنت‬
‫احتتتاجه انتتا ان يقتتوم البنامتتج بالتصتتال بتتالنتنت )اتصتتال عتتن طريتتق الهتتاتف‪ (Dialup‬و التواصتتل متتع بريتتدي‬
‫اللكتوني‪ ,.‬كان هناك اعلن لش مشابه لا كنت ابحتتث عنتته‪ ,‬و كتتان يستتتخدم برتكتتول بستتيط يستتمى‪ .POP‬علمتتا ان‬
‫‪ POP‬الن يستخدم بشكل شاسع تقريبا من قبل عملء البيد اللكتوني ولكن في حينها لم يكن كذلك‪.‬‬
‫كنتتت احتتتاج لبنامتتج يصتتلح للتعامتتل متتع ‪ .pop‬لتتذلك اتجهتتت للنتتتنت وبحثتتت و فتتي الواقتتع وجتتدت ثلث او اربتتع‬
‫‪ (Hack‬عنتتاوين‬‫برامج‪ ,‬استخدمت احدهم لفتة‪ ,‬و لكن كان يفتقر لخصائص وامكانيتتات واضتتحه واساستتيه لختتتاق )‬
‫البيد الوارد لكي يجعل خاصية الرد علي البيد تعمل‪.‬‬
‫الشكلة كانت كالتالي) افتض ان شخصا اسمة جو يستخدم ‪ locke‬ارستتل لتتي بريتتدا‪ ,‬اذا انزلتتت البيتتد ثتتم حتتاولت ان‬
‫ارد عليه)جو( ينتج رسالة خطأ بحكم ان جهازي ليعرف بريد الرستتل بشتتكل تلقتتائي فأصتتبحت عمليتتة ادختتال العنتتوان‬

‫صفحة ‪5‬من أصل ‪25‬‬

‫الكاتدرائية_والسوق‪http://docs.ojuba.org/‬‬
‫مشروع وثائق أعجوبة‬

‫‪ .1‬الكتدرائية والسوق‪/‬البار‬ ‫الكتدرائية والسوق‪/‬البار‬

‫بشكل يدوي جدا مزعجة‪ (.‬ومن الواضح ان هذة الهمتتة كتتان لبتتد ان تتتتم بشتتكل تلقتتائي متتن الحاستتب نفستته‪ .‬و لكتتن ال‬
‫‪ POP‬لم يكن يعرف كيف يقوم بذلك‪ ,‬و من هنا انطلق الدرس الول ‪:‬‬
‫‪-1‬انه كل عمل جيد للبمجيات نشأ من مطور يحاول ان يستجيب لطالبه‬
‫متتن العتتروف ان )ان الحاجتتة هتتي أم الختتتاع( و لكتتن فتتي معظتتم الحيتتان التتبمجون يقضتتون وقتهتتم فتتي صتتناعة‬
‫برمجيات ليحتاجونها و ل يحبونهتتا مقابتتل متتردود متتادي‪ .‬و لكتتن هتتذا ل يحتتدث فتتي عتتالم لنكتتس – و ربمتتا هتتذا يفست‬
‫الجودة العالية في برمجيات لنكس لذا بدات انا مباشة في تطوير عميل‪ pop‬جديد لي لكي ينافس الوجتتود حاليتتا‪ ,‬و‬
‫نظرت بدقة الى الدوات الت احتاجها في عميل‪ pop‬الذي انوي عمله‪ ,‬و انا اسأل نفس ت اي متتن هتتذه الخصتتائص هتتي‬
‫القرب لا احتاج‪.‬‬
‫‪ -2‬البمتتج الجيتتد يعتترف متتاذا يكتتتب ولكتتن البمتتج المتتتاز هتتو اللتتذي يعتترف مايحتتتاج ان تعتتاد كتتتابته )او يعتتاد‬
‫استخدامه(‬
‫انا ل ادعي اني مبمج ممتاز‪ ,‬ولكن ستتأحاول تقليتتد البمتتج المتتتاز‪ .‬واحتتدى مزايتتا البمتتج المتتتاز هتتو الكستتل البنتتاء‬
‫بمعن انك تحصل على اعلى التتدرجات ليتتس للمجهتتود بتتل للنتيجتتة‪ ,‬ومتتن الستتهل دائمتتا ان نبتتدأ متتن حتتل جتتزئي صتتمم‬
‫بطريقة جيدة من ان نبدأ من الصفر‪ ,,‬على سبيل الثال‪“ :‬لنوس ترافولدس” لم يحاول ان يؤسس لنكتتس متتن الصتتفر‪.‬‬
‫انما بدأ باعادة استخدام شفرة و افكار من متتانكس )‪ (Minix‬وهتتو عبتتارة عتتن نظتتام تشتتغيل شتتبية بيتتونكس )‪(Unix‬‬
‫‪.”PC‬و بعد فتة جميع شفرات مانكس )‪ (Minix‬تم اعتتادة كتابتهتتا للنكتتس‪..‬و بنفتتس‬ ‫وهومخصص للجهزة النلية “‬
‫الحماس‪ ,‬ذهبت ابحث عن ادوات ‪ pop‬مبمجة بطريقة جدية لكتتي استتتخدمها كأستتاس للتطتتوير‪.‬وعتتادة تبتتادل مصتتادر‬
‫‪ GNU‬اختتتار يتتونكس‬ ‫البامج و مبدأ اعادة استخدام الصدر في عالم يتتونكس كتتانت شتتائعة ومتوافقتتة )لتتذلك مشتتوع‬
‫كمثال يحتذى به‪ ,‬مع الخذ بعي العتبار التحفظات على نضتتام التشتتغيل نفستته( بحيتتث قتتام عتتالم لنكتتس بالستتتفادة‬
‫القصوى من هذا البدأ بتوفي جميع الصادر لي مستخدم‪ .‬ولذلك في عالم لنكس يثمتتر البحتتث عتتن شتتفرة جيتتدة يمكتتن‬
‫اعادة استخدامها اكث من اي بيئة اخرى دائما‪.‬‬
‫هتتذا متتا حتتدث لتتي‪ ,‬فتتي بحتتث الول عتتن عميتتل ‪ ,pop‬امتتا اثنتتاء عمليتتة البحتتث الثانيتتة و جتتدت تستتعة برامتتج مؤهلتتة‬
‫للستخدام ) ‪fetchpop, PopTart, get-mail, gwpop, pimp, pop-perl, popc, popmail and‬‬
‫‪ (upop‬و تتتم اختيتتار ‪ fetchpop‬التتذي كتتتب بواستتطة ‪.Seung-Hong Oh‬متتن خللهتتا بتتدأ التغي ت ثتتم ارستتلت‬
‫تعديلتي الى الطور الذي بدوره قبلها و ادمجها مع اصداره التالي‪ ,‬اصدار‪1.9‬‬
‫وبعد عدة اسابيع‪ ,‬توصلت الى الشفره الصدرية ل‪ popclient‬اللت كتبتتت بواستتطة ‪ ,Carl Harris‬و اكتشتتفت ان‬
‫هناك مشكلة في ‪ ,fetchpop‬مع العلم انه يحتوي على افكتتار جيتتدة مثتتل )خاصتتية العمتتل فتتي الخلفيتتة( و لكتتن كتتان‬
‫ليتعامل ال مع ‪ POP3‬وكانت الشفرة الصدرية الكتوبة بواسطة‪ seung-hong‬مكتوبتتة بطريقتتة بدائيتتة متتع العلتتم‬
‫انه مبمتتج جيتتد ولكتتن تنقصتته الختتبة وكتتان هتتذا و اضتتح متتن الشتتفرة الصتتدرية‪ ,‬وفتتي القابتتل الشتتفرة الصتتدرية التتت‬
‫كتبت بواسطة ‪ Carl's‬كانت مكتوبة بشكل اكتتث احتافيتتة و لكتتن البنامتتج كتتان يفتقتتر التتى بعتتض الخصتتائص الهمتتة‬
‫الوجودة في‪ ) fetchpop‬بما فيها الخصائص الت قمت انا باضافتها ( اذن ؟؟ هل اغّي ام ابقى ؟؟ اذا قمت بتتالتغيي‬
‫اكون قد رميت بالتطوير اللتتذي صتتنعته مقابتتل عمتتل شتتفرة جديتتدة متتن مصتتدر اجتتود ‪ !!.‬او التتدافع العملتتي للتغيت هتتو‬
‫ظهور دعم لتعدد البتوكولت ‪.‬وكان‪ Pop3‬هو الكث شيوعا ولكنه ليس الوحيتتد‪ Fetchpop,‬و النافستتي الخريتتن‬
‫لم يتتدعموا ‪ POP2, RPOP, or APOP‬و كنتتت افكتتر باضتتافة ‪ IMAP‬فقتتط للتستتلية و كتتانت هنتتاك ايضتتا استتباب‬
‫نظرية للنتقال‪ ,‬و هذا قد تعلمتة قبل تعرفي علتتى عتتالم لنكتتس بفتتتة طويلتتة‪-3..‬خطتتط لتتتمي احتتدهم‪ ,‬وستتوف تفعتتل‬
‫ذلك على اية حال ) من كتاب ‪ ، Fred Brooks, The Mythical Man-Month‬الفصل ‪(11‬‬
‫او بعباره اخرى انت حقيقة ل تفهم الشكلة ال بعتتد تطتتبيق الحتتل لول متترة و فتتي التترة الثانيتتة تكتتون ربمتتا قتتد تعلمتتت‬
‫اكث لتطبيق الحل بشكل ناجح‪ ,‬لذلك اذا اردت ان تطبق الحل الصحيح استعد لتقوم به اكث من مره‪.‬‬
‫لذلك قلت لنفست ان التعتتديلت التتت تمتتت علتتى ‪ fetchpop‬كتتانت محتتاولتي الولتتى‪ ,‬لتتذلك قمتتت بالتحويتتل وبعتتد ان‬

‫صفحة ‪6‬من أصل ‪25‬‬

‫الكاتدرائية_والسوق‪http://docs.ojuba.org/‬‬
‫مشروع وثائق أعجوبة‬
‫‪ .1‬الكتدرائية والسوق‪/‬البار‬ ‫الكتدرائية والسوق‪/‬البار‬

‫انهيت اول رقعة لل ‪ popclient‬ارسلتها الى ‪ Carl Harris on‬في تاريخ ‪ ,June 1996 25‬ولكن وجدت انه بكل‬
‫بستتاطة فقتتد الهتمتتام فتتي ‪ popclient‬منتتذ فتتتة‪ .‬و كتتان الصتتدر يحتتتاج التتى التحتتديث فقتتط ومعالجتتة بعتتض العلتتل‬
‫البسيطة‪ ,‬لذلك اتفقنا على ان التصف النطقي هنا ان يتم تسليمي البنامج و اكتتون انتتا الطتتور الرئيست للبنامتتج…‬
‫و بدون ادراك من نما هذا الشوع ليتحول من مجرد عمتتل رقعتتة لخاصتتية متتا التتى تطتتوير برنامتتج كامتتل‪ ,‬وعلتتى الفتتور‬
‫بدأت افكر بطرق مختلفة لتطوير البنامج جعلتن اشعر ان البنامج سوف يتغي كليا‪.‬‬
‫‪ -4‬في الثقافة البمجية تبادل البمجيات مستحب‪ ,‬و هذا وضع طبيعي لتطوير أي برنامج‪ ,‬و كنت اتبع هذا البدأ ‪:‬‬
‫)اذا كان عندك السلوك الناسب‪ ,‬الشاكل المتعة تجد طريقها لك( و سلوك ‪ Carl Harris's‬اكتتث اهميتتة‪ ,‬فقتتد تفهتتم‬
‫هذا‪.‬‬
‫‪ .5‬عندما تفقد الهتمام ببنامج تكون مهمتك الخية للبنامج ان تجد شخص مؤهل لتوليه‬
‫و بدون اي نقاش ‪,‬كل متتن ‪ Carl‬و انتتا عرفنتتا اننتتا نتقاستتم عامتتل مشتتتك ال وهتتو تقتتديم افضتتل حتتل موجتتود‪ ,‬الستتؤال‬
‫الوحيد لكلينا هو هل بامكاني ان اثبت انن قادر على تتتولي مستتؤلية البنامتتج ام ل؟؟‪ .‬حالتتا اثبتتت ذلتتك تصتتف‪Carl‬‬
‫بكرم شديد و ارسل الحتوى كامل لي‪.‬‬

‫‪ .1.5‬أهمية الستخدمي ‪:‬‬


‫وهكذا اصبحت ‪ .popclient‬على نفتتس القتتدار متتن الهميتتة و اصتتبح لهتتا ايضتتا قاعتتدة مستتتخدمي ‪ .popclient‬و‬
‫ليس فقط لثبات انك تفي بغرض شخص ما و انك تقوم بعمل جيد‪ ,‬و لكن ليصبحون مشتكي في عملية التطوير‬
‫وهنتتاك ميتتة اختترى فتتي تقاليتتد يتتونكس والتتت يستتتفيد منهتتا لنكتتس اقص ت استتتفادة وهتتي ان كتتثي متتن الستتتخدمي‬
‫يصبحون مختقي )هاكرز‪ (Hakres‬فعالي لتوفر الشفرة الصدرية‪ .‬هذة الخاصية لها غاية في الهميتتة فتتي تقصتتي‬
‫وقتتت التنقيتتح‪ .‬ومتتع قليتتل متتن التحفي ت يمكتتن للمستتتخدمي ان يحللتتوا الشتتكلة ‪ ,‬يقتتتحون الحلتتول‪ ,‬و يستتاعدون علتتى‬
‫تنقيح الشفرة الصدرية اسع بكثي مما لو قمت انت بذلك لوحدك‬
‫‪ .6‬ان معاملتتتك للمستتتخدمي كشتتكاء فتتي التطتتوير قتتد يكتتون اقصت الطتترق لتطتتوير الشتتفرة الصتتدرية بشتتكل فعتتال و‬
‫متكرر اضافة الى ذلك ان عمليات التنقيح تكون اكث فعالية‪ .‬في الواقع ان معظمنا يعلتتم انتته فتتي عتتالم الصتتادر الحتترة‬
‫يتتزداد عتتدد الستتتخدمي اذا قلتتت تعقيتتدات النظتتام‪ ,‬التتى ان بيت لنتتا لنتتوس ترافولتتدس عكتتس ذلتتك ‪ ,,‬ان قتتوة و عبقريتتة‬
‫لنوس ترافولدس ل تكمن في قلب نظام لنكس‪ ,‬و لكن تكمن في ابتكتتاره بيئة تطتتوير لنكتتس‪ .‬وعنتتدما تحتتدثت بهتتذا متتره‬
‫بحضور لنوس ترافولدس‪ ,‬ابتسم وقال شء قد ذكره من قبل عتتدة متترات ال وهتتو ” انتتا شتتخص كستتول جتتدا و احتتب ان‬
‫اختتذ الشتتف متتن خلل عمتتل الخريتتن” نعتتم كستتول كثعلتتب‪ ,‬او كمتتا ذكتتر الكتتاتب ‪ Robert Heinlein‬فتتي احتتدي‬
‫شخصياته “كسل ل يسمح بالفشل”‬
‫عنتتد إستتتعادة الحتتداث‪ ,‬اتتتذكر ستتابقه لهتتا علقتتة بطريقتتة تطتتوير و نجتتاح لنكتتس‪ ,‬ال و هتتي تطتتوير مكتبتتة )‪GNU‬‬
‫‪ (Emacs Lisp library‬و ) ‪ (Lisp code archives‬وهي على عكس طريقة البناء و التطوير في الكتدرائية‬
‫و التتت كتتانت تابعتتة لبنتتاء ‪ Emacs C core‬و معظتتم ادوات ‪,GNU‬ولكتتن التطتتور التتذي حتتدث للشتتفرة الصتتدرية‬
‫الخاصة بت ‪ Lisp‬كانت متدفقتتة و تقتتاد متتن قبتتل الستتتخدمي‪ .‬و الفكتتار و التصتتورات غالبتتا متتا كتتانت تكتتتب مرتيت او‬
‫ثلث الى ان تصل الى مرحلة نهائية‪ .‬كما ان النموذج التكالفلي الذي اتبعة الطورين كان ممكنا بوجود النتنت‪.‬‬
‫بالفعتتل‪ ,‬كتتانت اولتتى تجتتاربي للتعتتديل علتتى الشتتفرة الصتتدرية قبتتل‪ fetchmail‬كتتان ) ‪Emacs VC version‬‬
‫‪ (control‬اتبعنا نظام شبيه ببيئة تطتتوير لنكتتس عتتن طريتتق البيتتد اللكتتتوني انتتا و ثلثتتة اشتتخاص فقتتط ‪,‬احتتدهم‬
‫تقتتابلت معتته وهتتو )ريتشتتارد ستتتالن مؤلتتف‪ Emacs‬و مؤستتس مؤسستتة البمجتتات الحتترة‪Free Software‬‬
‫‪ ..(Foundation‬كانت الواجهة لي ‪ SCCS, RCS‬و لحقا اصبحت ‪ CVS‬و الت من ضمنها قام ‪ Emacs‬بتتتوفي‬
‫عمليات “اللمسة‪-‬الواحدة ‪ .”one-touch version control operations‬و الت تطورت من حالة ‪sccs.el‬‬

‫صفحة ‪7‬من أصل ‪25‬‬

‫الكاتدرائية_والسوق‪http://docs.ojuba.org/‬‬
‫مشروع وثائق أعجوبة‬

‫‪ .1‬الكتدرائية والسوق‪/‬البار‬ ‫الكتدرائية والسوق‪/‬البار‬

‫صغي و غي مرنة و الت تمت كتابتها من شخص ما‪ ..‬علما ان التطوير الذي لحتتق ” تعقتتب النستتخ” ‪ VC‬نجتتح علتتى‬
‫عكس ‪ Emacs‬نفسة‪ .‬وشفرة‪ Emacs Lisp‬تاخذة دورة كاملة ابتداء من) اصدار‪ ,‬اختبتتارو تحستتي( استتع بكتتثي‬
‫من ‪.Emacs‬‬
‫قصت مع ‪ Emacs‬ليست فريدة فقد كان هناك عدد من البمجيات التتت تحتتتوي علتتي مستتتويي للهندستتة العماريتتة و‬
‫مستويي من الستخدمي و الت دمجت بي نمط الكتدرائية و نمط السوق‪ ,‬احدى هتتذة البمجيتتات هتتو‪ ,MATLAB‬و‬
‫هو برنامج تجتتاري لتحليتتل العلومتتات و ادوات التصتتور‪ ,‬وبحستتب افتتادة الستتتخدمي التطتتوير والبتكتتار اختتذ بتتالتكون‬
‫في الجزأ الحر من البيئة التطويرية‪ ,‬بحيث يستطيع عدد كبي من الستخدمي التعامل مع البنامج و جزيئاته‪.‬‬

‫‪ .1.6‬الصدار في وقت مبكر ‪ ،‬و الصدار التكرر ‪:‬‬


‫الصدارات التكررة و البكرة هتتي جتتزأ مهتتم متتن استتتاتيجية التطتتوير الخاصتتة بلنكتتس‪ .‬معظتتم الطتتورين بمتتا فيهتتم انتتا‬
‫كنا نعتقد ان هذا مبدأ سي خصوصا للمشاريع الكبيه لسبب وهو ان أغلتتب الصتتدارات الوليتتة تكتتون مليئة بالعطتتال‬
‫‪,,‬و كمطتتور ل ترغتتب بتتأن ترهتتق مستتتخدميك ول تريتتد أن ينفتتذ صتتبهم … عتتزز هتتذا العتقتتاد التتتزام العتتام بنمتتط‬
‫الكتدرائية‪ ,‬و اذا كان الهدف العام هو تقليل عدد العطال قبل عرضها على الستخدمي لتتاذا اذا نصتتدر اصتتدارا محستتنا‬
‫كل ستتت اشتتهر )او اقتتل فتتي بعتتض الحيتتان( و نعمتتل جاهتتدين لتصتتحيح العيتتوب‪.‬؟؟ تتتم استتتخدام نفتتس هتتذا الستتلوب‬
‫لتطوير ‪ ,Emacs C‬على عكس ‪ Lisp library‬الت لم تتبع هذا السلوب‪ ,‬و السبب انه كتتان هنتتاك ارشتتيف‪Lisp‬‬
‫فعال يعمل خارج نطاق )مؤسسة البمجيات الحرة‪ (FSF‬بحيث بامكانك ان تذهب للرشتتيف وتتعامتتل متتع اصتتدار متتا‬
‫بمعزل عن دورة التطوير الخاصة بت‪..Emacs‬‬
‫الهم هنا‪ ,‬ان ارشيف ‪ Emacs Lisp‬الوجود في جامعة اوهايو‪ Ohio State‬توقعوا ان له الكثي من آليات العمل‬
‫والخصائص الوجودة في ارشيف لنكتتس الكتتبي‪ .‬و البعتتض منتتا فكتتر فتتي هتتذا او فتتي وجتتود مثتتل هتتذا الرشتتيف و التتى‬
‫ماذا يؤدي من مشاكل لؤسسة البمجيات الحرة‪ FSF‬و الت اتبعت النمتتط الكتتتدرائي‪ .‬و قتتد كنتتت قتتد حتتاولت ذات متترة‬
‫عام ‪ 1992‬ان ادمج بي ما اصدار جامعة اوهايو مع اصدار ‪ Emacs‬الرستتمي‪ ,‬و لكتتن اصتتطدمت بمشتتاكل سياستتية و‬
‫لم اوفق في ذلك‪..‬‬
‫بعد مرور سنة تقريبا‪ ,‬بعد ان ذاع صيت لنكس ‪ ,‬كان من الواضح ان شي مختلف وأضتتح يحتتدث فتتي بيئة لنكتتس‪.‬فقتتد‬
‫كتتان نمتتط التتبيئة التطويريتتة القتحتتة متتن لنتتوس علتتى عكتتس نمتتط الكتدرائيتتة‪.‬اصتتبح ارشتتيف لنكتتس علتتى النتتتنت‬
‫بمختلف اصداراته يستقبل سيل من التحديثات و الضافات‪ .‬و كل هذا كان بقيادة نظام اصدار لم يسمع عنه من قبل‪.‬‬
‫وكان لنوس يعامل مستخدميه ذوو الكفاءة العالية كشكاء للتطوير‪.‬‬
‫‪-7‬الفراج البكر‪ ,‬الفراج التتابع والستماع الى العملء‪:‬‬
‫النمط الذي اتبعه لنوس للتطوير لم يكن في تعجيل اعادة الصدار فقط لدراج ملحظات الستتتخدمي ) هتتذا كتتان متتن‬
‫نمط عالم يونكس ‪ Unix‬منذ فتة طويلة( بل لرفع مستوى الكثافة لتتساوى مع مستوى التعقيتتد فيمتتا كتتان يطتتور‪ .‬فتتي‬
‫بدايات لنكتتس )عتتام ‪ (1991‬كتتان متتن التعتتارف عليتته ان يقتتوم لينتتوس بتعتتدد الصتتدارات للنكتتس‪ ,‬بتتل كتتان اعتياديتتا ان‬
‫يصدر لينوس اكث من مرة في اليوم الواحد‪ ,‬و لسبب مهم وهو انه استفاد اقص استتتفادة متتن مستتتخدميه )شتتكاء فتتي‬
‫التطوير( و اقص استفادة من النتنت للعمل الجماعي التكافلي ‪ ,,‬و لكن كيف عمل هتتذا؟ و هتتل متتن المكتتن ان يستتتمر‬
‫باتباع نفس السلوب‪ ,‬او هل اعتمد كل هتتذا علتتى عبقريتتة لينتتوس ترافلتتدس؟ ل اعتقتتد باعتبتتار ان لينتتوس هتتو مختتتق‬
‫‪ hacker‬ممتاز‪ ,‬كان من المكن ان يبتكر نظام تشغيل متكامل يصلح للستخدام في العالم الحقيقي متتن الصتتفر؟‪ ,,,‬و‬
‫لكن لنكس لم يقدم ابتكارات هندسية تعتب قفزة نوعية‪ ,‬و لنوس لم يصبح بعد مبتكتتر عبقتتري فتتي هندستتة التصتتميم‪..‬‬
‫مثل ) ريتشد ستالن ‪ Richard Stallman‬او جيمس قوسلنق ‪ James Gosling‬ا )‪(of NeWS and Java‬‬
‫(‪ ,,‬ولكن كما يبدو لي لينوس هو عبقري في الهندسة و التطتتبيق‪ ,‬متتع حتتدس قتتوي لتجنتتب العيتتوب و الطتترق الستتدودة‬
‫في التطوير‪ ,‬اضف الى ذلك امكانياته المتازة لتصميم خارطة الطريق بشكل اكتتث فعاليتتة و بشتتكل يعكتتس مبتتاديء و‬
‫نمط التطوير الذي مر بها‪..‬‬

‫صفحة ‪8‬من أصل ‪25‬‬

‫الكاتدرائية_والسوق‪http://docs.ojuba.org/‬‬
‫مشروع وثائق أعجوبة‬
‫‪ .1‬الكتدرائية والسوق‪/‬البار‬ ‫الكتدرائية والسوق‪/‬البار‬

‫اذا َ كان الصدار التكرر و استخدام النتنت كاداة للتكافل و العمتتل الجمتتاعي لتتم يكتتن بمحتتض الصتتدفة بتتل كتتان وليتتدا‬
‫لعبقرية لينوس فقد اتخذ اقل السارات جهتتدا‪ ,‬اذا متتا هتتي الفتتائدة القصتتوى التتت عظمهتتا لينتتوس‪ ,‬ومتتاذا كتتان يفعتتل علتتى‬
‫حاستتوبه؟؟؟‪ .‬الستتؤال يجيتتب علتتى نفستته‪ .‬لينتتوس كتتان دائمتتا و بشتتكل مستتتمر يحفتتز و يكتتافئ مستتتخدميه و مطتتوريه‬
‫باستتتخدام الرض ت عتتن النفتتس و فتتتح بتتاب الشتتاركة لتتن اراد ان يقتتدم شتتيا‪ ,‬و يكتتافيء ايضتتا بتقتتديم تحستتينات علتتي‬
‫العمال القدمة ‪ .‬لينوس كان يعمل جاهتتدا لزيتتادة عتتدد الستتاعات و عتتددا لشتتخاص اللتتذين يقومتتون بعمليتتة التنقيتتح و‬
‫التطوير‪ ,‬حت على حساب عدم الستقرار في الشفرة الصتتدرية و استتتهلك الستتتخدمي فتتي حالتتة ظهتتور عطتتل جتتدي‪.‬‬
‫كان لينوس يتصف كما لو كان يؤمن بي‪..‬‬
‫‪ -8‬اذا كان عندك قاعدة مستخدمي و مطورين كبية‪ ,‬اذن كل مشكلة سيتم تحديدها و تصتتنيفها بشتتكل ستتيع‪ ,‬عنتتدها‬
‫ستتوف يكتتون الحتتل بتتديهيا وستتهل‪.‬او تصتتبح الشتتاكل اقتتل اذا تتتوفر العتتدد الكتتافي متتن الطلعي ت علتتى جميتتع العطتتال‬
‫الضحلة‪.‬‬
‫القاعتتدة الساستتية لتتي هتتي “انتته اي مشتتكلة موجتتوده لهتتا حتتل عنتتد شتتخص متتا” ولكتتن لينتتوس يعتتتض و يقتتول ان‬
‫الشخص الذي يفهم و يصلح الشتتكلة ليتتس بالضتتورة بتتل و ليتتس غالبتتا ان يكتتون هتتو نفستته الشتتخص التتذي يكتشتتف‬
‫الشكلة‪ .‬و يقول انه عادة “شخص ما يكتشف الشكلة” و شخص اختتر يفهتتم الشتتكلة”‪ ..‬و ستتوف اضتتيف اضتتافة هنتتا‬
‫واقول “ان اكتشاف الشكلة هو العمل الصعب” مع العلم ان تصليح العطتتل مهتتم ايضتتا‪ .‬و ستتنى فتتي الفصتتل القتتادم‪,‬‬
‫عندما نحلل التنقيح بشكل مكثف‪ ,‬و لكن الهم هنا لي ان اكتشاف الشكلة و حلها تكون بشكل متتابع‪..‬‬
‫في قانون لينوس يكمن الفتترق الحقيقتتي بيت النمتتط الكتتتدرائي و نمتتط الستتوق‪ ..‬ففتتي البنتتاء نستتتخدم النمتتط الكتتتدرائي‬
‫فتكون عملية ا التطوير معقدة‪ ,‬متخفية و عادة متتا تأختتذ وقتتتا و هتتي تحتتت الفحتتص بواستتطة حفنتتة متتن الطتتورين‪ .‬لتتذا‬
‫تأخذ هذه البمجيات وقت طويل لظهور الصدارات الجديدة‪ ,‬و غالبتتا متتا نصتتاب بخيبتتة امتتل عنتتد وجتتود علتتل فتتي هتتذة‬
‫الصتتدارات خصوصتتا بعتتد طتتول انتظتتار… وفتتي القابتتل باتبتتاع نمتتط الستتوق )التتبار( للبنتتاء‪ ,‬متتن الفتتتض ان العلتتل‬
‫بشتتكل عتتام تكتتون ضتتحلة او علتتى القتتل ستتوف تصتتبح مشتتاكل ضتتحلة قريبتتا خصوصتتا عنتتد التعتترض للف متتن‬
‫الستخدمي )شكاء التطتتوير( اللتتذين يتلهفتتون للطلع علتتى اي اصتتدار جديتتد‪ .‬وفًقتتا لتتذلك انتتت تصتتدر بشتتكل مستتتمر‬
‫لتعالج اكب قدر من العلل‪ .‬و هذا كتتل شتت‪ .‬و اذا كتتان “قتتانون لينتتوس” ختتاطيء اذا َ مشتتوع معقتتد مثتتل نتتواة لنكتتس‬
‫‪ ,Linux kernel‬قتتام بالعمتتل عليتته مجموعتتة كتتبية جتتدا متتن الطتتورين كتتان لبتتد ان يتهتتدم متتن كتتث التعتتديلت و‬
‫الضافات من ايادي مختلفة ‪ .‬و لكن هذا يفس قلة العلتتل فتتي نضتتام لنكتتس و صتتموده للعمتتل لفتتتات طويلتتة اشتتهر و‬
‫احيانا سنوات‪.‬‬
‫و ليتتس متتن الفتتتض ان نستتتغرب ذلتتك‪ .‬فعلمتتاء الجتمتتاع اكتشتتفوا منتتذ ستتنوات عديتتدة ان متوستتط وجهتتات النظتتر‬
‫لجموعة من الخباء )او نفس العتتدد لغي ت الختتباء( يعطتتي نتيجتتة موثوقتتة متتن وجهتتة نظتتر شتتخص واحتتد تتتم اختيتتاره‬
‫بشكل عشوائي من اي متتن الجوعتتتي‪ .‬هتتذا يستتمي مبتتدأ دلفتتي ‪ .Delphi effect‬ويبتتدوا ان لينتتوس قتتد اثبتتت ان هتتذا‬
‫ممكن حت على تنقيح نظام تشغيل ‪ ..‬و احدة من اهتتم خصتتائص لنكتتس و التتت قتتد تكتتون ستتاعدت علتتى تحقيتتق مبتتدأ‬
‫دلفي هو ان اختيتتار الستتتخدمي لي جزئيتتة او فتترع متتن نتتواة لنكتتس هتتو اختيتتار ذاتتتي‪ .‬و قتتد صتتح شتتخص متتا فتتي‬
‫الاض على هذا بحيث علق قائل” )ان الساهمات و الشاركات ل تأتي من مجموعة من الستخدمي تم اختياهم بشكل‬
‫عشوائي بل من مجموعة من الستخدمي لهم اهتمام باستخدام نفتتس النظتتام‪ ,‬بحيتتث يتعلمتتون كيتتف يعمتتل‪ ,‬و يحتتاولون‬
‫ان يجدوا حل لي علة يواجهونها‪ ,‬و في الواقع ينتجتتون حلتتول جيتتدة( غالبتا َ كتتل متتن يعتتب هتتذه الرشتتحات يكتتون لتتديه‬
‫ش جيد ليساهم به‪ .‬ويمكن اعتتادة صتتياغة قتتانون لينتتوس اللتتذي يقتتول ان “التنقيتتح عمليتتة تتتتم بتتالتوازي” علمتتا بتتان‬
‫النقحون يحتاجون مطور للتواصل والتنسيق معه‪ ,‬و لكن النقحون ليحتاجون الى لتنستتيق بستتيط فيمتتا بينهتتم‪ .‬و هتتذا‬
‫يقلتتل متتن العراقيتتل للتنستتيق مثلمتتا يحتتدث متتع الطتتورين‪ ..‬وعنتتد التجربتتة‪ ,‬التصتتور النظتتري لفقتتدان الجتتودة نظتترا‬
‫للزدواجية في العمل من قبتتل النقحيت لتكتتون مشتتكلة او قضتتية فتتي عتتالم لنكتتس‪ ,‬ولكتتن قتتد يكتتون ناتتتج عتتن سياستتة‬
‫“صدرمبكرا و صدر بالتوالي” والت بدورها تساعد على تقليص الخطاء بشكل متتابع‪..‬‬
‫بروكس ‪ Brooks‬مؤلتتف كتتتاب )‪ (The Mythical Man-Month‬ستتجل مشتتاهدة لهتتا علقتتة بهتتذا “جملتتة تكلفتتة‬

‫صفحة ‪9‬من أصل ‪25‬‬

‫الكاتدرائية_والسوق‪http://docs.ojuba.org/‬‬
‫مشروع وثائق أعجوبة‬

‫‪ .1‬الكتدرائية والسوق‪/‬البار‬ ‫الكتدرائية والسوق‪/‬البار‬

‫صيانة برنامج تقدر بت ‪ %40‬او اكتتث متتن تكلفتتة تطتتوير برنامتتج‪ .‬للعلتتم هتتذة التكلفتتة مربوطتتة بشتتكل مباشت متتع عتتدد‬
‫الستخدمي “كلما زاد عدد الستخدمي زاد اكتشاف العلل ‪ ”More users find more bugs‬و هذا بكل بساطة‬
‫يرجع الى ان كل شخص يستخدم البنامتتج بطريقتتة مختلفتتة نستتبيا عتتن غيتته‪ ,‬ويقتتوم بتحديتتد العلتتل بطريقتتة تختلتتف‬
‫ايضا عن غيه و تختلف الدوات من مستخدم لخر‪ .‬و هذا البدأ يعظم عندما يكتتون الستتتخدم شتتيك فتتي التطتتوير‪ ,‬و‬
‫يبدو ان مبدأ دلفي “‪ ”Delphi effect‬يعمل هنا بكفائة عالية بسبب هذا الختلف و بشتتكل ادق فيمتتا يختتص آليتتة‬
‫التنقيح‪ ..‬ولذلك الختلفات بيت الستتتخدمي تنقتتص متتن الزدواجيتتة فتتي العمتتل‪ .‬اذا اضتتافة مستتتخدمي لكتتي يختتتبوا‬
‫الصدارات الولية قد ل يزيل التعقيدات خصوصتتا لتحديتتد العلتتل العميقتتة “متتن وجهتتة نظتتر الطتتور” ولكتتن هتتذا يزيتتد‬
‫الحتمالت ان احدى النقحي ستتوف يستتتخدم الدوات التتت تتتبي ان هتتذة العلتتة ضتتحلة‪ .‬وفتتي حالتتة وجتتود علتتل مهمتتة‪,‬‬
‫‪ ”stable‬لثبتتوته او‬ ‫اصدارات نواة لنكس تكون مرقمة بطريقة تساعد الستخدمي على اختيار امتتا الصتتدار الستتابق “‬
‫الصدار الحديث مع العلم انه يحتوي على بعض العلل ‪ .,,‬هذا النهج لم توضتتع لتته آليتتة متتن قبتتل مطتتورين لنكتتس‪ ,‬متتن‬
‫الفتض ان يكون له آلية متبعة‪ ,‬ولكن الطريقتي متاحتي لتفيان باحتياجات الستخدم الختلفة‪.‬‬

‫‪ .1.7‬ما هو عدد الطلعي‪ ,‬و ما هي تعقيدات تكوين الفريق؟ ‪:‬‬


‫من السهل استيعاب كيف يقوم نمط السوق “البتتازار” بتستتارع عمليتتة اكتشتتاف العلتتل و تحليتتل الشتتفرة و لكتتن لنفهتتم‬
‫بالتحديد كيف يحدث هذا و لاذا يحدث على الستوي الدقيق اي ” على الستوى الجزئي” و الذي يحدث بشتتكل يتتومي‬
‫لتصف الطور و الختب‪ .‬في هذا الفصل )كتتتب بعتتد ثلث ستتنوات متتن اصتتدار الوثيقتتة الصتتلية‪ ,‬باستتتخدام متتداخلت‬
‫‪.1‬‬
‫الساسية‬ ‫من الطورين الذين قرأو الوثيقة و حاولو مراقبة تصفاتهم( سوف نلقي نظرة تفحصية على الليات‬
‫احدي اهم الفاتيح لفهم هتتذا هتتو استتتيعاب لتتاذ يكتتون نتتوع العلتتل مقتتدم متتن مستتتخدمي ل يتتدركون الشتتفرة الصتتدرية؟‬
‫عادة ردود فعتتل الستتتخدمي ل تكتتون علتتى درجتتة عاليتتة متتن الفتتائدة‪ ,‬فالستتتخدمي التتذين ليتتدركون الشتتفرة الصتتدرية‬
‫يقدمون تقارير سطحية عن العلل فهم يهمشون البيئة‪ ,‬لذلك هم‬
‫‪ -1‬يهملون معلومات و خليفيات على درجة عالية من الهمية‪ -2‬نادرا ما يصدرون معلومة وافية للبلغ عن علة‬
‫الشكلة هنا هي سواء التنسيق بي عقلية الختب و عقلية الطور فيما يخص البنامج‪ ,‬الختب ينظر متتن الختتارج التتى‬
‫الداخل و الطور ينظر من الداخل الى الخارج‪.‬ولكن في بيئة التطوير الغلقة الطتتور و الختتتب عتتالقي فتتي ادوارهتتم‪ ,‬و‬
‫عادة مايكون التواصل ليس على نفس الستوى مما يتتؤدي التتى الحبتتاط العميتتق‪ .‬بيئة الصتتادر الحتترة عتتادة متتا تكس ت‬
‫هتتذا القيتتد‪ ,‬بجعتتل الجتتراء ابستتط بكتتثي للمختتتب و الطتتور للوصتتول التتى صتتورة موحتتدة للشتتفرة الصتتدرية و آليتتة‬
‫التخاطب بشكل عملي‪ ,‬ولكن من وجهة نظر الطورين هناك فرق شاستتع بي ت البلغ عتتن علتتة ظتتاهرة للعيتتان و بشتتكل‬
‫سطحي و بي البلغ عن علة مرتبطة بشكل مباش بالتصور الذهن للشفرة الصدرية‪.‬‬
‫و معظم العلل في أغلب الوقات يسهل اصتتطيادها‪ ,‬حتتت العلتتة الغيت مكتملتتة تكتتون مؤشت لعلتتل اختترى موجتتودة علتتى‬
‫مستوى الشفرة الصدرية‪ .‬ونلحظ انه عنتتدما يقتتوم مختتتب لتتديك بتحديتتد علتتة “يوجتتد علتتة فتتي الستتطر رقتتم كتتذا” او‬
‫حت ” تحتتت الظتتروف س و ص و ل هتتذا التغيت يظهتتر خطتتأ” عنتتدها نظتترة ستتيعة علتتى الشتتفرة الصتتدرية تقتتوم‬
‫بتحديد الشكلة و بالتالي يتم توليد الصلح‪ .‬لهذا معرفتتة الشتتفرة الصتتدرية مهمتتة لجميتتع الطتتراف و تزيتتد متتن كفتتائة‬
‫التواصتتل و التنتتاغم بي ت تقريتتر الختتتب و معرفتتة الطتتور الرئيستت‪ .‬ممتتا يعن ت ان وقتتت الطتتور يتتتم استتتثماره بأفضتتل‬
‫طريقة ممكنة حت مع وجود اعمال تكافلية كثية‪.‬‬
‫وهنتتاك ميتتة “نمتتط الصتتادر الحتترة” و التتت تحتتافظ علتتى التتوقت ال و هتتي “هيكلتتة التواصتتل فتتي الشتتاريع الحتترة‬
‫الصدرية النموذجية” و فيما ستتبق استتتخدمت كلمتتة “الطتتور الرئيست” و هتتذا يتتدل علتتى فتترق بيت الطتتور الرئيست‬
‫)عتتادة متتا يكتتون العتتدد صتتغي‪ ,‬و احتتد التتى ثلثتتة و هتتو العتتدد التتدارج( و بي ت بقيتتة افتتراد الشتتوع متتن مختتتبين و‬
‫متطوعي )وغالبا ما يكون الشاركي اعدادهم بالأت(‪.‬‬

‫‪ 1‬القراء الغي تقنيي يمكنهم القفز الى الفصل التالي‬

‫صفحة ‪10‬من أصل ‪25‬‬

‫الكاتدرائية_والسوق‪http://docs.ojuba.org/‬‬
‫مشروع وثائق أعجوبة‬
‫‪ .1‬الكتدرائية والسوق‪/‬البار‬ ‫الكتدرائية والسوق‪/‬البار‬

‫‪” Brook's Law‬‬ ‫الشكلة الزلية هي ان النشآت الت تستخدم البيئة التقليدية لتطوير البامج يكررون قانون بروك‬
‫اللذي ينص على ان اضافة مبمجي التتى مشتتوع متتا فتتي وقتتت متتتأخر يزيتتد متتن متتدة التطتتوير و بشتتكل اكتتث عموميتتة‬
‫قانون بروك ‪ Brook's Law‬يتنبأ بأن تكلفة التعقيدات و التواصل لشوع متتا ترتفتتع بمقتتدار مربتتع عتتدد الطتتورين‪,‬‬
‫بينما يزيد مقدار العمل النجز بشكل خطي فقط و قانون بروك‪ Brooks's Law‬مبن على الختتبة‪ .‬ان العلتتل عتتادة‬
‫تنشأ بي نقاط التلقي بي شفرات كتبت من اشخاص مختلفي‪ ,‬و تكلفة التواصل و التنسيق لشتتوع تزيتتد متتع زيتتادة‬
‫عدد الفراد‪ .‬لهذا تتأثر الشاكل بعدد طتترق التواصتتل بيت الطتتورين‪ ,‬لنهتتا تتتوزن بمريتتع عتتدد الطتتورين )بشتتكل دقيتتق ‪:‬‬
‫تبعا للمعادلة ‪ N*(N - 1)/2‬بحيث ‪ N‬هي عدد الطورين(‬
‫ونستعرض هنا )تحليل قانون بروك‪ ( Brooks's Law‬النتيجة الرعبتتة متتن وجتتود عتتدد كتتبي متتن الطتتورين يعتمتتد‬
‫علتتى الستتتنتاج الخفتتي ‪ :‬ان هيكلتتة التواصتتل للمشتتوع لبتتد ان تكتتون صتتورة كاملتتة‪ ,‬و هتتي التواصتتل بيتت الفتتراد‬
‫والجماعات بحيث كل شخص يتحدث للجميع او الجميع يتحدث للجميع‪ .‬و لكن فتتي مشتتاريع الصتتادر الحتترة‪ ,‬مجموعتتة‬
‫الطورين يعملون على مستويات متوازية و مختلفة و نتتادرا متتا يتفتتاعلون متتع بعضتتهم البعتتض‪ ,‬و التغيتتات التتت تطتترأ‬
‫على الشفرة و تقارير العلل تتدفق من خلل الفريق او الشخص الؤسس والتتذي عتتادة متتا يشتتكل مجموعتتة صتتغيه متتن‬
‫الناس‪ ,‬بحيث يكون قانون بروك‪ Brooks's Law‬فعال على هذة الجموعة الصتتغيه ستتواء كتتان”فريتتق التاستتيس”‬
‫او الؤسس‪.‬‬
‫يوجد هناك اسباب اخري تفس لاذا تكون تقارير العلل و الت على مستتتوي الشتتفرة الصتتدرية فعالتتة جتتدا؟ ذلتتك لنهتتا‬
‫تتمحور حول حقيقة أن وجود خطأ واحد في كثي من الحيان يكون له عدة أعتتراض تظهتتر بشتتكل مختلتتف حستتب بيئة‬
‫و استخدام الستخدم‪ ..‬مثل هذه العلل “العقدة و الاكرة ” و الت يصتتعب اصتتطيادها و اكتشتتافها بتتالطرق التقليديتتة‪,‬‬
‫والتتت بتتدورها تلعتتب دورا مهمتتا فتتي توليتتد علتتل اختترى مستتتقبلية‪ .‬الختتتب التتذي يرستتل تقريتتر عتتن علتتة محتتددة علتتى‬
‫مستوى الشفرة الصدرية و الت تحتوي على ظواهر عدة )مثل ‪ :‬يبدو لي ان هناك نافتتذة فتتي معالجتتة الشتتارة بتتالقرب‬
‫من سطر ‪ (1250‬يمكن ان تعطي الطور فكرة اوضح‪ ,‬على عكس لو كان هناك عش تقتتارير عتتن علتتل نتجتتت متتن نفتتس‬
‫هذه العلة‪ .‬و في مواقف مثل هذا قد يكون صعبا او حت مستحيل ان نعرف اي من الظواهر نتج عن علتتة بحتتد ذاتهتتا‪-.‬‬
‫و لكتتن متتع الصتتدارات التكتتررة ل يهتتم ان نعتترف‪ .‬و هنتتاك متعتتاونون اختترون علتتى الشتتع ستتوف يكتشتتفون اذا حلتتت‬
‫الشكلة ام ل‪ .‬وفلتتي اغلتتب الحيتتان التقتتارير علتتى مستتتوي الشتتفرة الصتتدرة ستتوف تستتقط هتتذه العلتتة‪ . .‬العلتتل العقتتدة‬
‫تحتوي على عدد من الظواهر و غالبا يكون لها اكث من طريقتتة للتعقتتب متتن الشتتكلة الظتتاهرة التتى العلتتة نفستتها‪ .‬و أي‬
‫مطور يتم اختياره لتعقب العلة يعتمد على البيئة التتت يعمتتل بهتتا‪ ,‬و قتتد تتغيت متتع التتوقت بشتتكل غيت ملحتتوظ‪ ,‬و فتتي‬
‫القابل كتتل مطتتور و مختتتب يعتتاينون مجموعتتة عشتتوائية متتن البنامتتج للبحتتث عتتن مستتببات العلتته‪ .‬وكلمتتا كتتانت العلتتة‬
‫معقتتدة كلمتتا قتتل ضتتمان الختتبات لكتشتتاف العلتتة متتن العينتتة النتقتتاة‪ .‬و لكتتي نصتتدر تقتتارير العلتتل بستتهولة‪ ,‬لبتتد متتن‬
‫العتماد على “الجزئية” بدل من “العشوائية” مع العلم ان خبات استنتاج العلل و العلقة مع الشفرة الصدرية لهتتا‬
‫اهمية كبية جدا‪ .‬و لكن العلل العقدة تكتشف باستخدام مبدأ البحث “العشتتوائي” و تحتتت هتتذه الظتتروف يتتزداد عتتدد‬
‫الناس الذين يعاينون البنامج وبالتتتالي ستتوف يكتتون اكتتث فتتائدة متتن ان يقتتوم عتتدد قليتتل متتن النتتاس بالعاينتتة بشتتكل‬
‫“جزئي” حت لو كانت مهارات القلية اعلى‪ .‬و هذا التاثي يصبح اكب خصوصا عند وجود صعوبة في تتبع السار‬
‫لستتتويات مختلفتتة وقتتد يكتتون بستتبب عتتوارض متعتتددة وربطهتتا بعلتتة معينتتة متتع العلتتم انتته متتن الصتتعوبة النظتتر التتى‬
‫العارضة و استنتاج العلتتة‪ .‬و الطتتور يعتتي ان هتتذه الستتارات غالبتتا ستتوف تأختتذ الستتار الكتتث صتتعوبة لتعقتتب العلتتة‬
‫خصوصا في اول محاولة‪ .‬و في القابل لنفتتتض ان عتتدد متتن النتتاس يحتتاولون تعقتتب مستتارات مختلفتتة لعلتتة متتا و فتتي‬
‫نفس الوقت الطور يصدر باستمرار‪ .‬اذا َ هناك احتمتتال كتتبي ان احتتد الختتتبين ستتوف يجتتد استتهل مستتار لحتتل العلتتة و‬
‫يتم اصلحها بأقص و قت ممكن‪ .‬و متتدير الشتتوع هتتو الستتؤول عتتن ذلتتك بحيتتث يختتبهم بتتأن الشتتكلة حلتتت لكتتي ل‬
‫يهدر وقتهم‪ ,‬ثم يقوم بعملية الرقع و يصدر النسخة العدلة‪.‬‬

‫‪ .1.8‬مت يكون ورد الجوري ليس وردا جوريا ‪:‬‬


‫بعد ان درست تصفات لينوس و كونت نظرية عن نجاح مبدأه‪ ,‬قتتررت ان اقتتوم و بشتتكل واعتتي باختبتتار هتتذه النظريتتة‬

‫صفحة ‪11‬من أصل ‪25‬‬

‫الكاتدرائية_والسوق‪http://docs.ojuba.org/‬‬
‫مشروع وثائق أعجوبة‬

‫‪ .1‬الكتدرائية والسوق‪/‬البار‬ ‫الكتدرائية والسوق‪/‬البار‬

‫)باختيار مشوع اقل تعقيدا مما كان يعمل عليه لينوس( فأول شتتء قمتتت بعملتته هتتو تنستتيق و تبستتيط‪popclient‬‬
‫كثيا‪ .‬على الرغم من ان التطبيق الذي و ضعه‪ Carl Harris's‬كان جيد جدا‪ ,‬و لكن كان به نوع متتن التعقيتتد‪ ,‬وهتتذا‬
‫شء اعتيادي خصوصا بي مبمجي لغة الس‪ C‬فقد تعامل ‪ carl‬متتع الشتتفرة الصتتدرية علتتى استتاس انهتتا هتتي قلتتب‬
‫النظام و جعل تنسيق وتركيب العلومتتات داعتتم للشتتفرة‪ .‬ممتتا نتتتج عنتته ان الشتتفرة الصتتدرية نستتقت بعنايتتة شتتديدة و‬
‫لكن تنسيق وتركيب العلومات كان اعتباطيا وغي منسق )على القل من وجهتتة نظتتري(‪ .‬فقتتد كتتان لتتدي مغتتزى اختتر متتن‬
‫اعادة كتابة الشفرة و تنسيق وتركيتتب العلومتتات‪ ,‬ال وهتتو ان اقتتوم بفهتتم و استتتيعاب صتتياغة الشتتفرة وعمتتل البنامتتج‬
‫ككل‪ ,‬لنه ليس من النطق ان اقوم باصلح علل في برنامج ل افهمه جيدا‬
‫ففي الشهر الول او نحوه كنت ببساطة اتبع تنسيق و تصميم ‪ Carl's‬البسيط‪.‬وكتتان اول تغي ت اساست قمتتت بتته هتتو‬
‫اضافة دعم ‪ .IMAP‬وقمت بعمل هذا عتتن طريتتق اعتتادة تنستتيق التتبتوكولت فتتي ستتواقة عامتتة و ثلث جتتداول منهجيتتة‬
‫)لي ‪ POP2,POP3‬و ‪ ( IAMP‬واكون في هذا التغيي و التغيي السابق عللتتت مبتتدأ عتتام جيتتد للمتتبمجي خصوصتتا‬
‫عند استخدام لغة البمجة ‪ C‬لتقم بت ‪(don't naturally do dynamic typing‬‬
‫‪-9‬ان تنسيق و تركيب العلومات بشكل ذكي في شفرة مصدرية ضعيفة ينتج عنه عمل جيد و العكس غي صحيح‪.‬‬
‫متتن كتتتاب ‪ Brooks‬الفصتتل ‪ 9‬ارنتتي الرستتم البيتتاني و الغتتي جتتداولك و انتتا ستتوف استتتمر فتتي حالتتة الحيتتة‪ ,‬او ارنتتي‬
‫جداولك و انا عادة لن احتاج الى رسمك البياني‪ ,‬ذلك بدهيا”‪ ,‬السماح بعد ثلثي ستتنة متتن تغيت الصتتطلحات الفنيتتة‬
‫و الثقافية هذا يؤدي الى نفس الش‪.‬‬
‫الي هنا )اوائل سبتمب ‪ ,1996‬بعد حوالي ست اسابيع من نقطة النطلق( بدات افكر انة لبد من تغي استتم البنامتتج‪,‬‬
‫فمن الواضح ان البنامج الن ليس عميتتل‪ POP‬فقتتط‪ ,‬و لكنت تتترددت لستتبب انتتة ليوجتتد تعتتديل جتتذري و جديتتد فتتي‬
‫التصميم‪ .‬نسخت من ‪ popclient‬كان لبد ان تنمي شخصية خاصة بها‪.‬‬
‫الذي تغي جذريا عندما تطور ‪ popclient‬لتمرير البيد الجلوب الى منفذ‪ ) SMTP‬سوف اتكلتتم عتتن هتتذا لحقتتا( و‬
‫لكن اول ‪ :‬انا قلت سابقا انن قررت ان استخدم هذا الشوع لختبار نظريتتت عتتن العمتتل التتذي قتتام بتته لينتتوس‪ .‬يمكنتتك‬
‫ان تسأل كيف فعلت هذا؟ باستخدام هذه الطرق‪:‬‬
‫‪ -‬الصدار في وقت مبكر ‪ ،‬و الصدار التكرر )تقريبا في كثي من الحيان أقل من عشتتة أيتتام ‪ ،‬خلل فتتتات التطتتوير‬
‫الكثفة ‪ ،‬مرة واحدة في اليوم(‪ - .‬تنمية قائمة النشأت البدئية )‪ (Beta‬عن طريق إضافة كل متتن اتصتتل بتتي بخصتتوص‬
‫‪ - .fetchmail‬أرستتلت إعلنتتات إلتتى القائمتتة البدئيتتة )‪ (Beta‬كلمتتا تتتم تحستتي متتا ‪ ،‬وقمتتت بتشتتجيع النتتاس علتتى‬
‫الشاركة‪- .‬و استتتمعت إلتتى قاعتتدة الستتتخدمي ‪،‬و القتتتاع بينهتتم بخصتتوص قتترارات التصتتميم ومكتتافئتهم معنويتتا كلمتتا‬
‫أرسل احدهم رقعة او ردود‪.‬‬
‫الفائدة من هذا العمل البسيط نتجت عنه فائدة فورا‪ .‬فمنذ بداية الشوع وصلن تبليغ عتتن علتتل علتتى درجتتة عاليتتة متتن‬
‫الحرفيتتة متتع حلتتول مرفقتتة‪ .‬ووصتتلتن انتقتتادات بنتتائه‪ ,‬وايضتتا وصتتلن بريتتد متتن العجتتبي‪ ,‬و اقتاحتتات ممتتتازة عتتن‬
‫اضافة خصائص ما مما ادى الى‪:‬‬
‫‪ .10‬اذا عاملك مستخدميك عل اساس انهم اهم مورد لديك‪ ,‬سوف يستجيبون ليصبحوا فعل اهم مورد لديك‬
‫احدى المور الثية للنتباه في قياس العمال لنجاح ‪ fetchmail's‬هو الحجم الكبي لقائمة الشتكي في الصدار‬
‫الولي ) ‪ (beta list‬اصدقاء ‪ fetchmail's‬في ذالك الوقت )و قتتت مراجعتتة هتتذه الوثيقتتة نوفمتتب‪ (2000‬كتتان عتتدد‬
‫الشتكي في القائمة ‪ 287‬عضوا‪ ,‬و كنا نضيف اثني او ثلثة كل اسبوع‪ .‬في الواقع عندما راجعت قائمتتة العضتتاء فتتي‬
‫متتايو ‪ 1997‬و جتتدت ان القائمتتة بتتدت تفقتتد اعضتتاء كتتث)كتتان هنتتا ‪ 300‬عضتتوا علتتى القائمتتة( كتتثي متتن الشتتتكي قتتد‬
‫راسلوني لكي ازيتتل استتمائهم متتن القائمتتة بستتبب ان‪ fetchmail‬كتتان يعمتتل بشتتكل ممتتتاز بالنستتبة لهتتم و لتتم يرغبتتوا‬
‫بالستتتمرار بالبقتتاء علتتى القائمتتة‪ ,‬ربمتتا كتتان هتتذا النمتتو الطتتبيعي لتتدورة الحيتتاة للمشتتوع فتتي نظتتام الستتوق )بتتزار(‬
‫الناضج‪.‬‬

‫صفحة ‪12‬من أصل ‪25‬‬

‫الكاتدرائية_والسوق‪http://docs.ojuba.org/‬‬
‫مشروع وثائق أعجوبة‬
‫‪ .1‬الكتدرائية والسوق‪/‬البار‬ ‫الكتدرائية والسوق‪/‬البار‬

‫‪ Popclient .1.9‬يصبح ‪: Fetchmail‬‬


‫نقطة التحول الرئيسية في حياة الشوع كانت عندما ارسل‪ Harry Hochheiser‬الشتتفرة الصتتدرية لعبتتور البيتتد‬
‫الى جهاز العميل باستخدام منفذ الت ‪ .SMTP‬ادركت حينها ان تطبيق هذه الخاصية سوف تجعل جميتتع استتاليب تنفيتتذ‬
‫البيد الخرى الوجودة في وقته بالية‪ .‬كنت اعمتتل لعتتدة استتابيع لتصتتحيح علتتل بتت‪ fetchmail‬بشتتكل تزايتتدي كنتتت‬
‫احس ان واجهة البنامج تحتتتاج التتى تحستتينات‪ ,‬متتع العلتتم انهتتا كنتتت تعمتتل بشتتكل جيتتد و لكتتن كتتانت ركيكتتة‪ ,‬و غيت‬
‫منظمة‪ ,‬و خاصية رمي البيد الجلوب التتى ملتتف صتتندوق البيتتد )‪ (mailbox file‬او اي مختترج اساست ازعجتنت‬
‫جدا‪ ,‬و لكن لم استطع ان اجد لها لحل‪.‬‬
‫) اذا كنت لتهتم لتقنية البيد اللكتوني بامكانك ان تتجاوز الفقرتي التاليتي(‬
‫عندما فكتترت فتتي تعتتبي ‪ SMTP‬رأيتتت ان ) ‪ (popclient‬كتتان يحتتاول ان يقتتوم باعمتتال كتتثيه‪ .‬كتتان مصتتمما علتتى ان‬
‫يقتتوم بمهمتتات كتتثية‪ ..‬بحيتتث ان يكتتون )‪ (mail transport agent MTA‬و ) ‪local delivery agent‬‬
‫‪ (MDA‬مع خاصية تعبي ‪ ,SMTP‬تمكننا من ان نتخلص متتن ‪ MDA‬ويكتتون البنامتتج ختتالص لتت ت‪ MTA‬لكتتي يعتتب‬
‫البيد الى برامج اخرى حت ترسل محليا مثلما يفعتتل‪ .sendmail‬لتتاذا نرغتتب فتتي ان نتتتدخل فتتي العتتدادات العقتتدة‬
‫لعميل ارسال البيد و نحن نعلم ان النفذ ‪ 25‬سوف يكتتون تقريبتتا موجتتودا فتتي اي بيئة تحتتتوي علتتى دعتتم‪,TCP/IP‬؟؟‬
‫‪,SMTP‬‬ ‫خصوصا عندما نعلم ان البيد الجلوب سوف يكون بكل تأكيد يمثل شكل البيد الطبيعي الصادر متتن الرستتل‬
‫و هذا ما نحن نحتاجه بالضبط‪.‬‬
‫)عودة إلى مستوى أعلى…‪(.‬‬
‫‪ SMTP‬اكتتب‬ ‫حت لو لم تتبع الصطلحات التقنية الت ذكرت انفا‪ ,‬هناك دروس كتتثية هنتتا‪ .‬وكتتانت آليتتة عبتتور البيتتد‬
‫مكافئة تلقيتها من خلل محاولت لتباع نهج لينوس‪ ,‬بحيث قام احدى الستخدمي باعطائي هذه الفكتترة المتتتازةو كتتل‬
‫ماقمت به انا هو فهم النتائج‪.‬‬
‫‪-11‬افضتتل طريقتتة للحصتتول علتتى فكتتره جيتتده بالضتتافة التتى امتلك فطتترة ستتليمة‪ ,‬هتتو ادراك الفكارالجيتتدة متتن‬
‫الستتتخدمي‪,‬و أحيانتتا يكتتون هتتذا هتتو الفضتتل‪ .‬و متتن التتثي للهتمتتام‪ ,‬انتتك اذا كنتتت صتتادقا فتتي اعتافتتك بمتتديونيتك‬
‫للخرين‪,‬سوف تكتشف سيعا ان العالم بأسه ستتوف يعاملتتك علتتى استتاس انتتك انتتت متتن قتتام بحميتتع اعمتتال البتكتتار‬
‫النشودة وانك فقط متواضع بالفطرة وهذا ماحدث مع لينوس‬
‫)عندما القيت اول خطاب بيل ‪ perl‬في مؤتمر عام ‪ 1997‬في شهر اغسطس‪ ,‬كان الختق التمي ت ‪ Larry Wall‬فتتي‬
‫الصتتفوف الولتتى‪ ,‬وعنتتدما وصتتلت التتى الجملتتة الخيتتة التتذكورة اعله نتتادى و بطريقتتة دينيتتة “اختتبهم‪ ,‬اختتبهم يتتا‬
‫أخي” فبدأ الحضور بالضحك‪ .‬لنهم يعلمون ان ما حدث للينوس حدث لبتكر بيل ‪(Perl‬‬
‫بعد عدة اسابيع من تشغيل البنامج‪ ,‬بدأ يصلن نفس الديح الذي تلقاه لينوس ليتتس فقتتط متتن مستتتخدمي البنامتتج‬
‫بل من اناس اخرين عرفوا عتتن البنامتتج بطريقتتة او بتتاخري‪ .‬و أخفيتتت بعتتض متتن هتتذه الرستتائل لكتتي اطلتتع عليهتتا لتتو‬
‫سئلت نفس بيوم من اليام ان كنت قد انجزت شء في حياتي ام ل؟ و لكن يوجد هناك اكتتث متتن فتتائدتي متتن الفتتوائد‬
‫الجوهرية الغي سياسية والت من المكن ان نتعلمها ولها علقة بجميع انواع التصاميم‪.‬‬
‫‪ .12‬في كثي من الحيان تكون الحلول البتكرة الت تبعث على الدهشتتة و تكتتون اكتتث لفتتتا للنتبتتاه تتتأتي متتن ادراكتتك‬
‫ان تحليل الشكلة كان خاطيء‪.‬‬
‫للسعي في حل مشكلة عن طريق تطتتوير ‪ popclient‬ليكتتون ‪ MTA‬و ‪ MDA‬و تضتتمي جميتتع انتتواع الحلتتول الغيت‬
‫جيدة ليقوم بعمل الرسال الحلي‪ ,‬و في القابل تصميم‪ , Fetchmail's‬كتتان لبتتد متتن ان يعتتاد التفكي ت فتتي تصتتميم‬
‫الخصائص جذريا ليكون ‪ MTA‬خالصا‪ ,‬كجزأ من ‪ SMTP‬ليستطيع التخاطب مع بريد النتنت‪.‬‬
‫عندما تصطدم بجدار و تجد نفسك غي قادر على تجاوز عقبة ما‪ ,‬حينها لبد ان تسأل نفسك ليس عما اذا كنت تملك‬

‫صفحة ‪13‬من أصل ‪25‬‬

‫الكاتدرائية_والسوق‪http://docs.ojuba.org/‬‬
‫مشروع وثائق أعجوبة‬

‫‪ .1‬الكتدرائية والسوق‪/‬البار‬ ‫الكتدرائية والسوق‪/‬البار‬

‫الجوبة الصحيحة ؟؟ بل هل سألت السئلة الصحيحة؟ اذن لبد متتن اعتتادة تعريتتف الشتتكلة لكتتي تستتتوعب‪ .‬حستتنا لقتتد‬
‫اعتتدنا صتتياغة الشتتكلة‪ ,‬و كتتان متتن البتتديهي ان اقتتوم بالتتتالي )‪ (1‬خاصتتية العبتتور فتتي ‪ SMTP‬لتكتتون متواجتتدة فتتي‬
‫برنتتامجي )‪ (2‬اجعلهتتا الخاصتتية الفتاضتتية )‪ (3‬متتع التتوقت اتخلتتص متتن جميتتع استتاليب التنظيتتم الختترى‪ ,‬خصوصتتا‬
‫‪ deliver-to-file‬و ‪..deliver-to-standard-output‬‬
‫لقد ترددت عند الخطوة الثالثتتة لبعتتض التتوقت خوفتتا متتن ان استتء لبعتتض الستتتخدمي القتتدماء التتذين يحتتتاجون آليتتات‬
‫‪ forward‬و ‪ sendmail‬للحصتتول علتتى‬ ‫اخرى لعبور البيتتد‪ .‬نظريتتا كتتان بامكتتانهم ان يقومتتون بتحويتتل ملفتتات التت ‪.‬‬
‫نفس النتيجة‪.‬و بالتطبيق قد تكون العمليتتة النتقاليتتة مربكتتة‪ .‬و لكتتن عنتتدما طبقتتت تلتتك النتتتائج اثبتتتت فتتوائد ضتتخمة‬
‫فالشفرة الضعيفة في الستتواقة اختفتتت و العتتدادات اصتتبحت استتهل جتتذريا‪ ,‬و اختفتتت الحلتتول اللتوائيتتة لنظتتام‪MDA‬‬
‫وايضتتا اختفتتت صتتناديق الستتتخدمي اذن لمزيتتد متتن الختتاوف متتن ان نظتتام التشتتغيل الحاضتتن ستتوف يغلتتق اللفتتات‪.‬‬
‫ايضا‪,‬اختفت الطريقة التقليدية لضياع البيد بحيث في السابق اذا امتلء القرص الصلب و انت حددت مستتبقا انتته هتتذا‬
‫هو القرص الذي سوف تقوم بارسال رسائل البيد عليتته عنتتدها ستتوف تختفتتي الرستتائل‪.‬و هتتذا ل يحتتدث عنتتد استتتخدام‬
‫عبور ‪ SMTP‬لن مستقبل الرسائل لديك لن يعطي رسالة موافقة‪ OK‬ال اذا كان ارسال الرستتالة ممكتتن‪ ,‬او علتتى القتتل‬
‫تخزن في الجلد الؤقت‪ spoole‬لكي يتم ارسالها فتتي وقتتت لحتتق‪ ..‬لتحستتن اداء البنامتتج )ليتتس لدرجتتة انتتك تلحتتظ‬
‫ذلك من اول استخدام(‪ .‬فائدة اخرى ليست ذات اهمية قصوى من التغي هي ان صتتفحات التتدليل اصتتبحت اقتتل…لحقتتا‬
‫اضطررت ان اعيد معب البيد عب عنوان‪ MDA‬محلي مسبق التحديد من الستتتخدم لكتتي استتمح بتتتولي بعتتض الهتتام‬
‫التعلقتتة بت ت ‪ .dynamic SLIP‬و لكتتن وجتتدت طريقتتة اكتتث ستتهولة لعمتتل هتتذا ‪ ..‬العتتبة هنتتا‪ ,‬قتتال‪Antoine de‬‬
‫‪ Saint-Exuory‬ل تتدد في رمي خصائص ما اذا كنت تستطيع عمل ذلك بدون فقدان التأثي‪) .‬و الذي كتتان ملحتتا‬
‫و مصمم طائرات كان يؤلف كتب اطفال في وقت فراغة(‬
‫‪“ -13‬التقان في التصميم ل يحدث عندما ليوجد شء تضيفه‪ ,‬بل عندما ل يوجد شء تزيله”‬
‫عندما تصبح شفرتك الصدرية ابستتط و افضتتل عنتتدها تعتترف انهتتا صتتحيحة‪ .‬و فتتي اثنتتاء ذلتتك يتطلتتب‪fetchmail‬‬
‫تصميم يعكس هوية خاصة به وطبعتتا مختلفتتة عتتن ‪ ..popclient‬واخيتتا حتتان موعتتد تغيت الستتم‪ ,‬التصتتميم بتتدى و‬
‫كأنه ‪ sendmail‬ثنائي من ان يبدو كسابقه ‪ .popclient‬فالثنان كانا ‪ ,MTA‬و لكن ‪ sendmail‬يتتدفع الرستتائل‬
‫ثم يرسلها‪ , ,‬ولكن نسخة‪ popclient‬الحسنة كانت تسحب البيد ثم ترسله‪ ,‬لذلك بعتتد شتتهرين فقتتط اعتتدت تستتميتة‬
‫بتت ‪..fetchmail‬‬
‫هناك درس عام يمكن ان نتعلمه من هذة القصة عن كيفية و صول آلية ارسال‪ SMTP‬الى ‪ .fetchmail‬ليتتس فقتتط‬
‫بالتنقيتتح اللتتذي يحتتدث بشتتكل ازدواجتتي‪ .‬و لكتتن بتتالتطوير و التصتتميم ايضتتا‪ .‬و عنتتدما تكتتون عمليتتة التطتتوير متكتتررة‬
‫باستمرار يصبح للتطوير و التحسي حالت خاصة من التنقيح و الصتتلح بحيتتث يظهتتر علتتل ناتجتتة عتتن إغفتتال فتتي‬
‫الخصائص الساسية في البنامج‪ ..‬حت في التصاميم عالية الستوى‪ ,‬من الفيد جدا ان يكون هناك الكتتثي متتن شتتكاء‬
‫التطوير يعاينون البيئة الحيطتتة ببنامجتتك‪ .‬و الكتشتتاف يتتتم اساستتا عتتن طريتتق النتشتتار‪ ,‬يليتته اكتشتتاف باستتتخدام‬
‫وسيط تواصل فعال على عدة مستويات‪ .‬وهتتذا يعمتتل بشتتكل جيتتد‪ ,‬كمتتا عمتتل معتتي و متتع‪, Harry Hochheiser‬و‬
‫يمكن لي شخص ما يأتي بعدك ان يجد هذا النجاح الكتتبي حيتتث كنتتت‪ ,‬حيتتث لتتم تكتتن تستتتطيع ان تتترى هتتذا النجتتاح‬
‫لنك كنت تركز كثيا في جزئية ما‪.‬‬

‫‪ Fetchmail .1.10‬يكب ‪:‬‬


‫اصبح لدينا تصميم جميل و مبتكر‪ ,‬فالشفرة الصدرية كانت تعمل بشتتكل جيتتد جتتدا لنتتي كنتتت استتتخدمها كتتل يتتوم‪ ,‬و‬
‫قائمة الستخدمي كانت مزدهرة‪ .‬ولكتتن هنتتاك امتتر لطالتتا اقلقنت وهتتو عتتدم اشتتتاكي فتتي عمليتتات التطتتوير البتتديهيه و‬
‫الت كان من المكن ان تكون مفيدة لبعض الناس‪ .‬وبذلك اصبح لدي برنامج يحتاجه كل مستتتخدم لتتديه نظتتام يتتونكس‬
‫‪ Unix‬و بريتتد ‪ ..SLIP/PPP‬ومتتع وجتتود خاصتتية تعتتبي‪ SMTP‬جعتتل البنامتتج يستتبق منافستتيه بمراحتتل ليصتتبح‬
‫برنامتتج متفتتوق )قاتتتل( `‪ 'category killer‬وهتتذا البنامتتج يفتتي بحاجتتة الستتتخدم بشتتكل دقيتتق بحيتتث ل يهمتتش‬

‫صفحة ‪14‬من أصل ‪25‬‬

‫الكاتدرائية_والسوق‪http://docs.ojuba.org/‬‬
‫مشروع وثائق أعجوبة‬
‫‪ .1‬الكتدرائية والسوق‪/‬البار‬ ‫الكتدرائية والسوق‪/‬البار‬

‫الستخدم البامج الخرى فحسب بل ينساها تماما‪ .‬اعتقد انك لتستطيع ان تخطط لهذا الش‪ ,‬بل يجتتب ان تنجتتذب لتته‬
‫من واقع تصميم محكم وجبار بحيث تصبح النتيجتتة محتومتتة )لمفتتر منهتتا( بتتل و مقتتدرة‪ .‬و الطريقتتة الوحيتتدة لحاولتتة‬
‫شء كهذا هو ان يكون لديك الكثي من الفكار‪ ,‬و الفراستتة الهندستتية لكتتي تاختتذ هتتذه الفكتترة ابعتتد ممتتا كتتان الستتتخدم‬
‫ينوي‪.‬‬
‫كتتان ‪ Andy Tanenbaum‬يحمتتل الفكتترة الصتتلية لبنتتاء حاستتب بستتيط يعمتتل علتتى يتتونكس‪ Unix‬للحواستتيب‬
‫الشخصية لت ‪ ,IBM‬للستخدام كادوات للتعليم )اسماها مينكس ‪ ..(Minix‬فقام‪.‬ليونس ترافلدس ‪Linus Torvalds‬‬
‫بدعم تصميم مينكس ‪ Minix‬اكث مما كان ‪ Andy Tanenbaum‬يتوقع او ينوي‪ ,‬و فعل نمتتا ليصتتبح شتتءرائع‪.‬‬
‫على نفس السار اخذت بعض الفكار من ‪ Carl Harris‬و ‪ Harry Hochheiser‬و دفعت هذه الفكار ابعد ممتتا‬
‫نتتوى الثني ت و اتبعتتت متتذهب الختتتاق للتحستتي‪ hacker mythology‬و لتتم يكتتن اي منتتا متتن يعمتتل بالطريقتتة‬
‫العاطفيه الت ينظر بها النتتاس التتى العبقريتتة و لتتذلك معظتتم العمتتاء والهندستتي و الطتتورين اعمتتالهم لتتم تكتتن اوليتته ‪..‬‬
‫كانت النتائج عنيدة بعض الش في الواقع‪ ,‬ولكن نتج عنتته النجتتاح التتذي يطمتتح اي مطتتور او مختتتق بالوصتتول اليتته‪.‬‬
‫و هذا يعن انه لبد من وضع معايي اعلى للوصول بتت‪ fetchmail‬الى مستوى الجتتودة التتذي اصتتبحت استتتوعبه‪ ,‬و‬
‫لبد من تطوير البنامج ليس فقط لحتياجاتي بل ايضا لحتياجات الستخدمي خارج متتداري‪ ,‬متتع البقتتاء علتتى بستتاطة‬
‫‪ multidrop‬القتتدرة علتتى جلتتب‬ ‫الواجه وسهولة الستخدام‪ .‬أول وأهم مية ساحقة كتبت بعد تحقيق هذا التتدعم كتتانت‬
‫البيد من الصناديق الت تحتوي على تراكمتتات البيتتد كلتته لجموعتتة متتن الستتتخدمي ‪ ،‬ومتتن ثتتم تتتوجيه كتتل قطعتتة متتن‬
‫البيد إلى الستلمي مباشة‪.‬‬
‫قررت اضافة دعم‪ multidrop‬وذلك لن الستخدمي كانوا يطالبون به ولسبب اخر ايضا وذلك اننت كنتتت ميقتتن متتن‬
‫ان هذا سوف يظهر علل مختفية حت الن‪ .‬و هذا ماحدث معي فعل‪ .‬فحصتتولي علتتى عنتتوان حتتق العتتراب‪RFC 822‬‬
‫اخذ من وقت طويل جدا‪ ,‬ليس لنن بطيء و لكن لوجود تفاصيل كثية متابطه مع بعضها البعض‪..‬‬
‫و لكن ثبت اخيا ان اختيار عنونة‪ multidrop‬كان قرارا ممتازا‪ ,‬واليكم التفاصيل ‪:‬‬
‫‪ .14‬اي اداة جيدة يجب ان تفيد الجال الذي تستخدم به ‪ ,‬ولكن الداة المتازة هي الت يمكن الستفادة منهتتا فتتي اشتتياء‬
‫كثيه ل تخطر علي البال‪.‬‬
‫الستخدام الغي متوقع لتت ‪ multidrop‬في ‪ fetchmail‬هو لتفعيل قوائم البيد بينما ل تتتزال القائمتتة موجتتودة ‪ ,‬و‬
‫تفعيل السماء العرفة للبيد ‪ alias‬على جهاز العميل باستخدام شبكات النتنت‪.‬و هتتذا يعن ت ان الستتتخدم يستتتطيع‬
‫من خلل جهازه الشخص ان يتتدير قتتوائم البيتتد بتتدون اتصتتال مستتتمر متتع ملفتتات الستتماء العرفتتة للبيتتد‪ alias‬عتتن‬
‫طريق حساب من موفر خدمة النتنت‪ ..‬وهناك تغييت اختتر مهتتم تتتم بواستتطة الختتتبين للنستتخة الوليتتة فهتتم يتتوفرون‬
‫الدعم لعمليات ‪ . (bit MIME Multipurpose Internet Mail Extensions-8‬كان هتتذا امتترا ستتهل‪ ,‬لنتتي‬
‫كنت حذر في اضافة دعم منسق لتت ‪ bit-8‬في الشفرة )هذا لكي ل نستخدم البت الثتتامن ‪ ,8th bit‬و التتذي ليستتتخدم‬
‫في حروف السكي ‪ .ASCII‬لنقل العلومات داخل البنامج( ليس لني توقعت ان الطلتتب عتتالي علتتى هتتذه الخاصتتية‪ .‬و‬
‫لكن لكي استجيب لطلب اخر‪.‬‬
‫‪-15‬عند تصيمم برنامج يعمل كبوابة‪ gateway‬لبد متتن تحمتتل مشتتاق توزيتتع العلومتتات باقتتل طريقتتة ممكنتتة‪ ,‬وعتتدم‬
‫التخلص من اي معلومات اطلقا ‪ ,‬ال اذا اجبك الستقبل على ذلك‪.‬‬
‫لم انصاع لهذا التطبيق من قبل‪ ,‬الدعم لتت ‪ bit MIME-8‬كان شاقا و مليء بالعيوب‪ ,‬و كل ما فعلته هو قتترائة معتتايي‬
‫)‪ (RFC 1652‬و اضافة تعليل بديهي في القدمة ‪ header-generation logic‬بعض الستتتخدمي فتتي اوروبتتا‬
‫طلبتتوا من ت اضتتافة خاصتتية الحتتد متتن عتتدد الرستتائل الستتتقبلة فتتي كتتل جلستتة )لكتتي يتحكمتتون فتتي التكتتاليف الباهظتتة‬
‫لستخدامهم النتنت( لقد قاومت هذا لفتتتة‪ ,‬و ل ازال غيت راضت عتتن هتتذه الضتتافة‪ .‬ولكنتتك تقتتوم بالتصتتميم للعتتالم‪,‬‬
‫فلبد من ان تستمع الى عملئك‪ ,‬و هذا ليتغي لنهم ليدفعون لك الال‪.‬‬

‫صفحة ‪15‬من أصل ‪25‬‬

‫الكاتدرائية_والسوق‪http://docs.ojuba.org/‬‬
‫مشروع وثائق أعجوبة‬

‫‪ .1‬الكتدرائية والسوق‪/‬البار‬ ‫الكتدرائية والسوق‪/‬البار‬

‫‪ .1.11‬مزيد من الدروس في‪: Fetchmail‬‬


‫‪) fetchmail‬القتتراء‬
‫قبل ان نعود الى دروس هندسة البمجيات‪ ,‬هناك الزيتتد متتن التتدروس الحتتددة يمكتتن تعلمهتتا متتن‬
‫الغي تقنيي يمكنهم ان يتجاوزون هذا الجزأ(‬
‫ملتتف التحكتتم ) ‪ (rc control‬يحتتتوي علتتى جمتتل تتتداخل `‪ 'noise‬اختيتتاريه والتتت تهمتتش بالكامتتل متتن قبتتل العتترب‬
‫‪ .parser‬و تركيب الجمل ‪ syntax‬الستتموح بتته )و الشتتبيه باللغتتة النجلييتتة( يمكتتن قرائتتته التتى حتتد كتتبي وايضتتا‬
‫تتبع تركيب الجمل التقليتتدي والتتذي تحصتتل عليتته متتن ستتلخ جميتتع العلومتتات الختترى‪ . .‬هتتذه بتتدأت كتجتتارب تتتتم فتتي‬
‫اواختتر الليتتل عنتتدها ادركتتت متتدى دللت ملتتف ال‪ rc‬و التتت تمثتتل وجتتوب وجتتود لغتتة مصتتغرة )‪(minilanguage‬‬
‫) ولهذا السبب قمت بتت ‪ popclient‬بتغي كلمة خادم ``‪ server‬الى حلب `‪(poll‬‬
‫بتتدا يتضتتح لتتي انتته اذا جعلنتتا هتتذه اللغتتة مبستتطة ‪ minilanguage‬و شتتبيهه باللغتتة النجلييتتة ستتوف يستتهل‬
‫استخدامها ‪ .‬مع العلم اني مقتنع بمدرسة اجعلها كاللغة “‪ ”make it a language‬مثل ‪ Emacs‬و ‪ HTML‬و‬
‫كثي من محركات قواعد البينات‪ ,‬ال انن لست من مناصين جعل “تركيب الجمل شبيه باللغة النجليية” ‪.‬‬
‫عادة يفضل الطورون اتباع نهتتج تركيتتب الجمتتل‪ syntaxes‬بشتتكل متقتتن و مختصت و بتتدون استتهاب علتتى الطلق‪.‬‬
‫وهذا كان تقليد متبع منذ ان كانت تكاليف الحوسبة باهضة‪ ,‬لذلك التوثيق كان لبتتد ان يكتتون بستتيط و مختص ت بقتتدر‬
‫المكان‪ .‬واستخدام اللغة النجليية و الت تحتوي على اسهاب زائد عن الحاجة لم تكن مناسبة في وقتة ‪..‬‬
‫و لكن هذا لم يكن السبب الوحيد الذي جعلن اتجنب استخدام اللغة النجليية في تركيب الجمل‪ ,syntaxes‬اذكرهتتا‬
‫هنا فقط لكي اهدم هذا التصتتف‪ .‬متتع وجتتود قلتتب ودورة للنظتتام بستتيطة و رخيصتتة‪ ,‬الختصتتار يجتتب ان ل يكتتون هتتو‬
‫الغايتتة بحتتد ذاتتته‪ .‬فتتي هتتذه اليتتام متتن اللئم ان تكتتون اللغتتة مفهومتتة متتن قبتتل البشت اكتتث متتن ان تكتتون رخيصتته فتتي‬
‫الحوسبة‪.‬‬
‫و على اية حال الباقي يشكل اسبابا جيدة للقلق‪ .‬الول هو ثمن التعقيدات فتتي مرحلتتة التوثيتتق‪ ,‬بحيتتث اننتتا ل نريتتد ان‬
‫نتعمتتق بهتتذا بالضتتافة التتى امكانيتتة وجتتود علتتل و بالتتتالي ستستتبب ربكتتة للمستتتخدم‪ .‬والثتتاني ان محاولتتة جعتتل لغتتة‬
‫تركيب الجمتتل ‪ syntaxes‬تشتتبة االغتتة النجلييتتة‪ ,‬يتتؤدي التتى تحريتتف اللغتتة النجلييتتة بشتتكل كتتبي التتى درجتتة ان‬
‫التحريف يجعلها تبدو كلغة طبيعية و لكتتن مربكتتة بستتبب عتتدم و ضتتوح العتتاني ممتتا يعنت ان هتتذا مثتتل او استتوأ متتن‬
‫استتتتخدام تركيتتتب الجمتتتل ‪ syntaxes‬التقليتتتدي )نتتترى هتتتذا القصتتتور فتتتي متتتا يستتتمى بالجيتتتل الرابتتتع ”‪fourth‬‬
‫‪ ”generation‬و لغة الستعلم لقواعد البينات التجارية(‪.‬‬
‫التحكم بتكيب الجمل ‪ syntaxes‬في ‪ fetchmail‬يجنبنا هذه الشتتاكل لن نطتتاق اللغتتة كتتان محتتدودا جتتدا‪ .‬بحيتتث‬
‫انها بعيده كل البعد عتتن لغتتة الستتتخدام العتتام و العلومتتات الوثقتتة غيت معقتتدة لتتذلك هنالتتك احتمتتال بستتيط جتتدا ان‬
‫يرتبك الستتتخدم بالتنقتتل بيت مايتتذكر باللغتتة النجلييتتة و بيت لغتتة التحكتتم الساستتية‪ .‬واعتقتتد ان هنتتاك درس اكتتب‬
‫يمكن تعلمه هنا ‪:‬‬
‫‪-16‬عندما تكون لغتك بعيدة عن الكمال استخدم التصيف اللغوي‪ ,‬و تعتب هذه افضل طريقة‪.‬‬
‫ونتعلتتم هنتتا ايضتتا درس اختتر عتتن المتتن باستتتخدام الغمتتوض‪ ,‬فقتتد طلتتب منت بعتتض مستتتخدمي‪ fetchmail‬تغييت‬
‫البنامج لكي يكون باستطاعتهم ان يخزنوا كلمات الست علتتى شتتكل شتتفرات فتتي ملتتف‪ rc‬لكتتي نمنتتع التطفلتتون متتن ان‬
‫يصلوا اليها‪.‬‬
‫ولكن لم اقم بذلك‪ ,‬لنه ليتتوفر الحمايتتة الحقيقيتتة للبنامتتج و باستتتطاعة اي شتتخص لتتديه الصتتلحيه ان يطلتتع علتتى‬
‫ملف ال ‪ rc‬الخاص بك تشغيل برنامج ‪ fetchmail‬عوضا عنك‪ ,‬و اذا كان هذا الطلع يبحث عن كلمة الس الخاصتتة‬
‫بك يستطيع ان يتعقب آلية فك التشفي الت يستخدمها البنامج وبذلك يمكنه ان يطلع على كلمة الس الخاصتتة بتتك‪.‬‬
‫و لو قمنا بتشفي كلمات الس في ‪ fetchmailrc.‬لكان هذا اعطتتى احساستتا وهميتتا بالمتتان لهتتؤلء التتذين ل يفكتترون‬
‫بعمق‪ .‬فالقاعدة العامة هي‪:‬‬

‫صفحة ‪16‬من أصل ‪25‬‬

‫الكاتدرائية_والسوق‪http://docs.ojuba.org/‬‬
‫مشروع وثائق أعجوبة‬
‫‪ .1‬الكتدرائية والسوق‪/‬البار‬ ‫الكتدرائية والسوق‪/‬البار‬

‫‪-17‬النظام المن يظل آمنا الى ان ينكشف سه‪ ,‬فاحذر من السار الزائفه‪.‬‬

‫‪ .1.12‬الشوط الضورية السبقة لنمط البازار )السوق( ‪:‬‬


‫عندما قام الجمهور بالراجعة الولية لهذه الوثيقتتة تستتائلوا باستتتمرار عتتن الشتتوط الستتبقة لنجتتاح التطتتوير باستتتخدام‬
‫نمتتط البتتازار )الستتوق( فيمتتا يختتص متتؤهلت قتتائد الشتتوع و الحالتتة التتت تكتتون عليهتتا الشتتفرة الصتتدرية عتتن طرحهتتا‬
‫للعموم و كذلك محاولة بناء مجتمع مكون من شكاء في التطوير‪.‬‬
‫ولكتتن كتتان متتن الواضتتح متتن ان شتتخص واحتتد بمفتترده ل يستتتطيع ان يطتتور )يبنتت( فتتي نمتتط التتبار )الستتوق( ولكنتته‬
‫بالقابل يستتتطيع ان يختتتب العلتتل و يحستتن متتن نمتتط الستتوق )البتتازار( فكتتان متتن الصتتعوبة ان ينشتتء شتتخص واحتتد‬
‫مشوع في نمط السوق )البازار( ولينوس لتتم يفعتتل ذلتتك و ل انتتا ايضتتا‪ .‬فتتالجتمع حتتديث النشتتئة يحتتتاج التتى برنامتتج‬
‫قابل للختبار لكي يتعاملوا معه‪.‬‬
‫عندما تبتتدأ ببنتتاء مجتمتتع اهتتم متتا تحتتتاج ان تطرحتته هتتو وعتتود معقولتتة‪ ,‬فالبنامتتج ل يحتتتاج ان يعمتتل بامتيتتاز‪ ,‬فمتتن‬
‫المكن ان يكون غي ناضج او به علل و غي مكتمل‪ ,‬ورديتتء التوثيتتق‪ .‬ولكتتن مايحتتتاجه هتتو ان يكتتون ‪ :‬اول ‪ :‬ان يكتتون‬
‫يعمل‪ ,‬و ثانيا‪ :‬لبد من ان يكون مقنعا لشكاء التطوير بانه من المكن ان ينمو و يتطور الى شء جميل فتتي الستتتقبل‬
‫‪..‬‬
‫لنكتتس و ‪ fetchmail‬طرحتتا للعمتتوم وهمتتا فتتي حلتتة قويتتة و بتصتتميم بستتيط و جتتذاب‪..‬و كتتثي متتن النتتاس يفكتترون‬
‫بنمط السوق )البازار( كما تم شحه على استتاس ان هتتذا حتترج‪ ,‬واخيتتا اكتشتتفوا ان التصتتميم الجيتتد‪ ,‬الحتتدس و التتذكاء‬
‫‪ Unix‬و انتتا اختتذت‬
‫بالفطرة شوط لبد من توفرها بقائد الشوع ولكن لينوس توصتتل التتى هتتذا التصتتميم متتن يتتونكس‬
‫تصميمي من ‪) popclient‬مع العلم انه تغي لحقا بشكل كبي‪ ,‬و كمية التغي التتذي حتتدثت فتتي ‪ popclient‬اكتتث‬
‫من التغي التتذي حتتدث فتتي لينكتتس( اذا هتتل متتن الهتتم ان يكتتون لتتدى قتتائد الشتتوع فتتي نمتتط الستتوق )البتتازار( الوهبتتة‬
‫لتقديم تصاميم فريدة؟ او القدرة على ادراك وادارة موهبة التصميم لدى الخرين ؟‬
‫اعتقد انه من غي الهم ان يقتتوم قتتائد الشتتوع بأنشتتاء تصتتميم بتتالغ العبقريتتة‪ ,‬ولكتتن متتن الهتتم ان يكتتون قتتائد الشتتوع‬
‫‪ fetchmail‬دليتتل و اضتتح علتتى‬ ‫لديه القدرة على ادراك التصاميم الجيدة المنوحة من الخرين‪ .‬فمشوعي لينكتتس و‬
‫صحة ما ذكر‪.‬‬
‫و كما ذكرنا سابقا لينوس لم ينشء تصميم مدهش‪ ,‬و لكن كان لديه القتتدرة البديهيتتة للتعتترف علتتى تصتتميم ممتتتاز‪ ,‬و‬
‫على مكاملة هذا التصميم في قلب لينكس )‪ ,(linux kernel‬و قد شحت قبل ذلك كيتتف ان اهتتم فكتترة تصتتميم فتتي )‬
‫‪ (fetchmail SMTP forwarding‬اتت من شخص اخر‪.‬‬
‫الطلعي الولي لهذه الوثيقة تذمروا من ميلي لتقليل أهمية انشتتاء التصتتميم فتتي نمتتط الستتوق )البتتازار( بحجتتة ان لتتدي‬
‫خبة كثية في هتتذا الجتتال‪ ,‬ولهتتذا اختتذت الوضتتوع ببستتاطة‪,‬و قتتد يكتتون هتتذا صتتحيحا‪ ,‬فالتصتتميم )علتتى عكتتس كتابتتة‬
‫الشفرة او تحديد العلل( كانت هي اكب موهبة لدي‪ .‬و الشكلة في كونك شتتخص فطتتن ومبتكتتر فتتي تطتتوير البمجيتتات‬
‫انها تصبح عادة لديك‪ ,‬فتبدأ بشكل انعكاس في جعتتل الشتتياء اجمتتل و اكتتث تعقيتتدا‪ ,‬و لكنتته متتن الفتتتض ان تجعتتل‬
‫الشتتياء اكتتث بستتاطة و فعاليتتة ‪ .‬فقتتد خستتت مشتتوعا قبتتل ذلتتك لنتتي ارتكبتتت هتتذا الخطتتأ و لكن ت تفتتاديت هتتذا فتتي‬
‫‪.fetchmail‬‬
‫لذللك كنت متتؤمن ان مشتتوع‪ fetchmail‬ستتينجح لنتتي كبحتتت جمتتاح فطنتتت‪ ,‬و هتتذا ينتتاقض القولتتة التتت تقتتول ان‬
‫اصالة التصميم مهمة جدا لنجاح مشوع في بيئة السوق )البازار( ول ننس ان نأخذ لنكتتس بعيت العتبتتار‪ .‬فتخيتتل ان‬
‫لينوس حاول ان يقوم بعمل تطويرات جوهريتتة فتتي تصتتميم نظتتام التشتتغيل خلل مرحلتتة التطتتوير هتتل كتتان متتن المكتتن‬
‫ان يكون الناتج هو النظام الستقر الناجح الذي نراه اليوم؟‬
‫و هناك قاعدة مهمه على مستوى التصتتميم وهتتي الهتتارة والعرفتتة و كتابتتة الشتتفرة لتتدي متتدير الشتتوع‪ ,‬ولكننت اتوقتتع‬

‫صفحة ‪17‬من أصل ‪25‬‬

‫الكاتدرائية_والسوق‪http://docs.ojuba.org/‬‬
‫مشروع وثائق أعجوبة‬

‫‪ .1‬الكتدرائية والسوق‪/‬البار‬ ‫الكتدرائية والسوق‪/‬البار‬

‫ان اي شخص قد يفكر في اطلق مشوع في بيئة السوق )البازار( لبد ان يكتتون لتتديه الحتتد الدنتتى‪ .‬فمحركتتات مجتمتتع‬
‫الصادر الحرة تمارس الضغط الرقيتتق لعتتدم البتتدأ بتطتتوير جزأيتتة هتتم غيت متمكنيت منهتتا‪ .‬و هتتذا العمتتل حقتتق نجاحتتا‬
‫بتتاهرا حتتت الن‪ .‬كمتتا ان هنتتاك نتتوع اختتر متتن الهتتارة غيت مرتبتتط بتطتتوير البمجيتتات و اللتتذي اعتقتتد انتته اهتتم لتتبيئة‬
‫السوق )البازار( وهيا لبد ان يتحلى اي مدير مشتتوع داختتل بيئة الستتوق )البتتازار( بميتتة ) مهتتارات التصتتال و حستتن‬
‫التعامل مع الناس (‪.‬‬
‫فكان من الهم استقطاب الناس من اجل بناء مجتمتتع تطتتويري‪ ,‬وترغيبهتتم فيمتتا تريتتد ان تعمتتل‪ .‬و ا ابقتتائهم ستتعداء عتتن‬
‫حجتتم العمتتل اللتتذي يقومتتون بتته‪ .‬فالديتتح )لتقتتديم الرض ت عتتن النفتتس( يختتدم كتتثيا هنتتا‪ ,‬و لكتتن هتتذا ليتتس كتتل شتت‪,‬‬
‫فالشخصية ايضا لها تأثي كبي‪.‬‬
‫انها ليست مصادفة ان لينوس هو رجل لطيف و عنده القدرة علتتى ان يجعتتل النتتاس يحبتتونه و يرغبتتون فتتي مستتاعدته‪,‬‬
‫كما انها ليست مصادفة ان اكتتون انتتا رجتتل بستتيط‪ ,‬ممتليتتء بالحيويتتة و استتتمتع بالعمتتل الجمتتاعي و لتتدي القتتدرة علتتى‬
‫التقديم و الحدس الهزلي ) ‪ (stand-up comic‬لذلك عندما تكون لطيفا وتملك خاصية جذب الناس فانه يساعدك‬
‫كثيا في بيئة السوق )البازار( ‪.‬‬

‫‪ .1.13‬السياق الجتماعي في البمجيات الحرة‪:‬‬


‫مكتوب انه ‪ :‬افضل التطويرات )الختاقات ‪ (hacks-‬تبدأ كحل شخص ت لشتتكلة متتا يواجههتتا الؤلتتف‪ ,‬ثتتم تنتشت لنتته‬
‫يكتشف ان هذه الشكلة تؤثر على عدد كبي متتن الستتتخدمي‪.‬وهتتذا يأختتذنا التتى محتتتوى القتتانون ‪ ,()1‬اعيتتدت صتتياغته‬
‫بشكل اكث عملية ‪:‬‬
‫‪-18‬لحل مشكلة مثية للهتمام ‪ ،‬لبد من إيجاد هذه الشكلة الثية للهتمام اول‪.‬‬
‫لذلك كان هذا مع ‪ Carl Harris‬و الوروث‪ popclient‬و كذلك معي و مع ‪ fetchmail‬و لكن هتتذا كتتان معروفتتا‬
‫منذ فتة طويلة‪ .‬و النقطة الثية للهتمام والت قمنا بالتكي عليها و الت تتشكل فتتي تاريتتخ لنكتتس و‪fetchmail‬‬
‫هي الخطوة القادمة والت تتشتتكل فتتي تطتتوير الشتتوع فتتي ظتتل وجتتود مجتمتتع كتتبي وفعتتال متتن الستتتخدمي و شتتكاء‬
‫التطوير‪.‬‬
‫في ‪ ,The Mythical Man-Month‬لحظ الؤلف ‪ Fred Brooks‬ان و قت البمج ليمكن استبداله و اضتتافة‬
‫مطتتورين فتتي وقتتت متتتأخر لشتتوع تطتتوير برمجتتي يستتاهم فتتي التتتاخي‪ .‬وكمتتا رأينتتا فتتي الستتابق ان الؤلتتف قتتد نتتاقش‬
‫التعقيدات وتكلفة التواصل التنامية تبعا للجذر التبيعي لعدد الطورين وبالتالي العمل النتج يزيد بشكل خطّي ‪.‬‬
‫و قد كان سابقا قانون بروكس قانونا مسلم به‪ ,‬ولكننتتا ناقشتتنا فتتي هتتذه الوثيقتتة عتتدد متتن الطتترق النهجيتتة التتت اتبعتتت‬
‫في نمط السوق )البازار( و الت تتناقض بشكل مباش مع استنتاجات قتتانون‪ Brooks's‬وفتتي الواقتتع لتتو كتتان قتتانون‬
‫‪ Brooks's‬صحيحا لكان و جود لنكس مستحيل‪.‬‬
‫مؤلفة ‪ Gerald Weinberg's‬الكلسيكية ‪ The Psychology of Computer Programming‬افادت‬
‫)انها ادركت متاخرا( والت تعد تصحيح لتت‪ Brooks‬فتتي نقاشتته ) التتبمجون الغيت مغروريتتن( لحظتتت‪Weinberg‬‬
‫انه في الشاريع الت يكون فيها التتبمجون غيت متشتتديدين علتتى ملكيتتة الشتتفرة و يحثتتون الخريتتن علتتى الطلع علتتى‬
‫الشفرة لحاولة تحديد العلل وامكانية التعديل و التطوير يحدث بشكل متتثي و استتع متتن اي بيئة اختترى و)متتؤخرا قتتام‬
‫‪ Kent Beck's‬بتطوير منهجية للبمجة بحيث يتتتم توزيتتع التتبمجون بشتتكل زوجتتي و يمكتتن لكتتل مبمتتج ان يطلتتع‬
‫على عمل الخر و يفس ذلك بانهم اخذوا نفس النحى الذكور(‬
‫لربما كانت الصتتياغة التتت اختارهتتا ‪ Weinberg's‬ادت التتى عتتدم تقتتديرها بالشتتكل الستتتحق ان الواحتتد ليبتستتم عنتتد‬
‫ستتماعه ان مختتتقي النتتتنت )غيت مغروريتتن( ولكنت أعتقتتد أن حجتتته تبتتدو اليتتوم أكتتث إلحاحتتا متتن أي وقتتت مضتت‪.‬‬
‫فتسخي القوة الكاملة للبمجة “‪ ”egoless‬بطريقة البازار لها أثر شديد اضف الي ذلك التخفيف من تأثي بروكس‬

‫صفحة ‪18‬من أصل ‪25‬‬

‫الكاتدرائية_والسوق‪http://docs.ojuba.org/‬‬
‫مشروع وثائق أعجوبة‬
‫‪ .1‬الكتدرائية والسوق‪/‬البار‬ ‫الكتدرائية والسوق‪/‬البار‬

‫‪ Brooks‬يكتتون‬ ‫في نمط السوق )البازار( عن طريق تسخي جملة من البمجي الغيت مغروريتتن‪ ,‬والبتتدأ خلتتف قتتانون‬
‫متناقض‪ ,‬فبوجود مجتمع تطوير كبي و بالضافة التتى وستتيلة اتصتتال رخيصتتة يمكتتن ان نغمتتر الشتتوع بتنتتافس غيت‬
‫متعارض‪ ,‬و الت ليمكن توفرها بتتأي طريقتتة اختترى و هتتذا يشتتبه العلقتتة بيت الفييتتاء النيوتينيتتة )استتحاق نيتتوتن( و‬
‫الفيياء الينشتانية )الفرد اينشتتتاين( فالنظتتام القتتديم ليتتزال فعتتال فتتي ظتتل وجتتود طاقتتة متدنيتتة‪ ,‬و لكتتن عنتتدما تزيتتد‬
‫الكتلة و السعة الى مستوى عالي نحصل على مفاجئة مثل لنكس‪.‬‬
‫من الفتض ان يكون تاريخ لينكس قد اعدنا لتتا ستتوف نتعلمتته اليتتوم متتن لينكتتس )و متتا قمتتت باثبتتاته بالتجتتارب علتتى‬
‫منسوب صغي‪ ,‬و الذي تعمدت فيه ان اتبتتع نهتتج لينتتوس( هتتذا يعنت بينمتتا يظتتل استتلوب كتابتتة الشتتفرة عمتتل انعزالتتي‬
‫)فردي( ياتي التطوير العظيم من تسخي الطاقة العقلية لجتمع كامل‪ .‬و الطور الذي يعتمد علتتى قتتدراته العقليتتة فقتتط‬
‫و يطور مشوع في بيئة مغلقتتة بكتتل تأكيتتد ستتوف يتخلتتف عتتن الركتتب‪ ,‬و فتتي القابتتل الطتتور التتذي يعتترف كيتتف يكتتون‬
‫مشوع حر و ثوري في الحتوى بحيث ردود الفعتتل تتتأتي بشتتكل استكشتتاف لتصتتميم او تتتبع بشتتفرة و تحديتتد العلتتل‪,‬‬
‫و ايضا تحسينات اخرى تأتي من مآت )بل اللف احيانا( من الساهمي‪.‬‬
‫مع العلم ان عالم يونكس ‪ unix‬منع من الستفادة القصوى من هذة المارسة بستتبب تعقيتتدات قانونيتتة فتتي التتتاخيص‬
‫و بسبب اسار ومصالح تجارية ايضا بالضافه الى ذلك ان النتنت لم تكن فعالة في وقتها ‪.‬‬
‫و قبتتتل و جتتتود النتتتتنت الرخيتتتص كتتتان هنالتتتك استتتااليب تواصتتتل مربوطتتتة بالنطقتتتة الجغرافيتتتة‪ ,‬و التتتت كمتتتا قتتتال‬
‫‪ Weinberg's‬ادت الى نمو تقاليد التتبمجي و الطتتورين بحيتتث حثتتت كتتثي متتن التتؤهلي ستتواء مستتاهمي كتتانوا أم‬
‫شكاء الى التطوير‪ .‬و كما نرى اليوم ان‪ Bell Labs, MIT AI , LCS labs, UC Berkeley‬اصبحت اساسا‬
‫للبتكار و التطوير حت يومنا هذا‪.‬‬
‫فلينكس كان اول مشوع يستتتفيد وبشتتكل واعتتي متتن الجهتتود و التتواهب علتتى مستتتوى العتتالم‪ .‬و ل اعتقتتد انتته كتتان متتن‬
‫محض الصدفة ارتباط مراحل مخاض لينكس مع ظهور الشبكة العنكبوتيتتة العاليتتة )‪ (World Wide Web‬و فتتي‬
‫نفس الوقت نمى لينكس من مرحلتتة الطفولتتة فتتي‪ 1994–1993‬و التتت شتتهدت تنتتامي واضتتح فتتي صتتناعة متتوفري خدمتتة‬
‫النتنت ‪ ISP‬و انفجار الطلب على النتنت من الجمهور‪ .‬و كان لينوس هو اول من تعلم كيفيتتة التعامتتل متتع التنظيتتم‬
‫الجديد و الذي اصبح ممكنا بتوفر خدمة النتنت بشكل اوسع‪.‬‬
‫ومن العوامل الساسية الت ادت الى تطور نظام العمل اللتتذي قتتام عليتته لنكتتس تتتوفر النتتتنت بشتتكل رخيتتص ولكتتن ل‬
‫اعتقد انه وحده كان كافيا‪ ,‬ولكن كان هناك عامل اخر ساعد على ذلك علتتى نفتتس القتتدر متتن الهميتتة ال و هتتو تطتتوير‬
‫اسلوب الدارة و مجموعة من العادات و اساليب التعاون و التتت بتتدورها ستتاعدت الطتتورين علتتى استتتقطاب شتتكاء فتتي‬
‫التطوير لتوزيع العمل و الستفادة من الجهتتود و لكتتن متتاهو استتلوب الدارة هتتذا؟ و متتا هتتي العتتادات و الستتاليب التتت‬
‫يجب اتباعها؟ فمن غي المكن ان تكون الدارة مبنية على علقة اساسها السلطة‪ ,‬و حت لو كان هذا صتتحيحا فالقيتتادة‬
‫الت تبن على التعسف ل تستمر‪.‬‬
‫الكاتب ‪ Weinberg‬ينقل لنا عن السية الذاتية للثوري الروس‪ Pyotr Alexeyvich Kropotkin's‬في القتترن‬
‫التاسع عش ‪ Memoirs of a Revolutionist‬مما ينعكس علي موضوعنا‪: .‬‬
‫بحكم انن نشأت في في اسة تدير اعمالها بنفستتها‪ ,‬انتتدمجت مبكتترا فتتي الحيتتاة العمليتتة مثتتل جميتتع الشتتباب فتتي ذلتتك‬
‫الوقت فقد كانت ثقت بنفس كبية جدا و كانت لدي القدرة على التنظيم و كبح جماح رغباتي و ما التتى ذلتتك‪ ,‬و لتتذلك‬
‫بدأت و بسن صتتغي فتتي ادارة العديتتد متتن الشتتاريع الكتتبية و بتتالطبع قمتتت بالتعامتتل متتع العمالتتة ” الحتترار” فعنتتد‬
‫حدوث اي خطأ قد يؤدي ذلك الى عواقب وخيمة عندها بدأت اقدر الفرق بي مبتتدأ القيتتادة القتتائم علتتى المتتر و العقتتاب‬
‫او مبدأ القيادة القائم على التفاهم‪ .‬فالولى تعمل بشكل جيد في السلك العسكري و لكتتن فتتي الحيتتاة العمليتتة ل جتتدوى‬
‫منها لذلك ادركت ان الهداف ل تتحقق ال من خلل الجهد الكبي و الرادة‪.‬‬
‫‪ .‬فالعبارة الت تقول “ل تتحقق الهداف ال من خلل الجهد الكبي و الرادة” هي بالتحديتتد متتا يحتتتاجه مشتتوع مثتتل‬
‫لينكس و “مبدأ القيادة” ل يمكن تطبيقه فتتي مجتمتتع فوضتتوي متتن التطتتوعي علتتى النتتتنت‪ .‬و لكتتن لكتتي يتتتم ذلتتك‬

‫صفحة ‪19‬من أصل ‪25‬‬

‫الكاتدرائية_والسوق‪http://docs.ojuba.org/‬‬
‫مشروع وثائق أعجوبة‬

‫‪ .1‬الكتدرائية والسوق‪/‬البار‬ ‫الكتدرائية والسوق‪/‬البار‬

‫بشكل فعال لبد من ان يتعلم الطتتورين التتذين يرغبتتون فتتي قيتتادة مشتتوع تكتتافلي كيفيتتة استتتقطاب و تحفيت الجتمتتع‬
‫الفعال كما يقتح ‪ Kropotkin's‬مبدأ القيادة القائم على التفتتاهم”‪ .‬لتتذلك هتتؤلء الطتتورون لبتتد ان يتعلمتتوا قتتانون‬
‫لينوس‬
‫في السابق كنت افضل مؤثرات دلفتتي‪ Delphi effect‬كتفستتي طتتبيعي لتتي قتتانون لينتتوس‪ .‬و لكتتن هنتتاك تفستتيات‬
‫اشمل للتبن في علم الحياء و القتصاد قد تكون اكث ملئمتتة هنتتا‪ .‬عتتالم لينكتتس يتصتتف فتتي اباعتتد كتتثية مثتتل بيئة‬
‫السوق الحر‪ .‬مجموعة من العملء الناني في طور تعضيم الفتتائدة ومتتن خلل هتتذا النهتتج ينتتتج وبشتتكل فوجتتائي اليتتة‬
‫للتصحيح الذاتي‪ ,‬هذة اللية فعالة بشكل كبي بحيث ليمكن الوصتتول التتي نفتتس الليتتة فتتي بيئة تطتتوير مركزيتتة‪ .‬هنتتا‬
‫اذا هو الكان الي نصبو الي تحقيق “مبداء القيادة القائم علي التفاهم”‬
‫وظيفة الداة الت يعظمها مطوري لينكس ليستتت اقتصتتادية تقليديتتة‪ ,‬و لكنهتتا احستتاس ملمتتوس نتتابع متتن النتتا الذاتيتتة‬
‫للشعور بالرض عن النفس و ايضا للحصول على مكانتتة مرموقتتة بيت الطتتورين الخريتتن‪ ,‬فالثقافتتات التطوعيتتة و التتت‬
‫تعمل على هذا البدأ ليست مستغربة‪ ,‬مثل انا قد اشتكت و منذ فتة طويلتتة فتتي مهرجانتتات و عتتروض الخيتتال العلمتتي‬
‫” ‪ ”fandom‬و الذي يختلف قليل عن “‪ ”hackerdom‬بحيث انتته فتتي ” ‪ ”fandom‬يجيتتو بشتتكل واضتتح ان‬
‫نتفاخر بالساهمات الت قمنا بها لرفع العنويات الشخصية و الشعور بالرض عن النفس‪.‬‬
‫و قد نجح لينوس بتعيي نفستته حتتارس البوابتتة لشتتوع التطتتوير التتذي يتتتم بواستتطة مطتتورين اخريتتن‪ .‬و استتتطاع ان‬
‫يستقطب الهتمام بالشوع من قبيل مطورين اخرين الى ان يصتتل الشتتوع التتى مرحلتتة الثبتتات و العتمتتاد علتتى ذاتتته‪,‬‬
‫ومن هذا نستتتنبط التجستتيد لتتا ذكتتره الكتتاتب‪ Kropotkin's‬مبتتدأ القيتتادة القتتائم علتتى التفتتاهم” هتتذا النظتتور الشتتبه‬
‫اقتصادي لعالم لنكس يسمح لنا ان نفهم كيف تم تطيبق هذا التفاهم‪ .‬و قد ننظتتر لبتتدأ لينتتوس علتتى استتاس انتته خلتتق‬
‫اسواق فعالة في بيئة الغرور و الرض عتتن النفتتس لتصتتل وبشتتكل وثيتتق بيت أنانيتتة الطتتور و النهايتتات الصتتعبة التتت‬
‫تحتاج للعمل التعاوني التكافلي‪ .‬و في مشوع‪ fetchmail‬اظهرت )ولو بشكل صغي( ان هتتذا البتتدأ يمكتتن تقليتتده و‬
‫بنتائج ممتازة و لعلن قمت بالعمل بشكل واعي و منهجي اكث من لينوس‪.‬‬
‫كثي من الناس )خصوصا اولئك الذين ل يثقون في الستتواق الحتترة( يتوقعتتون ان الثقافتتة الكونتتة متتن اصتتحاب الدارة‬
‫الذاتية انتتانييون متتن الستتهل تمزيقهتتم و متعصتتبي لمتلكتتاتهم و مبتتذرون و متحفظتتون و ايضتتا عتتدوانيون‪ .‬و لكتتن هتتذه‬
‫الدعاءات غي صحيحة‪ ,‬و لكي نثبت ذلك يكفي ان الجودة البهرة و العمق في توثيق لينكتتس دليتتل علتتى ذلتتك‪ .‬و متتن‬
‫العروف ان الطورين يكرهون التوثيق‪ ,‬اذ كيف يمكن لطورين لينكتتس ان ينتجتتون كتتل هتتذا الكتتم الهتتائل متتن التوثيتتق؟ و‬
‫بكل تأكيد سوق لينكس الحر في بيئة التحفي للرض عن النفس تعمل بكفاءة اعلى من النشئات التجاريتتة التتت يغتتدق‬
‫عليها الال لتوثيق البمجيات‪.‬‬
‫كل الشوعي ‪ fetchmail‬و مشوع تطوير نتتواة لنيكتتس‪ Linux kernel projects‬يظهتتران ان مكتتافئة غتترور‬
‫كثي من الطورين هي الطريقة الصحيحة‪ ,‬فمدير الشوع اذا تحلى بمزيا القيتتادة و الختتبة فتتي التطتتوير يستتتطيع متتن‬
‫خلل النتنت ان يستحوذ على الكثي من شكاء التطوير مع الحفاظ على الشتتوع متتن الفشتتل او التذبتتذب‪ .‬لتتذلك ردا‬
‫على قانون ‪ Brooks‬اقتتول ‪ 19 :‬لنفتتتض ان متتدير او منستتق الشتتوع لتتديه وستتيلة اتصتتالت فعالتتة مثتتل النتتتنت‪ ,‬و‬
‫يعرف كيف يقود بدون تعسف‪ ,‬اذا َ زيادة التطتتوعي يفتتي بتتالغرض بكتتل تأكيتتد ويكتتون افضتتل متتن متطتتوع واحتتد و فتتي‬
‫اعتقادي ان مستقبل البمجيات حرة الصتتدر هتتي فتتي يتتد اولئك التتذين يعرفتتون كيتتف يعملتتون علتتى قتتواني لينتتوس‪ ,‬و‬
‫الذين يقيمون في بيئة الكتدرائية و يعتنقتتون مبتتدأ الستتوق “البتتازار” متتع العلتتم ان هتتذا ليعنت ان الجهتتودات الفرديتتة‬
‫لتعن شيئا بل على العكس تماما‪ ,‬و متتن وجهتتة نظتتري ان معظتتم الثتتورات التغييتتة فتتي عتتالم التقنيتتة ستتوف تبتتدأ متتن‬
‫رؤيتتة الفتتراد وقتتدرتهم علتتى التغييتت و البتكتتار‪ ,‬و متتن ثتتم يتتتم اثتتراء هتتذا التغيتت او البتكتتار بجهتتود الجتمعتتات‬
‫الستتاهمة‪ . .‬ربمتتا هتتذا ليتتس فقتتط مصتتي البمجيتتات الحتترة الصتتدر‪ .‬فل تستتتطيع أي بيئة تطويريتتة ان تجتتاري كميتتة‬
‫العطاء المنوح لتتبيئة حتترة الصتتدر )مثتتل بيئة لينكتتس( لحتتل مشتتكلة متتا‪ .‬و قلتتة هتتم التتذين يستتتطيعون تحمتتل تكتتاليف‬
‫التطوير و تعي مطورين بشكل مستمر مثل ما حتتدث فتتي مشتتوع‪ fetchmail‬بحيتتث ان برنامتتج ‪ fetchmail‬كتتان‬
‫يعمل علية ‪ 200‬مطور ) فتتي عتتام ‪1999‬م وصتتل العتتدد التتى ‪ 600‬مطتتور‪ ,‬واصتتبح العتتدد فتتي عتتام ‪ 2000‬م ‪ 800‬مطتتور( و‬

‫صفحة ‪20‬من أصل ‪25‬‬

‫الكاتدرائية_والسوق‪http://docs.ojuba.org/‬‬
‫مشروع وثائق أعجوبة‬
‫‪ .1‬الكتدرائية والسوق‪/‬البار‬ ‫الكتدرائية والسوق‪/‬البار‬

‫جميعهم يتبعون بوقتهم و مجهوداتهم بدون مقابل‪.‬‬


‫و في النهاية سوف ينتص مبدأ البمجيات الحرة‪ ,‬ليس لن العمتتل التكتتافلي عمل اخلقيتتا و احتكتتار البمجيتتات ليتتس‬
‫ذلك‪) ,‬على اساس انك تؤمن بالثانية الت انا و لينوس ل نؤمن بها( و لكتتن بكتتل بستتاطة لن التتبيئة الغلقتتة الصتتدر ل‬
‫تستطيع النتصار في السباق التطويري مع البيئة الحرة الصدر و ذلتتك لن الجتمعتتات التتت تلتتتف حتتول التتبيئة حتترة‬
‫الصدر تشارك بجهود اعظم وتكون متايدة باستمرار‪.‬‬

‫‪ .1.14‬عن الدارة و خط ماجينوت ‪:‬‬


‫انتهت الوثيقة الصلية )لللكتدرائية و السوق “البازار”( و الت كتبت في‪ 1997‬بما ذكر سابقا‪ -‬مما يستتعد الحشتتود متتن‬
‫البمجي الثوريي الذين ينافسون و يربكون بيئة البمجيتتات الغلقتتة ‪ .‬و لكتتن كتتثي متتن الشتتككي الجيتتدين لتتم يكونتتوا‬
‫مقتنعي بذلك‪ ,‬و الستتؤال التتذي تتتم طرحتته يستتتحق الشتتاركة فعل‪ ,.‬فمعظتتم العارضتتات التتت قتتدمت حتتول مبتتدأ الستتوق‬
‫“البازار” كانت تزعم بأنن ق ّللت من تقدير تأثي مضاعفة الجهود على الدارة التقليدية‪.‬‬
‫متتدراء تطتتوير البمجيتتات اصتتحاب العقليتتة التقليديتتة يعتضتتون دائمتتا علتتى ان عتتدم الهتمتتام بكيفيتتة تكتًون وتغيت و‬
‫انحلل فريق العمل في بيئة الصادر الحرة ينفي جزءا كبيا متتن اليتتة الظتتاهرة للعتتداد متتن الشتتاركي و التتت تتمي ت‬
‫بها بيئة التطتتوير للمصتتادر الحتترة عتتن بيئة التطتتوير للمصتتادر الغلقتتة‪ .‬وتعليقهتتم هتتو ان فتتي بيئة تطتتوير البمجيتتات‬
‫تكون عملية التطوير مجهود مستمرعب التتوقت و درجتتة تقبتتل تطلعتتات العملء للستتتمرار و الستتتثمار فتتي النتتتج هتتو‬
‫الهم‪ ,‬وليس فقط عدد الساهمي في الشوع‪ .‬و في الواقع لقد قمتتت بتطتتوير فكتترة ان الختتدمات التقنيتتة الستتتقبلية ذات‬
‫القيمة الضافة هي الحرك القتصادي لنتاج البمجيات و قد ذكتترت هتتذا فتتي مقالتتة‪ .The Magic Cauldron‬و‬
‫لكن هذا النقاش يحتوي علتتى مشتتكلة كتتبية غيت ظتتاهرة‪ ,‬لن الفرضتتيات الضتتمنية لتتبيئة تطتتوير البمجيتتات الحتترة ل‬
‫تستتتطيع ان تقتتدم مجهتتود مستتتمر‪ .‬فتتي الواقتتع‪ ,‬يوجتتد مشتتاريع حتترة الصتتدر حتتافظت علتتى تتتوجه متماستتك متتع وجتتود‬
‫مجتمع مشف على فتات زمنية طويلة بدون وجتتود انتتواع كتتثية متتن الحتتوافز او تحكتتم مؤسستت‪ ,‬واللتتذي يعتقتتد كتتثي‬
‫من الدراء انه بالغ الهمية‪ .‬فتطوير مشوع محتترر‪ GNU Emacs‬يعطينتتا مثتتال تعليمتتي‪ ,‬فقتتد احتتتوى علتتى مجهتتود‬
‫مئات متتن الشتتاركي خلل ‪ 15‬عتتام التتى ان وصتتل التتى رؤيتتا تطويريتتة موحتتدة‪,‬و علتتى الرغتتم متتن كتتثة التغيتت فتتي‬
‫الستتاهمي و وجتتود شتتخص واحتتد مشتتف علتتى الشتتوع )مؤستتس الشتتوع( كتتان متواجتتدا خلل فتتتة الشتتوع كاملتتة‬
‫‪ GNU Emacs‬لطول العمر‪.‬‬ ‫ليوجد مشوع واحد مغلق الصدر متناظر مع مشوع محرر‬
‫وهتتذا يتتثي التستتاؤل حتتول الطريقتتة التقليديتتة لدارة تطتتوير البمجيتتات و التتت تكتتون مستتتقلة عتتن بتتاقي النقتتاش فتتي‬
‫صياغة وثيقة الكتدرائية و السوق‪ .‬فاذا كان ممكنا لشوع‪ GNU Emacs‬ان يستمر بالحافظة علتتى رؤيتتا تطويريتتة‬
‫موحدة لدة ‪ 15‬عام‪ ,‬او لنظام تشغيل مثل لينكس ان يحافظ علتتى الثتتل لكتتث متتن ‪ 8‬اعتتوام متتع وجتتود تغيت و تطتتوير‬
‫للعتاد بشكل مستمر )مع العلم ان هذا هو الواقع( ولو كان هنالك الكتتثي متتن مشتتاريع البمجيتتات حتترة الصتتدر لفتتتة‬
‫تتجتتاوز ال ‪ 5‬ستتنوات‪ ,‬اذا فالستتؤال هنتتا يكتتون‪ ,‬متتاهو القابتتل للتكتتاليف الباهظتتة لعمليتتات تطتتوير البمجيتتات باتبتتاع‬
‫الدارة التقليدية؟؟‬
‫مهما كان القابل فهو بكل تاكيد ليس تحقيق موثوق للهتتداف‪ ,‬او للميانيتتة‪ ,‬او لكتتل الزايتتا للمواصتتفات ‪,‬فنجتتد انتته متتن‬
‫النادر انتاج مشوع مدار بواحدة من هذه الزايا الذكورة‪ ,‬بغض النظر عتتن كتتل الثلث‪ .‬ايضتتا متتن الواضتتح ان الطريقتتة‬
‫التقليديتتة تتتواجه مشتتكلة فتتي تبنتت التقنيتتات الجديتتدة التغيتتة خلل عمتتر مشتتوع متتا‪ ,‬و فتتي القابتتل بيئة تطتتوير‬
‫‪1‬‬
‫البمجيات الحرة اثبتت قدرتها على النمو و التغي و التبن بشكل اكث فعالية‬
‫و كثي من الناس يعتقد عند تعاملهم مع برمجيتتات مغلقتتة الصتتدر‪ ,‬بوضتتوح الستتئولية القانونيتتة‪ ,‬بحيتتث يكتتون هنتتاك‬
‫شتتخص مستتائل قانونيتتا ليتتتم التعتتويض عنتتد حتتدوث خلتتل فتتي مشتتوع متتا‪ .‬و لكتتن هتتذا غيت صتتحيح‪ ,‬فمعظتتم رختتص‬
‫‪ 1‬و من السهل اثبات ذلك‪ ,‬فمثل‪ :‬مقارنة تاريخ النتنت )‪ 30‬عام( مع تقنيات الشبكات الملوكة )مغلقة الصدر( او تكلفة التحويل من ‪-16‬‬
‫‪ bit‬الى ‪ bit-32‬لدى مايكروسوفت‪ Microsoft Windows‬مع تغي لينكس و الذي تم بدون صعوبة في نفس الوقت‪ ,‬و ليس‬
‫التعامل مع خطوط انتاج انتل ‪ Intel‬التغية و لكن العشات من العتاد الدائم التغي بما في ذلك عتاد الفا‪bit Alpha-64‬‬

‫صفحة ‪21‬من أصل ‪25‬‬

‫الكاتدرائية_والسوق‪http://docs.ojuba.org/‬‬
‫مشروع وثائق أعجوبة‬

‫‪ .1‬الكتدرائية والسوق‪/‬البار‬ ‫الكتدرائية والسوق‪/‬البار‬

‫البمجيات كتبت لتستتقط حتتق ضتتمان النتتتج ناهيتتك عتتن ضتتمان النتاجيتتة‪ .‬و وقتتائع التعتتويض التتت تمتتت لبامتتج لتتم‬
‫تؤدي عملها كما هو نادرا جدا‪ .‬حت لو كانت هذه الوقائع كثية لتتن تشتتعر بالرتيتتاح فقتتط لن هنتتاك شتتخص او جهتتة‬
‫تستطيع ان تشتكيها و هذا ل يحقق الهدف‪ ,‬فانت ل تريد ان تكون طرفا في قضتتية قانونيتتة ولكتتن تريتتد ان يكتتون لتتديك‬
‫برنامج يعمل‪.‬‬
‫اذا مالذي تحصل عليه بدفع تكليف الدارة؟‬
‫لكي نفهم هذا لبد ان نفهم ماذا يعتقد مدراء تطوير البمجيات انهم يفعلتتون‪ .‬امتترأة اعرفهتتا وهتتي جيتتدة فتتي هتتذا الجتتال‬
‫تقول ان مدراء تطوير البمجيات لديهم خمس مهام ‪:‬‬
‫‪ -‬تحديد الهداف و جعل الجميع يركز على هتتذة الهتتداف‪ - .‬الراقبتتة و التتتدقيق للتأكتتد ان التفاصتتيل الهمتتة ل تهمتتل‪- .‬‬
‫تحفي الناس لعمل الهام الملتتة‪ - .‬ترتيتتب و توزيتتع الهتتام بيت النتتاس لضتتمان اعلتتى انتاجيتتة‪ - .‬تتتوفي التتوارد اللزمتتة‬
‫لدعم الشوع‪.‬‬
‫من الواضح ان هذه الهداف مهمة جدا‪ ,‬و لكن تحت مظلة البمجيات الحرة و البيئة الجتماعية الحيطة بهتتا‪ ,‬قتتد تبتتدو‬
‫هذه الهداف غي مهمة‪ ,‬ولكن دعونا نعاين هذة الهداف بشكل عكس‪.‬‬
‫صديقت تقول ان تقديم الوارد هو تكتيك دفاعي‪ ,‬فبعد ان تحصل علتتى النتتاس و الجهتتزة و الستتاحة الكتبيتتة‪ ,‬لبتتد ان‬
‫تقوم بحمايتها من الدراء الخرين الذين ينافسونك على نفس التتوارد و متتن التتوظفي الجتتدد التتذين يحتتاولون الستتتفادة‬
‫من الوارد بأكب شكل ممكن‬
‫و لكتتن مطتتورين الصتتادر الحتترة هتتم فتتي الستتاس متطوعتتون‪ ,‬يختتتارون انفستتهم لرغبتهتتم و قتتدراتهم للتتتبع للمشتتوع‬
‫الذي يعملون فيه )و هذا يظتتل صتتحيحا حتتت لتتو دفتتع لهتتم مقابتتل الختتتاق او تطتتوير البمجيتتات الحتترة( و لكتتن روح‬
‫التعاون تتكفل بازالة جانب حماية الوارد بشكل تلقائي‪ .‬فالنتتاس يقومتتون باحضتتار متتواردهم معهتتم ممتتا يعنت ل حاجتتة‬
‫لدير لكي يحمي هذه الوارد بالعن التقليدي‪.‬‬
‫علي اية حال في عتتالم يحتتتوي علتتى اجهتتزة حاستتوب رخيصتتة و شتتبكة اتصتتال عاليتتة الستتعة‪ ,‬نجتتد ان التتورد الصتتعب‬
‫الوحيد هو وجود اليد العاملة الاهرة الهتمتتة‪ ,‬الشتتاريع حتترة الصتتدر ل تنتتدثر و تمتتوت بستتبب عتتدم و جتتود معتتدات او‬
‫مساحة مكتبية و لكن الطريقة الوحيدة لوت مثل هذه الشاريع هو ان يفقد الطورون الهتمام‪.‬‬
‫اذا كانت هذه هي الحالة‪ ,‬فبل شك انه من الهمية ان يقوم مطوري البمجيتتات الحتترة بتنظيتتم انفستتهم للوصتتول لعلتتى‬
‫انتاجية عن طريق الختيار الشخص و الوسط الجتماعي يحدد مقدار الكفتتاءة بل رحمتتة‪ .‬ولصتتديقت ختتبة فتتي عتتالم‬
‫تطوير البمجيات الحرة و البمجيات الغلقتتة و تتتؤمن ان بيئة تطتتوير البمجيتتات الحتترة تكتتون اكتتث كفتتاءة و ان احتتد‬
‫تكلون‪ %‬متتن جملتتة‬
‫الستتباب لحتتدوث ذلتتك ان تقاليتتد البمجيتتات الحتترة ل تقبتتل ال التتبمجي الوهتتوبي و التتذين يشت ‪5‬‬
‫البمجي‪ .‬و هي تقض معظم وقتها في ادارة و تنسيق اعمال البمجي القل كفاءة و الذين يشتتكلون‪ %95‬متتن جملتتة‬
‫البمجي فلذلك هي تعتتي و بشتتكل مباشت الفتترق الكتتبي بيت التتبمجي البتتارعي و التتبمجي القتتل كفتتاءة‪ .‬اذن هتتل‬
‫الشاريع الفردية و القطاع بشكل كامل يكتتون افضتتل باستتتخدام فقتتط‪ %50‬متتن الطتتورين ذوي الكفتتاءة العاليتتة؟ فنستتب‬
‫العطاء هذه دائما ما تطرح هذا التساؤل‪ .‬و الدراء الذكياء ادركوا في الاض انه لتتو انحصت عمتتل التتدير التقليتتدي فتتي‬
‫تحويل الطور الغي كفؤ من خسارة الى ربح بسيط جدا فعملهم هذا ل يستحق الجهود‪.‬‬
‫و نجاح مجتمع الصادر الحرة يستعرض ما ذكر بشكل واضح‪ ,‬عتتن طريتتق تقتتديم ادلتتة ملموستتة لستتتقطاب متطتتوعي‬
‫عن طريق النتنت ارخص و اكث انتاجيتتة متتن ان تكتتون الدارة عبتتارة عتتن مبنت ممتليتتء بمتتوظفي يرغبتتون فتتي عمتتل‬
‫شء اخر‪.‬‬
‫ممتتا يضتتعنا امتتام التستتاؤل عتتن التحفيتت‪ .‬والطريقتتة العروفتتة والرادفتته لتترأي صتتديقت‪ ,‬ال وهتتو ان التتدراء فتتي التتبيئة‬
‫التقليدية مهم جدا للتعويض عن النتائج الفقية الت يقدمها الطتتورون التتذين يفتقتترون للتحفيت و الرغبتتة‪ .‬هتتذا الجتتواب‬
‫يحمل في طياته مضمون مهم و هو ان مجتمعات الصادر الحرة يمكن العتماد عليها للقيام بعمل ما اذا كان هتتذا العمتتل‬

‫صفحة ‪22‬من أصل ‪25‬‬

‫الكاتدرائية_والسوق‪http://docs.ojuba.org/‬‬
‫مشروع وثائق أعجوبة‬
‫‪ .1‬الكتدرائية والسوق‪/‬البار‬ ‫الكتدرائية والسوق‪/‬البار‬

‫جميل او محبذ لدى التقنيي‪ ,‬و اي عمل اخر سوف يهمل او سيتم بطريقتتة ركيكتتة جتتدا‪ ,‬ال اذا كتتان هنتتاك مقابتتل متتادي‬
‫لعملهم و بوجود الدارة و الرقابة‪ .‬و هنا اود ان انوه عن الستتبب النفست و الجتمتتاعي التتذي يجعلنت اشتتك فتتي صتتحة‬
‫هذا الدعاء و الوجود في وثيقة‪ .Homesteading the Noosphere‬و لكن اعتقتتد انتته متتن المتتتع ان ننتتاقش‬
‫الثار التتبة لقبول هذا الستنتاج‪.‬‬
‫اذا كان النموذج التقليدي الغلق الصدر لتطوير البمجيتتات و التتدار بشتتكل مكثتتف محمتتي فقتتط بطريقتتة ختتط متتاقينتو‬
‫‪ Maginot Line‬و الت تعن ان اكتشاف الشكلة يؤدي الى اكتشاف مشكلة اختترى‪ ,‬اذا ستتوف تكتتون هنتتاك جتتزيئات‬
‫في برنامج كل فرد تحتوي على علل كامنة لن تظهر الى ان يكتشفها شخصا ما و هذا قد ليحتتدث ال بعتتد فتتتة طويلتتة‬
‫جدا مما قد ل يكون هناك اهتمام لصتتلحها بعتتد هتتذه التتدة و ايضتتا تكتتون متتن الصتتعوبة البالغتتة ان يقتتوم شتتخص متتا‬
‫باصلح او التحايل على هذه العلل بعد مض كل هذا التتوقت‪ .‬لتتذلك فتتي التتوقت التتذي تظهتتر منافستتة علتتى برنامتتج حتتر‬
‫الصتتدر لجزئيتتة مملتتة متتن برنامتتج متتا‪ ,‬العملء ستتوف يعرفتتون انتته اخيتتا ستتوف يتتتم اصتتلح هتتذه العلتتة و الستتبب ان‬
‫الطور اختار هذا العمتتل ممتتا يعنت انتته منجتتذب لهتتذه الشتتكلة و لتته ميتتول لهتتذه الجزئيتتة “العلتتة” و فتتي عتتالم تطتتوير‬
‫البمجيات مثل اي بيئة اخرى تتطلب البتكار و القدرة علتتى البتتداع الحفتتز التتداخلي لعمتتل شتتء اقتتوى بكتتثي متتن اي‬
‫محفتتز اختتر و لتتو كتتان متتادي‪ .‬و وجتتود الدارة التقليديتتة لتحفيت الطتتورين‪ ,‬هتتو علتتى الرجتتح التكتيتتك الجيتتد و لكنهتتا‬
‫استاتيجية سيئة‪ ,‬و هذا قد يؤدي الى نجاح على الستوى القريب و لكنه قد يفشل على الستوي البعيد‪.‬‬
‫لذلك يبدو ان الطريقة التقليدية لتطوير البمجيات تخس امتتام بيئة الصتتادر الحتترة فتتي نقطتتتي وهتتي )تقتتديم التتوارد‬
‫و التنسيق( و تبدو كما لو كانت تعمل في الوقت الضائع باستثناء حافز اخر‪ .‬و يظل الدير التقليدي محاص و بتتدون‬
‫جدوى حقيقية‪ .‬و تظل اقوى نقطتتة نقتتاش لتتبيئة الصتتادر الحتترة هتتي مراجعتتة القتتران )النتتداد( بحيتتث تضتتمحل جميتتع‬
‫الطرق الرادفة لها لصطياد العلل بشكل فعال‪ .‬هل نسطيع الحفتتاظ علتتى تحقيتتق الهتتداف كمتتبر للتكلفتتة الناتجتتة متتن‬
‫الدارة التقليدية للبمجيات؟ ربما و لكن لكي نقوم بذلك نحتاج الى ستتبب مقنتتع لكتتي نصتتدق ان لجتتان الدارة وخطتتط‬
‫الشكات هي اكث نجاحا في تحديد اهداف اكفأ و اكث انتشارا من قادة الشاريع الذين يقومتتون بتتدور مماثتتل فتتي عتتالم‬
‫الصتتادر الحتترة يظهتتر ان هتتذه القضتتية صتتعب اثباتهتتا‪ .‬و فتتي الواقتتع هتتذا ليتتس بستتبب الصتتادر الحتترة ) التتدليل وجتتود‬
‫مشاريع معمرة مثل ‪ Emacs‬او قدرة لينوس تورفولتتدس‪ Linus Torvalds's‬علتتى توظيتتف مجموعتتات كتتبية متتن‬
‫الطورين‪ ,‬و قد يكون اقنعهم بأنه ينوي ان يهيمن على العالم( و هذا يجعلها صتتعبة‪ ,‬فتتي الواقتتع هتتذا ناتتتج عتتن قصتتور‬
‫في الدارة التقليدية لتحقيق اهداف مشاريع البمجيات…‬
‫و اجدة من اهم النظريات في هندسة البمجيات وهي ان‪ %60‬الى ‪ %70‬متتن مشتتاريع تطتتوير البمجيتتات امتتا لتكتمتتل‬
‫او يرفضها مستخدميها‪ .‬فاذا كانت هذه الرقام قريبة من الواقع )و انا لم اقابتتل متتدير قتتط رفتتض او كتتذب هتتذه الرقتتام(‬
‫اذا كثي من مشاريع البمجيات ستوجه لهدف ما اما ان تكون ‪ :‬ا – امكانية تحقيقها غي واقعية ب – خاطئة تماما ‪.‬‬
‫والخية قد تكون السبب في تقشعر الدراء عند سماعهم كلمة ” لجنة إدارة” )وخصوصا( اذا كتتان الستتامع هتتو متتدير‪.‬‬
‫فقد و لى الزمن الذي يمسك البمجون بهذا النمط فقد يظهر هذا في قصاصات دلبت‪ Dilbert‬الكرتونية و قتتد تجتتده‬
‫الن متتتدلي متتن مكتتتب التتدير التنفيتتذي‪ .‬اذا ردنتتا ستتيكون وبكتتل بستتاطه للطريقتتة التقليديتتة لدارة تطتتوير البمجيتتات‬
‫كالتالي ) اذا كانت مجتمعات الصادر الحرة قللت من تقدير الدارة التقليدية‪ ,‬لاذا كثي منكم يظهر ازدراء لنهجكم؟ (‬
‫ومتتره اختترى مثتتال مجتمعتتات الصتتادر الحتترة يوضتتح هتتذا الستتؤال بشتتكل افضتتل لننتتا نجتتد التعتتة فيمتتا نعمتتل‪ .‬فالعمتتل‬
‫البداعي الذي نقوم به احرز نجاح تقن و حصة في السواق و نجاح منقطع النظي ت فتتي مشتتاركة العقتتول‪ .‬فقتتد اثبتنتتا‬
‫اننا نقدم برمجيات افضل بل و اثبتنا ايضا ان التعة هي أساس العمل‪ .‬بعد سنتي و نصف من كتابتتة النستتخة الولتتى‬
‫من هذه الوثيقتتة‪ ,‬الفكتترة الجذريتتة التتت استتتطيع ان اقتتدمها فتتي نهايتتة هتتذه الوثيقتتة ‪ ,‬هتتي ليستتت رؤيتتا لتتبيئة برمجيتتات‬
‫تهيمن عليها الصادر الحرة‪ ,‬بعد كتتل شتتء‪ ,‬يبتتدو ان ذلتتك ظتتاهر لكتتثي متتن النتتاس حتتت لولئك التتذين يرتتتدون البتتدل‬
‫“رجال العمال”‬
‫بالحرى‪ ,‬اود ان اقتح ما قد قد يكون درس اعمق و اشتتمل فتتي البمجيتتات )و متتن المكتتن ان يشتتمل هتتذا التتدرس او اي‬
‫عمل ابتكاري ابداعي متخصص( البش عادة ما يستمتعون بعمل ش ما خصوصا اذا كان هذا العمل يشتتكل أقص ت قتتدر‬

‫صفحة ‪23‬من أصل ‪25‬‬

‫الكاتدرائية_والسوق‪http://docs.ojuba.org/‬‬
‫مشروع وثائق أعجوبة‬

‫‪ .1‬الكتدرائية والسوق‪/‬البار‬ ‫الكتدرائية والسوق‪/‬البار‬

‫من التحدي و ليس سهل الى حد اللل‪ ,‬و ليس صعب النال ايضتتا‪ .‬اذا ستتبب ستتعادة البمتتج بتتان يكتتون شخصتتل مهمتتا‬
‫ليس مهمشا وغي مثقل بالهداف العقيمة وان ل تكون آلية عمل مجهدة‪ .‬اذا فالعادلة هي )التعة تحدد الكفائة(‬
‫و فيما يخص آلية عملك فالخوف و الشمئاز بحد ذاته دليل على ان آلية العمتتل هتتذه فاشتتلة‪ .‬فالتعتتة و روح الفكتتاهه‬
‫و الرح هما بكل تأكيدا لصول و لم يكن عبثا حي ذكتترت اعله ” الجحافتتل الستتعداء” و لتتم تعتتد اضتتحوكة ان شتتعار‬
‫لينكس هو حيوان البطريق‬
‫قد يكون ان اهم درس يعلمنتتا ايتتاة نهتتج الصتتادر الحتترة‪ ,‬ان اللعتتب هتتو اكتتث الطتترق اقتصتتاديا و كفتتائة خصوصتتا فتتي‬
‫العمال الت تتطلب البداع و البتكار‬

‫‪ .1.15‬خاتمة الكتاب‪ :‬نيتسكيب ‪ Netscape‬تحتضن السوق "البار" ‪:‬‬


‫انه شعور غريب أن تدرك أنك تساعد على صنع التاريخ‪.‬‬
‫فتتي ‪ 22‬ينتتاير ‪ 1998‬و تقريبتتا بعتتد ستتبع اشتتهر متتن نشتت هتتذه الوثيقتتة ) الكتدرائيتتة و الستتوق )التتبار( نتستتكيب‬
‫‪ (.Netscape Communications, Inc‬اعلنتتتت خططهتتتا لنشتتت الشتتتفرة الصتتتدرية لللمتصتتتفح ) نيتستتتكيب‬
‫كميونكيت ‪ (Netscape Communicator‬و لم اكن اعرف انهم ستتوف يقومتتون بتتذلك قبتتل العلن‪ . .‬ايتترك هتتان‬
‫‪ Netscape‬ارستتل لتتي بريتتدا‬ ‫‪ Eric Hahn‬نتتائب الرئيتتس التنفيتتذي وكتتبي مستتؤولي التكنولوجيتتا فتتي نيتستتكيب‬
‫الكتونيا بقول فيه‬
‫” نيابة عن الجميع في نيتسكيب ‪ Netscape‬اود ان اشكرك لستتاعدتنا لنكتتون الوائل للوصتتول التتى هتتذا القتترار ‪ .‬ان‬
‫افكارك و كتابتك كانت مصدر الهام لهذا القرار”‬
‫``‪On behalf of everyone at Netscape, I want to thank you for helping us get to‬‬
‫‪this point in the first place. Your thinking and writings were fundamental‬‬
‫‪''.inspirations to our decision‬‬
‫و في السبوع التالي سافرت الى و ادي السليكون‪ Silicon Valley‬بناَء على دعوة متتن نيتستتكيب ‪Netscape's‬‬
‫للقيام بورشة عمل ليوم واحد ‪ )4‬فابراير ‪ (1998‬مع مجموعة من الدراء التنفيذين و التقنيي لقد صممنا لنيتستتكيب اليتتة‬
‫اطلق الشفرة الصدرية و الرخصة‪.‬‬
‫وبعد بضعة أيام كتبت ما يلي ‪ :‬نيتسكيب ‪ Netscape‬اوشك على توفي نموذج كبي و حتتي للستتوق “البتتازار” فتتي‬
‫العالم التجاري‪ .‬فتقاليد الصادر الحرة الن تواجه خطتتر فتتاذا كتتانت اجتتراءات نيتستتكيب‪ Netscape's‬فاشتتلة عنتتدئذ‬
‫فان مبدأ الصادر الحرة سوف يهمش من جانب العالم التجتتاري و لتتن يمستتوه حتتت عقتتد متتن الزمتتان‪ .‬ومتتن جتتانب اختتر‪,‬‬
‫هذه ايضا فرصة مذهلة‪ ,‬فردود الفعال الوليتتة لهتتذا التصتتف فتتي استتواق التتال كتتان ايجابيتتا بحتتذر‪ .‬لقتتد ُمنحنتتا فرصتتة‬
‫لنثبت انفسنا و اذا استطاعت نيتسكيب ‪ Netscape‬ان تستجع حصص السوق عن طريق هذا التصتتف‪ ,‬متتن المكتتن‬
‫ان يثي هذا ثورة في عالم البمجيات‪ .‬العام القبل قد يكون تثقيفي و مثي‪.‬‬
‫و بالفعل كانت كذلك‪ .‬فيما اكتب في منتصف عام ‪ 2000‬التطوير الذي طتترأ علتتى متتا ستتمي متتوزيل‪ Mozilla‬لحقتتا لتتم‬
‫يكن شيئا غي نجتتاح محقتتق‪ .‬و قتتد حققتتت اهتتداف نيتستتكيب ‪ Netscape's‬الساستتية‪ ,‬و التتت كتتانت تتتواجه سياستتة‬
‫الحتكار الت تتبعها مايكروسوفت‪ Microsoft‬لتصفحها‪ .‬و ايضا حققت نجاح درامتتاتيكي )اصتتدار الجيتتل القتتادم متتن‬
‫محرك قيكو ” ‪”Gecko rendering engine‬‬
‫على اية حال لم يحصل تبع كبي للجهود من خارج نيتسكيب ‪ Netscape‬و الت تأمل لها الفريتتق الؤستتس لتتوزيل‬
‫‪ Mozilla‬و يبد ان الشكلة تكمن في ان فريق موزيل خالف احد اهم الشوط الساسية لنمتتط الستتوق “البتتازار” فهتتي‬
‫لم تصدر نموذج يعمل لكي يقوم التبعون بتشغيله لكي يساهمون به )امتد هذا التتى اكتتث متتن ستتنة التتى ان قتتام فريتتق‬
‫موزيل ‪ Mozilla‬ببناء البنامج من الصدر و الت تتطلب رخصة مغلقة لكتبة موتف‪(Motif library‬‬

‫صفحة ‪24‬من أصل ‪25‬‬

‫الكاتدرائية_والسوق‪http://docs.ojuba.org/‬‬
‫مشروع وثائق أعجوبة‬
‫‪ .1‬الكتدرائية والسوق‪/‬البار‬ ‫الكتدرائية والسوق‪/‬البار‬

‫و السلبيات )من وجهة نظر العلم الخارجي( ان موزيال‪ Mozilla‬لم تقدم متصفح ذو قيمتتة منتتذ ستتنتان و نصتتف متتن‬
‫وقت اطلق الشوع و في‪ 1999‬قام احدي مدراء الشوع بتصعيد مشتتكلة عتتدم كفتتاءة الدارة و الفتترص الضتتائعة فقتتد‬
‫قال ” ان الصادر الحرة ليست عصا سحرية” و بالفعل فهو ليس كذلك‪ .‬فمبدأ التخمي و الذي اختتذ فتتتة طويلتتة بتتدأ‬
‫بالتحستتتن بشتتتكل جتتتذري الن )نوفمتتتب‪ (2000‬مقارنتتتة بالبنامتتتج فتتتي ايتتتام استتتتقالة جيمتتتي زوينستتتكس‪Jamie‬‬
‫‪ Zawinski's‬و في السابيع الخيتتة الصتتدارات الليليتتة ارتقتتت التتى متصتتفح ذو كفتتاءة و يمكتتن استتتخدامه‪ .‬و لكتتن‬
‫رأي جيمي كان صحيحا فقد ادعى ان التوجه للمصادر الحرة لن ينقتتذ مشتتوع يعتتاني متتن علتتة فتتي تحديتتد الهتتداف او‬
‫‪ Mozilla‬بتقتتديم‬‫شفرة مصدرية عشوائية او اي متتن المتتراض الزمنتتة التتت تصتتيب مشتتاريع التطتتوير‪ .‬فقتتامت متتوزيل‬
‫نموذجا لشوع حر الصدر فاشل و مشوع حر الصدر ناجح ايضا‪.‬‬
‫و في الوقت الحالي فكرة الصادر الحتترة حققتتت نجاحتتا كتتبيا ‪ ,,‬ووجتتد مؤيتتدين وانصتتار فتتي كتتل مكتتان‪ .‬و بعتتد اصتتدار‬
‫نيتستتكيب ‪ Netscape‬نتترى نمتتوا كتتبيا و متايتتدا بالهتمتتام باتبتتاع نمتتط الصتتادر الحتترة‪ ,‬نتترا ميتتل للتتتوجه لتته و‬
‫النجاح الستمر لنظام التشغيل لينكس‪ .‬فالتجاه الذي اطلقته موزيل ‪ Mozilla‬ل يزال مستمر و متايد‪.‬‬

‫صفحة ‪25‬من أصل ‪25‬‬

‫الكاتدرائية_والسوق‪http://docs.ojuba.org/‬‬

You might also like