1 poin oleh GN⁺ 2024-02-05 | 1 komentar | Bagikan ke WhatsApp
  • Berbeda dari platform ponsel pintar dan desktop, ekstensi browser adalah ekosistem perangkat lunak yang bisa di-hack yang langka, karena memungkinkan pengguna mengubah aplikasi web dengan cara yang tidak dimaksudkan oleh pengembang aslinya
  • Lebih dari 180 ribu ekstensi di Chrome Store dan tingkat pemasangan oleh hampir separuh pengguna Chrome menunjukkan bahwa, jika ada cara yang mudah, pengguna biasa pun merakit sendiri lingkungan penggunaan yang dipersonalisasi
  • Luasnya kegunaan ekstensi berasal dari keterbukaan web seperti kode klien yang bisa dibaca manusia, markup yang bermakna, dan tata letak web standar, bukan dari API khusus per aplikasi
  • Ekstensi seperti pengisian kata sandi, pembacaan kanji, anotasi, pemblokiran iklan, dan pemutaran 2x adalah alat kecil yang bekerja lintas banyak situs, menciptakan pengalaman perangkat lunak yang berbeda dari model berpusat pada aplikasi raksasa
  • Ekstensi berbahaya dan pelanggaran privasi tetap harus ditangani, tetapi jika keseimbangan antara aksesibilitas, kompatibilitas, dan izin dijaga, kita bisa mempertahankan kemampuan untuk diperluas yang memungkinkan pengguna mengubah perangkat lunak yang mereka pakai secara lebih mendalam

Mengapa ekstensi browser itu istimewa

  • Diskusi terbaru tentang ekstensi browser berfokus pada ekstensi berbahaya yang mengumpulkan riwayat web dan pembatasan Google terhadap fitur pemblokiran iklan, tetapi ekstensi tetap merupakan contoh istimewa dari perangkat lunak yang dipimpin pengguna
  • Di antara platform perangkat lunak utama, ekstensi browser adalah pengecualian langka yang mengizinkan dan mendorong pengguna mengubah aplikasi yang mereka pakai setiap hari di luar maksud pengembang aslinya
  • Di platform ponsel pintar dan desktop, perubahan semacam ini jarang atau mustahil, tetapi di browser hal itu telah menjadi aktivitas sehari-hari
  • Ekstensi menghidupkan kembali rasa bahwa pengguna dapat mengendalikan cara mereka menggunakan komputer secara lebih mendalam

Perangkat lunak yang dirakit sendiri oleh pengguna

  • Ketika sebuah platform perangkat lunak cukup terbuka, cara pengguna biasa berhubungan dengan perangkat lunak juga berubah
  • Jika Anda memasang 4 ekstensi Gmail untuk mengubah mulai dari desain visual hingga fungsi inti, dalam arti tertentu Anda telah merakit klien email Anda sendiri
  • Pengguna tidak harus tetap menjadi konsumen pasif aplikasi yang sudah jadi, tetapi dapat langsung membentuk cara yang dipersonalisasi dalam menggunakan komputer
  • Ada lebih dari 180 ribu ekstensi di Chrome Store, dan hampir separuh pengguna Chrome memasang ekstensi browser
  • Popularitas ini menunjukkan bahwa ketika ada cara mudah untuk memperluas perangkat lunak, banyak pengguna benar-benar memanfaatkan kesempatan itu

Platform yang bisa di-hack, bukan API per aplikasi

  • Ekstensi browser memiliki kasus penggunaan yang sangat luas: pengisian kata sandi, membaca kanji Jepang, menyederhanakan desain visual Gmail, highlight dan anotasi artikel, simpan untuk dibaca nanti, memutar video 2x, pemblokiran iklan, dan banyak lagi
  • Kunci dari luasnya kegunaan itu adalah bahwa sebagian besar ekstensi mengubah aplikasi dengan cara yang tidak direncanakan secara spesifik oleh pengembang aslinya
    • Saat sebuah surat kabar Jepang menerbitkan artikel, ekstensi pembacaan kanji bisa tetap bekerja meskipun situs itu tidak mempertimbangkan kompatibilitas dengan ekstensi tersebut
    • Pengembang ekstensi tidak terikat pada API khusus aplikasi yang mencerminkan sudut pandang pengembang aplikasi tentang ekstensi, sehingga memiliki kebebasan berkarya yang lebih besar
  • Beberapa sifat dari platform web memungkinkan perluasan yang tidak direncanakan ini
    • Cara distribusi web tradisional mengirimkan kode klien ke browser dalam bentuk yang bisa dibaca manusia
    • Bahkan ketika kode di-obfuscate atau dikompilasi dari bahasa lain, source map penting untuk mempertahankan keunggulan ini
    • Model tata letak web mendorong markup semantik yang terstandarisasi
    • Ekstensi pengelola kata sandi bekerja karena halaman web secara andal menggunakan tag form untuk pengiriman kata sandi alih-alih implementasi sendiri
  • Bahkan ketika situs tidak dibuat untuk ekstensi, kadang dibutuhkan akal cerdik untuk mencari jalan memutar, tetapi biasanya hal itu tetap mungkin dilakukan dengan beban kerja yang masuk akal tanpa perlu reverse engineering bertahun-tahun
  • Meski bisa timbul ketegangan antara pengembang situs web dan pengembang ekstensi, jika pengembang situs tidak perlu melakukan pekerjaan tambahan, mereka lebih sering menerima ekstensi kreatif semacam ini
  • Fitur niche yang hanya diinginkan sedikit pengguna dapat dibuat sebagai ekstensi oleh anggota komunitas yang termotivasi, sehingga mengurangi beban pengembang aplikasi

