1 पॉइंट द्वारा GN⁺ 2024-02-05 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • ब्राउज़र एक्सटेंशन, स्मार्टफोन और डेस्कटॉप platforms के विपरीत, एक दुर्लभ hackable software ecosystem है जो users को web apps को मूल developer की मंशा से अलग तरीकों से बदलने देता है
  • Chrome Store में 1.8 लाख से अधिक extensions और लगभग आधे Chrome users द्वारा इन्हें install करना दिखाता है कि अगर आसान तरीका हो तो आम users भी personalized user experience खुद assemble करते हैं
  • extensions के व्यापक उपयोग की वजह app-specific APIs नहीं, बल्कि इंसान द्वारा पढ़े जा सकने वाला client code, अर्थपूर्ण markup और standard web layout जैसी web की openness है
  • password input, Kanji पढ़ना, annotations, ad blocking, 2x playback जैसे extensions कई sites पर काम करने वाले छोटे tools हैं, जो विशाल app-केंद्रित model से अलग software experience बनाते हैं
  • malicious extensions और privacy violations से निपटना जारी रखना होगा, लेकिन accessibility, compatibility और permissions का संतुलन सही रखा जाए तो users द्वारा इस्तेमाल किए जाने वाले software को गहराई से बदलने की extensibility बचाई जा सकती है

ब्राउज़र extensions खास क्यों हैं

  • हाल में browser extensions पर चर्चा web history collect करने वाले malicious extensions और Google द्वारा ad blocking features सीमित करने पर केंद्रित रही है, लेकिन extensions अब भी user-driven software का एक खास उदाहरण हैं
  • प्रमुख software platforms में browser extensions एक दुर्लभ अपवाद हैं, जो users को रोज़ इस्तेमाल होने वाले apps को मूल developer की मंशा से बाहर बदलने की अनुमति और प्रोत्साहन देते हैं
  • smartphones और desktop platforms पर ऐसे बदलाव दुर्लभ या असंभव हैं, लेकिन browser में यह रोजमर्रा की गतिविधि बन चुका है
  • extensions users में यह एहसास फिर जगाते हैं कि वे computer इस्तेमाल करने के तरीके पर अधिक गहरा control रख सकते हैं

users द्वारा खुद assemble किया गया software

  • जब software platform एक निश्चित स्तर से अधिक open हो जाता है, तो आम users का software से संबंध बनाने का तरीका भी बदल जाता है
  • Gmail के 4 extensions install कर visual design से लेकर core features तक बदल दें, तो एक अर्थ में आपने अपना email client खुद assemble कर लिया
  • users पहले से बने apps के passive consumers भर नहीं रहते, बल्कि computer इस्तेमाल करने का अपना personalized तरीका खुद बना सकते हैं
  • Chrome Store में 1.8 लाख से अधिक extensions हैं, और लगभग आधे Chrome users browser extensions install करते हैं
  • यह लोकप्रियता दिखाती है कि software को आसानी से extend करने का तरीका मिलने पर कई users सचमुच उस अवसर का लाभ उठाते हैं

app-specific API से ज्यादा hackable platform

  • browser extensions के use cases बहुत व्यापक हैं: password input, Japanese Kanji पढ़ना, Gmail visual design को सरल बनाना, articles highlight करना और annotations, बाद में पढ़ने के लिए save करना, 2x video playback, ad blocking वगैरह
  • व्यापक उपयोग का मूल कारण यह है कि अधिकतर extensions applications को ऐसे तरीकों से बदलते हैं जिनकी मूल developer ने विशेष रूप से योजना नहीं बनाई होती
    • Japanese newspaper company को articles publish करते समय Kanji reading extension के साथ compatibility सोचने की जरूरत न हो, फिर भी extension काम कर सकता है
    • extension developers, app developers के extension संबंधी नजरिए से बने app-specific APIs में बंधे नहीं होते, इसलिए उनके पास अधिक creative freedom होती है
  • web platform की कुछ खूबियां अनियोजित extensibility को संभव बनाती हैं
    • पारंपरिक web deployment तरीका client code को browser तक इंसान द्वारा पढ़े जा सकने वाले रूप में पहुंचाता है
    • code obfuscate हो या दूसरी language से compile किया गया हो, तब भी sourcemaps इस लाभ को बनाए रखने में अहम हैं
    • web का layout model standardized semantic markup को बढ़ावा देता है
    • password manager extensions इसलिए काम करते हैं क्योंकि webpages अपनी custom implementation के बजाय password submit करने के लिए भरोसेमंद रूप से form tag का इस्तेमाल करते हैं
  • जब sites extensions के लिए नहीं बनाई गई होतीं, तब भी smart workarounds की जरूरत पड़ सकती है, लेकिन आमतौर पर यह वर्षों की reverse engineering के बिना reasonable मात्रा के काम से संभव होता है
  • website developers और extension developers के बीच तनाव हो सकता है, फिर भी अगर site developer को extra काम न करना पड़े तो creative extensions को स्वीकार करना ज्यादा आम है
  • niche features जिन्हें केवल थोड़े users चाहते हैं, motivated community members extension के रूप में बना सकते हैं, जिससे application developers का बोझ भी कम होता है

