summaryrefslogtreecommitdiff
path: root/talermerchantdemos/blog/articles/fa/javascript-trap.html
blob: 91e6d1b7591a17d7f4dc7fb23d26759760c58043 (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
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
<!--#set var="PO_FILE"
 value='<a href="/philosophy/po/javascript-trap.fa.po">
 https://www.gnu.org/philosophy/po/javascript-trap.fa.po</a>'
 --><!--#set var="ORIGINAL_FILE" value="/philosophy/javascript-trap.html"
 --><!--#set var="DIFF_FILE" value=""
 --><!--#set var="OUTDATED_SINCE" value="2011-09-03" -->
<!--#set var="ENGLISH_PAGE" value="/philosophy/javascript-trap.en.html" -->

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

<!-- This file is automatically generated by GNUnited Nations! -->
<title>دام جاوااسکریپت</title>

<!--#include virtual="/philosophy/po/javascript-trap.translist" -->
<!--#include virtual="/server/banner.fa.html" -->
<!--#include virtual="/server/outdated.fa.html" -->
<h2>دام جاوااسکریپت</h2>

<p>نوشتهٔ <a href="http://www.stallman.org/">ریچارد استالمن</a></p>

<p><strong>ممکن است بدون اینکه متوجه باشید هر روز برنامه‌های غیرآزاد را به
واسطهٔ مرورگر وب خود بر روی کامپیوترتان اجرا کنید.</strong></p>

<p>در جامعهٔ نرم‌افزار آزاد این عقیده که نرم‌افزارهای غیر آزاد با کاربران خود
بد رفتاری می‌کنند کاملا شناخته شده است. تعدادی از ما ترجیح می‌دهیم که به طور
کامل از نصب نرم‌افزارهای غیرآزاد بر روی کامپیوتر خود امتناع ورزیم، و تعداد
بسیاری آزاد نبودن را اعتصابی بر علیه برنامه می‌دانند. بسیاری از کاربران
می‌دانند که این موضوع دربارهٔ افزونه‌هایی (plugins) که مرورگر برای نصب فراهم
می‌آورد نیز صدق می‌کند، چرا که آنها نیز می‌توانند آزاد یا غیرآزاد باشند.</p>

<p>اما مرورگرها برنامه‌های غیرآزاد دیگری را نیز اجرا می‌کنند که حتی دربارهٔ
اجرا کردن آن از شما پرسش نیز نمی‌کنند یا حتی به شما دربارهٔ وجودشان چیزی
نمی‌گویند&mdash;برنامه‌هایی که صفحات وب درون خود دارند و یا به آنها پیوند
خورده‌اند. این برنامه‌ها معمولا با جاوااسکریپت نوشته می‌شوند، هر چند که
زبان‌های دیگر نیز مورد استفاده قرار می‌گیرند.</p>

<p>جاوااسکریپت (که به طور رسمی ECMAscript نامیده می‌شود، اما کمتر کسی از این
نام استفاده می‌کند) برای اولین بار برای تجملاتی کوچک در صفحات وب استفاده شد،
همانند قابلیت‌های نمایشی و جلوه‌های زیبا اما غیر ضروریِ پیوندها و
فهرست‌ها. قابل قبول بود که به جای اینکه آنها را یک نرم‌افزار به حساب آوریم،
یک تعمیم بر HTML بدانیم؛ آنها موضوع چندان مهمی به حساب نمی‌آمدند.</p>

<p>تعدادی از سایت‌ها هنوز از جاوااسکریپت به همان صورت استفاده می‌کنند، اما
بعضی‌ها از جاوااسکریپت برای برنامه‌های مهمی که کارهای بزرگ انجام می‌دهند
استفاده می‌کنند. به عنوان مثال، Google Docs یک برنامهٔ جاوااسکریپت را بر روی
کامپیوتر شما بارگزاری می‌کند که کمتر از نصف مگابایت حجم دارد، در قالبی که ما
Obfuscript می‌نامیم چرا که هیچ توضیح و یا خط خالی‌ای درون خود ندارد، و نام
مِتُدهای آن تنها یک حرف طول دارد. کد منبع یک برنامه، در قالبی است که بتوان
آن را ویرایش کرد؛ این کدِ فشرده، کد منبع نیست، و کد منبع حقیقیِ این برنامه
در دسترس کاربر قرار ندارد.</p>

<p>معمولا مرورگرها هنگام بارگزاری برنامه‌های جاوااسکریپت اطلاعی نمی‌دهند. اکثر
مرورگرها روشی برای غیر فعال کردن جاوااسکریپت به طور کامل دارند، اما هیچ‌کدام
از آنها برنامه‌های جاوااسکریپت که کوچک اما با اهمیت، و غیر آزاد هستند را
نمی‌توانند بررسی کنند. حتی اگر شما از این موضوع با خبر باشید، پیدا کردن و
جلوگیری از این برنامه‌ها پر دردسر خواهد بود. هر چند، حتی در جامعهٔ نرم‌افزار
آزاد نیز اکثر کابران از این موضوع مطلع نیستند؛ سکوتِ مرورگر موضوع را پنهان
نگاه می‌دارد.</p>

<p>می‌توان یک برنامهٔ جاوااسکریپت را با انتشار کد منبع آن مطابق اجازه‌نامهٔ
نرم‌افزار آزاد، به صورت یک نرم‌افزار آزاد منتشر ساخت. اما حتی اگر کد منبع
برنامه در دسترس باشد، راه ساده‌ای برای به اجرا درآوردن نسخهٔ تغییر یافته به
جای نسخهٔ اصلی وجود ندارد. مرورگرهای آزاد کنونی تسهیلاتی را برای اجرای نسخهٔ
تغییر یافته به جای آنچه درون صفحه وجود دارد، در اختیار قرار نمی‌دهند. تاثیر
آن با tivoization قابل مقایسه است، اگر چه غلبه بر آن چندان هم مشکل نیست.</p>

<p>جاوااسکریپت تنها زبانی نیست که وب‌سایت‌ها برای ارسال برنامه برای کاربران
استفاده می‌کنند. Flash قابلیت برنامه‌نویسی را به وسیلهٔ نوعی جاوااسکریپتِ
توسعه‌یافته فراهم می‌آورد. برای ارائهٔ توصیه‌هایی مناسب در این زمینه احتیاج
به بررسی Flash داریم. به نظر می‌رسد که Silverlight نیز مشکلی همانند Flash
ایجاد می‌کند، حتی بدتر، چرا که مایکروسافت از آن به عنوان سکویی برای codecهای
غیرآزاد خود استفاده می‌کند. یک جایگزین آزاد برای Silverlight موضوع را برای
جهان آزاد حل نمی‌کند مگر اینکه جایگزینی آزاد برای این codecها داشته باشد.</p>

<p>جاوااپلت نیز درون مرورگر اجرا می‌شود و مورد مشابهی را مطرح می‌کند. به طور
کلی، هر نوع سیستمِ اپلت چنین مشکلی را دارا است. داشتن یک محیط آزاد برای
اجرای اپلت، ما را تنها تا جایی پیش می‌برد که بتوانیم با این مشکل روبرو شویم.</p>

<p>جنبشی قدرتمند به راه افتاده است که از وب‌سایت‌ها تقاضا می‌کند تنها از طریق
فرمت‌ها و پروتکل‌های آزاد (بعضی‌ها می‌گویند &quot;باز&quot;) ارتباط بر قرار
کنند؛ فرمت‌ها و پروتکل‌هایی که مستندات خود را منتشر ساخته‌اند و هر شخصی برای
پیاده‌سازی آنها آزاد است. با حضور برنامه‌ها در صفحات وب، چنین ضوابطی ضروری،
اما ناکافی است. خود جاوااسکریپت، به عنوان یک فرمت، آزاد است، و استفاده از
جاوااسکریپت در وب‌سایت‌ها لزوما بد نیست. هر چند، همانطور که پیش از این
دیدیم، لزوما خوب هم نیست. هنگامی که یک سایت برنامه‌ای را برای کاربر ارسال
می‌کند، نوشته شدن برنامه با یک زبان واضح و مستندسازی شده به تنهایی کافی
نیست، خود برنامه نیز باید آزاد باشد. &rdquo;تنها برنامه‌های آزاد که برای
کاربران ارسال می‌شوند&ldquo; باید بخشی از ضابطهٔ رفتار صحیح برای وب‌سایت‌ها
شوند.</p>

<p>بارگزاری و اجرای برنامه‌های غیر آزاد در سکوت یکی از چند موضوعی است که توسط
&quot;برنامه‌های وب&quot; مطرح شده است. واژهٔ &quot;برنامه‌های وب&quot; به
منظور حذف تفاوت‌های اساسی میان برنامه‌هایی که برای کاربر ارسال می‌شود و
برنامه‌هایی که بر روی سرور در حال اجرا هستند، پدید آمده است. این واژه
می‌تواند به یک برنامهٔ اختصاصی که بر روی مرورگر کاربر اجرا می‌شود اشاره کند؛
می‌تواند به نرم‌افزار اختصاصی سرور اشاره کند؛ می‌تواند به برنامهٔ اختصاصی
سمت کاربر و برنامهٔ اختصاصی سمت سرور که با یکدیگر همکاری می‌کنند اشاره
کند. برنامه‌های سمت کاربر و سمت سرور موضوعات اخلاقی مختلفی را مطرح می‌کنند،
حتی اگر آنها کاملا ترکیب شده و بتوان گفت که برنامه‌ای واحد را تشکیل
داده‌اند. این مقاله تنها بر روی نرم‌افزارهای سمت کاربر بحث می‌کند. موضوع
سرور به صورت جداگانه‌ای مورد بحث قرار خواهد گرفت.</p>

<p>در عمل، چگونه می‌توان با مشکلِ برنامه‌های جاوااسکریپتِ غیر آزاد بر روی
وب‌سایت‌ها بر خورد کرد؟ یکی از روش‌ها بدین قرار است.</p>

<p>ابتدا، به ضابطه‌ای عملی برای برنامه‌های جاوااسکریپتِ کوچک اما نه بی‌اهمیت،
نیاز داریم. موضوع مهم آن است که ضابطه‌ای طراحی کنیم که نتایج خوبی به دست
دهد، نه اینکه جواب صحیحی فراهم آورد.</p>
<p>
پیشنهاد ما این است که برنامهٔ جاوااسکریپتی را با اهمیت بنامیم که اسکریپتِ
دیگری را بارگزاری کند و یا یک درخواست AJAX را مطرح کند.</p>

<p>در پایان مقاله قراردادی را پیشنهاد می‌کنیم که مطابق آن یک برنامهٔ
جاوااسکریپت در یک صفحهٔ وب بتواند شامل یک URL باشد که به مکان کد منبع برنامه
اشاره کند، و بتواند شامل اجازه‌نامه‌ای نیز باشد که با استفاده از توضیحات
درون کد مشخص شود.</p>

<p>در پایان، لازم است که مرورگرهای وب به گونه‌ای تغییر پیدا کنند که از آزادی
کاربران در مقابل صفحاتی با جاوااسکریپت حمایت کنند. پیش از هر چیز، مرورگرها
باید قادر باشند که در عوض اجرا کردن برنامه‌های جاوااسکریپتِ غیر آزاد و نه
بی‌اهمیت، به کاربران در موردشان اخطار دهند. شاید بتوان <a
href="https://addons.mozilla.org/en-US/firefox/addon/722">NoScript</a> را
برای این منظور تغییر داد.</p>

<p>همچنین کاربران مرورگر به روشی ساده نیاز دارند تا بتوانند کد جاوااسکریپت
جایگزینی را مشخص کنند تا <em>به جای</em> کد موجود در صفحه اجرا شود. (کد مشخص
شده باید یک جایگزین کامل، و یا نسخه‌ای تغییر یافته و آزاد از کد جاوااسکریپتِ
موجود در آن صفحه باشد.) Greasemonkey تقریبا قادر به انجام این کار است، اما
نه کاملا، چرا که نمی‌تواند تضمین کند پیش از اجرا شدن کد جاوااسکریپتِ درون
صفحه، نسخهٔ تغییر یافته جایگزین شود. استفاده از یک پروکسیِ محلی این امکان را
می‌دهد، اما بیش از حد دردسر ساز است که به عنوان راه حل حقیقی ارائه شود. باید
راه حلی پدید آورد که قابل اعتماد و راحت باشد، همین‌طور سایت‌هایی که بتوانند
این تغییرات را به اشتراک بگذارند. پروژهٔ گنو تمایل دارد سایت‌هایی را معرفی
کند که تنها به تغییرات آزاد توجه دارند.</p>

<p>این قابلیت‌ها باعث می‌شود که بتوان برنامه‌های جاوااسکریپت موجود در صفحات وب
را به صورت آزاد، و با روشی عملی و حقیقی منتشر کرد. جاوااسکریپت دیگر یک مانع
در برابر آزادی ما نخواهد بود.&mdash;نه بیش از آنچه امروزه جاوا و C هستند. ما
می‌توانیم برنامه‌های غیر آزاد و نه بی‌اهمیت جاوااسکریپت را نپذیریم و یا حتی
آنها را جایگزین سازیم، درست همانطور که بسته‌های نرم‌افزاری غیر آزاد را که
موجود هستند جایگزین می‌سازیم. سپس مبارزهٔ ما برای اینکه وب‌سایت‌ها کد
جاوااسکریپت خود را آزاد سازند، آغاز خواهد شد.</p>

<p><strong>از <a href="/people/people.html#mattlee">Matt Lee</a> و <a
href="http://ejohn.org">John Resig</a> به خاطر کمک در تعریف ضابطهٔ پیشنهادی
ما تشکر می‌کنم.</strong></p>

<h3 id="AppendixA">پیوست: قراردادی برای توزیع برنامه‌های جاوااسکریپت به صورت آزاد</h3>

<p>برای ارجاع به کد منبع، پیشنهاد می‌کنیم</p>
<pre dir="ltr">

    // @source:

</pre>

<p>و پس از آن URL مربوط به کد منبع آورده شود.
</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">GNU GPL</a>، همانند بسیاری از اجازه‌نامه‌های
نرم‌افزار آزاد دیگر، توزیع یک نسخه از اجازه‌نامه را به همراه کد منبع و
باینری لازم می‌داند. اما GNU GPL طولانی‌تر از آن است که بتوان آن را بدون
مشکل در یک صفحهٔ وب به همراه کد جاوااسکریپت قرار داد. با استفاده از یک اعلان
همانند آنچه در زیر می‌آید به همراه کد خود، می‌توانید این الزام را برآورده
کنید:</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>

<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.fa.html" -->
<div id="footer">
<div class="unprintable">

<p>لطفا سوالات و پرسش‌های خود در رابطه با گنو و بنیاد نرم‌افزارهای آزاد را به
<a href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a> ارسال کنید. همچنین <a
href="/contact/">راه‌های دیگری برای تماس</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:www-fa-general@gnu.org">&lt;www-fa-general@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 3.0 US.  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><span dir="ltr">Copyright &copy; 2009 Richard Stallman</span></p>

<p>این صفحه تحت مجوز <a rel="license"
href="http://creativecommons.org/licenses/by-nd/3.0/us/">Creative Commons
Attribution-NoDerivs 3.0 United States License</a> قرار دارد.</p>

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

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

<p class="unprintable"><!-- timestamp start -->
آخرین به روز رسانی:

$Date: 2016/11/18 07:32:45 $

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