1 puan yazan GN⁺ 2024-02-05 | 1 yorum | WhatsApp'ta paylaş
  • Tarayıcı uzantıları, akıllı telefon ve masaüstü platformlarından farklı olarak kullanıcıların web uygulamalarını asıl geliştiricinin amaçlamadığı şekillerde değiştirebilmesini sağlayan nadir bir hacklenebilir yazılım ekosistemidir
  • Chrome Mağazası’ndaki 180 binden fazla uzantı ve Chrome kullanıcılarının neredeyse yarısının uzantı kurmuş olması, sıradan kullanıcıların da kolay bir yol olduğunda kişiselleştirilmiş kullanım deneyimlerini bizzat bir araya getirdiğini gösterir
  • Uzantıların geniş kullanım alanı, uygulamaya özel API’lerden çok insan tarafından okunabilir istemci kodu, anlamlı markup ve standart web yerleşimi gibi web’in açıklığından gelir
  • Parola girişi, Kanji okuma, not ekleme, reklam engelleme, 2x hızda oynatma gibi uzantılar, birden çok sitede çalışan küçük araçlar olarak dev uygulama merkezli modelden farklı bir yazılım deneyimi yaratır
  • Kötü niyetli uzantılar ve gizlilik ihlalleri ele alınmaya devam edilmeli; ancak erişilebilirlik, uyumluluk ve izinler arasında denge kurulursa, kullanıcıların kullandıkları yazılımı daha derinden değiştirmesini sağlayan genişletilebilirlik korunabilir

Tarayıcı uzantılarını özel kılan ne?

  • Tarayıcı uzantılarıyla ilgili son tartışmalar web geçmişini toplayan kötü niyetli uzantılara ve Google’ın reklam engelleme işlevlerini kısıtlamasına odaklanmış olsa da, uzantılar hâlâ kullanıcı odaklı yazılımın özel bir örneğidir
  • Başlıca yazılım platformları arasında tarayıcı uzantıları, kullanıcıların her gün kullandıkları uygulamaları asıl geliştiricinin niyetinin dışında değiştirmesine izin veren ve bunu teşvik eden nadir bir istisnadır
  • Akıllı telefon ve masaüstü platformlarında bu tür değişiklikler nadir ya da imkânsızken, tarayıcıda gündelik bir etkinlik hâline gelmiştir
  • Uzantılar, kullanıcıların bilgisayar kullanma biçimleri üzerinde daha derin kontrol sahibi olabileceği hissini yeniden canlandırır

Kullanıcıların kendi bir araya getirdiği yazılım

  • Bir yazılım platformu belli bir düzeyin üzerinde açık olduğunda, sıradan kullanıcıların yazılımla ilişki kurma biçimi de değişir
  • Gmail için dört uzantı kurup görsel tasarımdan temel işlevlere kadar değiştirirseniz, bir anlamda kendinize ait bir e-posta istemcisi bir araya getirmiş olursunuz
  • Kullanıcılar hazır uygulamaların pasif tüketicileri olarak kalmaz; bilgisayar kullanmanın kişiselleştirilmiş yolunu bizzat kurgulayabilir
  • Chrome Mağazası’nda 180 binden fazla uzantı vardır ve Chrome kullanıcılarının neredeyse yarısı tarayıcı uzantısı kurmuştur
  • Bu popülerlik, yazılımı kolayca genişletmenin bir yolu olduğunda birçok kullanıcının bu fırsatı gerçekten değerlendirdiğini gösterir

Uygulamaya özel API’lerden çok hacklenebilir platform

  • Tarayıcı uzantılarının parola girişi, Japonca Kanji okuma, Gmail görsel tasarımını sadeleştirme, makaleleri vurgulama ve not ekleme, daha sonra okumak üzere kaydetme, videoyu 2x hızda oynatma, reklam engelleme gibi çok geniş kullanım alanları vardır
  • Bu geniş kullanımın özü, çoğu uzantının uygulamaları asıl geliştiricinin özel olarak planlamadığı şekillerde değiştirmesidir
    • Japonca bir gazetenin makale yayımlarken Kanji okuma uzantısıyla uyumluluğu hesaba katmasına gerek kalmadan uzantı çalışabilir
    • Uzantı geliştiricileri, uygulama geliştiricisinin uzantı bakış açısını yansıtan uygulamaya özel API’lere bağlı kalmadığı için daha büyük yaratıcılık özgürlüğüne sahiptir
  • Web platformunun birkaç özelliği, planlanmamış genişletilebilirliği mümkün kılar
    • Geleneksel web dağıtım biçimi, istemci kodunu insan tarafından okunabilir biçimde tarayıcıya iletir
    • Kod obfuscate edildiğinde ya da başka dillerden derlendiğinde bile sourcemap’ler bu avantajı korumak açısından önemlidir
    • Web’in yerleşim modeli, standartlaştırılmış semantik markup’ı teşvik eder
    • Parola yöneticisi uzantıları, web sayfaları kendi özel uygulamaları yerine parola gönderimi için güvenilir biçimde form etiketini kullandığı için çalışır
  • Siteler uzantılar için tasarlanmamış olduğunda akıllı dolanma yolları gerekebilir; ancak bu, çoğu zaman yıllar süren tersine mühendislik olmadan makul bir iş yüküyle mümkündür
  • Web sitesi geliştiricileri ile uzantı geliştiricileri arasında gerilim doğabilse de, site geliştiricilerinin ek iş yapması gerekmiyorsa yaratıcı uzantıları kabul etmeleri daha yaygındır
  • Yalnızca az sayıda kullanıcının istediği niş özellikler, motivasyonu olan topluluk üyeleri tarafından uzantı olarak yapılabilir; bu da uygulama geliştiricilerinin yükünü azaltır

