summaryrefslogtreecommitdiff
path: root/talermerchantdemos/blog/articles/ar/javascript-trap.html
blob: def903451a9e55e5d64329a6d8f0796cb9c7b8a8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
<!--#set var="PO_FILE"
 value='<a href="/philosophy/po/javascript-trap.ar.po">
 https://www.gnu.org/philosophy/po/javascript-trap.ar.po</a>'
 --><!--#set var="ORIGINAL_FILE" value="/philosophy/javascript-trap.html"
 --><!--#set var="DIFF_FILE" value=""
 --><!--#set var="OUTDATED_SINCE" value="2011-12-25" -->

<!--#include virtual="/server/header.ar.html" -->
<!-- Parent-Version: 1.79 -->

<!-- This file is automatically generated by GNUnited Nations! -->
<title>مأزق جافاسكربت</title>

<!--#include virtual="/philosophy/po/javascript-trap.translist" -->
<!--#include virtual="/server/banner.ar.html" -->
<!--#include virtual="/server/outdated.ar.html" -->
<h2>مأزق جافاسكربت</h2>

<p>بقلم <a href="http://www.stallman.org/">ريتشارد ستولمن</a></p>

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

<!-- any links that used to point to the appendices should point to
     free-your-javascript.html instead.  -->

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

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

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

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

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

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

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

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

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

<p>ثمة حركة قوية تدعو لأن تتواصل المواقع مع المستخدمين عبر الأنساق
والبروتوكولات الحرة (التي يسميها البعض "المفتوحة")، أي التي توثيقها منشور
وللجميع حرية تنفيذها، ومع وجود البرامج في صفحات الوب، فإن تلك المعايير
ضرورية، لكنها ليست مؤثرة. جافاسكربت نفسها -كنسق- حرة، ولا يلزم بالضرورة أن
يكون استخدامها في المواقع سيء؛ لكن -وكما ذكرنا أعلاه- لا يلزم أيضًا أن يكون
مقبولًا. عندما ينقل الموقع برنامجًا إلى المستخدم، فلا يكفي أن يكون البرنامج
مكتوبًا بلغة مُوثّقة وحرة؛ بل يجب أن يكون البرنامج ذاته حرًأ أيضًا. يجب أن
تصبح &rdquo;تُنقل البرمجيات الحرة وحدها إلى المستخدم&ldquo; جزءًا من معيار
سلوك المواقع السليم.</p>

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

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

<p>بداية نحتاج إلى معيار لتحديد برامج جافاسكربت الكبيرة. وبما أن "كبيرة" مسألة
حكمية، فإن علينا تصميم معيار سهل يعطي نتائج جيدة بدلا من وضع إجابة محددة
واحدة.</p>
<p>
نقترح أن يعتبر برنامج جافاسكربت كبيرًا إذا أجرى طلب AJAX، وأن يعتبر كبيرًا
إذا عرّف طرقًا (methods) وإذا حمّل سكربتًا خارجيًا أو كان هو كذلك.</p>

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

<p>ينبغي علينا آخيرًا أن نُغيّر متصفحات الوب الحرة لتدعم حرية مستخدمي صفحات
الوب التي تحتوي جافاسكربت. بداية يجب أن تتاح للمتصفحات خاصية إخبار
المستخدمين بوجود برامج جافاسكربت كبيرة غير حرة قبل تشغيلها. <a
href="/software/librejs/">LibreJS</a> يدعم ذلك.</p>

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

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

<!-- any links that used to point to the appendices should point to
     free-your-javascript.html instead.  -->

<p><strong>شكرًا ل<a href="/people/people.html#mattlee">Matt Lee</a> و <a
href="http://ejohn.org">John Resig</a> على مساعدتهما في صياغة معيارنا
المقترح، ولDavid Parunakian لإعلامي بالمشكلة.</strong></p>

<h3 id="AppendixA">ملحق: وسيلة لإصدار برامج جافاسكربت حرة.</h3>

<p>للإشارة إلى الكود المصدري المرافق، نوصي باستخدام:</p>
<pre dir="ltr">

    // @source:

</pre>

<p>يتبعها المسار.
</p>

<p>للإشارة إلى رخصة كود جافاسكربت المُضمّن في الصفحة، نوصي بوضع إخطار الرخصة
بين ملاحظتين على هذا النحو:</p>
<pre dir="ltr">
<!--TRANSLATORS: Do not translate these license notices.  The <pre>

    elements have dir="ltr" explicitly set to cater for RTL languages.-->

    @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.

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

