English [en]   العربية [ar]   español [es]   فارسی [fa]   français [fr]   hrvatski [hr]   italiano [it]   日本語 [ja]   lietuvių [lt]   Nederlands [nl]   polski [pl]   português do Brasil [pt-br]   русский [ru]   Türkçe [tr]   українська [uk]   简体中文 [zh-cn]  

Bu, orijinali İngilizce olan bir sayfanın çevirisidir.

JavaScript Tuzağı

yazan Richard Stallman

Bilgisayarınızda web tarayıcınız aracılığıyla her gün farkında olmadan özgür olmayan programlar çalıştırıyor olabilirsiniz.

Web yöneticileri: Bir web sitesindeki JavaScript programlarının lisansını belirtmenin birkaç yolu vardır.

Özgür yazılım topluluğunda özgür olmayan herhangi bir programın kullanıcısına kötü davrandığı fikri tanıdık geliyor. Bazılarımız bilgisayarlarımızdaki tüm özel mülk yazılımları reddederek özgürlüğümüzü savunuyoruz. Diğerleri özgür olmama durumunu programa karşı bir darbe olarak kabul eder.

Pek çok kullanıcı, bu sorunun tarayıcıların kurmayı önerdiği eklentiler için geçerli olduğunun farkındadır, çünkü bu eklentiler özgür olabilirler de olmayabilir de. Ancak tarayıcılar; size sormadıkları, hatta size hiç söz etmedikleri başka özgür olmayan programları da çalıştırırlar, web sayfalarının doğrudan veya bağlantı olarak içerdiği programlar. Bu programlar çoğunlukla JavaScript ile yazılmış olsa da, diğer diller de kullanılabilir.

JavaScript (resmî olarak ECMAScript olarak adlandırılır ancak bu adı kullanan azdır); bir zamanlar web sayfalarındaki sevimli ama önemsiz gezinme ve görüntüleme özellikleri gibi küçük süsler için kullanılırdı. Bunları gerçek yazılım olarak değil, yalnızca HTML dilinin uzantıları olarak kabul etmek ve konuyu takmamak makbuldu.

Bazı siteler hâlâ bu şekilde JavaScript kullansa da, çoğunluğu daha büyük işler yapan büyük programlar için kullanıyor. Örneğin; Google Dokümanlar tarayıcınıza Obfuscript diyebileceğimiz sıkıştırılmış bir biçimde yarım megabaytlık bir JavaScript programı kurmaya çalışır. Bu sıkıştırılmış biçim, kaynak kodundan, kodu okunabilir hâle getiren ek boşlukları ve anlaşılabilir hâle getiren açıklayıcı yorumları silerek ve koddaki her anlamlı ismi keyfi bir kısa adla değiştirerek yapılır, böylece sonuçta ne anlama geldiğini anlayamayız.

Özgür yazılımın anlamının bir parçası, kullanıcıların programın kaynak koduna (planına) erişebilmeleridir. Bir programın kaynak kodu; yardımcı aralıklar, açıklayıcı yorumlar ve anlamlı adlar dahil olmak üzere programcıların değiştirmesi için tercih edilen biçim anlamına gelir. Sıkıştırılmış kod; kaynak kodu yerine sahte, işe yaramaz bir alternatiftir; bu programların gerçek kaynak kodu kullanıcılar tarafından kullanılamaz, bu yüzden kullanıcılar bunu anlayamaz; bu nedenle programlar özgür değildir.

Özgür olmamaya ek olarak bu programların birçoğu kötü amaçlı yazılımdır çünkü kullanıcıyı gizlice gözetlerler. Daha da kötüsü, bazı siteler, sayfaya bakan kullanıcının eylemlerini kaydeden hizmetleri kullanırlar. Hizmetler, söylendiğine göre, web sitesinin almaması gereken bazı hassas verileri hariç tutmak için kayıtları “yeniden düzenliyor”. Ancak bu güvenilir bir şekilde çalışsa bile bu hizmetlerin tüm amacı web sitesine aslında erişmemesi gereken kişisel veriler vermektir.

Tarayıcılar normalde JavaScript programlarını ne zaman yüklediklerini size söylemez. Bazı tarayıcılarda JavaScript'i tamamen devre dışı bırakmanın bir yolu vardır ancak bu sorunun farkında olsanız bile anlaşılması zor olan özgür olmayan programları tanımlamanız ve engellemeniz büyük zorluklar doğuracaktır. Bununla birlikte özgür yazılım topluluğunda bile çoğu kullanıcı bu sorunun farkında değildir; tarayıcıların sessizliği onu gizleme eğilimindedir.

