ACF و SCF: قصة الاشتقاق المعدّل الذي أشعل النقاش في مجتمع ووردبريس

ACF و SCF

مؤخرًا قامت شركة أوتوماتيك المؤسسة لووردبريس بخطوة مثيرة للجدل تمثلت في عمل اشتقاق معدل (Fork) لإضافة الحقول المخصصة المتقدمة  Advanced Custom Fields أو اختصارًا ACF وحذف هذه الأخيرة من متجر إضافات ووردبريس الرسمي ووضع إضافة متفرعة منها باسم جديد Secure Custom Fields أو اختصارًا SCF بدلًا منها ما أثار ضجة وارتباكًا بين أوساط المطورين والمستخدمين. 

نناقش في مقال اليوم هذه الخطوة وتداعياتها بالتفصيل وكيف تتعامل معها كمستخدم ووردبريس والاعتبارات المختلفة لهذا الأمر وتأثيره على المستخدمين والمطورين والتعامل الأمثل معه.

ما هي إضافة ACF وتاريخ تطورها

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

 على سبيل المثال إذا كنت تطور موقعًا لعرض العقارات باستخدام ووردبريس فستوفر لك إضافة ACF إمكانية نوع مخصص لتمثيل العقار وإضافة حقول وتصنيفات مخصصة  لتخزين تفاصيل العقار المختلفة كالسعر والموقع وعدد الغرف وصورة العقار وغيرها..

نبذة عن تاريخ إضافة ACF 

طورت إضافة ACF  لأول مرة عام 2011 من قبل إليوت كوندون Elliot Condon ليتيح للمستخدمين توسيع الحقول المدمجة في ووردبريس، وتوفرت هذه الإضافة كإضافة مجانية على مستودع ووردبريس الرسمي، وفي عام 2012 أطلق إليوت نسخة احترافية مدفوعة من الإضافة ACF Pro بميزات  متقدمة وفي عام 2022 استحوذت شركة  WP Engine -وهي شركة متخصصة في تقديم خدمات استضافة مواقع ووردبريس المدارة-  على هذه الإضافة ووفرتها على منصتها كما استحوذت على إضافات قوية أخرى مثل  WP Migrate وCustom Post Type UI  لتعزيز خدماتها وتقديم قيمة إضافية لعملائها وصارت المسؤولة عن تطوير ودعم هذه الإضافات وتقديم التحديثات اللازمة لها.

حتى الآن تبدو الأمور طبيعية، ولعلك تتساءل كيف نشأ الجدل المثار مؤخرًا حول إضافة ACF وكيف تحولت هذه الإضافة من اسم ACF إلى اسم جديد SCF وحذفت من متجر ووردربريس الرسمي -مع العلم أن رابطها URL  في المتجر لا يزال حتى الآن بالاسم الأصلي advanced custom fields.

كيف تحولت ACF إلى CSF؟

يعود أصل الخلاف بين مات مولينغ Matt Mullenweg، مؤسس ووردبريس، وشركة WP Engine على استخدام العلامة التجارية لووردبريس والمساهمة في تطويره. وكردة فعل على هذا الخلاف حظر Matt وصول خوادم WP Engine إلى موارد WordPress.org  واتهمها بأنها  لم تعد تهتم بتحديث الإضافة ACF وتأمينها  كما يجب وتذرع بوجود مشكلات أمنية فيها.

وقد ردت WP Engine بخطاب قانوني، متهمة مات بإساءة استخدام سلطته واستغلال نفوذه في مجتمع ووردبريس وأن ادعاءه بشأن ضرورة الحصول على ترخيص ودفع رسوم لاستخدام العلامة التجارية WordPress غير صحيح ويعكس فهمًا خاطئًا لقانون العلامات التجارية وللمزيد يمكنك الاطلاع على مقال ماذا بعد حظر ووردبريس WP Engine ؟

عندما لم يتمكن الطرفان من التوصل إلى اتفاق بهذا الشأن،  أجج مات مولينويغ الخلاف ومنع WP Engine من الوصول لإضافاتها في مستودع ووردبريس الرسمي ونشر تغريدة تفيد بوجود ثغرة في الإضافة (حذفها لاحقًا) وكانت WP Engine تعمل بالفعل على حل المشكلة بشكل روتيني إلا أن مات مولينويغ أجرى عملية تفريع أو اشتقاق Fork للإضافة ACF وغير اسمها إلى SCF ونسبها لشركة ووردبريس وأشار لأن الإضافة المشتقة تضمن الأمور التالية:

  • تغيير الاسم: غيرت ووردبريس تسمية الإضافة إلى Secure Custom Fields، على الرغم من بقاء بعض الإشارات للإضافة ACF ضمن الكود وواجهة الإضافة والعنوان URL كما أشرت سابقًا.