Büyük uygulama değil, küçük araçlar

  • Birçok tarayıcı uzantısı, tüm web sitelerindeki kullanım deneyimini iyileştiren genel amaçlı araçlar olarak çalışır
  • Not ekleme uzantısı, her makale için farklı bir vurgulama aracı gerektirmez; tüm web sitelerinde kullanılabilir
  • Fiziksel bir fosforlu kalem gibi, tek bir aracı öğrenip sonra farklı bağlamlarda uygulayarak büyük bir kaldıraç etkisi elde edebilirsiniz
  • Birçok yazılım platformunda işletim sisteminin yatay araçlar sağladığı, üçüncü tarafların ise yalıtılmış bağımsız uygulamalar sunduğu düşünülür; tarayıcı uzantılarında ise üçüncü taraflar da araç ekler
  • Küçük yazılım birimleri ekonomiyi de değiştirir
    • Çoğu uzantı ücretsizdir ve işlev kapsamı küçük olduğu için tam teşekküllü bir iş olarak sürdürülemeyecek kadar küçük olabilir
    • Yine de insanlar uzantılar yapar ve kullanıcılar bu küçük yazılım parçalarından büyük fayda elde eder
    • Uzantı mağazasında gezinmek, süpermarketten çok mahalle bit pazarına benzer
  • Büyük şirketlerin yaptığı büyük ölçekli yazılımlar tek yol değildir

Web açıklığının kökleri

  • Kişisel bilişimin ilk dönemlerinden beri bilgisayarları kullanıcıların kendi fikirlerini eklediği ve kendi araçlarını yaptığı etkileşimli bir ortam olarak görmeye yönelik felsefi bir gelenek vardı
  • Bu gelenek Smalltalk, Hypercard ve daha yakın dönemde Dynamicland gibi sistemlere yansır
  • Tim Berners-Lee, World Wide Web’i yaratırken bu geleneğin içinde yer alan bir sistem hayal etmişti
    • Onun vizyonu, “kişinin bildiğini ya da düşündüğünü paylaşmasının, başkasının bildiğini öğrenmek kadar kolay olduğu bir sistem”di
    • Web tarayıcısının aynı zamanda web sitesi düzenleyicisi de olması gerektiğini düşünüyordu; ancak Mosaic tarayıcısı bu özellik olmadan popülerleşti ve bu durum onu hayal kırıklığına uğrattı
  • Web sonunda herkesin sosyal medya platformları üzerinden görüş veya fotoğraf paylaşabildiği bir yer hâline geldi
  • Ancak Facebook gibi uygulamaların içinde belirlenmiş formatta paylaşım yapmak ve reklamlar dâhil uygulamanın belirlediği şekilde kullanmak gerekir
  • Tarayıcı uzantıları, sunulan metin kutusuna yazma düzeyinin ötesine geçerek web’deki herhangi bir uygulamayı kullanma biçimini derinden değiştirmeyi mümkün kılar
  • Büyük web sitelerini yapan şirketlerin kullanıcı deneyiminin tüm ayrıntılarını belirleyememesini sağlayan bir dağıtıklık sunar

Uzantıları daha iyi hâle getirme yönleri

  • Kötü niyetli uzantıların gizliliği ihlal etmesini önlemek için kullanıcıları korumaya yönelik çalışmalar gereklidir
  • Erişilebilirlik

    • Bugün uzantı kullanmaktan uzantı yapmaya geçmek için web geliştirmeyi epey öğrenmek gerekir
    • Tarayıcı içinde uzantı geliştirmek de kolay değildir
    • Geliştirici araçlarında bir web sitesini düzenlerken küçük bir uzantı yayımlamaya uzanan sorunsuz bir geçiş mümkün olabilir
  • Uyumluluk

    • Uzantılar web sitelerine desteklenmeyen biçimlerde hook attığı için site güncellemeleri uzantıları geçici olarak bozabilir
    • Uzantı geliştiricilerinin değişikliklere uyum sağlamak için aceleyle düzeltme yapması gereken durumlar olabilir
    • Açık uzantı API’lerine dayanmadan web sitesi geliştiricileri ile uzantı geliştiricilerinin istikrarlı biçimde bağlanmasını sağlayacak bir yöntem gerekir
    • Temiz semantik markup, insan tarafından okunabilir CSS ve sourcemap’ler, uzantı geliştirmeyi kolaylaştıran mevcut pratiklerdir
    • Bulut yazılımının yeni sürümü yayımlandıktan sonra kullanıcılar önceki sürümü 3 ay boyunca kullanmaya devam edebilirse, uzantı geliştiricileri yeni sürüme uyum sağlamak için zaman kazanabilir
  • İzinler

    • Web uzantıları tarayıcı istemcisini geniş ölçüde değiştirebilir, ancak sunucuya dokunamaz
    • Bir sosyal medya uygulamasının sunucusu gönderileri yalnızca kronolojik sırayla sorgulayan bir endpoint sunuyorsa, tarayıcı uzantısı tüm gönderilerde anahtar kelimeyle arama yapamaz
    • İstemci-sunucu sınırını yeniden düşünmek, uzantıların daha derin değişiklikler yapmasını sağlayabilir
    • Daha güçlü izinler güvenlik ve gizlilik sorunlarını zorlaştırır; yine de genişletilebilirliği bir değer olarak görüp dengeyi bulmak gerekir