<p>تطلب <a href="/licenses/gpl.html">غنو جي&#8203;بي&#8203;إل</a> -مثل كثير من
تراخيص البرمجيات الحرة الأخرى- توزيع نسخة من الرخصة مع المصدر والصيغة
الثنائية للبرنامج. لكن غنو جي&#8203;بي&#8203;إل طويلة لدرجة تُصعّب من
تضمينها في الصفحة مع برنامج جافاسكربت. يمكن أن تزيل هذا المُتطلّب من الكود
الذي تملك أنت حقوق نشره عبر إخطار ترخيص كالآتي:</p>
<pre dir="ltr">

    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.

</pre>

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

<div class="translators-notes">

<!--TRANSLATORS: Use space (SPC) as msgstr if you don't have notes.-->
 </div>
</div>

<!-- for id="content", starts in the include above -->
<!--#include virtual="/server/footer.ar.html" -->
<div id="footer">
<div class="unprintable">

<p>يرجى إرسال الاستفسارات المتعلقة بالـ FSF وGNU إلى <a
href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>. هناك أيضاً طرق أخرى
للاتصال <a href="/contact/"><span xml:lang="en" lang="en"> </span> بمؤسسة
البرمجيات الحرة</a>. يرجى إرسال الوصلات المنقطعة وأي تصحيحات أو اقتراحات إلى
<a href="mailto:webmasters@gnu.org">&lt;webmasters@gnu.org&gt;</a>.</p>

<p>
<!-- TRANSLATORS: Ignore the original text in this paragraph,
        replace it with the translation of these two:

        We work hard and do our best to provide accurate, good quality
        translations.  However, we are not exempt from imperfection.
        Please send your comments and general suggestions in this regard
        to <a href="mailto:web-translators@gnu.org">

        &lt;web-translators@gnu.org&gt;</a>.</p>

        <p>For information on coordinating and submitting translations of
        our web pages, see <a
        href="/server/standards/README.translations.html">Translations
        README</a>. -->
رغم بذلنا قصارى جهدنا لتوفير ترجمات دقيقة ذات جودة عالية، فإننا لا ندعي كمال
النصوص وخلوها من الأخطاء. يرجي إرسال التعليقات والمقترحات المتعلقة بهذا
الشأن إلى عنوان البريد الإلكتروني <a href="mailto:web-translators@gnu.org">
&lt;web-translators@gnu.org&gt;</a>.</p> <p>للحصول على أي معلومات بشأن تنسيق
وتقديم ترجمات موقعنا الإلكتروني، يرجى الاطلاع على الرابط التالي <a
href="/server/standards/README.translations.html">دليل الترجمة</a>.</p>
</div>

<!-- Regarding copyright, in general, standalone pages (as opposed to
     files generated as part of manuals) on the GNU web server should
     be under CC BY-ND 4.0.  Please do NOT change or remove this
     without talking with the webmasters or licensing team first.
     Please make sure the copyright date is consistent with the
     document.  For web pages, it is ok to list just the latest year the
     document was modified, or published.
     If you wish to list earlier years, that is ok too.
     Either "2001, 2002, 2003" or "2001-2003" are ok for specifying
     years, as long as each year in the range is in fact a copyrightable
     year, i.e., a year in which the document was published (including
     being publicly visible on the web or in a revision control system).
     There is more detail about copyright years in the GNU Maintainers
     Information document, www.gnu.org/prep/maintain. -->
<p>Copyright &copy; 2009، 2010 ريتشارد ستولمن</p>

<p>هذا المُصنَّف مرخص بموجب <a rel="license"
href="http://creativecommons.org/licenses/by-nd/4.0/deed.ar">رخصة المشاع
الإبداعي نسب المصنف - منع الاشتقاق 4.0 دولي</a>.</p>

<!--#include virtual="/server/bottom-notes.ar.html" -->
<div class="translators-credits">

<!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.-->
ترجمها <a href="mailto:osamak.wfm@gmail.com"><em>أسامة خالد</em></a><br
/>.فريق الترجمة العربية بإشراف <em>حسام حسني</em>.</div>

<p class="unprintable"><!-- timestamp start -->
حُدّثت:

$Date: 2018/01/01 09:30:21 $

<!-- timestamp end -->
</p>
</div>
</div>
</body>
</html>