बड़े apps नहीं, छोटे tools

  • कई browser extensions सभी websites के usage experience को बेहतर बनाने वाले general-purpose tools की तरह काम करते हैं
  • annotation extension हर article के लिए अलग highlight tool नहीं मांगता, बल्कि सभी websites पर इस्तेमाल किया जा सकता है
  • physical highlighter की तरह, एक tool सीखकर उसे कई contexts में apply किया जा सकता है और बड़ा leverage मिलता है
  • कई software platforms में माना जाता है कि operating system cross-cutting tools देता है और third parties isolated standalone apps देती हैं, लेकिन browser extensions में third parties भी tools जोड़ती हैं
  • छोटे units वाला software economics भी बदलता है
    • अधिकतर extensions free होते हैं, और feature scope छोटा होने के कारण वे full business के रूप में टिके रहने के लिए बहुत छोटे हो सकते हैं
    • फिर भी लोग extensions बनाते हैं, और users software के उन छोटे टुकड़ों से बड़ा लाभ लेते हैं
    • extension store browse करना supermarket से ज्यादा मोहल्ले के flea market जैसा है
  • बड़ी कंपनियों द्वारा बनाया गया बड़ा software ही इकलौता तरीका नहीं है

web openness की जड़ें

  • personal computing के शुरुआती दौर से ही computer को ऐसा interactive medium मानने की दार्शनिक परंपरा रही है जिसमें user अपने ideas जोड़ सके और अपने tools बना सके
  • यह परंपरा Smalltalk, Hypercard और हाल के Dynamicland जैसे systems में झलकती है
  • Tim Berners-Lee ने World Wide Web बनाते समय इसी परंपरा में आने वाले system की कल्पना की थी
    • उनका vision था “ऐसा system जिसमें आप जो जानते हैं या सोचते हैं उसे share करना, किसी और को जो पता है उसे सीखने जितना आसान हो”
    • उनका मानना था कि web browser को website editor भी होना चाहिए, लेकिन Mosaic browser उस feature के बिना लोकप्रिय हुआ और उन्हें इसका अफसोस था
  • web अंततः ऐसी जगह बना जहां कोई भी social media platforms के जरिए राय या photos post कर सकता है
  • लेकिन Facebook जैसे apps के भीतर तय format में post करना होता है, और ads समेत app द्वारा तय तरीके से ही इस्तेमाल करना पड़ता है
  • browser extensions provided text box में type करने के स्तर से आगे जाकर, web की किसी भी application को इस्तेमाल करने का तरीका गहराई से बदलने देते हैं
  • वे ऐसी decentralization देते हैं जिससे बड़ी websites बनाने वाली companies user experience की हर detail तय नहीं कर पातीं

extensions को बेहतर बनाने की दिशा

  • malicious extensions से privacy violation न हो, इसके लिए users की सुरक्षा करना जरूरी है
  • accessibility

    • अभी extensions इस्तेमाल करने से उन्हें बनाने की ओर जाने के लिए web development काफी सीखनी पड़ती है
    • browser के अंदर extensions आसानी से develop करना भी मुश्किल है
    • developer tools में website edit करते-करते एक छोटा extension publish करने जैसा seamless transition संभव हो सकता है
  • compatibility

    • extensions unsupported तरीकों से websites में hook करते हैं, इसलिए site updates अस्थायी रूप से extensions को तोड़ सकते हैं
    • extension developers को बदलावों के हिसाब से जल्दी fixes करने पड़ सकते हैं
    • explicit extension API पर निर्भर हुए बिना website developers और extension developers को stable तरीके से जोड़ने का तरीका चाहिए
    • clean semantic markup, इंसान द्वारा पढ़े जा सकने वाला CSS और sourcemaps ऐसी existing practices हैं जो extension development को आसान बनाती हैं
    • अगर cloud software की नई version release के बाद users 3 महीने तक पुरानी version इस्तेमाल कर सकें, तो extension developers को नई version के हिसाब से update करने का समय मिल सकता है
  • permissions

    • web extensions browser client को व्यापक रूप से बदल सकते हैं, लेकिन server को छू नहीं सकते
    • अगर social media app server posts को chronological order में fetch करने वाला endpoint ही देता है, तो browser extension सभी posts को keyword से search नहीं कर सकता
    • client-server boundary पर फिर से सोचने से extensions अधिक गहरे बदलाव कर सकते हैं
    • अधिक शक्तिशाली permissions security और privacy समस्याओं को मुश्किल बनाते हैं, लेकिन extensibility को value मानकर संतुलन खोजना होगा

