From 1ae0306a3cf2ea27f60b2d205789994d260c2cce Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sun, 11 Oct 2020 13:29:45 +0200 Subject: add i18n FSFS --- .../blog/articles/ar/javascript-trap.html | 266 +++++++++++++++++++++ 1 file changed, 266 insertions(+) create mode 100644 talermerchantdemos/blog/articles/ar/javascript-trap.html (limited to 'talermerchantdemos/blog/articles/ar/javascript-trap.html') diff --git a/talermerchantdemos/blog/articles/ar/javascript-trap.html b/talermerchantdemos/blog/articles/ar/javascript-trap.html new file mode 100644 index 0000000..def9034 --- /dev/null +++ b/talermerchantdemos/blog/articles/ar/javascript-trap.html @@ -0,0 +1,266 @@ + + + + + + +مأزق جافاسكربت + + + + +

مأزق جافاسكربت

+ +

بقلم ريتشارد ستولمن

+ +

قد لا تدرك أنك تشغل برمجيات غير حرة يومًا على حاسوبك، عبر +متصفحك.

+ + + +

يعرف مجتمع البرمجيات الحرة أن البرامج غير الحرة تسيء لمستخدميها، ويرفض بعضنا +بالكلية تثبيت البرمجيات المحتكرة، وآخرون كثيرون يعتبرون نقص الحرية عيبًا +كبيرًا في البرنامج.

+ +

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

+ +

كانت جافاسكربت (التي تُسمّى رسميًا ECMAscript، لكن القليل فقط يستخدمون هذا +الاسم) تُستخدم لإضافة تجميلات طفيفة على صفحات الوب، مثل خصائص مساعِدة للتصفح +والعرض. يمكن أن تعتبر تلك امتدادًا لتعليم HTML، لا برمجيات حقيقة لأنها ليست +مؤثرة.

+ +

كثير من المواقع لا تزال تستخدم جافاسكربت بتلك الطريقة، لكن البعض الآخر +يستخدمها لبرامج كبيرة تقوم بمهام كثيرة. فعلى سبيل المثال، تُنزّل مستندات +غوغل (Google Docs) برنامج جافاسكربت يبلغ حجمه نصف ميغابايت، وهو بصورة مضعوطة +يجوز لنا أن نسميها "سكربت معتم" لأنها لا تحتوي أي تعليقات ولا مساحات بيضاء +(whitespaces) وأسماء الطرق (methods) فيها تتكون من حرف واحد. إن الكود +المصدري لبرنامج معين هو الطريقة المفضلة لتعديله، لكن الكود المضغوط ليس كودًا +مصدريًا، والكود المصدري الحقيقي لذلك البرنامج غير متاح للمستخدمين.

+ +

لا تخبرك المتصفحات عادة أنها تُحمّل برامج جافاسكربت، ولمعظم المتصفحات وسيلة +معينة لتعطيل جافاسكربت بالكلية، لكن لا يوجد متصفح يكتشف برامج جافاسكربت +الكبيرة غير الحرة. حتى لو كنت على علم بهذه المشكلة، فستواجه الكثير من +المتاعب عند محاولة التعرف على تلك البرامج ومن ثم حجبها؛ لكن -وحتى في مجتمع +البرمجيات الحرة- لا يعلم المستخدمون عن هذه المشكلة، لأن صمت المتصفحات +أخفاها.

+ +

يمكن إصدار برامج جافاسكربت حرة، عبر توزيع الكود المصدري تحت رخصة حرة.

+ +

لكن حتى لو توفر مصدر البرنامج، فلا توجد وسيلة سهلة لتشغيل نسختك المعدلة بدلا +من الأصل. متصفحات الوب الحرة الموجودة حاليًا لا توفر وسيلة لتشغيل نسختلك +المعدلة بدلا من الموجودة في الصفحة. إن الأثر مشابه لأثر التيفزة +(Tivoization)، غير أن معالجته أسهل بكثير.

+ +

بيد أن جافاسكربت ليست اللغة الوحيدة التي تستخدمها مواقع الوب للبرامج التي +ترسلها للمستخدمين. يدعم فلاش البرمجة عبر نوع مُوسّع من جافاسكربت. يجب أن +ندرس قضية فلاش لنتمكن من إعطاء نصائح ملائمه بخصوصه، ويبدو أن سلفرلايت +(Silverlight) يسبب مشكلة شبيهة بمشكلة فلاش، إلا أنها أسوأ لأن مايكروسوفت +تستخدم منصتها تلك للتراميز غير الحرة. لن يؤدي أي بديل حر لسلفرلايت مهمته في +العالم الحر بدون أن يُصاحب ببدائل حرة للتراميز.

