انجمن کامپیوتر دانشگاه ولی عصر رفسنجان
برای استفاده کامل از امکانات انجمن می بایست به انجمن وارد شوید، اگر هنوز عضو انجمن نیستید دکمه ثبت نام را فشار داده و در غیر اینصورت دکمه ورود را برای وارد شدن به حساب کاربری خود فشار دهید.

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

View previous topic View next topic Go down

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

Post by meys@m on 15/9/2009, 8:25 am

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Our proposal is to consider a JavaScript program nontrivial if it makes an AJAX request, and consider it nontrivial if it defines methods and either loads an external script or is loaded as one.

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

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

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

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

_________________
If at first you don't succeed; call it version 1.0
avatar
meys@m
Admin

تعداد پستها : 131
اعتبار : 8
Join date : 2009-05-06
Age : 27

در مورد من
رشته تحصیلی: ریاضی کاربردی

http://anarnet.ir

Back to top Go down

View previous topic View next topic Back to top


 
Permissions in this forum:
You cannot reply to topics in this forum