Kaynak kodunu özgür bir yazılım lisansı altında dağıtarak bir JavaScript programını özgür yazılım olarak yayımlamak mümkündür. Program kendi kendine yetiyorsa, eğer işleyişi ve amacı içeri girdiği sayfadan bağımsızsa, bu iyi; makinenizdeki bir dosyaya kopyalayabilir, değiştirebilir ve çalıştırmak için bir tarayıcıyla bu dosyayı ziyaret edebilirsiniz. Ancak bu alışılmadık bir durum.

Genelde JavaScript programlarının belirli bir sayfa veya siteyle çalışması amaçlanmıştır ve sayfa veya site bunların çalışmasına bağlıdır. Ardından başka bir problem ortaya çıkıyor: Programın kaynağı mevcut olsa bile tarayıcılar bu sayfayı veya siteyi ziyaret ederken değiştirilmiş versiyonunuzu orijinal yerine çalıştırmak için bir yol sunmuyor. Prensipte üstesinden gelmek çok zor olmasa da etki tivoizasyon ile karşılaştırılabilir.

JavaScript, web sitelerinin kullanıcıya gönderilen programlar için kullandığı tek dil değildir. Flash, JavaScript'in genişletilmiş bir varyantı aracılığıyla programlamayı destekler; yeterince eksiksiz bir özgür Flash oynatıcımız olsa bile, özgür olmayan Flash programları ile ilgilenmemiz gerekiyor. Silverlight'in Flash'a benzer bir sorun yaratması muhtemel görünüyor, belki de daha da kötüsü, çünkü Microsoft bunu özgür olmayan kod çözücüler için bir platform olarak kullanıyor. Silverlight için özgür bir alternatif, normalde özgür alternatif kod çözücüleriyle birlikte gelmediği sürece, özgür dünyanın işine yaramaz.

Java uygulamacıkları da tarayıcıda çalışır ve benzer sorunları ortaya çıkarır. Genel olarak herhangi bir uygulamacık sistemi bu tür bir sorun taşır. Bir uygulamacık için özgür bir yürütme ortamına sahip olmanın bize yararı ancak sorunla karşılaştırmak olur.

Salt HTML ve CSS ile programlama teorik olarak mümkün olsa da, uygulamada bu yetenek sınırlıdır ve sakıncalıdır; sadece bir şeyi yapmak için etkileyici bir hack. Bu tür programlar özgür olmalı, fakat CSS 2019 itibareiyle kullanıcıların özgürlüğü için ciddi bir sorun değil.

Web sitelerinin yalnızca özgür olan (bazıları "açık" olduğunu söylüyor), yani belgelendirmeleri yayınlanan ve gerçekleştirimlerinin özgür olduğu biçimleri ve protokolleri aracılığıyla iletişim kurmasını isteyen güçlü bir hareket gelişti. Ancak web sayfalarındaki JavaScript programlarının varlığı bu ölçütü yetersiz kılmaktadır. JavaScript dilinin kendisi bir biçim olarak özgürdür ve bir web sitesinde JavaScript kullanımı mutlaka kötü olmak zorunda değildir. Ancak, yukarıda gördüğümüz gibi, JavaScript programı özgür değilse, kötü de olabilir. Site kullanıcıya bir program gönderdiğinde programın belgelenmiş ve engelsiz bir dilde yazılması yeterli değildir; yazılan bu program da özgür olmalı. “Kullanıcıya yalnızca özgür programları ileten” etik bir web sitesi için ölçütün bir parçası haline gelmelidir.

Özgür olmayan programların sessizce yüklenmesi ve çalıştırılması, "web uygulamalarının" ortaya çıkardığı çeşitli sorunlardan sadece biridir. "Web uygulaması" terimi, kullanıcılara sunulan yazılım ile sunucu üzerinde çalışan yazılımlar arasındaki temel ayrımı göz ardı etmek için tasarlanmıştır. Tarayıcıda çalışan özelleşmiş bir istemci programı kastediliyor olabilir; özelleşmiş sunucu yazılımı kastediliyor olabilir; özelleşmiş sunucu yazılımı ile birlikte çalışan özelleşmiş bir istemci programı kastediliyor olabilir. İstemci ve sunucu tarafları; farklı bir etik sorun ortaya çıkarmaktadır, sıkı bir şekilde entegre olmuş olsalar bile tartışmasız tek bir programın bölümlerini oluştururlar. Bu makale yalnızca istemci tarafındaki yazılım sorununu ele almaktadır. Sunucu sorununu ayrıca ele alıyoruz.