واجهة SCF
واجهة SCF
  • تحديثات الأمان: أصلحت SCF الثغرات الأمنية الموجودة في ACF، وكانت مشكلة في صلاحية رمز الأمان nonce المستخدم للتحقق من قبل ووردبريس.
  • إزالة خيار الترقية: أزالت SCF من الكود البرمجي لإضافة ACF كل ما يشير إلى النسخة المدفوعة ACF Pro وخيارات الترقية وهذا يعد تدخلًا مباشراً في نموذج التجاري للإضافة وحقوق ملكيتها، وقد يؤثر على مستقبل تطوير النسخة المدفوعة من الإضافة حيث تظهر الصورة التالية مقارنة بين نسختين من ملف header.php في إضافة ACF و SCF تظهر إزالة الإشارة للإصدار المدفوع من الإضافة مثل التوابع ()acf_is_pro و()acf_pro_is_license_active
مقارنة كود SCF مع كود ACF

ونشر مات مولينويغ في منتصف أكتوبر من العام الجاري على موقع ووردبريس خبرًا ينص على ما يلي "بالنيابة عن فريق أمان ووردبريس، أعلن أننا نستدعي البند 18 من إرشادات دليل الإضافات، ونستنسخ إضافة ACF إلى إضافة جديدة  SCF لإزالة احتكارها التجاري وحل الثغرة الأمنية الموجودة في الإضافة، وأن إضافته الجديدة SCF غير تجارية، وإذا كان لدى أي مطور رغبة في المشاركة في صيانتها وتحسينها فيمكنه التواصل معه. وأضاف: لقد حدثت حالات مماثلة من قبل، لكن ليس بهذا الحجم وأن هذه حالة نادرة وغير عادية نتيجة للهجمات القانونية من WP Engine ولا نتوقع حدوث هذا مع إضافات أخرى"

خبر إضافة SCF على فيسبوك
خبر إضافة SCF على فيسبوك

من ناحية أخرى، أصدرت WP Engine لاحقًا الإصدار 6.3.8 من إضافتها ACF  يتضمن تحديثًا أمنيًا للإضافة وأشارت لأن WP Engine لا تزال محظورة من الوصول إلى إضافاتها في مستودع ووردبريس الرسمي، ولذلك أصدرت هذا التحديث في مستودع WP Engine وعلى موقع ACF الرسمي لأنها لن تتمكن من تحديث إضافتها الموجودة على مستودع ووردبريس.

وأعربت عن أسفها وصدمتها من تصرفات مات مولينويغ واشتقاق المعدل للإضافة وفرتها لمجتمع ووردبريس منذ عام 2011  ووفرت لها الكثير من الميزات فهي تتصمن أكثر من 200,000 سطر كود برمجي وحذفها دون موافقتها في سابقة لم تحصل من قبل وأشارت لأن الاتهامات التي وجهت لها لم تكن صحيحة فالإضافة كانت نشطة وقيد التطوير المستمر وهذا ينتهك حقوق المطورين وملكيتهم الفكرية ويزعزع ثقة المطورين بنظام ووردبريس.

أثار هذا الأمر الكثير من الجدل  في مجتمع ووردبريس وطرح تساؤلات قانونية وأخلاقية حول فيما إذا كانت عملية التفرع المعدل Fork هذه منصفة أم مجحفة، وما هي التداعيات التي قد تنتج عن الاشتقاق المعدل الذي قام به مات مولينويغ لهذه الإضافة وهل الذرائع  والمبررات التي تذرع بها بشأن تحسين أمان ACF بها حقيقية أم لا وخصوصًا أن WP Engine قد قامت بالفعل بحل هذه الثغرات في ACF قبل إطلاق SCF والتغييرات الفعلية في SCF طفيفة جدًا ما أثار اتهامات كبيرة  لشركة أوتوماتيك وتساؤلات عما إذا كانت الأمان هو الدافع الحقيقي لما حصل أم أن الخلاف تجاري بحت وفيه سطو على إضافات لا تملكها.

ما زاد الاحتجاجات على هذا الأمر هو أنها ووردبريس حذفت سجل التغييرات changelog الخاص بالإضافة والذي يوضح كافة التغييرات السابقة التي طرأت على هذه الإضافة منذ إطلاقها لكنها استولت بالمقابل على صفحة الإضافة الأصلية وتقييمات المستخدمين عليها وهذا أثر على لمطورين والمستخدمين وتسبب في ارتباك كبير لديهم ففي حال حدثوا إضافات مواقعهم فستتحدث ACF تلقائيًا إلى اسم جديد SCF دون فهم سبب التغييرات.