Sonraki platformun olasılığı

  • Beaker Browser ve merkeziyetsiz web topluluğu, web’in merkezi sunucular olmadan nasıl çalışabileceğini araştırıyor
  • Bu tür bir mimari, kullanıcılara web uygulamalarının “sunucu” tarafını değiştirme konusunda daha eksiksiz kontrol verebilir
  • Tim Berners-Lee’nin yeni projesi SOLID, kullanıcıların kendi verileri üzerinde daha fazla sahiplik sahibi olması ilkesini içerir
  • Veri sahipliği arttıkça kullanıcılar, uzantılar ve diğer yazılımlar aracılığıyla verileri uygulama sunucusu API’lerinin izin verdiği kapsamın ötesinde esnek biçimde işleyebilir
  • Bilişim hâlâ genç ve platformlar hızla değişiyor
  • Modern tarayıcı uzantıları ve akıllı telefon platformları ortaya çıkalı yalnızca yaklaşık 10 yıl oldu
  • Gelecekteki platformların ne kadar açık olacağı kolektif olarak karar verilecek bir meseledir
  • Tarayıcı uzantıları, kullanıcıların kullandıkları yazılımı gündelik olarak hackleyip kendilerinin kıldığı yerlerin bir örneğidir

2024 güncellemesi

  • 2019’da yazılan yazıya 5 yıl sonra dönüp bakarken birkaç ilgili proje eklendi
  • Twitter için popüler bir tarayıcı uzantısı yaptım ve her gün kullanılan yazılımlardaki sorunları düzeltmenin bir yolu olarak uzantıları kullanma deneyimini özetleyen bir yazı yayımladım
  • MIT’de Daniel Jackson ile doktora yaparken, programcı olmayan kişilerin elektronik tablolardan tarayıcı uzantıları yapabilmesini sağlayan Wildcard’ı geliştirdim
  • Glen, tarayıcı uzantılarını sürdürülebilir projelere dönüştürmek isteyenler için gelirleştirme platformu ExtensionPay üzerinde çalışıyor
  • Son dönemde araştırma laboratuvarı Ink & Switch’te yapay zeka tabanlı malleable software üzerine çalışıyorum

