صندوق الأدوات

نصائح لدعم البرمجيات مفتوحة المصدر

إصدار برمجيات مفتوحة المصدر مصمَّمة في المختبر كثيرًا ما يُلقي بتلالٍ من الجهود غير المتوقعة على عاتق المطورين. 

آنا نووجرودزكي
  • Published online:

Illustration by The Project Twins

في العاشر من إبريل، أعلن علماء الفيزياء الفلكية أنَّهم التقطوا أول صورة على الإطلاق لثقبٍ أسود. وكان هذا نبأً يبعث على البهجة، لكنَّ العناوين الإخبارية الرئيسة جميعها التي احتفت بحماس بذلك الإنجاز لم تذكر أنَّ الصورة كان من المستحيل التقاطها، لولا وجود برنامجٍ مفتوح المصدر. كُوِّنَت الصورة باستخدام برنامج «ماتبلوتليب» Matplotlib، وهو بمثابة مكتبة تَستخدِم لغة البرمجة «بايثون» لتمثيل البيانات في رسومٍ بيانية، بالإضافة إلى استخدام مكوناتٍ أخرى من نظام بايثون البيئي مفتوح المصدر. وبعد خمسة أيام فحسب من التقاط الصورة، رفضت المؤسسة الأمريكية الوطنية للعلوم (NSF) مقترح منحة لدعم ذلك النظام، قائلةً إنَّ البرنامج لا يحقق التأثير الكافي.

تُعَد هذه مشكلةً شائعة؛ إذ يعترف الكثيرون بضرورة البرمجيات مفتوحة المصدر في مجال العلوم، لكن تمويلها غير مستدام. وفي الغالب لا تحظى تلك البرامج بالدعم، إلا حسب الحاجة. ويقدم هذا الدعم خريجون، أو باحثون في دراسات ما بعد الدكتوراة، مثقَلون بالكثير من الأعمال، وهو ما يمكن أن يؤدي إلى إنهاكهم تمامًا. وتقول آن كاربنتر، التي طوّر مختبرها أداة تحليل الصور «سيل بروفايلر» CellProfiler، المتخصصة في علم الأحياء الحاسوبي بمعهد برود، وهو مركز بحثي في مدينة كامبريدج بولاية ماساتشوستس الأمريكية، يتبع كلًّا من جامعة هارفارد، ومعهد ماساتشوستس: "هذا يشبه - إلى حدٍّ ما - الفرق بين امتلاكك تأمينًا صحيًّا، وامتلاكك حسابًا على منصة التمويل «جو فاند مي» حين تمرض جدتك، وتصطحبها إلى المستشفى. إنّ العيش على هذا النحو ليس لطيفًا".

في الغالب، يفتقر العلماء الذين يكتبون أكواد البرمجيات مفتوحة المصدر إلى أي تدريبٍ معتمَد في هندسة البرمجيات، بمعنى أنَّهم ربما لم يتعلموا الممارسات المثلى لتوثيق عملية كتابة الكود، واختباره. لكنَّ البرمجيات التي لا تحظى بالصيانة والدعم المطلوبَين يمكن أن تكون بمثابة مضيعة للوقت والجهد، وتعوق تكرار نتائج الأبحاث. وعن ذلك.. يقول آدم سيبل - وهو متخصص في علم الأحياء الحاسوبي في مختبر كولد سبرينج هاربور بنيويورك، وأحد القائمين على صيانة برنامج «فاست»PHAST، الذي يُستخدَم في عِلْم الجينومات المقارنة والتطورية - إنَّ علماء الأحياء الذين يستخدمون الأدوات الحاسوبية يقضون عادةً "ساعاتٍ طويلة" في محاولة تشغيل أكواد باحثين آخرين. ويضيف آدم سيبل قائلًا: "إنهم يحاولون البحث عنها، ولا يجدون موقعًا على الإنترنت لذلك، أو يكتشفون أنَّ الرابط لا يعمل، أو أنَّه لم تَعُد من الممكن ترجمة الكود، أو أنه يتعطل حينما يحاولون تطبيقه على بياناتهم".

