ما رأيكم في إنشاء إطار عمل كامل يخصّ فريق تطوير ويب

  • Ormazin

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

.

.

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

.

.

.

1/ مكتبات الويب المشهورة ضخمة جدا متعددة الاستخدامات. وأنا لا أحتاج كلّ ما فيها

2/ في مكتباتي الخاصة سأضع فقط ما أحتاجه، وسأقتبس من المكتبات مفتوحة المصدر ما أحتاجه

3/ في مكتباتي سأوفّر أسلوب العمل الذي أريده بدلًا من التقيد بأسلوب عمل مكتبات أخرى

4/ أريد إنشاء مكتبات قوية، لكنها سهلة الكتابة ويسهل تعلّمها للمبتدئين المنضمين حديثًا للفريق و متناسقة مع الأسلوب العام للغة

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

6/ المكتبات مفتوحة المصدر تستهلك موارد أكبر من الموارد التي ستستهلكها مكتباتي الخاصة. كون مكتباتي بسيطة ويتوفر فيها ما نحتاجه فقط

.

.

.

نريد منكم تعليقات على ذلك. وما هي الطريقة الأفضل؟ إنشاء مكتبات خاصة بأسلوبنا الخاص تكون بسيطة وتحتوي فقط على ما نحتاج؟ أم نقوم باستخدام المكتبات والأُطر مفتوحة المصدر؟


nibrasbassem أضف ردا

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

-

أولاً : هناك إختلاف حسب نوع المكتبة هل هي خاصة بـ Server Side أو Client Side، فلكل جهة معاييرها .

-

ثانياً : إعادة بناء عجلة، يستهلك وقت وجهد، إن لم يكن مالاً!

-

ثالثاً : من جهة Server Side، الأطر المتوفرة حالياً كـ إطار لتعامل مع مشاريع متوسطة وكبيرة Laravel (مثلاً )، أو لتعامل مع مشاريع صغيرة مثل Lumen (مثلاً)، تقدم الحاجة المطلوب منها، عدا عن كونها آمنة .

قد يكون أحد نقاط على أطر العمل الكبيرة، هي وجود إعتماديات غير مطلوبة ضمن العمل، لذلك نشأت فكرة Micro Framework كـ Lumen ليحل هذه مشكلة بتلك المواقع التي لا تحتاج لكثرة الإعتماديات، ويمكن تطوير فوقها حسب حاجة المطور لتناسب مطالبه .

أما الأطر العملاقة كـ Laravel وغيرها، فهي مبنية لإستخدامات متوسطة أو أكبر، فمراجعة توثيق الخاص بها، يظهر أن ما ضُمن بها مناسب لمشروع يخدم فئة مواقع ذات قاعدة مستخدمين، وبالأخص تلك المشاريع الخدمية أو التجارية، وكمثال على ذلك (حسبما أذكر) فموقع مستقل يستخدم إطار Laravel .

وكما ذكرت سالفاً، فوجود إطارات Micro تحتوي أسس الموجودة بأغلب المواقع وحاجتها حتى صغيرة، هو نوع من بنية لإطار عمل يمكن تطوير عليه .

الأطر الموجودة حاليا، مثل Laravel بنيت بأسلوب يجعل الكتابة بها سهلة وسلسة، وغير معقد، وهذه إحدى المزايا التي تصب بأطار عمل مثله!

-

رابعاً : من جهة Client Side، كجافاسكربت أو CSS، فحجم الملف له دور كبير، عدا عن أن بعض الأطر تفقد الهوية الخاصة بالموقع، لذلك توجد أطر متخصصة بنقاط محددة مثل PrueCSS، والذي يحتوي على الاساسيات فقط كـ Grid / Table وما إلى ذلك .

غير أن بعض المكتبات لم تعد تقدم شيء، فالجافاسكربت مثلاً تطورت! فأصبح الإعتماد مثلاً على مكتبة jQuery، غير محبب، كونك تستطيع عمل ما يقوم به بعدت نقاط عبر JavaScript و CSS3، هنا يكون تطوير شيء مناسب خفيف أفضل من أستخدام مكتبة كاملة لنقاط بسيطة .

هذا الأمر يستثني المكتبات المتخصصة، بالقيام بأمر معين، وليس مكتبة عامة أو إطار عام .

غير ذلك، هناك أطر لا غنى عنها كأطر الخاصة ببناء تطبيقات الويب مثل AngularJS أو React أو VueJS، فبناء شيء شبيه سيستغرق الكثير، بدون فائدة قد تذكر!

-

خامساً : أن يكون شيء مفتوح المصدر، فهو ليس سبب كافٍ ليتم وصف الكود أنه غير آمن! فالكثير من المواقع الكبيرة تعتمد على مكتبات وبرمجيات مفتوحة المصدر ومن الأمثلة هي : OpenSSL .

-

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

-

سابعاً: استهلاك الموراد من ناحية Server مهم، ولكن لا يمكن قياس مكتبة مقابل إطار عمل كامل مثلاً، غير انه وجدت فكرة أطر Micro لتخفف من استهلاك الموارد، وجعل المطور يقوم بزيادة حسب الحاجة، غير ذلك، كما ذكرت سيكون هناك مبتدئين في الفريق، وهو يعني أن أطار جاهز يستخدموه، أسهل من أن يطوروا أمور بنفسهم لاحقاً حسب الحاجة، فمطور مبتدئ قد لا يملك خبرة كافية بتعامل مع استهلاك الكود لموارد السيرفر .

غير أن الحجم الخاص بصفحة من جهة Client، هو الأهم نوعاً ما، فسرعة تحميل صفحة له أثر أكبر، غير أن مواصفات السيرفر كفيلة بتخطي النقطة الخاصة باستهلاك موارد Server

أتمنى أن يكون الرد مفيداً

  • من ناحية الموارد فالـمكتبات من جهة Server Side تؤثّر على موارد السيرفر كلما كانت أضخم وأعقد خصوصًا عندما يزيد عدد الزوّار بشكل كبير. ومن جهة الـ Client Side يؤثر أيضًا حجم المكتبات في سرعة التصفح حسب حجم المكتبة وجودة الأكواد وسرعة اتصال العميل. ولهذا يجب أن يهتم المطوّر بخفّة الموقع من الجانبين، سواء من جانب السيرفر أو من جانب العميل.

.

.

.

  • الوقت الذي تستغرقه فيه بناء مكتبات خاصة بك قد تستغرق ما يقاربه في تعلّم المكتبات وأطر العمل مفتوحة المصدر، ولا مشكلة في الوقت مادمت غير مستعجل.

.

.

.

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

.

.

.

  • لم أصف المكتبات مفتوحة المصدر بـ "غير آمنة" بل وصفت المكتبات الخاصة بأنها أكثر أمانًا من المكتبات مفتوحة المصدر. وهذا لا يقلل من أمان أطر العمل والمكتبات مفتوحة المصدر ذات الشهرة

.

.

.

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

.

.

.

  • سأبحث أكثر عن أطر العمل " Micro " وأفكّر كيف بإمكانها إفادتي فقط على قدر حاجتي وبالأسلوب الذي أريده مادامت سأحقق ما أريده عن طريقها دون جهد

شكرًا نبراس، نقاطك قد أفادتني