Pratik açıdan web sitelerinde anlaşılması zor olan özgür olmayan JavaScript programları sorununu nasıl çözebiliriz? İlk adım, onu çalıştırmaktan kaçınmaktır.

"Anlaşılması zor olan" derken neyi kastediyoruz? Bu bir seviye meselesidir, bu yüzden doğru bir cevap bulmak yerine iyi sonuçlar veren basit bir ölçüt tasarlama meselesidir.

Şu anki ölçütümüz, aşağıdaki koşullardan herhangi birini içeren bir JavaScript programını anlaşılması zor bir program olarak değerlendirmektir:

JavaScript kodunun özgür olup olmadığını nasıl anlarız? Ayrı bir makalede bir web sayfasındaki anlaşılması zor olan bir JavaScript programının kaynak kodunun bulunduğu URL'yi ve biçimlendirilmiş yorumları kullanarak lisansını belirtebileceği bir yöntem öneriyoruz.

Son olarak web sayfalarındaki anlaşılması zor olan özgür olmayan JavaScript'i tespit etmek ve engellemek için özgür tarayıcıları değiştirmemiz gerekiyor. LibreJS programı; ziyaret ettiğiniz sayfalarda özgür olmayan, anlaşılması zor olan bir JavaScript'i tespit eder ve engeller. LibreJS, IceCat'a dâhil edilmiştir ve Firefox için bir eklenti olarak mevcuttur.

Tarayıcı kullanıcılarının ayrıca belirli bir sayfada JavaScript yerine kullanılacak JavaScript kodunu belirtmek için uygun bir vasıtaya ihtiyacı vardır. (Belirtilen kod, bu sayfadaki özgür JavaScript programının tamamen değiştirilmesi veya değiştirilmiş bir sürümü olabilir.) Greasemonkey, bunu yapmaya en yakın eklentidir, ancak tam olarak bunu yapamaz, çünkü bu program çalıştırılmadan önce bir sayfadaki JavaScript kodunu değiştirmeyi garanti etmez. Yerel bir vekil sunucu kullanmak işe yarar ancak bu da gerçek bir çözüm olmak için çok zahmetli. Güvenilir ve uygun bir çözüm ve değişiklikleri paylaşmak için siteler oluşturmak gerekir. GNU Projesi sadece özgür değişikliklere adanmış siteleri önermek ister.

Bu özellikler, bir web sayfasına dâhil olan bir JavaScript programının gerçek ve pratik anlamda özgür olmasını mümkün kılacaktır. JavaScript artık özgürlüğümüz için belirgin bir engel teşkil etmeyecek, şimdi C ve Java'nın olduğundan daha fazla değil en azından. Kurulum için teklif edilen özgür olmayan paketleri reddettiğimiz gibi, özgür olmayan, anlaşılması zor olan JavaScript programlarını reddebilecek ve hatta değiştirebileceğiz. Böylece web sitelerinin Javascript'lerini özgürleştirme kampanyamız da başlayabilir.

Bu arada özgür olmayan bir JavaScript programını çalıştırmanın kabul edilebilir olduğu bir durum var: Web sitesi operatörlerine sitedeki JavaScript kodunu özgürleştirmeleri veya kaldırmaları gerektiğini söyleyen bir şikayet göndermek. Lütfen bunu yapmak için geçici olarak JavaScript'i etkinleştirmekten çekinmeyin, ancak elbette daha sonra tekrar devre dışı bırakmayı unutmayın.

Web yöneticileri: Bir web sitesindeki JavaScript programlarının lisansını belirtmenin birkaç yolu vardır.

Teşekkürler: Matt Lee ve John Resig'e önerdiğimiz ölçütleri tanımlamamıza yardım ettikleri için ve sorunu dikkatime sunduğu için David Parunakian'a teşekkür ediyorum.

YUKARIYA GİT

[FSF logosu] “Özgür Yazılım Vakfı (FSF [Free Software Foundation]), bilgisayar kullanıcısı özgürlüğünü desteklemek için dünya çapında bir misyon ile kâr amacı gütmeyen bir kuruluştur. Tüm yazılım kullanıcılarının haklarını savunuyoruz.”

KATIL MAĞAZA