अगले platform की संभावना

  • Beaker Browser और decentralized web community यह explore करते हैं कि central server के बिना web कैसे काम करे
  • ऐसी architecture user को web application के “server” side को modify करने पर अधिक पूर्ण control दे सकती है
  • Tim Berners-Lee के नए project SOLID में users को अपने data पर अधिक ownership देने का principle शामिल है
  • data ownership बढ़ने पर users extensions और दूसरे software के जरिए application server API द्वारा अनुमति दी गई सीमा से आगे जाकर data को लचीले तरीके से handle कर सकते हैं
  • computing अभी युवा है और platforms तेजी से बदल रहे हैं
  • modern browser extensions और smartphone platforms को आए लगभग 10 साल ही हुए हैं
  • भविष्य के platforms कितने open होंगे, यह सामूहिक रूप से तय करने का सवाल है
  • browser extensions उस जगह का एक उदाहरण हैं जहां users रोजमर्रा में अपने इस्तेमाल किए जाने वाले software को hack कर सकते हैं और उसे अपना बना सकते हैं

2024 update

  • 2019 में लिखे article को 5 साल बाद देखते हुए कुछ related projects जोड़े गए
  • Twitter के लिए एक लोकप्रिय browser extension बनाया, और रोज इस्तेमाल होने वाले software की समस्याएं ठीक करने के तरीके के रूप में extensions इस्तेमाल करने के अनुभव पर एक लेख लिखा
  • MIT में Daniel Jackson के साथ PhD करते समय, non-programmers को spreadsheets से browser extensions बनाने देने वाला Wildcard develop किया
  • Glen उन लोगों के लिए monetization platform ExtensionPay पर काम कर रहे हैं जो browser extensions को sustainable project बनाना चाहते हैं
  • हाल में research lab Ink & Switch में AI-powered malleable software की दिशा में काम कर रहे हैं