Bukan aplikasi besar, melainkan alat kecil

  • Banyak ekstensi browser berfungsi sebagai alat serbaguna yang meningkatkan pengalaman memakai semua situs web
  • Ekstensi anotasi dapat dipakai di semua situs tanpa mengharuskan tiap artikel memiliki alat highlight yang berbeda
  • Seperti stabilo fisik, Anda bisa mempelajari satu alat lalu menerapkannya di banyak konteks untuk mendapatkan daya ungkit yang besar
  • Di banyak platform perangkat lunak, kita menganggap sistem operasi menyediakan alat lintas aplikasi sementara pihak ketiga menyediakan aplikasi mandiri yang terisolasi, tetapi pada ekstensi browser pihak ketiga juga menambahkan alat
  • Perangkat lunak berunit kecil juga mengubah sisi ekonominya
    • Sebagian besar ekstensi gratis, dan cakupan fungsinya yang kecil mungkin terlalu kecil untuk dipertahankan sebagai bisnis penuh
    • Namun orang tetap membuat ekstensi, dan pengguna memperoleh manfaat besar dari potongan perangkat lunak kecil itu
    • Menjelajahi toko ekstensi terasa lebih mirip pasar loak lingkungan daripada supermarket
  • Perangkat lunak besar buatan perusahaan raksasa bukan satu-satunya cara

Akar keterbukaan web

  • Sejak awal personal computing, ada tradisi filosofis yang memandang komputer sebagai medium interaktif tempat pengguna menambahkan ide mereka sendiri dan membuat alat mereka sendiri
  • Tradisi ini tercermin dalam sistem seperti Smalltalk, Hypercard, dan yang lebih baru Dynamicland
  • Saat membuat World Wide Web, Tim Berners-Lee membayangkan sistem yang berada dalam tradisi ini
    • Visinya adalah “sebuah sistem di mana berbagi apa yang Anda ketahui atau pikirkan semudah mempelajari apa yang diketahui orang lain”
    • Ia berpikir browser web juga seharusnya menjadi editor situs web, tetapi browser Mosaic menjadi populer tanpa fitur itu, dan ia menyesalkannya
  • Pada akhirnya web memang menjadi tempat siapa pun bisa memposting opini atau foto melalui platform media sosial
  • Namun di dalam aplikasi seperti Facebook, orang harus memposting dalam format yang telah ditentukan dan menggunakannya sesuai cara yang ditetapkan aplikasi, termasuk iklan
  • Ekstensi browser memungkinkan kita melampaui sekadar mengetik ke kotak teks yang disediakan, dan mengubah secara mendalam cara kita menggunakan aplikasi apa pun di web
  • Ini memberikan desentralisasi yang mencegah perusahaan pembuat situs web besar menentukan setiap detail pengalaman pengguna