غير أن هناك حِيَل يمكن أن تكون مفيدةً، ونماذج عمل يمكن محاكاتها.. فإذا كانت مجموعتك البحثية تخطط لإصدار برنامج مفتوح المصدر، يمكنك الاستعداد لجهود الدعم المطلوبة، والأسئلة التي ستُثار حين يبدأ آخرون في استخدام البرنامج. وليس هذا سهلًا، لكنَّ القيام بذلك يمكن أن يؤدي إلى الإشادة بالمطوِّرين، والاعتراف بصنيعهم، وتحسين الكفاءة في المجال، حسبما يوضح وولفجانج هوبر، وهو متخصص في علم الأحياء الحاسوبي بمختبر الأحياء الجزيئية الأوروبي في هايدلبرج بألمانيا. ويضيف هوبر قائلاً: "إنني أرى هذا ممتعًا".

أعدّ خطةً

بالنسبة إلى مطوِّري البرمجيات العلمية، لا يُعَد يوم إطلاق البرنامج نهاية العمل، بل يشكل في أحيان كثيرة بدايته، إذ يقول تيم هوبر، عالم البيانات في شركة «سيلانس» Cylance في مدينة رالي بولاية كارولاينا الشمالية الأمريكية، في حسابه على «تويتر» مازحًا: "حين تعطي إنسانًا سمكة، تكون قد أطعمته يومًا واحدًا. لكنْ اكتب له كود برنامجٍ للصيد؛ وستعمل على صيانته طوال العمر". لهذا السبب.. عيَّنت كاربنتر مهندس برمجيات بدوام كامل؛ ليتولى صيانة برنامج «سيل بروفايلر»، الذي يسجل حاليًّا حوالي 700 سؤالٍ و100 من بلاغات الأخطاء وطلبات الميزات في السنة، أو حوالي 15 سؤالًا في الأسبوع، لكنَّ معظم أعمال صيانة البرمجيات مفتوحة المصدر يقوم بها متطوعون، إذ يقول سيبل عن جهوده لتوفير الدعم الفني لبرنامج «فاست»: "كنتُ أفعل هذا بنفسي، بعد منتصف الليل تقريبًا".

واستعدادًا لما ستواجهه، من المفيد أن تكون لديك فكرة عمّا أنت مقْدِمٌ عليه. فبعض البرمجيات يحتاج دعمًا قصير الأجل فقط، في حين قد تُستَخدم برامج أخرى لعقود. وتقول نيللي ڤاروكو إنَّه في مجالها الذي تعمل به - وهو تعلُّم الآلة في علم الأحياء - سرعان ما تصبح البرمجيات عتيقة الطراز، وغير صالحة للاستخدام، لأنَّ حجم مجموعات البيانات يتغير بسرعةٍ شديدة. وڤاروكو أخصائية في علم الأحياء الحاسوبي بجامعة كاليفورنيا في مدينة بيركلي، وقد ساعدت في تطوير مكتبة «سيكيت ليرن» scikit-learn، وهي مكتبة لتعلُّم الآلة، تَستخدِم لغة «بايثون». وتقول: "حين بدأتُ في إعداد دراسة الدكتوراة، كل ما كنتُ أعمل عليه كانت تَسَعُه ذاكرة الوصول العشوائي، ولم أواجه أي مشكلة فيما يتعلق بحجم الذاكرة بتاتًا. لكنْ صارت الذاكرة الآن تشكل تحديًا كبيرًا". وتتوقع أنَّها ستكون بحاجة إلى صيانة أداتين، صمّمتهما لتحليل الحمض النووي وبِنَى الكروموسومات - أداتَي «آيسد» Iced، و«باستيس» Pastis - لخمس سنواتٍ فقط، قبل أن تصيرا عتيقتَي الطراز، وغير صالحتَين للاستخدام.