كما قد يؤثر هذا على الشركة المالكة للإضافة WP Engin ويقلل مبيعاتها للنسخة المدفوعة ويقلل التفاعل مع مستخدميها الذين لن يعودوا قادرين على الوصول المباشر والسهل للإضافة وتحديثها بسهولة لذا حذرت WP Engin من أن الإصدار الحالي لإضافة  SCF هو كود غير معتمد من قبلها وغير موثق من مطوريها الأساسيين وشجعت على استخدام ACF الأصلية.

ما معنى التفرع المعدل fork وكيف يعمل

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

يسمح هذا للمطورين بإضافة ميزات للبرمجيات وإصلاح الأخطاء وإنشاء وظائف جديدة تمامًا مع الحفاظ على المشروع الأصلي كما هو.  فلا  مشكلة فعليًا من أخذ الكود المصدري لمشروع موجود وتعديله لإنشاء مشروع جديد فهذا مفهوم شائع في عالم البرمجيات مفتوحة المصدر ومسموع به بموجب رخصة البرمجيات العامة GPL فهذه الرخصة تشجع على التعاون بين المطورين وعملية  fork بحد ذاتها ليس بالأمر السلبي بل هي خطوة إيجابية في أي مجتمع مفتوح المصدر فنظام ووردبريس نفسه نشأ عام 2003 من Fork لمنصة تدوين سابقة مفتوحة المصدر اسمها b2/cafelog. ومحرر ClassicPress نشأ من عملية Fork لمحرر المكونات جوتنبرج موجه للمستخدمين الذين يفضلون الأسلوب التقليدي في التعامل مع تدوين المقالات.

شرح عملية التفرع المعدل fork
شرح عملية التفرع المعدل fork

لكن سبب الجدل الحاصل من إعلان مات مولينويغ بإجراء fork لإضافة ACF  لإضافة جديدة باسم SCF  هو أن هذا التفرع المعدّل لم يكن هذا عاديًا كما في المرات السابقة فقد حدث دون إنشاء إضافة منفصلة ووضعها على مستودع خاص وبيئة تطوير منفصلة، بها بل تم استبدال SCF مباشرةً بـ ACF في دليل إضافات ووردبريس دون تغيير عنوان الصفحة، وهذا الخطأ الأساسي فلم تعد العملية تفرعًا معدلًا بل إعادة توزيع غير مشروع خصوصًا أنه جاء بعد الخلافات القانونية مع شركة WP Engine مباشرة مع مات مولينويج، كما أن التفرع المعدل لإضافات صغيرة مغمورة مختلف عن تفرع واحدة من أشهر وأقوى الإضافات دون إذن أصحابها ولا شك أنه قرار خطير سيؤثر على مستخدمي النظام والشركات المطورة للإضافات.

عنوان صفحة إضافة SCF
عنوان صفحة إضافة SCF

من سيتأثر بهذه التصرف؟

سيتتأثر من هذا التغيير في المقام الأول مستخدمو إضافة ACF المجانية في مواقعهم والذين لا يستخدمون منصة استضافة تابعة لـWP Engine. فلن يتمكن هؤلاء المستخدمون من تلقي التحديثات لهذه الإضافة لأن شركة ووردبريس حذفتها من متجر الإضافات الرسمي، وسيحصلون من الآن وصاعدًا عند تحديثها على إضافة باسم SCF على مواقعهم  أي سيتلقون أحدث الإصدارات والتحديثات الخاصة بإضافة SCF من WordPress.org وليس من WP Engin  وأمام هؤلاء المستخدمين خياران إما البقاء على SCF، أو حذف الإضافة القديمة ورفع الإضافة ACF لمواقعهم  من جديد بعد تحميلها من موقعها الأصلي كما سأشرح في فقرة لاحقة.

أما بالنسبة للعملاء  المشتركين في منصة WP Engine أو منصة الاستضافة Flywheel التابعة لها والعملاء الحاصلين على الإصدار المدفوع من ACF  فهؤلاء لن يتأثروا  بالاشتقاق المعدل من طرف وروردبريس للإضافة وسيتابعون في استخدام الإضافة الأصلية، لكنهم بالمقابل لن يتمكنوا من الحصول على تحديثات ووردبريس لأن  WP Engine محظورة من الوصول إلى خوادم WordPress.org بسبب النزاع الحالي وممنوعة من تلقي تحديثات ووردبريس وقد صرحت WP Engine أنها ستحل هذه المشكلة بإنشاء خوادم خاصة بها لحماية عملائها.

مقارنة بين ACF و SCF

سألخص في الجدول التالي ميزات كل إضافة من الإضافتين لسهولة الموازنة بين هذه الميزات واختيار الإضافة المناسبة لك.