Arah untuk membuat ekstensi lebih baik

  • Upaya untuk melindungi pengguna agar ekstensi berbahaya tidak melanggar privasi tetap diperlukan
  • Aksesibilitas

    • Saat ini, untuk beralih dari menggunakan ekstensi ke membuatnya sendiri, orang perlu belajar pengembangan web dalam jumlah yang cukup besar
    • Mengembangkan ekstensi dengan mudah langsung di dalam browser juga masih sulit
    • Mungkin dimungkinkan transisi yang mulus dari mengedit situs web di developer tools ke menerbitkan ekstensi kecil
  • Kompatibilitas

    • Karena ekstensi memasang hook ke situs web dengan cara yang tidak didukung, pembaruan situs dapat sementara merusak ekstensi
    • Pengembang ekstensi kadang harus buru-buru memperbaiki agar sesuai dengan perubahan
    • Kita memerlukan cara agar pengembang situs web dan pengembang ekstensi dapat terhubung secara stabil tanpa bergantung pada API ekstensi yang eksplisit
    • Markup semantik yang bersih, CSS yang bisa dibaca manusia, dan source map adalah praktik yang sudah ada untuk memudahkan pengembangan ekstensi
    • Jika setelah rilis versi baru perangkat lunak cloud pengguna masih bisa memakai versi lama selama 3 bulan, pengembang ekstensi punya waktu untuk memperbarui agar sesuai dengan versi baru
  • Izin

    • Ekstensi web dapat mengubah klien browser secara luas, tetapi tidak dapat menyentuh server
    • Jika server aplikasi media sosial hanya menyediakan endpoint untuk melihat postingan secara kronologis, ekstensi browser tidak dapat mencari semua postingan berdasarkan kata kunci
    • Jika batas klien-server dipikirkan ulang, ekstensi bisa melakukan perubahan yang lebih mendalam
    • Izin yang lebih kuat memang membuat masalah keamanan dan privasi lebih sulit, tetapi kita perlu mencari keseimbangan dengan menempatkan kemampuan untuk diperluas sebagai nilai penting

Kemungkinan platform berikutnya

  • Beaker Browser dan komunitas web terdesentralisasi mengeksplorasi cara web dapat bekerja tanpa server terpusat
  • Arsitektur seperti ini dapat memberi pengguna kontrol yang lebih penuh untuk memodifikasi sisi “server” dari aplikasi web
  • Proyek baru Tim Berners-Lee, SOLID, mencakup prinsip bahwa pengguna memiliki kepemilikan yang lebih besar atas data mereka sendiri
  • Jika kepemilikan data meningkat, pengguna bisa menangani data mereka secara lebih fleksibel melalui ekstensi dan perangkat lunak lain, melampaui apa yang diizinkan API server aplikasi
  • Komputasi masih muda dan platform berubah cepat
  • Ekstensi browser modern dan platform ponsel pintar baru berusia sekitar 10 tahun
  • Seberapa terbuka platform masa depan adalah persoalan yang akan kita putuskan bersama
  • Ekstensi browser adalah salah satu contoh tempat pengguna secara rutin meng-hack perangkat lunak yang mereka gunakan dan menjadikannya milik mereka sendiri

Pembaruan 2024

  • Melihat kembali tulisan yang dibuat pada 2019 lima tahun kemudian, ada beberapa proyek terkait yang bertambah
  • Saya membuat ekstensi browser populer untuk Twitter, dan menulis sebuah artikel yang merangkum pengalaman menggunakan ekstensi sebagai cara memperbaiki masalah pada perangkat lunak yang saya pakai setiap hari
  • Saat menempuh program doktoral di MIT bersama Daniel Jackson, saya mengembangkan Wildcard, yang memungkinkan non-programmer membuat ekstensi browser dari spreadsheet
  • Glen sedang mengerjakan ExtensionPay, platform monetisasi untuk orang-orang yang ingin menjadikan ekstensi browser sebagai proyek yang berkelanjutan
  • Belakangan ini, di lembaga riset Ink & Switch, saya bekerja menuju malleable software berbasis AI

