Softwiro
قبل أن تتعاقد

بناء برنامج مخصّص: كيف تتأكد من أنك تملكه وتتحكم فيه فعلًا

من يملك الكود، وما ينبغي أن تحصل عليه أثناء المشروع، وأي الحسابات يجب أن تكون باسمك، والإيداع لدى طرف ثالث، ومعايير الأمان، والاختبار الذي يثبت أنك المتحكم.

قراءة في 6 دقائق

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

وهذا المقال هو قائمة بما ينبغي تأمينه، ولماذا يهم كل بند منها، وكيف تتحقق من أنك حصلت عليه فعلًا. فإن كنت لم تقرر بعد ما إذا كنت ستبني نظامًا مخصّصًا، فمقال كيف تقرر بين أودو ونظام مخصّص يأتي أولًا؛ ولاختيار من سيبنيه، راجع كيف تختار شركة برمجيات؛ وللميزانية، راجع كم يكلّف النظام المخصّص.

مَن يملك الكود سؤال يحدده العقد، لا الدفع

يفترض كثير من أصحاب الأعمال أن دفع ثمن البرنامج يعني امتلاكه. وقانونًا، ليس الأمر كذلك في الغالب. فبرامج الحاسوب محمية بحق المؤلف، والحقوق في المصنَّف تثبت عمومًا لمن أنشأه. وفي مصر، يحمي قانون حماية حقوق الملكية الفكرية رقم 82 لسنة 2002 وتعديلاته برامج الحاسوب باعتبارها مصنفات. ودفع تكلفة التطوير لا ينقل هذه الحقوق إليك من تلقاء نفسه؛ وكما تقول المنظمة العالمية للملكية الفكرية (WIPO) في إرشاداتها عن عقود تطوير البرمجيات، يحتفظ المطوّر بملكية الملكية الفكرية ما لم ينص العقد على التنازل عنها للعميل.

وهناك طريقتان عامتان يمكن أن يعالج بهما العقد هذا الأمر:

  • التنازل (assignment). ينقل المطوّر إليك الحقوق المالية في الكود المكتوب لك. فتملكه أنت، وتستطيع تعديله واستخدامه وتسليمه لأي شخص.
  • الترخيص (licence). يحتفظ المطوّر بالملكية ويمنحك حق استخدام النظام، وفق شروط. وقد يكون هذا معقولًا تمامًا — إذ تعيد شركات كثيرة استخدام مكوناتها الخاصة عبر عملائها — لكنك بحاجة إلى معرفة الشروط: هل يمكنك تعديله، وهل يمكن لشخص آخر أن يعدّله لك، وهل يستمر الترخيص إن توقفت عن دفع تكلفة الدعم، وهل يمكن نقله إن بعت المنشأة؟

ومن الترتيبات الشائعة والعادلة أن تملك ما كُتب خصيصًا لك، وتحصل على ترخيص دائم لمكونات المطوّر القابلة لإعادة الاستخدام الموجودة داخله. وأيًا كان الترتيب، فينبغي أن يُكتب بلغة واضحة. واعرض العقد على محامٍ؛ فهذا المقال يستطيع أن يخبرك بما تطلبه، لا كيف سيُفسَّر عقدك.

ما ينبغي أن تحصل عليه، ومتى

لا تعني الملكية على الورق كثيرًا إن لم تستطع فعليًا استخدام ما تملكه. اطلب أن تُسلَّم لك هذه البنود أثناء المشروع، لا أن يُوعد بها عند نهايته.

  • الكود المصدري (source code)، في مستودع (repository) تتحكم فيه. الوصول إلى مستودع الكود منذ البداية، تحت حساب يخص شركتك، ويُحدَّث مع تقدم العمل. فالكود الذي يُسلَّم مرة واحدة، على قرص، في النهاية، يكون بالفعل قد تجاوزه الزمن.
  • تعليمات البناء والنشر (build and deployment). كيفية تحويل الكود إلى نظام يعمل على خادم جديد. فبدون هذا، يكون امتلاك الكود أشبه بامتلاك وصفة بلا طريقة تحضير.
  • بنية قاعدة البيانات وكيفية أخذ نسخة احتياطية منها واستعادتها.
  • قائمة بكل مكوّن من طرف ثالث — مكتبات، وأطر عمل، وخدمات مدفوعة — مع ترخيص كل منها وأي تكلفة له.
  • كل كلمة مرور ومفتاح، مُسلَّمة ومُغيَّرة عن القيم الافتراضية التي وضعها المطوّر: الخوادم، وقاعدة البيانات، وخدمة البريد الإلكتروني، وبوابة الدفع، والخرائط، والرسائل النصية، ومتاجر التطبيقات.
  • توثيق لكيفية تنظيم النظام وعمل أجزائه الرئيسية، مكتوب للمطوّر التالي، لا للتسويق.

حسابات باسم شركتك

قدر مفاجئ من التحكم يكمن خارج الكود، في حسابات يجب على شخص ما تسجيلها.

  • اسم النطاق (domain). مسجَّل باسم شركتك، وبيانات الدخول إليه بحوزتك أنت.
  • الخوادم أو الاستضافة السحابية. في حساب شركتك، حتى لو كان المطوّر هو من يديرها.
  • حسابات متاجر التطبيقات، إن وُجد تطبيق جوال. فحسابا المطوّرين في Google Play وApple ينبغي أن يكونا ملكًا لك؛ إذ إن نقل تطبيق بين حسابين لاحقًا بطيء ومستحيل أحيانًا.
  • خدمات البريد الإلكتروني والرسائل النصية والدفع والخرائط. كل خدمة مرتبطة بشركتك، وتُحاسَب عليها أنت.