ومع هذا.. تضيف ڤاروكو قائلة إنّ تقادُم البرامج ليس سيئًا؛ فمِن المهارات المهمة معرفة متى يجب عليك التوقف عن دعم برنامجٍ ما. وينصح وولفجانج هوبر في تلك المسألة قائلًا: "دع الأداة تموت حين تصل إلى نهاية صلاحيتها، أو ابحث لها عن راعٍ، حين يقرِّر القائم على صيانتها أن ينسحب".

وأيًّا كانت مدة استخدام برنامجك، يرى أندرياس مولر - العالِم في مجال تعلُّم الآلة بجامعة كولومبيا في مدينة نيويورك - أنَّ الممارسات الجيدة في هندسة البرمجيات وتوثيقها ضروريان. وهذه الممارسات تشمل أنظمة التكامل المستمر (مثل «تراڤيس سي آي» TravisCI)، والتحكم في النسخ («جيت» Git) واختبار الوحدات. ويوضح مولر قائلًا: "إنّ أنظمة التكامل المستمر تخبرك في كل مرة تغيِّر فيها الكود ما إذا كان لا يزال يعمل، أم أنَّك أفسَدْته"، ما دمتَ تكتب له الاختبارات الصحيحة ليعمل؛ أما نظام التحكم في النسخ، فهو نظام لتسجيل التغييرات في كود المصدر، بحيث يمكن العودة إلى أي إصدارٍ سابق، إذا لزم الأمر؛ أمّا اختبارات الوحدات، فتختبر كل مكون في البرنامج؛ لضمان سلامته. ويضيف مولر قائلًا إنّ هذه التوليفة "ستوفر وقتك بنسبة 100%". وهناك مؤسسات معينة، مثل مؤسسة «سوفتوير كاربنتري»Software Carpentry  التطوعية، ومعهد »إي ساينس« بجامعة واشنطن في مدينة سياتل، تستضيف معسكرات تدريب على تطوير البرمجيات، وتوفر دورات تعليمية على موقع «جيت هب» GitHub. كما يوفر «مركز إي ساينس الهولندي» Netherlands eScience Center في أمستردام دليلًا للممارَسات المثلى في تطوير البرمجيات، من خلال الرابط التالي: https://guide.esciencecenter.nl.

ولتسهيل صيانة البرمجيات مفتوحة المصدر، توصي ڤاروكو بالتركيز على سهولة قراءة الأكواد، بدلًا من الاهتمام بتصميم البرنامج، كي يحقق أفضل أداءٍ ممكن. وتقول عن ذلك: "أحاول دائمًا أن أجعل الكود قابلًا للقراءة، وأوثِّق كتابته جيدًا، وأختبره، حتى إذا ما حدث عطل ما؛ تمكّنتُ من إصلاحه سريعًا".

وهذا محتَّم الحدوث فيما يتعلق بالبرمجيات؛ حيث تقول ڤاروكو: "بمجرد أن يبدأ الناس في استخدام برنامجك، سيجدون أخطاءً". ويوصي هوبر بتلقِّي أسئلة المستخدمين عبر منتدًى عام، مثل «ستاك أوڤرفلو» Stack Overflow، حيث يمكن للمستخدمين تمييز سؤالهم من خلال اسم البرنامج. ويضيف قائلًا: "لا ترد على الرسائل الإلكترونية الخاصة، الواردة من المستخدمين؛ طلبًا للدعم"، إذ يوضح هوبر أنَّ المنتديات العامة توفر ثلاث مزايا: أولًا، تصل المنشورات عليها إلى عددٍ أكبر بكثير من المستخدِمين، مقارنةً بالرسائل الإلكترونية الفردية، وأنَّه "لكل شخص يكتب رسالةً إلكترونية، هناك - على الأرجح - 100 شخص يمنعهم الخجل من السؤال". ثانيًا، تشجع هذه المنتديات عادةً المستخدمين على طرح أسئلة أكثر تحديدًا واستنادًا إلى دراسة. ثالثًا، المنتديات العامة تُثنِي المستخدِمين عن الاستراتيجية المُهدِرة للوقت، المتمثلة في التواصل بالبريد الإلكتروني مع العديد من القائمين على صيانة البرمجيات بصورةٍ منفصلة لطرح السؤال نفسه.