1 टिप्पणियां

 
GN⁺ 2024-02-05
Hacker News की राय
  • लेखक हूँ। यह लेख मैंने 5 साल पहले लिखा था, और उसके बाद customizable software के मूल्य को लेकर मेरा भरोसा और बढ़ा है, लेकिन कुछ विचार बदले भी हैं

    1. AI: AI coding में तेज़ी से बेहतर हो रहा है। आज का AI अक्सर high-level architecture में कमजोर होता है, लेकिन छोटे स्थानीय बदलाव अच्छी तरह करता है, इसलिए यह browser extension लिखने के लिए ज़रूरी code से अच्छी तरह मेल खाता दिखता है। मैं इस दिशा को explore कर रहा हूँ, और “Malleable software in the age of LLMs” में इस पर और लिखा है: https://www.geoffreylitt.com/2023/03/25/llm-end-user-program...
    2. Security: browser extension API समेत कई extension platforms बनाने वाले लोगों से बात करने पर, 5 साल पहले की तुलना में अब मुझे और साफ़ दिखता है कि mass-market extension platform deployment में security अक्सर मुख्य bottleneck होती है। आम users को untrusted third parties के invasive extensions महत्वपूर्ण software में install करने देने पर सुरक्षा देना मुश्किल है
      फिर भी मुझे लगता है कि extensions पर चर्चा security पर इतनी ज़्यादा केंद्रित हो जाती है कि बाकी मूल्यों की बलि चढ़ जाती है। Customizability कुछ मामलों में security से भी ऊपर प्राथमिकता पाने लायक महत्वपूर्ण हो सकती है। समाधान भी कई तरह के हैं। Internet पर किसी भी व्यक्ति से install करने के बजाय, colleagues या friends जैसे trusted relationships में extensions देना-लेना, या केवल अपने बनाए extensions इस्तेमाल करना संभव है। AI-assisted programming से खुद बनाना ज्यादा व्यावहारिक हो सकता है, लेकिन इससे नई security समस्याएँ आती हैं। साथ ही मैं ऐसे लोगों से भी मिला हूँ जिनके पास software architecture के ideas हैं जो इस core tension को कम करते हैं; उदाहरण https://www.wildbuilt.world/p/inverting-three-key-relationsh... पर है
    3. Backend access: server-centric web में browser extensions केवल client code तक पहुँच सकते हैं, इसलिए गहरी customization अक्सर रुक जाती है—यह बात मुझे धीरे-धीरे और समझ आ रही है। हो सकता है वे desired data पढ़ न सकें, या जरूरी काम करने के लिए write API न हो। Client boundary के अंदर extensions जो कर सकते हैं उसे लेकर मैं optimistic हूँ, लेकिन यह platform की अपनी बुनियादी सीमा है
      जिस research lab Ink & Switch में मैं अभी काम करता हूँ, वहाँ हम local-first software बना रहे हैं: ऐसा collaborative software जिसमें data और code मेरे device पर होते हैं। Privacy जैसे फायदों के अलावा, क्योंकि data और app code server में बंद नहीं हैं, मुझे लगता है कि यह ज्यादा powerful extensions के लिए सही आधार है: https://www.inkandswitch.com/local-first/
    • Open platform की security problem ही core है। अगर कोई system इतना खुला है कि जानकार लोग उसे अपनी मर्जी से customize कर सकें, तो malicious actors भी कम जानकार लोगों को system को नुकसानदेह तरीके से बदलने के लिए मना सकते हैं
      Android पर अपना custom keyboard बना पाना शानदार है, लेकिन कोई आपके grandparents को built-in keylogger वाला keyboard install करने के लिए मना ले—यह बिल्कुल अच्छा नहीं है। Browser extensions हमेशा malware से भरा ecosystem रहे हैं, और Thanksgiving पर घर जाने पर माता-पिता के Internet Explorer से toolbar हटाने वाला मज़ाक करीब 1999 से चला आ रहा है
    • अगर browsers और mobile operating systems apps या extensions को आसानी से fake resources दे सकें, तो untrusted code चलाना कहीं ज्यादा सुरक्षित हो सकता है
      “हाँ, आप मेरे phone का content पढ़ सकते हैं। आपको यही पूरा content दिखेगा और यही सब कुछ है। बस मेरी नज़र से देखें तो यह सिर्फ एक folder है, और वह भी empty folder। नया phone है न।”
      “हाँ, यह मेरी contacts list है। लगभग खाली है, माफ़ कीजिए। बस एक महंगा premium number है। उम्मीद है आपकी headquarters वहाँ call नहीं करेगी।”
      “हाँ, यह मेरा microphone है। धन्यवाद। Rick Astley की नकल अच्छी करता है, है न।”
      “Phone photos? ये रहे। सब turnip की photos हैं। पसंद हैं?”
    • Malleable software, local-first और local AI के मिलन बिंदु को लेकर मैं बहुत उत्साहित हूँ। यह software के नए युग की शुरुआत जैसा लगता है, और अगर सही हुआ तो हम big companies से data control वापस ले सकते हैं और ownership व काम करने के तरीकों पर ज्यादा control पा सकते हैं
      खासकर Automerge या Yjs जैसे general-purpose CRDT tools के local-first software के foundational file formats बनने, और interoperable sync व collaboration backends जोड़ने के तरीके में मेरी गहरी रुचि है। Users standard tools से underlying data तक सीधे पहुँच सकते हैं, और files एक-दूसरे से link, embed, branch और merge हो सकती हैं। एक नया hypermedia platform बनाया जा सकता है जहाँ हर document share, fork और real-time edit हो सके। Ink & Switch में जो काम हो रहा है वह मुझे सचमुच पसंद है और अगले announcement का इंतज़ार है
    • Browser extensions की बड़ी सीमा यह है कि अकेले अपने इस्तेमाल के लिए लिखते समय भी user-friendly और extensible installation method नहीं है। Browser से यह कहने का कोई तरीका नहीं है कि मैं किसी directory के सभी extensions पर trust करता हूँ, इसलिए बिना signing के, XPI में package किए बिना उन्हें auto-load कर दो
      “code और manifest को directory में डालो और browser उसका इस्तेमाल करे” जैसी कोई feature नहीं है। पुराने greasemonkey के समय, जब browser profile के gm_scripts/ subdirectory से normal files सीधे load हो जाती थीं, तो इस simple distribution की वजह से मैंने बहुत सारे userscripts बनाए। तब websites को extend करना मजेदार और आसान था, लेकिन Mozilla ने वह सब खत्म कर दिया
      Distribution सचमुच भयानक है। अपने computer पर अपने लिखे code का इस्तेमाल करने के लिए हर बदलाव पर extension को Internet पर कहीं भेजकर sign कराने का मेरा कोई इरादा नहीं है। ऊपर से, आखिरी बार जब मैंने check किया था, signing tool 100MiB से बड़ा NPM/node app था जिस पर trust करना पड़ता था, और वह Linux kernel build से भी बड़ा था
    • कुल मिलाकर assessment से सहमत हूँ, लेकिन समस्या यह है कि browser vendors अक्सर API वापस ले लेते हैं, जिससे अच्छे और popular extensions टूट जाते हैं
  • 2024 में ब्राउज़र एक्सटेंशन का पूरा ढांचा ही बहुत समस्याग्रस्त है। ज़्यादातर ब्राउज़र एक्सटेंशन अनुपात के लिहाज़ से Google Chrome एक्सटेंशन हैं, और Google Chrome मुनाफ़ा बढ़ाने की कोशिश में साफ़ दिखा रहा है कि कोई भी API सुरक्षित नहीं है
    Chrome API से एक्सटेंशन बनाने वाले लोगों को यह पता होना चाहिए कि वे शायद अपनी मेहनत किसी ऐसी चीज़ में लगा रहे हैं जिसे कोई विशाल कंपनी बिना सोचे-समझे कुचल कर खत्म कर सकती है। ऐसी रणनीतिक रूप से पहले ही हारी हुई स्थिति में रहना नहीं चाहता, इसलिए मुझे लगता है कि चर्चा Firefox एक्सटेंशन के बारे में होनी चाहिए। Firefox का रिकॉर्ड भी बहुत अच्छा नहीं है। कुछ साल पहले Google Chrome compatibility पर स्विच करना अब भी बहुत खीझ पैदा करता है। फिर भी उसके साथ डील करना गुणात्मक रूप से बेहतर है

    • यह सब छोड़ भी दें, तो एक्सटेंशन 1) ब्राउज़र का attack surface बढ़ाते हैं, 2) अक्सर पैसे लेकर दुर्भावनापूर्ण पक्षों को बेच दिए जाते हैं या hijack हो जाते हैं, और 3) expert users के लिए ठीक होते हैं लेकिन बाकी users के लिए छोटी-छोटी चीज़ें तोड़कर support requests पैदा करते हैं। कुल मिलाकर एक्सटेंशन एक mess हैं
    • लगता है ब्राउज़र एक्सटेंशन Firefox में ज़्यादा इस्तेमाल होते हैं। वजह यह है कि Google, Chrome एक्सटेंशन के प्रति बहुत hostile है। Firefox के decline के साथ एक्सटेंशन की दुनिया भी सिकुड़ गई
      10 साल तक मैंने Firefox और Chrome दोनों पर “Ad Limiter” नाम की चीज़ इस्तेमाल की, और code भी वही था। पिछले साल Google ने ad blockers पर और शिकंजा कसते हुए धमकी भरे messages भेजे, और मैंने Chrome वाला छोड़ दिया
    • इसे शाब्दिक रूप से इस तरह भी देखा जा सकता है कि यह किसी भी दूसरे environment में develop करने से बिल्कुल अलग नहीं है
    • सोचता हूँ Firefox की sync functionality ठीक हुई या नहीं। पहले तो profile files को सचमुच move करना पड़ता था। बहुत पहले IT काम करते समय Firefox को enterprise environment में handle करना सचमुच nightmare था। बेशक उस समय Chrome extensions की installation भी control नहीं की जा सकती थी
    • ब्राउज़र एक्सटेंशन के लिए standard मौजूद है। standard बनने से पहले भी मैंने ब्राउज़र एक्सटेंशन बनाए थे। अब Chrome, Firefox, Edge, Safari पर चलने वाले एक्सटेंशन बनाए जा सकते हैं
      बेशक किसी specific browser-only API का इस्तेमाल भी किया जा सकता है। वह single-browser-only site बनाने जैसा सचमुच खराब है। default compatible होना चाहिए। और extension source code हमेशा देखा जा सकता है, इसलिए आप उसे अपने browser में ठीक से काम करने वाले version में बदल सकते हैं और फिर से share भी कर सकते हैं
  • लोकप्रिय ब्राउज़र एक्सटेंशन में से काफी को data brokers ने acquire कर लिया और browser history निकालने के लिए इस्तेमाल किया, इसलिए इन्हें underrated कहना मुश्किल है। एक्सटेंशन का security और privacy model काफी खराब था, या अब भी खराब है, इसलिए बहुत सावधान रहना चाहिए
    उदाहरण के लिए, मुझे पता है कि Awesome Screenshot जैसा screenshot extension browser history खींचकर Israel के data broker को भेजता था। ऐसी functionality शायद browser की built-in feature के रूप में होना बेहतर है

    • upfront paid web browser extension बनाने वाले के रूप में, मैं कहूँगा कि upfront paid extensions underrated हैं
      “अगर मैं customer नहीं हूँ, तो मैं product हूँ” वाली बात cliché होने तक सही है। लेकिन अगर मैं सच में customer हूँ तो? मुझे लगता है browser extensions पर अविश्वास का बड़ा हिस्सा इसलिए है क्योंकि extensions से सीधे revenue कमाना मुश्किल है। अगर आप extension से पैसा नहीं कमा रहे हैं और कोई acquisition के लिए अच्छी cheque लेकर आता है, तो मना करना मुश्किल होता है, खासकर अगर वह extension developer पर support burden डालता हो। बेशक लगभग सभी की तरह मेरी भी कीमत है, लेकिन अभी शायद 7-figure dollars, शायद 8-figure dollars होने चाहिए, और मेरे extension के लिए इतना पैसा कोई नहीं देगा। paid होने के कारण user base अपेक्षाकृत छोटा है, और इसी वजह से data collection या किसी बुरी scheme का बड़ा अवसर भी नहीं है
    • इन्हीं वजहों और granular permissions की कमी के चलते, जहाँ संभव हो वहाँ एक्सटेंशन के बजाय desktop app इस्तेमाल करता हूँ और extensions की list बहुत छोटी रखता हूँ। मूल रूप से Raymond Hill जैसे “बड़े” भरोसेमंद authors के FOSS extensions या ऐसे projects ही install करता हूँ जो बेचे नहीं जाएँगे
      बेशक desktop apps में भी risks हैं, लेकिन ऐतिहासिक रूप से इस तरह acquisition के बाद data exfiltration वाला pattern desktop apps में अपेक्षाकृत rare रहा है। खासकर macOS में signed apps sandboxed होती हैं और user permission के बिना वे बहुत कुछ नहीं कर सकतीं
    • Firefox में vertical tabs इस्तेमाल करने के लिए किसी अनजान coder को अपना पूरा browser data सौंपना पागलपन है। इसलिए मैं सहमत हूँ कि इसे built-in browser feature होना बेहतर है
      बेशक ऐसे कई extensions open source होते हैं, इसलिए audit किए जा सकते हैं। लेकिन मेरे पास malicious code पकड़ने की skill नहीं है, इसलिए सोचता हूँ कि क्या यह AI का अच्छा use case हो सकता है। malicious code detection के लिए अच्छे prompts बनाने पर किसी के विचार हैं या नहीं, यह जानना चाहूँगा
  • काश browser extensions में और बारीक permissions होतीं। हालांकि यह verify करना मुश्किल है कि software permissions का malicious इस्तेमाल कर रहा है या नहीं; Obfuscated C Code Contest या Underhand C Contest देखकर यह समझ आता है। साथ ही nuanced permissions को users तक समझाकर पहुँचाना भी मुश्किल है। ज़्यादातर users technical बातें पढ़ते या समझते नहीं, और आसानी से mislead हो सकते हैं
    Chrome में extensions try करते समय उन्हें ज़्यादा सुरक्षित तरीके से इस्तेमाल करने की एक tip है। Profiles > Add profile > Continue without account में जाकर अलग profile बनाएं, फिर जिस extension को चाहें वहाँ install करें; यह आपके सामान्य profile के tab logins, history, cookies आदि से पूरी तरह isolate रहेगा। इसी तरह सामान्य Chrome के साथ Chrome Beta या Chrome Canary को भी extension installation के लिए चला सकते हैं
    उदाहरण के लिए, संभावित रूप से risky web development extensions के दर्जनों इस profile में install करके, उसे personal banking या company websites में login के लिए इस्तेमाल होने वाले profile से sandbox की तरह अलग रखा जा सकता है। यह सभी extensions के लिए practical नहीं है, लेकिन web development के लिए मैं ऐसा करता हूँ और personal use के लिए सिर्फ कुछ extensions रखता हूँ
    मैं जो browser extension बेचता हूँ, उसमें असल में जो permission माँगना चाहता हूँ वह है “सिर्फ अपने tabs में भेजे और प्राप्त किए जा रहे network traffic को observe कर सके”, लेकिन वास्तव में “सारा data पढ़ने और लिखने” की permission माँगनी पड़ती है। इसलिए description में यह tip share करता हूँ: https://chromewebstore.google.com/detail/checkbot-seo-web-sp...

    • Firefox user होने के नाते, काश Multi-Account Containers में हर container के हिसाब से extensions बंद कर पाता। बैंक sites पर किसी extension की ज़रूरत नहीं होती। अलग profile इस्तेमाल किया जा सकता है, लेकिन user experience खराब है
    • “सारा data पढ़ें और बदलें” permission shopping extensions के लिए बड़ी बाधा है। असल में उन्हें सिर्फ shopping pages identify करने होते हैं। Trust बनाने के लिए मैंने tracking analytics को open source में publish करके देखा: https://github.com/Score-Extension/score-extension-analytics...
      उम्मीद है transparency इस trust barrier को पार करने का एक तरीका बनेगी
    • काश extension permissions के पूरे scope को domain allowlist से सीमित करने का तरीका होता। Chromium में उन domains की allowlist बनाने का तरीका है जहाँ extension run हो सकता है[1], लेकिन मैंने देखा कि इसका असर general history जैसी broader permissions पर नहीं पड़ता
      [1] extension के ‘Details’ पर click करें, ‘Allow this extension to read and change all your data on websites you visit’ option को ‘On specific sites’ में बदलें, फिर site को allowlist में add करें
    • Windows पर portableapps.com द्वारा packaged apps इस्तेमाल किए जा सकते हैं। .ini में AllowMultipleInstances=true चाहिए
  • “Browser extensions यह एहसास दिलाती हैं कि computer का इस्तेमाल कैसे होता है, उस पर गहरा control था” — यह सुनकर Linux users शायद कुछ कहना चाहेंगे
    ज़्यादा general तौर पर, यह कुछ साल पहले लिखे मेरे लेख “Is Open Source a diversion from what users really want?” में उठाए गए सवाल से काफी मिलता-जुलता है। Build system को छुए बिना software को “hack” करने के तरीकों को लेकर उत्साह, FLOSS द्वारा दिए जाने वाले complete, open और theoretically unlimited access से कहीं ज़्यादा दिखता है। ऐसा क्यों है, इसके obvious reasons दिखते हैं, लेकिन फिर भी यह थोड़ा disappointing है
    मैंने यहाँ Reaper के scriptable लेकिन closed-source तरीके और Ardour के scriptable और open-source तरीके की तुलना करते हुए इस पर चर्चा की थी: https://discourse.ardour.org/t/is-open-source-a-diversion-fr...

    • मैं Linux user हूँ, लेकिन सहमत नहीं हूँ। यह पूरी तरह वही problem नहीं है। चाहें तो kernel recompile कर सकते हैं और user space का ज़्यादातर हिस्सा भी recompile कर सकते हैं। लेकिन यह झंझट वाला है, खासकर जब upstream से diverge करना हो और उस difference को लंबे समय तक maintain करना हो
      LD_PRELOAD जैसी चीज़ों से दिलचस्प hacks किए जा सकते हैं, लेकिन वे browser extensions की flexibility और accessibility के आसपास भी नहीं पहुँचते। अपने हिसाब से सभी software modify करने का अधिकार तो है, लेकिन practically ऐसा करने में friction तुलनात्मक रूप से काफी है
    • Linux का systemd पर shift होना browser extensions के decline जैसा ही experience था। बेशक मैं अपने computer का behavior बदल सकता हूँ। लेकिन अगर मैं उस change को maintain करने में बहुत effort लगाने को तैयार नहीं हूँ, तो जिस API का मैं use करता हूँ वह मेरे पैरों के नीचे से कट जाती है, और मेरे computer को मेरे चाहने के बजाय किसी और के सोचे मुताबिक behave करने से रोकना लगातार मुश्किल होता जाता है
    • Extensions code signing, distribution और brand building को bypass करने का तरीका लगती हैं। इसलिए Chrome जैसे browsers software distribute और execute करने के platforms बन जाते हैं
  • मैंने Chrome Web Store में recommended एक Chrome extension बनाया था[1], और यह सचमुच चिंता की बात है कि कितने suspicious data brokers मेरी extension खरीदकर उसमें spyware भरने के requests भेजते हैं
    कोई naive developer कुछ शानदार बनाता है, उसे यह सोचकर बेच देता है कि कोई उसे maintain करेगा, लेकिन असल में यह users के लिए खतरा पैदा कर सकता है। Google permissions के इस्तेमाल की review काफी अच्छी तरह करता लगता है, लेकिन मेरी extension जैसी extensions भी हैं जिन्हें page की हर चीज़ access करनी पड़ती है। Data broker इससे क्या कर सकता है, यह कल्पना करना ही काफी है। Install करते समय सावधान रहना चाहिए
    [1] https://chromewebstore.google.com/detail/css-selector-helper...

  • मुझे लगता है कि सबसे ज़रूरी चीज़ store से इंस्टॉल किए गए browser extensions के लिए view source है। source को आसानी से देख पाना चाहिए, और browser extension को folder के रूप में extract कर पाना चाहिए
    यह भी आसानी से पता चलना चाहिए कि वह किन web pages तक पहुंचता है और क्या modify करता है। extension के अंदर minified/obfuscated code पर रोक होनी चाहिए, और code बहुत आसानी से पढ़ा जा सके ऐसा होना चाहिए। उदाहरण के लिए, यह extension कहता है कि यह “user activity record” करता है, लेकिन असल में उसका मतलब क्या है, समझना मुश्किल है: https://chromewebstore.google.com/detail/coffeelings/hcbddpp...

    • Chrome में chrome://extensions पर जाकर Developer mode चालू करें, तो devtools में किसी भी extension का source view किया जा सकता है। content scripts को Developer mode चालू किए बिना भी सामान्य web page के devtools में पहले से देखा जा सकता है
      websites की पूरी list extension install popup में देखी जा सकती है। Chrome Web Store पहले से ही code obfuscation को प्रतिबंधित करता है। minification की अनुमति है, क्योंकि variable names की quality enforce करने का कोई meaningful तरीका नहीं है
    • Chrome Web Store पर मौजूद browser extensions का source install किए बिना भी देखा जा सकता है। कभी-कभी मैं इस tool को इसी काम के लिए इस्तेमाल करता हूं: https://robwu.nl/crxviewer/
      जानबूझकर obfuscated code में यह मदद नहीं करेगा, लेकिन ज़्यादातर extensions पर security और privacy research के लिए मददगार होगा
  • पूरी तरह का extension तो नहीं, लेकिन userscript और user styles काफी काम कर लेते हैं, और ऐसे extensions भी हैं जो लोगों को browser के अंदर ही इन्हें बनाने और इस्तेमाल करने देते हैं। उदाहरण के लिए Tampermonkey[0] और Stylus[1]
    भले ही ये extensions जितना बहुत कुछ न कर पाएं, मुझे लगता है कि ये बेहद अहम हैं
    [0] https://www.tampermonkey.net/
    [1] https://chrome.google.com/webstore/detail/stylus/clngdbkpkpe...

    • userscript को कम आंका जाता है। मैं इसे हर तरह के कामों के लिए इस्तेमाल करता हूं। उदाहरण के लिए GitHub के बेकार landing page को ठीक करके अपने repositories पर भेजना, Mastodon के “follow” button को काम कराने के लिए अपना instance domain hardcode करना, और Google search results में stackshare जैसे बेकार results block करना
      YouTube “short” view से regular video view पर redirect करने, और Gmail scrollbar के दाईं ओर की बेवकूफाना खाली जगह हटाने के लिए भी इस्तेमाल करता हूं
  • JavaScript/TypeScript तो नहीं, लेकिन programming करता हूं, extensions बहुत ज़्यादा इस्तेमाल करता हूं, और Chrome/Firefox extension ecosystem के बिना कोई browser कभी इस्तेमाल नहीं करूंगा—खुद को power user मानता हूं। Chrome और VSCode themes भी बना चुका हूं, लेकिन फिर भी यहीं अटका हूं। अगर आपको pink/cyan पसंद है तो यह रहा: https://marketplace.visualstudio.com/items?itemName=mikejk8s...
    सिर्फ Chrome prompt देखकर मुझे बिल्कुल पता नहीं चलता कि कोई extension क्या कर सकता है, क्या पढ़ सकता है, क्या देख सकता है, और किस तक पहुंच सकता है। “सभी websites के data तक access allow करें” क्या सच में सभी data है? जो मैं type करता हूं वह भी? क्या उसे पता चलता है कि मैं एक URL से दूसरे URL पर जा रहा हूं? क्या वह सिर्फ assets पढ़ता है? क्या access सीमित करने वाली कोई Chrome API है और क्या मैं उसे देख सकता हूं? मुझे समझ नहीं आता कि असल में किस बात की चिंता करनी चाहिए
    मैं एक video zoom extension इस्तेमाल करता हूं जो किसी भी website के किसी भी video को zoom कर सकता है; क्या मुझे हर extension का खुद audit करना चाहिए ताकि पक्का हो सके कि वह मेरा data कहीं copy नहीं कर रहा? मुझे बिल्कुल नहीं पता, और non-technical user यह कैसे जान पाएगा

    • जैसा सुनाई देता है, उतना ही खराब लगता है। इसलिए, जैसा किसी और ने कहा, मैं ऐसे access permissions पर सिर्फ कुछ core extensions जैसे uBlock, Bitwarden पर भरोसा करता हूं
      screen/session recording तरह के startup products को लेकर मैं खास तौर पर सतर्क रहूंगा। अगर कोई और वजह न भी हो, तो भी वे supply-chain attacks के लिए खास तौर पर vulnerable हो सकते हैं
    • हां, यह उतना ही खराब है। मैंने कुछ webext लिखे हैं, और अगर आप all data मांगते हैं तो वह सचमुच all data होता है। अगर page में कुछ बदलना है, तो फिर यह और कैसे काम करेगा, यह भी समझ आता है
      इसलिए मेरी list में सिर्फ मेरे बनाए one-off extensions, बड़े और मशहूर extensions, या वे चीज़ें हैं जिनका code मैंने खुद audit किया है
  • मुझे bookmarklet ज़्यादा पसंद हैं। इन्हें edit करना आसान है, click करने तक inactive रहते हैं, सभी browsers में काम करते हैं, mobile पर भी चलते हैं, और UI में अच्छी तरह integrate हो जाते हैं
    इन्हें अपनी मर्ज़ी से move कर सकते हैं, किसी भी bookmark folder में रख सकते हैं, और shortcut key भी assign कर सकते हैं। मैंने एक editor बनाया है जो साफ code और bookmarklet के बीच conversion आसान बनाता है: https://www.gibney.org/bookmarklet_editor

    • काफी उपयोगी site है। पिछली बार जब मैंने bookmarklet छुआ था, तब यह Firefox for Android में काम नहीं करता था, लेकिन अब करता है। मेरे Node-RED instance के साथ इस्तेमाल करने पर यह उपयोगी होगा
      सोच रहा हूं कि share करने लायक अच्छे bookmarklets हैं क्या