1 komentar

 
GN⁺ 2024-02-05
Pendapat di Hacker News
  • Saya penulisnya. Saya menulis artikel ini 5 tahun lalu, dan sejak itu keyakinan saya terhadap nilai perangkat lunak yang dapat dikustomisasi makin kuat, tetapi beberapa pemikiran saya berubah

    1. AI: AI menjadi cepat dan bagus dalam coding. AI saat ini sering lemah dalam arsitektur tingkat tinggi, tetapi bagus untuk perubahan kecil yang lokal, sehingga tampaknya cocok dengan kode yang diperlukan untuk menulis ekstensi browser. Saya sedang mengeksplorasi arah ini, dan menulis lebih lanjut di “Malleable software in the age of LLMs”: https://www.geoffreylitt.com/2023/03/25/llm-end-user-program...
    2. Keamanan: Setelah berbicara dengan orang-orang yang membuat berbagai platform ekstensi, termasuk API ekstensi browser, saya melihat lebih jelas dibanding 5 tahun lalu bahwa keamanan sering menjadi bottleneck utama dalam distribusi platform ekstensi yang bersifat massal. Sulit memberikan perlindungan jika pengguna umum diminta memasang ekstensi invasif dari pihak ketiga yang tidak tepercaya pada perangkat lunak penting
      Meski begitu, menurut saya diskusi tentang ekstensi terlalu terfokus pada keamanan sampai mengorbankan nilai lain. Kemampuan kustomisasi dalam beberapa kasus bisa cukup penting untuk diprioritaskan di atas keamanan. Ada juga beberapa solusi. Alih-alih memasang dari sembarang orang di internet, ekstensi bisa saling dibagikan dalam relasi tepercaya seperti rekan kerja atau teman, atau hanya memakai ekstensi yang dibuat sendiri. Pemrograman berbantuan AI bisa membuat pembuatan sendiri lebih realistis, tetapi memunculkan masalah keamanan baru. Saya juga bertemu orang-orang yang punya gagasan arsitektur perangkat lunak untuk mengurangi ketegangan inti ini; contohnya ada di https://www.wildbuilt.world/p/inverting-three-key-relationsh...
    3. Akses backend: Saya makin menyadari bahwa di web yang berpusat pada server, ekstensi browser hanya dapat mengakses kode klien, sehingga sering menghambat kustomisasi yang mendalam. Bisa saja data yang diinginkan tidak dapat dibaca, atau tidak ada API tulis untuk melakukan pekerjaan yang diperlukan. Saya optimistis tentang apa yang dapat dilakukan ekstensi dalam batasan klien, tetapi ini adalah keterbatasan inheren dari platform itu sendiri
      Di lab tempat saya bekerja sekarang, Ink & Switch, kami membuat perangkat lunak local-first: perangkat lunak kolaboratif yang data dan kodenya berada di perangkat saya. Selain manfaat seperti privasi, saya melihatnya sebagai fondasi yang tepat untuk ekstensi yang lebih kuat karena data dan kode aplikasi tidak terkunci di server: https://www.inkandswitch.com/local-first/
    • Masalah keamanan pada platform terbuka adalah inti persoalannya. Jika sistem cukup terbuka sehingga orang yang paham dapat mengustomisasi sistem sesuka hati, pelaku jahat juga bisa membujuk orang yang kurang paham untuk mengubah sistem dengan cara yang merugikan
      Kemampuan membuat keyboard kustom sendiri di Android itu luar biasa, tetapi sama sekali tidak bagus jika seseorang bisa membujuk kakek-nenek Anda memasang keyboard dengan keylogger bawaan. Ekstensi browser selalu menjadi ekosistem yang penuh malware, dan lelucon tentang menghapus toolbar dari Internet Explorer milik orang tua setiap kali pulang saat Thanksgiving sudah ada kira-kira sejak 1999
    • Jika browser dan sistem operasi mobile memungkinkan aplikasi atau ekstensi dengan mudah diberi resource palsu, menjalankan kode yang tidak tepercaya bisa menjadi jauh lebih aman
      “Ya, silakan baca isi ponsel saya. Bagi Anda, itulah seluruh isinya dan semuanya. Hanya saja dari sisi saya itu cuma satu folder, dan folder kosong. Soalnya ini ponsel baru.”
      “Ya, ini daftar kontak saya. Maaf hampir kosong. Hanya ada satu nomor premium yang mahal. Saya harap kantor pusat kalian tidak menelepon ke sana.”
      “Ya, ini mikrofon saya. Terima kasih. Saya cukup pandai menirukan Rick Astley.”
      “Foto-foto ponsel? Ini dia. Semuanya foto lobak. Suka?”
    • Saya sangat antusias dengan titik temu perangkat lunak yang mudah diubah, local-first, dan AI lokal. Rasanya seperti momen terbukanya era baru perangkat lunak, dan jika berjalan dengan baik, kita bisa merebut kembali kendali atas data dari perusahaan besar serta memiliki kendali lebih besar atas kepemilikan dan cara kerja
      Saya terutama tertarik pada cara alat CRDT serbaguna seperti Automerge atau Yjs menjadi format file dasar untuk perangkat lunak local-first, lalu dipasangkan dengan backend sinkronisasi dan kolaborasi yang interoperabel. Pengguna bisa mengakses langsung data dasarnya dengan alat standar, dan file dapat saling ditautkan, disisipkan, di-branch, dan di-merge. Kita bisa membuat platform hipermedia baru tempat semua dokumen bisa dibagikan, di-fork, dan diedit secara real-time. Saya sangat menyukai pekerjaan yang dilakukan Ink & Switch dan menantikan pengumuman berikutnya
    • Keterbatasan besar ekstensi browser adalah, bahkan saat menulisnya untuk dipakai sendiri, tidak ada cara instalasi yang ramah pengguna dan dapat diskalakan. Tidak ada cara untuk memberi tahu browser bahwa saya memercayai semua ekstensi di suatu direktori, jadi tolong muat otomatis tanpa tanda tangan dan tanpa harus memaketkannya sebagai XPI
      Tidak ada fitur “taruh kode dan manifest di direktori, lalu browser akan memakainya”. Pada masa greasemonkey dulu memuat begitu saja file biasa dari subdirektori gm_scripts/ di profil browser, distribusi sesederhana ini membuat saya menulis sangat banyak userscript. Saat itu memperluas situs web terasa menyenangkan dan mudah, tetapi Mozilla menghapus semuanya
      Distribusinya benar-benar buruk. Saya sama sekali tidak berniat mengirim ekstensi ke suatu tempat di internet untuk ditandatangani setiap kali membuat perubahan agar bisa memakai kode yang saya tulis di komputer saya sendiri. Selain itu, terakhir kali saya cek, alat penandatanganannya adalah aplikasi NPM/node lebih dari 100MiB yang harus dipercaya, bahkan lebih besar daripada build kernel Linux
    • Secara umum saya setuju dengan penilaiannya, tetapi masalahnya adalah para pembuat browser sering menarik API, sehingga merusak ekstensi yang bagus dan populer
  • Pada 2024, kerangka bernama ekstensi browser itu sendiri sangat bermasalah. Sebagian besar ekstensi browser, dari segi bobot, adalah ekstensi Google Chrome, dan Google Chrome jelas menunjukkan bahwa dalam proses mengejar peningkatan pendapatan, tidak ada API yang aman
    Orang yang membuat ekstensi dengan Chrome API harus sadar bahwa mereka mungkin sedang mencurahkan usaha pada sesuatu yang bisa diinjak dan dilenyapkan begitu saja oleh perusahaan raksasa. Saya tidak ingin hidup dalam situasi yang secara strategis sudah kalah seperti ini, jadi menurut saya pembahasannya seharusnya tentang ekstensi Firefox. Rekam jejak Firefox juga tidak bisa dibilang bagus. Peralihannya ke kompatibilitas Google Chrome beberapa tahun lalu masih sangat menjengkelkan. Namun, secara kualitas, pihak ini lebih baik untuk dihadapi

    • Di luar semua itu, ekstensi 1) memperluas attack surface browser, 2) sering dibeli atau diambil alih oleh pihak jahat dengan imbalan uang, dan 3) kerap merusak sesuatu secara halus—baik-baik saja bagi pengguna mahir, tetapi berujung pada permintaan dukungan dari pengguna lain. Ekstensi secara keseluruhan berantakan
    • Ekstensi browser tampaknya lebih banyak dipakai di Firefox. Itu karena Google terlalu memusuhi ekstensi Chrome. Seiring menurunnya Firefox, dunia ekstensi juga menyusut
      Selama 10 tahun saya memakai sesuatu bernama “Ad Limiter” di Firefox maupun Chrome, dan kodenya juga sama. Tahun lalu, ketika Google makin memperketat pemblokir iklan, mereka mengirim pesan bernada ancaman, dan saya menyerah untuk versi Chrome
    • Bisa juga dilihat secara harfiah sebagai tidak berbeda sama sekali dengan mengembangkan di lingkungan lain mana pun
    • Saya penasaran apakah fitur sinkronisasi Firefox sudah diperbaiki. Dulu, kita harus benar-benar memindahkan file profil. Saat saya bekerja di IT dulu, Firefox benar-benar mimpi buruk untuk ditangani di lingkungan perusahaan. Tentu saja, saat itu pemasangan ekstensi Chrome juga tidak bisa dikendalikan
    • Ekstensi browser memiliki standar. Saya pernah membuat ekstensi browser bahkan sebelum standar itu ada. Sekarang kita bisa membuat ekstensi yang berjalan di Chrome, Firefox, Edge, dan Safari
      Tentu saja, API khusus browser tertentu juga bisa dipakai. Itu sangat buruk, seperti membuat situs khusus untuk satu browser saja. Secara default, semuanya harus kompatibel. Dan karena kode sumber ekstensi selalu bisa dilihat, kita bisa memodifikasinya menjadi versi yang bekerja baik di browser sendiri dan juga membagikannya kembali
  • Karena cukup banyak ekstensi browser populer diakuisisi oleh data broker dan dipakai untuk menyedot riwayat browser, sulit untuk mengatakan bahwa ekstensi diremehkan. Model keamanan dan privasi ekstensi dulu, atau masih, cukup buruk, sehingga harus sangat berhati-hati
    Misalnya, saya tahu ekstensi screenshot seperti Awesome Screenshot menyedot riwayat browser dan mengirimkannya ke data broker Israel. Fitur semacam ini mungkin lebih baik tersedia sebagai fitur bawaan browser

    • Sebagai pihak yang membuat ekstensi browser web berbayar di muka, saya akan mengatakan bahwa ekstensi berbayar di muka memang diremehkan
      Ungkapan “kalau saya bukan pelanggan, maka saya adalah produk” memang klise karena benar. Namun bagaimana kalau saya benar-benar pelanggan? Menurut saya, banyak ketidakpercayaan terhadap ekstensi berasal dari sulitnya memonetisasi ekstensi secara langsung. Jika Anda tidak menghasilkan uang dari ekstensi, lalu seseorang datang menawarkan cek yang lumayan untuk mengakuisisinya, itu sulit ditolak, terutama jika ekstensinya menimbulkan beban dukungan bagi pengembang. Tentu saja, seperti hampir semua orang, saya juga punya harga, tetapi saat ini rasanya harus 7 digit dolar, mungkin 8 digit dolar, dan tidak akan ada orang yang membayar sebesar itu untuk ekstensi saya. Karena berbayar, basis penggunanya relatif kecil, dan justru karena itu ia juga bukan peluang besar untuk pengumpulan data atau rencana jahat
    • Karena alasan ini dan kurangnya izin yang granular, jika memungkinkan saya memakai aplikasi desktop alih-alih ekstensi dan menjaga daftar ekstensi tetap sangat kecil. Pada dasarnya saya hanya memasang ekstensi FOSS dari pembuat “besar” yang tepercaya seperti Raymond Hill, atau proyek yang tidak akan dijual
      Tentu saja aplikasi desktop juga punya risiko, tetapi secara historis pola kebocoran data setelah akuisisi seperti ini relatif jarang terjadi pada aplikasi desktop. Khususnya di macOS, aplikasi bertanda tangan di-sandbox dan tidak bisa melakukan banyak hal tanpa izin pengguna
    • Untuk memakai tab vertikal di Firefox, harus menyerahkan semua data browser saya kepada coder tak dikenal itu gila. Jadi saya setuju bahwa lebih baik ini menjadi fitur bawaan browser
      Tentu saja banyak ekstensi seperti ini bersifat open source sehingga bisa diaudit. Namun saya tidak punya kemampuan untuk menemukan kode berbahaya, jadi saya penasaran apakah ini bisa menjadi use case AI yang bagus. Saya ingin tahu apakah ada pemikiran tentang cara membuat prompt yang baik untuk deteksi malware
  • Saya berharap ekstensi browser punya izin yang lebih granular. Namun, persoalan memverifikasi apakah software memakai izin secara jahat itu sulit; hal ini bisa dilihat dari Obfuscated C Code Contest atau Underhand C Contest. Menyampaikan izin yang bernuansa kepada pengguna juga sulit. Kebanyakan pengguna tidak membaca atau tidak memahami detail teknis, dan mudah tersesatkan
    Ada satu tips agar lebih aman saat mencoba ekstensi di Chrome. Masuk ke Profiles > Add profile > Continue without account untuk membuat profil terpisah, lalu pasang ekstensi yang diinginkan di sana; maka ekstensi itu sepenuhnya terisolasi dari login tab, riwayat, cookie, dan lain-lain di profil utama. Demikian pula, Anda juga bisa menjalankan Chrome Beta atau Chrome Canary bersama Chrome biasa khusus untuk pemasangan ekstensi
    Misalnya, Anda bisa memasang puluhan ekstensi pengembangan web yang berpotensi berisiko di profil ini, dan memisahkannya seperti sandbox dari profil yang dipakai untuk perbankan pribadi atau login ke situs web perusahaan. Ini tidak praktis untuk semua ekstensi, tetapi untuk pengembangan web saya melakukannya seperti ini, sementara untuk penggunaan pribadi hanya memakai beberapa ekstensi saja
    Pada ekstensi browser yang saya jual, izin yang sebenarnya ingin saya minta adalah “hanya dapat mengamati traffic jaringan yang dikirim dan diterima di tabnya sendiri”, tetapi dalam praktiknya saya harus meminta izin “membaca dan menulis semua data”. Karena itu saya membagikan tips di atas dalam deskripsinya: https://chromewebstore.google.com/detail/checkbot-seo-web-sp...

    • Sebagai pengguna Firefox, saya berharap di Multi-Account Containers ada opsi untuk mematikan ekstensi per kontainer. Untuk situs bank, saya tidak membutuhkan ekstensi apa pun. Memakai profil terpisah memang bisa, tetapi pengalaman penggunanya buruk
    • Izin “membaca dan mengubah semua data” adalah hambatan besar untuk ekstensi belanja. Padahal sebenarnya yang perlu dilakukan hanya mengidentifikasi halaman belanja. Untuk membangun kepercayaan, saya pernah membuka kode analitik pelacakan sebagai open source: https://github.com/Score-Extension/score-extension-analytics...
      Saya berharap transparansi bisa menjadi salah satu cara melewati hambatan kepercayaan ini
    • Saya berharap ada cara untuk membatasi seluruh cakupan izin ekstensi dengan daftar domain yang diizinkan. Di Chromium ada cara untuk menentukan daftar domain tempat ekstensi boleh berjalan[1], tetapi sejauh yang saya lihat itu tidak memengaruhi izin yang lebih luas seperti riwayat umum
      [1] Klik ‘Details’ pada ekstensi, ubah opsi ‘Allow this extension to read and change all your data on websites you visit’ menjadi ‘On specific sites’, lalu tambahkan situs ke daftar yang diizinkan
    • Di Windows, Anda bisa memakai aplikasi yang dipaketkan oleh portableapps.com. Di .ini diperlukan AllowMultipleInstances=true
  • Pernyataan bahwa “ekstensi browser mengingatkan pada rasa kendali yang mendalam atas cara menggunakan komputer” sepertinya akan membuat para pengguna Linux ingin ikut berkomentar
    Secara lebih umum, ini cukup mirip dengan pertanyaan yang ingin saya bahas dalam tulisan beberapa tahun lalu berjudul “Is Open Source a diversion from what users really want?”. Antusiasme terhadap cara “meretas” software tanpa menyentuh build system tampaknya jauh lebih besar daripada akses penuh, terbuka, dan secara teori tak terbatas yang disediakan FLOSS. Mengapa demikian tampaknya punya alasan yang jelas, tetapi tetap saja agak mengecewakan
    Saya membahasnya di sini dengan membandingkan pendekatan Reaper yang dapat di-script tetapi closed source, dan Ardour yang dapat di-script sekaligus open source: https://discourse.ardour.org/t/is-open-source-a-diversion-fr...

    • Saya pengguna Linux, tetapi tidak setuju. Ini bukan masalah yang sepenuhnya sama. Jika mau, Anda bisa mengompilasi ulang kernel dan juga sebagian besar user space. Namun itu merepotkan, terutama jika bercabang dari upstream dan harus mempertahankan perbedaannya dalam jangka panjang
      Dengan hal seperti LD_PRELOAD, Anda bisa melakukan hack yang menarik, tetapi sama sekali tidak mendekati fleksibilitas dan kemudahan akses ekstensi browser. Anda punya hak untuk memodifikasi semua software sesuai keinginan, tetapi gesekan untuk benar-benar melakukannya relatif besar
    • Perpindahan Linux ke systemd memberi pengalaman yang sangat mirip dengan kemunduran ekstensi browser. Tentu saja saya bisa mengubah perilaku komputer saya. Namun jika tidak siap mengeluarkan banyak upaya untuk mempertahankan perubahan itu, API yang saya pakai akan dipotong dari bawah kaki saya, dan makin sulit membuat komputer saya berperilaku seperti yang saya inginkan, bukan seperti yang dipikirkan orang lain
    • Ekstensi tampak seperti cara untuk melewati penandatanganan kode, distribusi, dan pembangunan brand. Karena itu browser seperti Chrome menjadi platform untuk mendistribusikan dan menjalankan software
  • Saya membuat ekstensi Chrome yang direkomendasikan di Chrome Web Store[1], dan saya benar-benar khawatir dengan banyaknya broker data mencurigakan yang mengirim permintaan untuk membeli ekstensi saya dan mengisinya dengan spyware
    Seorang developer yang polos bisa saja membuat sesuatu yang keren, lalu menjualnya karena mengira ada orang yang akan memeliharanya, padahal kenyataannya itu bisa membahayakan pengguna. Google tampaknya cukup baik dalam meninjau penggunaan izin, tetapi ada juga ekstensi seperti milik saya yang memang harus mengakses semua hal di halaman. Membayangkan apa yang bisa dilakukan broker data dengan itu saja sudah cukup. Harus berhati-hati saat memasang ekstensi
    [1] https://chromewebstore.google.com/detail/css-selector-helper...

  • Menurut saya yang paling dibutuhkan adalah view source untuk ekstensi browser yang dipasang dari store. Kita harus bisa melihat source dengan mudah, dan mengekstrak ekstensi browser menjadi folder
    Kita juga harus bisa dengan mudah mengetahui halaman web apa yang diakses dan apa yang diubah. Kode yang diminifikasi atau dienkripsi di dalam ekstensi seharusnya dilarang, dan kodenya harus sangat mudah dibaca. Misalnya ekstensi ini mengatakan “merekam aktivitas pengguna”, tetapi sulit mengetahui apa arti sebenarnya: https://chromewebstore.google.com/detail/coffeelings/hcbddpp...

    • Di Chrome, jika membuka chrome://extensions dan mengaktifkan Developer mode, kita bisa melihat source ekstensi apa pun di devtools. Content script sudah bisa dilihat di devtools halaman web biasa bahkan tanpa mengaktifkan Developer mode
      Daftar lengkap situs web bisa dilihat di popup instalasi ekstensi. Chrome Web Store sudah melarang obfuscation kode. Minifikasi diperbolehkan, karena tidak ada cara yang bermakna untuk memaksakan kualitas nama variabel
    • Source ekstensi browser yang ada di Chrome Web Store bisa dilihat bahkan tanpa memasangnya. Kadang saya memakai alat ini untuk tujuan seperti itu: https://robwu.nl/crxviewer/
      Ini tidak akan membantu untuk kode yang sengaja diobfuscate, tetapi akan berguna untuk riset keamanan dan privasi pada sebagian besar ekstensi
  • Meski bukan ekstensi penuh, userscript dan style pengguna bisa melakukan cukup banyak hal, dan ada juga ekstensi yang memungkinkan orang membuat dan menggunakannya di dalam browser. Contohnya Tampermonkey[0] dan Stylus[1]
    Walaupun tidak bisa melakukan sebanyak ekstensi, menurut saya ini sangat penting
    [0] https://www.tampermonkey.net/
    [1] https://chrome.google.com/webstore/detail/stylus/clngdbkpkpe...

    • userscript diremehkan. Saya memakainya untuk berbagai macam hal. Misalnya memperbaiki landing page GitHub yang tidak berguna agar langsung menuju repositori saya, meng-hardcode domain instance saya supaya tombol “follow” Mastodon berfungsi, dan memblokir hasil tidak berguna seperti stackshare dari hasil pencarian Google
      Saya juga memakainya untuk me-redirect tampilan “short” YouTube ke tampilan video biasa, serta menghapus ruang kosong bodoh di sebelah kanan scrollbar Gmail
  • Saya memang bukan programmer JavaScript/TypeScript, tetapi saya melakukan pemrograman, memakai banyak sekali ekstensi, dan menganggap diri saya power user yang tidak akan pernah memakai browser tanpa ekosistem ekstensi Chrome/Firefox. Saya juga pernah membuat tema Chrome dan VSCode, tetapi tetap berada di titik ini. Kalau suka pink/cyan, ada di sini: https://marketplace.visualstudio.com/items?itemName=mikejk8s...
    Dari prompt Chrome saja, saya sama sekali tidak tahu apa yang bisa dilakukan, dibaca, dilihat, atau diakses oleh sebuah ekstensi. “Izinkan akses ke data di semua situs web” itu benar-benar semua data? Termasuk yang saya ketik? Apakah ia tahu perpindahan dari satu URL ke URL lain? Apakah hanya membaca aset? Apakah ada Chrome API yang membatasi akses dan bisa saya lihat? Saya tidak tahu apa yang sebenarnya harus dikhawatirkan
    Saya memakai ekstensi pembesar video yang bisa memperbesar video apa pun di situs web mana pun; apakah saya harus mengaudit sendiri tiap ekstensi untuk memastikan data saya tidak disalin ke suatu tempat? Saya sama sekali tidak tahu, dan bagaimana pengguna non-teknis bisa mengetahui ini?

    • Sepertinya memang seburuk kedengarannya. Karena itu, seperti yang dikatakan orang lain, saya hanya mempercayai beberapa ekstensi inti seperti uBlock dan Bitwarden untuk akses semacam ini
      Saya akan sangat berhati-hati khususnya terhadap produk startup jenis perekaman layar/sesi. Kalaupun tidak ada alasan lain, karena mereka bisa sangat rentan terhadap serangan supply chain
    • Benar, memang seburuk itu. Saya pernah menulis beberapa webext, dan kalau meminta semua data, itu benar-benar semua data. Kalau harus mengubah sesuatu di halaman, rasanya bagaimana lagi ia bisa bekerja selain begitu
      Karena itu daftar saya hanya berisi ekstensi sekali pakai yang saya buat sendiri, ekstensi besar yang terkenal, atau yang kodenya sudah saya audit sendiri
  • Saya lebih suka bookmarklet. Karena mudah diedit, nonaktif sampai diklik, bekerja di semua browser, bisa juga di mobile, dan terintegrasi baik dengan UI
    Bisa dipindahkan sesuka hati, dimasukkan ke folder bookmark mana pun, dan diberi shortcut key. Saya membuat editor yang memudahkan konversi antara kode yang rapi dan bookmarklet: https://www.gibney.org/bookmarklet_editor

    • Situs yang cukup berguna. Terakhir kali saya menyentuh bookmarklet, itu tidak bekerja di Firefox for Android, tetapi sekarang sudah bisa. Sepertinya akan berguna jika dipakai bersama instance Node-RED saya
      Saya penasaran apakah ada bookmarklet bagus yang layak dibagikan