ويوصي هوبر أيضًا بإصدار برنامجك في مستودعات بعينها، مثل «شبكة الأرشيف الشامل للغة الآر» Comprehensive R Archive Network  (CRAN)، أو «بيوكوندكتور» Bioconductor، وهو أرشيف جامع للبرمجيات البيولوجية المكتوبة بلغة «آر»، بدلًا من إصدارها على صفحتك الرئيسة الشخصية، أو موقع «جيت هب». فهذه المستودعات تتم إدارتها، وتوفر لمَن يرغبون في إصدار البرامج توجيهاتٍ خاصة بتقاليد التسمية، والعناصر المطلوبة للبرنامج، مثلما تفعل الدوريات العلمية تقريبًا. وبالإضافة إلى أنَّ مستودعَي «شبكة الأرشيف الشامل للغة الآر»، و«بيوكوندكتور» كليهما "يوفران إمكانية إجراء الاختبارات، واستخدام أنظمة التكامل المستمر على عديدٍ من المنصات، ويتضمنان أدوات تثبيت برامج قوية الكفاءة، وسهلة الاستخدام"، حسب قول هوبر.

مسألة تمويل

إنّ دعم البرمجيات يتطلب وقتًا ومالًا، لكنَّ الحصول على التمويل قد يكون صعبًا. ففي الولايات المتحدة مثلًا، تركز مؤسسة معاهد الصحة الوطنية الأمريكية (NIH)، والمؤسسة الأمريكية الوطنية للعلوم (NSF) على الأبحاث الجديدة. وفي الغالب، لا تفي صيانة البرمجيات مفتوحة المصدر بشروطها للتمويل. وتقول كاربنتر عن هذا: "هذه هي - في الحقيقة - مأساة وكالات التمويل بوجهٍ عام. فهي مستعدة لتمويل 50 مجموعة مختلفة؛ لتطوير 50 خوارزمية مختلفة، لكنَّها لن توافق على دفع أجر مهندس برمجيات واحد".

إنّ هذه المؤسسات وغيرها توفر أحيانًا بعض التمويل، إذ توثِّق سلسلة تغريدات على تويتر (انظر: go.nature.com/2yekao5) منحًا تُقَدِّمها مؤسسات معينة، مثل: قسم البنية التحتية الحيوية في المؤسسة الأمريكية الوطنية للعلوم، والمعهد الوطني لأبحاث الجينوم البشري، والمعهد الوطني للسرطان، التابعَين لمعاهد الصحة الوطنية الأمريكية، وبرنامج مشترك بين المؤسسة الأمريكية الوطنية للعلوم، ومجلس أبحاث التكنولوجيا الحيوية والعلوم البيولوجية في المملكة المتحدة (وهو الآن جزء من هيئة البحث والابتكار في المملكة المتحدة). وكذلك تُموِّل مؤسساتٌ أمريكية خاصة دعم البرمجيات مفتوحة المصدر، مثل مؤسسة «جوردون آند بيتي مور» Gordon and Betty Moore، ومؤسسة «ألفريد بي. سلون» Alfred P. Sloan، ومبادرة «تشان زوكربيرج» Chan Zuckerberg (CZI). وتقدِّم هذه الأخيرة دعمًا لبرنامج معالجة الصور «سيكيت إيميدج» scikit-image، المعتمِد على لغة «بايثون»، ومِنَصّتَي «إيميدج جاي» ImageJ، و«فيجي» Fiji، وتموِّل أيضًا مهندس البرمجيات في فريق «كاربنتر».