+ +

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

+ +

ثمة حركة قوية تدعو لأن تتواصل المواقع مع المستخدمين عبر الأنساق +والبروتوكولات الحرة (التي يسميها البعض "المفتوحة")، أي التي توثيقها منشور +وللجميع حرية تنفيذها، ومع وجود البرامج في صفحات الوب، فإن تلك المعايير +ضرورية، لكنها ليست مؤثرة. جافاسكربت نفسها -كنسق- حرة، ولا يلزم بالضرورة أن +يكون استخدامها في المواقع سيء؛ لكن -وكما ذكرنا أعلاه- لا يلزم أيضًا أن يكون +مقبولًا. عندما ينقل الموقع برنامجًا إلى المستخدم، فلا يكفي أن يكون البرنامج +مكتوبًا بلغة مُوثّقة وحرة؛ بل يجب أن يكون البرنامج ذاته حرًأ أيضًا. يجب أن +تصبح ”تُنقل البرمجيات الحرة وحدها إلى المستخدم“ جزءًا من معيار +سلوك المواقع السليم.

+ +

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

+ +

كيف يمكننا التعامل مع مشكلة برامج جافاسكربت غير الحرة في مواقع الوب؟ هنا خطة +عملية.

+ +

بداية نحتاج إلى معيار لتحديد برامج جافاسكربت الكبيرة. وبما أن "كبيرة" مسألة +حكمية، فإن علينا تصميم معيار سهل يعطي نتائج جيدة بدلا من وضع إجابة محددة +واحدة.

+

+نقترح أن يعتبر برنامج جافاسكربت كبيرًا إذا أجرى طلب AJAX، وأن يعتبر كبيرًا +إذا عرّف طرقًا (methods) وإذا حمّل سكربتًا خارجيًا أو كان هو كذلك.

+ +

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

+ +

ينبغي علينا آخيرًا أن نُغيّر متصفحات الوب الحرة لتدعم حرية مستخدمي صفحات +الوب التي تحتوي جافاسكربت. بداية يجب أن تتاح للمتصفحات خاصية إخبار +المستخدمين بوجود برامج جافاسكربت كبيرة غير حرة قبل تشغيلها. LibreJS يدعم ذلك.

+ +

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

+ +

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

+ + + +

شكرًا لMatt Lee و John Resig على مساعدتهما في صياغة معيارنا +المقترح، ولDavid Parunakian لإعلامي بالمشكلة.

+ +

ملحق: وسيلة لإصدار برامج جافاسكربت حرة.

+ +

للإشارة إلى الكود المصدري المرافق، نوصي باستخدام:

+
+
+    // @source:
+
+
+ +

يتبعها المسار. +

+ +

للإشارة إلى رخصة كود جافاسكربت المُضمّن في الصفحة، نوصي بوضع إخطار الرخصة +بين ملاحظتين على هذا النحو:

+
+
+
+    @licstart  The following is the entire license notice for the 
+    JavaScript code in this page.
+    ...
+    @licend  The above is the entire license notice
+    for the JavaScript code in this page.
+
+
+

يجب أن يكون كل ذلك ضمن تعليق ذو أسطر عديدة.

+ +

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

+
+
+    Copyright (C) YYYY  Developer
+
+    The JavaScript code in this page is free software: you can
+    redistribute it and/or modify it under the terms of the GNU
+    General Public License (GNU GPL) as published by the Free Software
+    Foundation, either version 3 of the License, or (at your option)
+    any later version.  The code is distributed WITHOUT ANY WARRANTY;
+    without even the implied warranty of MERCHANTABILITY or FITNESS
+    FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.
+
+    As additional permission under GNU GPL version 3 section 7, you
+    may distribute non-source (e.g., minimized or compacted) forms of
+    that code without the copy of the GNU GPL normally required by
+    section 4, provided you include this license notice and a URL
+    through which recipients can access the Corresponding Source.
+
+
+ +

أشكر Jaffar Rumith على لفت انتباهي لهذه القضية.

+ +
+ + +
+ + + + + + + + -- cgit v1.2.3