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/fa/javascript-trap.html | 282 +++++++++++++++++++++ 1 file changed, 282 insertions(+) create mode 100644 talermerchantdemos/blog/articles/fa/javascript-trap.html (limited to 'talermerchantdemos/blog/articles/fa/javascript-trap.html') diff --git a/talermerchantdemos/blog/articles/fa/javascript-trap.html b/talermerchantdemos/blog/articles/fa/javascript-trap.html new file mode 100644 index 0000000..91e6d1b --- /dev/null +++ b/talermerchantdemos/blog/articles/fa/javascript-trap.html @@ -0,0 +1,282 @@ + + + + + + + +دام جاوااسکریپت + + + + +

دام جاوااسکریپت

+ +

نوشتهٔ ریچارد استالمن

+ +

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

+ +

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

+ +

اما مرورگرها برنامه‌های غیرآزاد دیگری را نیز اجرا می‌کنند که حتی دربارهٔ +اجرا کردن آن از شما پرسش نیز نمی‌کنند یا حتی به شما دربارهٔ وجودشان چیزی +نمی‌گویند—برنامه‌هایی که صفحات وب درون خود دارند و یا به آنها پیوند +خورده‌اند. این برنامه‌ها معمولا با جاوااسکریپت نوشته می‌شوند، هر چند که +زبان‌های دیگر نیز مورد استفاده قرار می‌گیرند.

+ +

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

+ +

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

+ +

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

+ +

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

+ +

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

+ +

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

+ +

جنبشی قدرتمند به راه افتاده است که از وب‌سایت‌ها تقاضا می‌کند تنها از طریق +فرمت‌ها و پروتکل‌های آزاد (بعضی‌ها می‌گویند "باز") ارتباط بر قرار +کنند؛ فرمت‌ها و پروتکل‌هایی که مستندات خود را منتشر ساخته‌اند و هر شخصی برای +پیاده‌سازی آنها آزاد است. با حضور برنامه‌ها در صفحات وب، چنین ضوابطی ضروری، +اما ناکافی است. خود جاوااسکریپت، به عنوان یک فرمت، آزاد است، و استفاده از +جاوااسکریپت در وب‌سایت‌ها لزوما بد نیست. هر چند، همانطور که پیش از این +دیدیم، لزوما خوب هم نیست. هنگامی که یک سایت برنامه‌ای را برای کاربر ارسال +می‌کند، نوشته شدن برنامه با یک زبان واضح و مستندسازی شده به تنهایی کافی +نیست، خود برنامه نیز باید آزاد باشد. ”تنها برنامه‌های آزاد که برای +کاربران ارسال می‌شوند“ باید بخشی از ضابطهٔ رفتار صحیح برای وب‌سایت‌ها +شوند.

+ +

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

+ +

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

+ +

ابتدا، به ضابطه‌ای عملی برای برنامه‌های جاوااسکریپتِ کوچک اما نه بی‌اهمیت، +نیاز داریم. موضوع مهم آن است که ضابطه‌ای طراحی کنیم که نتایج خوبی به دست +دهد، نه اینکه جواب صحیحی فراهم آورد.

+

+پیشنهاد ما این است که برنامهٔ جاوااسکریپتی را با اهمیت بنامیم که اسکریپتِ +دیگری را بارگزاری کند و یا یک درخواست AJAX را مطرح کند.

+ +

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

+ +

در پایان، لازم است که مرورگرهای وب به گونه‌ای تغییر پیدا کنند که از آزادی +کاربران در مقابل صفحاتی با جاوااسکریپت حمایت کنند. پیش از هر چیز، مرورگرها +باید قادر باشند که در عوض اجرا کردن برنامه‌های جاوااسکریپتِ غیر آزاد و نه +بی‌اهمیت، به کاربران در موردشان اخطار دهند. شاید بتوان NoScript را +برای این منظور تغییر داد.

+ +

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

+ +

این قابلیت‌ها باعث می‌شود که بتوان برنامه‌های جاوااسکریپت موجود در صفحات وب +را به صورت آزاد، و با روشی عملی و حقیقی منتشر کرد. جاوااسکریپت دیگر یک مانع +در برابر آزادی ما نخواهد بود.—نه بیش از آنچه امروزه جاوا و C هستند. ما +می‌توانیم برنامه‌های غیر آزاد و نه بی‌اهمیت جاوااسکریپت را نپذیریم و یا حتی +آنها را جایگزین سازیم، درست همانطور که بسته‌های نرم‌افزاری غیر آزاد را که +موجود هستند جایگزین می‌سازیم. سپس مبارزهٔ ما برای اینکه وب‌سایت‌ها کد +جاوااسکریپت خود را آزاد سازند، آغاز خواهد شد.

+ +

از Matt Lee و John Resig به خاطر کمک در تعریف ضابطهٔ پیشنهادی +ما تشکر می‌کنم.

+ +

پیوست: قراردادی برای توزیع برنامه‌های جاوااسکریپت به صورت آزاد

+ +

برای ارجاع به کد منبع، پیشنهاد می‌کنیم

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

و پس از آن URL مربوط به کد منبع آورده شود. +

+ +

برای نمایش دادن اجازه‌نامهٔ مربوط به کد جاوااسکریپت که در صفحه آمده است، +پیشنهاد می‌کنیم از اعلانی، میان دو یادداشت، همانند این فرم استفاده شود:

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

و البته، تمام اینها باید داخل یک توضیح چند خطی قرار گیرند.

+ +

GNU GPL، همانند بسیاری از اجازه‌نامه‌های +نرم‌افزار آزاد دیگر، توزیع یک نسخه از اجازه‌نامه را به همراه کد منبع و +باینری لازم می‌داند. اما GNU GPL طولانی‌تر از آن است که بتوان آن را بدون +مشکل در یک صفحهٔ وب به همراه کد جاوااسکریپت قرار داد. با استفاده از یک اعلان +همانند آنچه در زیر می‌آید به همراه کد خود، می‌توانید این الزام را برآورده +کنید:

+
+
+    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.
+
+
+ +
+ + +
+ + + + + + + + -- cgit v1.2.3