وفي المملكة المتحدة، يقدم معهد استدامة البرمجيات في جامعة إدنبره خدماتٍ مجانية وقصيرة عبر الإنترنت لتقييم استدامة البرمجيات، ويوفر زمالاتٍ بقيمة ثلاثة آلاف جنيه استرليني (3800 دولار أمريكي) للباحثين المقيمين في بريطانيا، أو المتعاونين معهم. ويتيح من حينٍ إلى آخر فرصًا للعمل مع خبرائه لمدة تصل إلى ستة أشهر؛ لإنتاج برمجياتٍ جديدة، أو تطوير برمجيات وممارسات صيانة قائمة بالفعل. وفي ألمانيا، يوصي وولفجانج هوبر بالاستفادة من مِنَح شبكة المفوضية الأوروبية، ومبادرة الشبكة الألمانية للبِنْية التحتية المعلوماتية الحيوية (يشار إليها اختصارًا باسْم: deNBI) الخاصة بوزارة العلوم الألمانية، وكلاهما تمولان مستودع «بيوكوندكتور».

هذه المشكلة العامة المتعلقة بصيانة البِنَى التحتية الرقمية تكتسب المزيد من الاهتمام حاليًّا، إذ حصلت ڤاروكو وزملاؤها على 138 ألف دولار أمريكي من مؤسستَي «ألفريد بي. سلون»، و«فورد» Ford، لدراسة "الجهود الظاهرة وغير الظاهرة لصيانة البرمجيات مفتوحة المصدر"، وفقًا لتصريحها. وتتضمن الدراسة أيضًا الإنهاك الذي يتعرض له الباحثون الذين يكرسون وقتهم لهذا العمل، وهي جزء من مجموعة مشروعات تشمل 13 مشروعًا بحثيًّا عن البنية التحتية الرقمية، ممولة بما يعادل حوالي 1.3 مليون دولار أمريكي. وفي مايو من العام الجاري (2019)، أعلنت مبادرة «تشان زوكربيرج» عن ثلاثة طلبات عروض لتمويل برمجيات طبية حيوية مفتوحة المصدر، انطلق أولها في يونيو من العام نفسه. هذا.. بالإضافة إلى أنَّ سيبل كَتَب مقالًا نقديًّا - قيد الطباعة في دورية «جينوم بيولوجي» Genome Biology - عن تحديات تمويل جهود دعم البرمجيات مفتوحة المصدر.

إنّ التمويل مطلوب بالفعل، لأنَّ كتابة كود برنامج يَسْهُل للآخرين استخدامه؛ لمعالجة نطاقٍ واسع من البيانات، يتطلب جهدًا أكبر بكثير من كتابة كود برنامج تستخدمه أنت فقط. يقول وولفجانج هوبر: "الفرق بينهما لا يقل عن الفرق الواسع بين الورقة البحثية المنقحة التي تُنشر في دورية Nature، ومجموعة الشرائح التقديمية الأولية التي تُعرض في اجتماعٍ بالمختبر بجانب النتائج المستنبَطة منها"، لكنْ هناك فائدة حقيقية للباحثين من ممارسة جهود الدعم هذه. فعلى سبيل المثال.. يردّ فريق سيبل أحيانًا على استفسارات المستخدمين بتوضيح أنَّهم يطبقون البرنامج على مجموعات بيانات غير مناسبة، وهذه سمة دقيقة يمكن للمتخصص في الأحياء التطورية ملاحظتها، لكنَّها قد تفوت على مهندس البرمجيات. ويعلّق وولفجانج هوبر على ذلك قائلًا: "هناك اصطلاح على أنه ينبغي للمؤسسات أن تستخدم منتجاتها في عملياتها الداخلية، فإذا استخدمتَ برنامجك في مشكلات فعلية، فستُدْرِك مواطن الضعف فيه، وماذا ينقصه. ووجود خبير في المجالٍ العلمي، لكتابة كود البرنامج، يزيد عادةً من قيمته".

آنا نووجرودزكي كاتبة علمية تقيم في بوسطن بولاية ماساتشوستس.