وإن عرض عليك مطوّر تسجيل هذه الحسابات باسمه هو "تسهيلًا للأمر"، فاشكره واعتذر.

المكونات مفتوحة المصدر وتراخيصها

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

إن احتفظ المطوّر بالكود: الإيداع لدى طرف ثالث (escrow)

أحيانًا لن يرخّص لك المطوّر إلا استخدام النظام دون أن يسلّمك الكود المصدري — كأن يكون النظام أساسًا منتجه الخاص. وفي هذه الحالة، يمكن أن يحميك ترتيب الإيداع لدى طرف ثالث: إذ يُودَع الكود لدى طرف ثالث مستقل، ويُسلَّم إليك إن وقعت أحداث متفق عليها، مثل توقف المطوّر عن العمل أو توقفه عن تقديم الدعم. ويستحق هذا الترتيب النظر حين يكون النظام حيويًا لعملياتك ولا يمكنك الحصول على الكود بأي طريقة أخرى.

الأمان مكتوبًا ضمن المتطلبات

"آمن" ليس متطلبًا يستطيع أحد اختباره. واطلب بدلًا من ذلك أن يُبنى النظام ويُختبر وفق معيار منشور. ومعيار OWASP للتحقق من أمان التطبيقات (Application Security Verification Standard)، الصادر عن مشروع أمان التطبيقات المفتوح العالمي (OWASP)، قائمة واسعة الاستخدام بمتطلبات الأمان لتطبيقات الويب، منظَّمة بمستويات؛ أما قائمة OWASP Top 10 فهي القائمة الأقصر لأخطر المخاطر. وتسمية مستوى معين من ASVS في العقد يمنح الطرفين شيئًا ملموسًا يتحققان منه. وفي الحد الأدنى، اسأل كيف تُخزَّن كلمات المرور، وكيف يُضبط الوصول، وكيف تُؤخذ نسخة احتياطية من البيانات، وكيف يُبقى النظام محدَّثًا.

الاختبار الذي يثبت أنك المتحكم

قبل الدفعة الأخيرة، اطلب من مطوّر لم يشارك في بناء النظام — ويكفي مستقل ليوم واحد — أن يأخذ المستودع والتعليمات ويُشغّل النظام على خادم جديد تمامًا. فإن استطاع، فأنت المتحكم. وإن لم يستطع، فقد اكتشفت ما هو ناقص في وقت لا يزال فيه للمطوّر الأصلي سبب لإصلاحه.

بعد التسليم

  • الضمان. فترة بعد التسليم تُصلَح خلالها العيوب دون مقابل. اتفق على ما يُعد عيبًا.
  • الدعم والتعديلات. كيف تُقدَّم الطلبات، وما مدى سرعة الرد عليها، وكيف يُسعَّر كل تعديل.
  • الاستضافة والإدارة. من الذي يبقي الخوادم محدَّثة والنسخ الاحتياطية جارية، وماذا يحدث إن انتهى هذا الترتيب.
  • التسليم عند الخروج. ما الذي سيفعله المطوّر، وبأي تكلفة، إن نقلت النظام إلى جهة أخرى.

قائمة تحقق للعقد

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

الخطوة التالية

خذ قائمة التحقق هذه إلى كل شركة تفكر فيها، واسأل كيف تتعامل مع كل بند فيها. فالإجابات ستخبرك عن الشركة بقدر ما يخبرك عنها أعمالها السابقة. وهذه القائمة نفسها التي نتوقع أن نُسأل عنها نحن أيضًا؛ فإن أردت مناقشة نظام لمنشأتك، ابدأ من هنا.

المصادر

أسئلة يطرحها هذا الموضوع

إن دفعت ثمن برنامج مخصّص، هل أملك الكود؟

ليس تلقائيًا. فبرامج الحاسوب محمية بحق المؤلف، وتبدأ الحقوق عمومًا لمن أنشأ العمل. وما لم يتنازل العقد لك عن الحقوق، أو يمنحك ترخيصًا، فقد يكون ما تملكه أقل مما تفترضه. اجعل الملكية أو شروط الترخيص صريحة في العقد واعرضه على محامٍ.

ما هو الإيداع لدى طرف ثالث للكود المصدري (source code escrow)؟

ترتيب يودع فيه المطوّر الكود المصدري لدى طرف ثالث مستقل، يسلّمه إلى العميل إن وقعت أحداث متفق عليها، مثل توقف المطوّر عن العمل أو عن تقديم الدعم. ويحمي هذا الترتيب العميل الذي يرخّص له باستخدام نظام حيوي دون أن يحصل على الكود.

كيف أتحقق من أنني أستطيع نقل النظام إلى مطوّر آخر؟

اطلب من مطوّر لم يشارك في بنائه أن يأخذ المستودع وتعليمات النشر ويُشغّل النظام على خادم جديد تمامًا. فإن استطاع، فأنت المتحكم؛ وإن لم يستطع، فقد اكتشفت ما هو ناقص في وقت لا يزال فيه للمطوّر الأصلي سبب لتوفيره.

لديك نظام تريد بناءه؟

تُصمّم Softwiro الأنظمة وتنفّذها وتتولّى تشغيلها في بيئة الإنتاج. اكتب لنا ما تحتاجه، ويصلك نطاق عمل محدّد لا عبارة تسويقية.

ابدأ مشروعًا