المعيارإضافة  ACFإضافة  SCF
الشركة المطورةWP EngineWordPress.org
ميزات الأمانموثوقة وتوفر حماية أساسية للبيانات وتتلقى صيانة دورية توفر حماية متقدمة وفحص مشدد للبيانات 
التكامل والتوافقتتكامل مع العديد من الإضافات والقوالب وأدوات بناء المواقعقد تتسبب في حدوث تعارض بين الإضافات لا سيما إذا كان موقعك يعتمد بشكل كبير على ميزات ACF ومن الأفضل اختبارها في بيئة تجريبية قبل الاعتماد عليها في موقعك
الدعم والتوثيقستسمر في تلقي التحديثات والدعم المنتظم من WP Engine ولن تحتاج إلى القلق بشأن مشاكل التوافق مع الإضافات والقوالبستتلقى التحدثيات والدعم رسميًا من WordPress.org ولازال توثيقها غير متوفر ويشير لتوثيق الإضافة الأصلية ACF
الكلفةتوفر نسخة مجانية وأخرى مدفوعة أكثر احترافيةمجانية بالكامل لكنها محدودة الميزات

كيفية تثبيت ACF الأصلية

إليك شرحًا لطريفة تثبيت النسخة الأصلية ACF المطورة من قبل WP Engine بدلًا من المتفرعة عنها CSF. فقبل حدوث الخلاف الحالي كان تثبيت ACF متاحًا على الاستضافة بعدة طرق كتنصيب أي إضافة ووردبريس مجانية ويمكنك اختيار ما يناسبك من بينها كأن تثبتها مباشرة لوحة التحكم، لكن بعد إزالتها من مستودع الإضافات الرسمي لم يعد بإمكانك البحث عن اسم الإضافة Advanced Custom Fields وتثبيتها من صفحة الإضافات لأنك ستحصل في هذه الحالة على الإضافة البديلة SCF.

لذا في حال أردت تثبيت النسخة المجانية من ACF  أصبح لزامًا عليك تحميل ملف الإضافة بصيغة ZIP من الصفحة الرسمية للإضافة حمل أحدث نسخة (حاليًا ACF 6.3.8) ثم انتقل إلى الإضافات في لوحة تحكم ووردبريس في موقعك  واختر رفع إضافة، ثم حدد ملف ZIP وتثبته على موقعك، بعد التثبيت وتفعيل الإضافة ستجد عنصر قائمة جديد يسمى ACF ويمكنك بعدها تحديث الإضافة الأصلية كما هو معتاد عبر لوحة تحكم ووردبريس، وللمزيد أنصح باتباع الإرشادات الرسمية المتوفرة على موقع ACF لتحديث أو تثبيت إضافة ACF الأصلية.

رفع إضافة ACF
رفع إضافة ACF

إذا قمت بتفعيل إضافة Advanced Custom Fields الأصلية لمرة واحدة فقط فسوف تحصل على التحديثات الجديدة من WP Engine في المرات اللاحقة.

ملاحظة: بالنسبة لمواقع ووردبريس المستضافة على WP Engine وFlywheel والمواقع التي تستخدم النسخة المدفوعة من ACF Pro لن تتغير طريقة تثبيت الإضافة وتحديثها عما سبق.

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

تنصيب ACF بعد CSF
تنصيب ACF بعد CSF

أسئلة شائعة حول تغيير ACF إلى SCF

هل تحل SCF محل ACF وتؤدي نفس الوظائف؟

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

كيف بررت إدارة ووردبريس حذف وتعديل اسم الإضافة دون موافقة مطوريها؟

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

ما المشكلة الأمنية التي كانت موجودة في ACF

المشكلة المقصودة تتعلق بصلاحية الـ nonce وهو رمز أمني يستخدم للتحقق من صحة البيانات. في ACF، فقد كانت هناك مشكلة تؤدي إلى فشل عملية التحقق بسبب انتهاء صلاحية رمز nonce قبل أن يتم استخدامه وnonce اختصار لـ number used once أي يستخدم لمرة واحدة فقط ويستخدم في مجالات الأمان وتشفير البيانات ومنع الهجمات مما يمنع الإضافة من إكمال بعض العمليات بنجاح.

هل منعت ووردبريس جميع الإضافات الأخرى لـ WP Engine؟

نعم لا يقتصر منع WP Engine على إضافة ACF بل يشمل غيرها من الإضافات المجانية الشهيرة التي طورتها WP Engine فكلها محظورة من تلقي التحديثات ويمكنك الاطلاع عليها من هذه القائمة.

ما هي بدائل ACF أو SCF؟

تتوفر إضافات عديدة يمكن أن تساعد في إنشاء حقول وتصنيفات مخصصة وتوفر وظائف مشابهة مثل إضافة Pods وإضافة Meta Box

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

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