1 yorum

 
GN⁺ 2024-02-05
Hacker News yorumları
  • Yazarı benim. Bu yazıyı 5 yıl önce yazdım; o zamandan beri özelleştirilebilir yazılımın değerine olan inancım daha da arttı, ama bazı düşüncelerim değişti.

    1. AI: AI kod yazmada hızla iyi hâle geliyor. Bugünkü AI çoğu zaman üst düzey mimaride zayıf kalıyor, ama küçük yerel değişikliklerde iyi; bu yüzden tarayıcı eklentisi yazmak için gereken kodla iyi örtüşüyor gibi görünüyor. Bu yönü araştırıyorum ve “Malleable software in the age of LLMs” yazısında daha fazla yazdım: https://www.geoffreylitt.com/2023/03/25/llm-end-user-program...
    2. Güvenlik: Tarayıcı eklentisi API’leri de dâhil olmak üzere çeşitli eklenti platformlarını geliştiren kişilerle konuştukça, kitlesel eklenti platformu dağıtımında güvenliğin çoğu zaman temel darboğaz olduğunu 5 yıl öncesine göre daha net görmeye başladım. Sıradan kullanıcıların, güvenilmeyen üçüncü taraflardan gelen müdahaleci eklentileri önemli yazılımlara kurmasına izin vermek istiyorsanız koruma sağlamak zor.
      Yine de eklenti tartışmalarının güvenliğe fazla odaklanıp diğer değerleri feda ettiğini düşünüyorum. Özelleştirilebilirlik bazı durumlarda güvenlikten önce gelecek kadar önemli olabilir. Çeşitli çözümler de var. İnternetteki herhangi bir kişiden kurmak yerine iş arkadaşları veya arkadaşlar gibi güven ilişkileri içinde eklenti alışverişi yapmak ya da yalnızca kendi yaptığınız eklentileri kullanmak mümkün. AI destekli programlama, kendi eklentisini yapmayı daha gerçekçi hâle getirebilir; ama yeni güvenlik sorunları da doğurur. Ayrıca temel gerilimi azaltan yazılım mimarisi fikirleri olan kişilerle de tanıştım; bir örnek şurada: https://www.wildbuilt.world/p/inverting-three-key-relationsh...
    3. Arka uç erişimi: Sunucu merkezli web’de tarayıcı eklentilerinin yalnızca istemci koduna erişebildiğini ve bunun derin özelleştirmeleri çoğu zaman engellediğini giderek daha fazla fark ediyorum. İstediğiniz verileri okuyamayabilir veya gerekli işi yapmak için yazma API’sine sahip olmayabilirsiniz. İstemci sınırları içinde eklentilerin yapabilecekleri konusunda iyimserim, ama bu platformun kendisine içkin bir sınır.
      Şu anda çalıştığım araştırma laboratuvarı Ink & Switch’te local-first yazılım geliştiriyoruz: veri ve kodun kendi cihazımda bulunduğu işbirliğine yönelik yazılımlar. Gizlilik gibi avantajların yanı sıra, veri ve uygulama kodu sunuculara kilitlenmediği için bunun daha güçlü eklentiler için doğru temel olduğunu düşünüyorum: https://www.inkandswitch.com/local-first/
    • Açık platformların güvenlik sorunu kilit mesele. Eğer sistem, ne yaptığını bilen kişilerin istediği gibi özelleştirebileceği kadar açıksa, kötü niyetli aktörler de pek bilmeyen insanları sistemi zararlı biçimlerde değiştirmeye ikna edebilir.
      Android’de kendi özel klavyenizi yapabilmeniz harika; ama birinin büyükanne ve büyükbabanızı ikna edip yerleşik keylogger içeren bir klavye kurdurabilmesi hiç iyi değil. Tarayıcı eklentileri her zaman kötü amaçlı yazılımın bol olduğu bir ekosistemdi ve Şükran Günü’nde eve her gittiğinizde anne babanızın Internet Explorer’ından araç çubuğu silme şakası yaklaşık 1999’dan beri var.
    • Tarayıcılar ve mobil işletim sistemleri uygulamalara veya eklentilere kolayca sahte kaynaklar sağlayabilse, güvenilmeyen kod çalıştırmak çok daha güvenli hâle gelebilir.
      “Evet, telefonumun içeriğini okuyabilirsiniz. Sizin gördüğünüz kadarıyla tüm içerik bu ve hepsi bu. Ama benim açımdan bu yalnızca bir klasör; hem de boş bir klasör. Yeni telefon olduğu için.”
      “Evet, kişi listem bu. Neredeyse boş olduğu için kusura bakmayın. Yalnızca pahalı bir premium numara var. Merkezinizin orayı aramamasını umarım.”
      “Evet, mikrofonum bu. Teşekkürler. Rick Astley taklidim iyidir.”
      “Telefon fotoğrafları mı? Buyurun. Hepsi şalgam fotoğrafı. Sever misiniz?”
    • Şekillendirilebilir yazılım, local-first ve yerel AI’ın kesiştiği nokta beni çok heyecanlandırıyor. Yazılımda yeni bir çağın açıldığı an gibi geliyor; iyi yapılırsa büyük şirketlerden veri kontrolünü geri alabilir, mülkiyet ve çalışma biçimimiz üzerinde daha fazla denetime sahip olabiliriz.
      Özellikle Automerge veya Yjs gibi genel amaçlı CRDT araçlarının local-first yazılımın temel dosya biçimi hâline gelmesi ve bunlara birlikte çalışabilir senkronizasyon/işbirliği arka uçları bağlanmasıyla ilgileniyorum. Kullanıcılar standart araçlarla alttaki verilere doğrudan erişebilir; dosyalar birbirine bağlanabilir, iç içe yerleştirilebilir, dallanabilir ve birleştirilebilir. Tüm belgelerin paylaşılabildiği, fork’lanabildiği ve gerçek zamanlı düzenlenebildiği yeni bir hipermedya platformu oluşturulabilir. Ink & Switch’te yapılan işleri gerçekten seviyorum ve bir sonraki duyuruyu sabırsızlıkla bekliyorum.
    • Tarayıcı eklentilerinin büyük sınırlaması, yalnızca kendiniz kullanmak için yazarken bile kullanıcı dostu ve ölçeklenebilir bir kurulum yöntemi olmaması. Tarayıcıya “şu dizindeki tüm eklentilere güveniyorum; imza olmadan, XPI olarak paketlemeye gerek kalmadan otomatik yükle” demenin bir yolu yok.
      “Kodu ve manifest’i bir dizine koyarsınız, tarayıcı kullanır” diye bir özellik yok. Eski greasemonkey’in tarayıcı profilindeki gm_scripts/ alt dizininden sıradan dosyaları olduğu gibi yüklediği zamanlarda, bu basit dağıtım sayesinde çok sayıda userscript yapmıştım. O zamanlar web sitelerini genişletmek eğlenceli ve kolaydı, ama Mozilla hepsini ortadan kaldırdı.
      Dağıtım gerçekten berbat. Kendi bilgisayarımda, kendi yazdığım kodu kullanmak için her değişiklik yaptığımda eklentiyi imzalatmak üzere internette bir yere göndermeyi hiç düşünmüyorum. Üstelik son kontrol ettiğimde imzalama aracı, güvenmeniz gereken 100 MiB’den büyük bir NPM/node uygulamasıydı; Linux çekirdeği derlemesinden bile büyüktü.
    • Değerlendirmeye genel olarak katılıyorum, ama sorun tarayıcı üreticilerinin sık sık API’leri geri çekerek iyi ve popüler eklentileri bozması.
  • 2024’te tarayıcı uzantıları çerçevesinin kendisi çok sorunlu. Tarayıcı uzantılarının çoğu ağırlıklı olarak Google Chrome uzantısı ve Google Chrome, gelirini artırma sürecinde hiçbir API’nin güvende olmadığını açıkça gösteriyor.
    Chrome API’siyle uzantı geliştiren biri, büyük bir şirketin düşünmeden ezip geçebileceği bir şeye emek harcıyor olabileceğini bilmeli. Stratejik olarak baştan kaybedilmiş böyle bir durumda yaşamak istemediğim için, tartışmanın Firefox uzantıları üzerine olması gerektiğini düşünüyorum. Firefox’un sicili de pek parlak değil. Birkaç yıl önce Google Chrome uyumluluğuna geçmesi hâlâ çok sinir bozucu. Yine de muhatap olmak için nitelik olarak daha iyi taraf o.

    • Bunların hepsini bir kenara bırakırsak, uzantılar 1) tarayıcının saldırı yüzeyini genişletir, 2) para karşılığında kötü niyetli aktörlerin eline geçer ya da sık sık ele geçirilir ve 3) uzman kullanıcılar için sorun olmayıp diğer kullanıcılar için destek taleplerine yol açacak şekilde çoğu zaman incelikli biçimde bir şeyleri bozar. Uzantı ekosistemi bütünüyle karmakarışık.
    • Tarayıcı uzantıları Firefox’ta daha çok kullanılıyor gibi. Çünkü Google, Chrome uzantılarına fazlasıyla düşmanca davranıyor. Firefox geriledikçe uzantı dünyası da küçüldü.
      10 yıl boyunca hem Firefox hem de Chrome’da “Ad Limiter” diye bir şey kullandım ve kodu da aynıydı. Geçen yıl Google reklam engelleyicileri daha da sıkıştırıp tehditkâr mesajlar gönderince Chrome sürümünden vazgeçtim.
    • Kelimenin tam anlamıyla, başka herhangi bir ortamda geliştirme yapmaktan hiç de farklı olmadığı şeklinde de bakılabilir.
    • Firefox’un senkronizasyon özelliği düzeltilmiş mi merak ediyorum. Eskiden profil dosyasını gerçekten taşımak gerekiyordu. Uzun zaman önce BT işi yaparken Firefox, kurumsal ortamlarda yönetmesi gerçekten kâbus gibiydi. Tabii o zamanlar Chrome uzantılarının kurulumunu da kontrol edemiyorduk.
    • Tarayıcı uzantıları için standart var. Standart ortaya çıkmadan önce de tarayıcı uzantısı geliştirmiştim. Şimdi Chrome, Firefox, Edge ve Safari’de çalışan uzantılar yapabilirsiniz.
      Elbette belirli bir tarayıcıya özel API’leri de kullanabilirsiniz. Bu, tek bir tarayıcıya özel site yapmak gibi gerçekten kötü bir şey. Varsayılan olan uyumluluk olmalı. Ayrıca uzantı kaynak kodu her zaman görülebildiğinden, kendi tarayıcınızda iyi çalışan bir sürüme değiştirebilir ve tekrar paylaşabilirsiniz.
  • Popüler tarayıcı uzantılarının önemli bir kısmı veri brokerları tarafından satın alınıp tarayıcı geçmişini sızdırmak için kullanıldığına göre, bunların yeterince değer görmediğini söylemek zor. Uzantıların güvenlik ve gizlilik modeli oldukça kötüydü ya da hâlâ oldukça kötü, bu yüzden çok dikkatli olmak gerekiyor.
    Örneğin Awesome Screenshot gibi bir ekran görüntüsü uzantısının tarayıcı geçmişini emip İsrailli bir veri brokerına gönderdiğini biliyorum. Bu tür işlevlerin muhtemelen tarayıcının yerleşik özelliği olması daha iyi.

    • Peşin ücretli web tarayıcısı uzantısı yapan biri olarak, peşin ücretli uzantıların yeterince değer görmediğini söyleyebilirim.
      “Müşteri ben değilsem ürün benim” sözü klişe olacak kadar doğru. Peki ya gerçekten müşteri bensem? Tarayıcı uzantılarına yönelik güvensizliğin önemli bir kısmının, uzantılardan doğrudan para kazanmanın zor olmasından kaynaklandığını düşünüyorum. Uzantıdan para kazanamıyorsanız ve biri satın almak için iyi bir çek uzatıyorsa, özellikle de geliştiriciye destek yükü bindiren bir uzantıysa, reddetmek zor olur. Elbette neredeyse herkes gibi benim de bir fiyatım var; ama şu an bunun 7 haneli dolar, belki de 8 haneli dolar seviyesinde olması gerektiğini düşünüyorum ve uzantıma o parayı verecek kimse yoktur. Ücretli olduğu için kullanıcı tabanı görece küçük; tam da bu yüzden veri toplama ya da şeytani bir plan için büyük bir fırsat da oluşturmuyor.
    • Bu nedenlerle ve ince ayarlı izinlerin eksikliği yüzünden, mümkün olduğunda uzantı yerine masaüstü uygulaması kullanıyorum ve uzantı listemi çok küçük tutuyorum. Temel olarak Raymond Hill gibi “büyük” ve güvenilir yazarların FOSS uzantılarını ya da satılmayacak projeleri kuruyorum.
      Elbette masaüstü uygulamalarında da riskler var, ancak tarihsel olarak bu tür satın alma sonrası veri sızdırma modeli masaüstü uygulamalarında nispeten nadir. Özellikle macOS’ta imzalı uygulamalar sandbox’a alınır ve kullanıcı izni olmadan yapabilecekleri pek fazla şey yoktur.
    • Firefox’ta dikey sekmeler kullanmak için adını bilmediğim bir kodlayıcıya tüm tarayıcı verilerimi emanet etmek zorunda kalmak delilik. Bu yüzden bunun yerleşik tarayıcı özelliği olmasının daha iyi olduğuna katılıyorum.
      Elbette bu uzantıların birçoğu açık kaynak olduğundan denetlenebilir. Ancak kötü amaçlı kodu tespit edecek beceriye sahip olmadığım için, bunun yapay zekanın iyi bir kullanım alanı olup olmayacağını merak ediyorum. Kötü amaçlı yazılım tespiti için iyi bir prompt hazırlama konusunda fikriniz var mı merak ediyorum.
  • Tarayıcı uzantılarında daha ince ayrıntılı izinler olmasını isterdim. Ancak yazılımın izinleri kötüye kullanıp kullanmadığını doğrulama meselesi zor; Obfuscated C Code Contest ya da Underhand C Contest’e bakınca bunu görmek mümkün. Ayrıca nüanslı izinleri kullanıcıya aktarmak da zor. Kullanıcıların çoğu teknik ayrıntıları okumaz ya da anlamaz ve kolayca yanlış yönlendirilebilir.
    Chrome’da uzantıları denerken daha güvenli kullanmak için bir ipucu var. Profiles > Add profile > Continue without account yoluyla ayrı bir profil oluşturup istediğiniz uzantıyı oraya kurarsanız, normal profilinizdeki sekme oturumları, geçmiş, çerezler vb. tamamen izole olur. Benzer şekilde normal Chrome’un yanında uzantı kurmak için Chrome Beta ya da Chrome Canary de çalıştırabilirsiniz.
    Örneğin potansiyel olarak riskli onlarca web geliştirme uzantısını bu profile kurup, kişisel bankacılık işlemleri veya şirket web sitelerine giriş için kullandığınız profilden sandbox gibi ayrı tutabilirsiniz. Her uzantı için pratik değil ama web geliştirme için bunu yapıyorum; kişisel kullanımda ise yalnızca birkaç uzantı kullanıyorum.
    Sattığım tarayıcı uzantısında gerçekten istemek istediğim izin “yalnızca kendi sekmesinden gönderilen ve alınan ağ trafiğini gözlemleyebilme” olurdu; ama gerçekte “tüm verileri okuma ve yazma” iznini istemek zorundayım. Bu yüzden açıklamada yukarıdaki ipucunu paylaşıyorum: https://chromewebstore.google.com/detail/checkbot-seo-web-sp...

    • Bir Firefox kullanıcısı olarak Multi-Account Containers içinde uzantıları konteyner bazında kapatabilmeyi isterdim. Banka sitelerinde hiçbir uzantıya ihtiyacım yok. Ayrı profil kullanmak mümkün ama kullanıcı deneyimi kötü.
    • “Tüm verileri okuma ve değiştirme” izni, alışveriş uzantıları için büyük bir engel. Çünkü gerçekte yalnızca alışveriş sayfasını tanımlamak yeterli. Güven oluşturmak için takip analizini açık kaynak olarak yayımlamayı denedim: https://github.com/Score-Extension/score-extension-analytics...
      Umarım şeffaflık, bu güven engelini aşmanın bir yolu olur.
    • Uzantı izinlerinin tüm kapsamını bir alan adı izin listesi ile sınırlamanın bir yolu olmasını isterdim. Chromium’da uzantının çalışabileceği alan adlarını izin listesine alma yöntemi var[1], ama bunun genel geçmiş gibi daha geniş izinleri etkilemediğini görmüştüm.
      [1] Uzantının “Details” bölümüne tıklayıp “Allow this extension to read and change all your data on websites you visit” seçeneğini “On specific sites” olarak değiştirin ve ardından siteleri izin listesine ekleyin.
    • Windows’ta portableapps.com tarafından paketlenmiş uygulamaları kullanabilirsiniz. .ini dosyasında AllowMultipleInstances=true gerekir.
  • “Tarayıcı uzantıları, bilgisayarı nasıl kullandığınız üzerinde derin bir kontrol hissini hatırlatıyor” denince Linux kullanıcılarının söyleyecek bir sözü olacak gibi.
    Daha genel olarak, birkaç yıl önce yazdığım “Is Open Source a diversion from what users really want?” yazısında tartışmaya çalıştığım soruya epey benzeyen yanları var. Yazılımları derleme sistemine dokunmadan “hack” etme yoluna duyulan heyecan, FLOSS’un sunduğu tam, açık ve teoride sınırsız erişimden çok daha büyük görünüyor. Bunun neden böyle olduğuna dair bariz nedenler var gibi, ama yine de biraz hayal kırıklığı yaratıyor.
    Reaper’ın betik yazılabilir ama kapalı kaynaklı yaklaşımı ile Ardour’un betik yazılabilir ve açık kaynaklı yaklaşımını karşılaştırarak bunu burada tartışmıştım: https://discourse.ardour.org/t/is-open-source-a-diversion-fr...

    • Linux kullanıcısıyım ama katılmıyorum. Tamamen aynı sorun değil. İsterseniz çekirdeği yeniden derleyebilirsiniz, kullanıcı alanının çoğunu da yeniden derleyebilirsiniz. Ama özellikle upstream’den ayrışmak ve bu farkı uzun vadede sürdürmek zahmetli.
      LD_PRELOAD gibi şeylerle ilginç hack’ler yapılabilir, ama tarayıcı uzantılarının esnekliği ve erişim kolaylığının yanına bile yaklaşmaz. Tüm yazılımları istediğiniz gibi değiştirme hakkınız var, ama bunu gerçekten yapmanın sürtünmesi görece yüksek.
    • Linux’un systemd’ye geçişi, tarayıcı uzantılarının gerilemesine çok benzer bir deneyimdi. Elbette bilgisayarımın davranışını değiştirebilirim. Ama bu değişikliği sürdürmek için çok emek vermeye hazır değilseniz, kullandığınız API ayağınızın altından kesilip alınıyor ve bilgisayarınızın sizin istediğiniz gibi değil, bir başkasının düşündüğü gibi davranmasını sağlamak giderek zorlaşıyor.
    • Uzantılar, kod imzalamayı, dağıtımı ve marka oluşturmayı baypas etmenin bir yolu gibi görünüyor. Bu yüzden Chrome gibi tarayıcılar yazılım dağıtma ve çalıştırma platformu haline geliyor.
  • Chrome Web Store’da önerilen bir Chrome uzantısı yaptım[1] ve şaibeli veri broker’larının uzantımı satın alıp spyware ile doldurmak için gönderdiği taleplerin sayısı gerçekten endişe verici.
    Naif bir geliştirici harika bir şey yapıp, birinin bakımını üstleneceğini düşünerek satabilir; ama gerçekte bu kullanıcılar için risk oluşturabilir. Google izin kullanımını incelemede oldukça iyi görünüyor, ancak benim uzantım gibi sayfadaki her şeye erişmesi gereken uzantılar da var. Bir veri broker’ının bununla neler yapabileceğini hayal etmek bile yeterli. Kurarken dikkatli olmak gerekiyor.
    [1] https://chromewebstore.google.com/detail/css-selector-helper...

  • En çok ihtiyaç duyulan şeyin, mağazadan yüklenen tarayıcı uzantıları için view source olduğunu düşünüyorum. Kaynağı kolayca görebilmeli ve tarayıcı uzantısını bir klasöre çıkarabilmeliyiz.
    Hangi web sayfalarına eriştiğini ve neleri değiştirdiğini de kolayca anlayabilmeliyiz. Uzantı içindeki küçültülmüş ya da şifrelenmiş kod yasaklanmalı, kod çok kolay okunabilir olmalı. Örneğin bu uzantı “kullanıcı etkinliğini kaydediyor” diyor ama bunun gerçekte ne anlama geldiğini bilmek zor: https://chromewebstore.google.com/detail/coffeelings/hcbddpp...

    • Chrome’da chrome://extensions adresine gidip geliştirici modunu açarsanız, devtools içinde herhangi bir uzantı için kaynağı görüntülemek mümkün. İçerik betikleri, geliştirici modunu açmadan da normal bir web sayfasının devtools’unda zaten görülebiliyor.
      Web sitelerinin tam listesi, uzantı yükleme açılır penceresinde görülebilir. Chrome Web Store kod obfuscation’ını zaten yasaklıyor. Minification’a izin veriliyor; çünkü değişken adı kalitesini dayatmanın anlamlı bir yolu yok.
    • Chrome Web Store’daki tarayıcı uzantılarının kaynağı, yüklemeden de görüntülenebilir. Bazen bu aracı bu amaçla kullanıyorum: https://robwu.nl/crxviewer/
      Kasıtlı olarak obfuscate edilmiş kodda işe yaramaz, ama çoğu uzantı için güvenlik ve gizlilik araştırmalarına yardımcı olur.
  • Tam anlamıyla uzantı sayılmazlar ama userscript ve kullanıcı stilleri epey çok iş görüyor; insanların tarayıcı içinde bunları oluşturup kullanmasını sağlayan uzantılar da var. Örneğin Tampermonkey[0] ve Stylus[1].
    Uzantılar kadar çok şey yapamasalar bile son derece önemli olduklarını düşünüyorum.
    [0] https://www.tampermonkey.net/
    [1] https://chrome.google.com/webstore/detail/stylus/clngdbkpkpe...

    • userscript’ler hafife alınıyor. Her türlü amaçla kullanıyorum. Örneğin GitHub’ın işe yaramaz açılış sayfasını depolarıma gidecek şekilde düzeltiyor, Mastodon “follow” düğmesinin çalışması için kendi instance alan adımı hard-code ediyor, Google arama sonuçlarında stackshare gibi işe yaramaz sonuçları engelliyorum.
      YouTube “short” görünümünden normal video görünümüne yönlendirmek ve Gmail kaydırma çubuğunun sağındaki aptalca boşluğu kaldırmak için de kullanıyorum.
  • JavaScript/TypeScript kullanmıyorum ama programlama yapıyorum, çok sayıda uzantı kullanıyorum ve Chrome/Firefox uzantı ekosistemi olmayan bir tarayıcıyı asla kullanmayacak bir power user olduğumu düşünüyorum. Chrome ve VSCode temaları da yaptım ama hâlâ bu noktadayım. Pembe/camgöbeği seviyorsanız burada: https://marketplace.visualstudio.com/items?itemName=mikejk8s...
    Chrome istemine bakarak bir uzantının ne yapabileceğini, neyi okuyabileceğini, görebileceğini ve erişebileceğini hiç anlayamıyorum. “Tüm web sitelerindeki verilere erişime izin ver” gerçekten tüm veriler mi demek? Yazdıklarım da buna dahil mi? Bir URL’den diğerine geçtiğimi de biliyor mu? Sadece varlıkları mı okuyor? Erişimi sınırlayan bir Chrome API’si var mı ve bunu görebiliyor muyum? Gerçekte ne için endişelenmem gerektiğini bilmiyorum.
    Herhangi bir web sitesindeki herhangi bir videoyu yakınlaştırabilen bir video zoom uzantısı kullanıyorum; her uzantıyı tek tek denetleyip verilerimi bir yerlere kopyalamadığından emin olmam mı gerekiyor? Hiç bilmiyorum; teknik olmayan kullanıcı bunu nasıl bilebilir ki?

    • Kulağa geldiği kadar kötü olduğu doğru gibi. Bu yüzden başkalarının dediği gibi bu tür erişim izinleri konusunda yalnızca uBlock, Bitwarden gibi birkaç temel uzantıya güveniyorum.
      Ekran/oturum kaydı türü startup ürünlerine özellikle dikkat ederdim. Başka bir sebep olmasa bile, tedarik zinciri saldırılarına özellikle açık olabilirler.
    • Evet, gerçekten o kadar kötü. Birkaç webext yazdım; tüm verileri istediğinizde bu gerçekten tüm veriler demek. Sayfadaki bir şeyi değiştirmeniz gerekiyorsa başka nasıl çalışabilir ki diye de düşünüyor insan.
      Bu yüzden listemi yalnızca kendi yaptığım tek kullanımlık uzantılar, tanınmış büyük uzantılar ya da kodunu bizzat denetlediğim şeylerle sınırlı tutuyorum.
  • bookmarklet’leri daha çok tercih ediyorum. Düzenlemesi kolay, tıklayana kadar pasif, tüm tarayıcılarda çalışıyor, mobilde de oluyor ve UI’ye iyi entegre oluyorlar.
    İstediğiniz yere taşıyabilir, herhangi bir yer imi klasörüne koyabilir, kısayol tuşu da atayabilirsiniz. Temiz kod ile bookmarklet arasında dönüşümü kolaylaştıran bir editör yaptım: https://www.gibney.org/bookmarklet_editor

    • Oldukça kullanışlı bir site. Bookmarklet’lerle en son uğraştığımda Firefox for Android’de çalışmıyordu, artık çalışıyor. Node-RED instance’ımla birlikte kullanışlı olabilir.
      Paylaşmaya değer iyi bookmarklet’ler var mı merak ediyorum.