1 पॉइंट द्वारा GN⁺ 2023-09-23 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • व्यक्तिगत रूप से ख़बरों से बचने का अनुभव आगे चलकर तकनीकी समाचारों तक पहुँचा, और बार-बार होने वाले नकारात्मक बदलावों के सामने असहाय महसूस करने के बाद उन्होंने खुद ब्राउज़र बनाने का फैसला किया
  • Hacker News पर अनचाहे updates, subscription fee में बढ़ोतरी, privacy data collection, encryption ban पर चर्चा, और browser ecosystem पर control जैसे रुझानों का लगातार सामना हुआ
  • इस बार सिर्फ़ बचने के बजाय, एक programmer के रूप में कोड बनाकर सार्वजनिक करने के तरीके से छोटी-सी प्रतिक्रिया देने की कोशिश की
  • उनका मानना है कि परियोजना के पूरा होने या मुख्यधारा का ब्राउज़र बनने की संभावना कम है, और मदद न मिली तो यह जल्द रुक भी सकती है
  • उम्मीद है कि एक non-commercial और खुला browser project दूसरों को प्रेरित करेगा और अधिक alternative projects की ओर ले जाएगा

ख़बरों से बचते-बचते ब्राउज़र विकास तक पहुँचने की कहानी

  • लगभग 10 साल पहले, वे अक्सर कार से ग्राहकों के दफ्तर आते-जाते समय Netherlands के Business News Radio(BNR) या Radio 1 सुनते थे, लेकिन एक दिन रेडियो बंद करने के बाद उन्हें फिर से समाचार सुनने का मन नहीं हुआ
  • उन्हें लगा कि ख़बरों में बार-बार सिर्फ़ बुरी बातें जैसे युद्ध और भ्रष्टाचार ही सुनाई देती हैं, और एक व्यक्ति के रूप में उन समस्याओं को हल करने का उनके पास कोई तरीका नहीं है
  • इसके बाद उन्होंने समाचार सुनना, देखना और इंटरनेट पर समाचार खोजना टालना शुरू कर दिया; रात 8 बजे की ख़बरें शुरू होते ही वे चैनल बदल देते या उस कमरे से निकल जाते जहाँ समाचार चल रहे हों
  • उनका मानना था कि ज़रूरी बातें लोगों के माध्यम से वैसे भी पता चल जाती हैं, इसलिए सामान्य समाचारों की जगह वे सिर्फ़ Reddit के कुछ subreddits और तकनीकी समाचार सीमित रूप से देखते रहे

तकनीकी समाचारों में भी वही असहायता बार-बार

  • वे लगभग 98% तकनीकी समाचार Y Combinator के Hacker News के ज़रिए देखते थे, लेकिन समय के साथ वही भावना फिर बढ़ने लगी जो 10 साल पहले सामान्य समाचारों में महसूस हुई थी
  • बार-बार सामने आने वाली समस्याएँ थीं अनचाहे updates, वादाखिलाफी, subscription fee बढ़ना, corporate acquisitions, और अधिक personal data इकट्ठा करने की कोशिशें
  • उनका मानना है कि बच्चों के यौन अपराधियों का हवाला देकर encryption पर प्रतिबंध लगाने की सरकारी कोशिशें भी इसी समस्या का हिस्सा हैं
  • browser एक विशेष रूप से महत्वपूर्ण क्षेत्र है, क्योंकि दुनिया भर के लगभग सभी लोग अपना समय यहीं बिताते हैं
    • अगर browser खुद विज्ञापन दिखाए, तो site ads को रोकने वाले ad blockers के लिए उसका जवाब देना मुश्किल हो सकता है
    • ऐसे उदाहरण रहे हैं जहाँ किसी खास browser के लिए बने extensions की वजह से दूसरी browsers पर किसी site का इस्तेमाल कठिन हो गया, और उनका मानना है कि अगर monopoly से बचने का रास्ता मिल भी जाए तो यह फिर दोहराया जा सकता है

खुद बनाने का कारण और कम अपेक्षाएँ

  • इस बार सिर्फ़ बचने के बजाय, उन्होंने सोचा कि एक programmer के रूप में वे खुद ब्राउज़र विकसित कर सकते हैं और उसका कोड साझा कर सकते हैं
  • ब्राउज़र बनाने के दो कारण बताए गए हैं
    • बहुत छोटे स्तर पर ही सही, थोड़ा-सा प्रतिरोध करने की कोशिश
    • लंबे समय से खुद एक browser बनाकर देखने की व्यक्तिगत इच्छा
  • this project से बहुत बड़ी उम्मीदें नहीं हैं
    • उन्हें उम्मीद नहीं कि यह पूरा हो जाएगा
    • अगर मदद करने वाला कोई न मिला, तो यह जल्द बंद हो सकता है
    • उन्हें उम्मीद नहीं कि यह मौजूदा बड़े browsers को हरा देने वाला प्रमुख browser बनेगा
  • उनकी इच्छा है कि यह non-commercial उद्देश्य वाला, खुला project हो, जिससे दूसरे लोग प्रेरित हों और अपने projects बना सकें
  • project की प्रगति codemusings.nl par pragati lekh में देखी जा सकती है
  • project repository jaytaph/gosub-browser पर है

1 टिप्पणियां

 
GN⁺ 2023-09-23
Hacker News की राय
  • मैं OP हूँ। सकारात्मक/नकारात्मक/तटस्थ सभी comments के लिए धन्यवाद। कुछ बातें जोड़ूँ तो, यह सही है कि योगदान देने लायक browser projects पहले से बहुत हैं और वह तरीका ज्यादा efficient है, लेकिन तब आखिर में कुछ ही browser बचेंगे। मैं चाहता हूँ कि कई browser हों ताकि लोगों के पास विकल्प रहें
    यह साफ तौर पर एक personal project है। यह काम मैं शायद सिर्फ tech industry से ऊब जाने की वजह से नहीं भी शुरू करता, लेकिन इस बेबसी पर गुस्सा है कि कुछ बदल नहीं सकता, और यह मेरा कुछ करने की कोशिश करने का तरीका है। मुझे उम्मीद नहीं है कि सचमुच एक browser पूरा बन जाएगा। मैं चाहता हूँ कि लोग मेरा code देखकर हँसें या उससे बेहतर ideas पाएं। उदाहरण के लिए, अगर whatwg site की तरह HTML5 tokenizer और parser algorithms step-by-step समझाए गए हों, तो किसी के लिए भी अपना HTML5 parser लिखना आसान हो जाता है। अगर Google या Microsoft अपनी market dominance के दम पर custom HTML5 का कोई बंद format, जैसे ghtml, बना दें तो उन्हें कौन रोक पाएगा? शून्य से शुरू करने की वजह यह है कि मैं नीचे के स्तर की तकनीकी मुश्किलों को और समझना चाहता हूँ

    • “कुछ भी नहीं कर पाने पर गुस्सा है, और यह मेरा कुछ करने की कोशिश करने का तरीका है” वाला रवैया सोने जैसा है, और सच में दुनिया बदलने वाला रवैया है
      “news” की बदहाली पर कही बात से भी सहमत हूँ। psychological warfare में इसे morale sapping कहा जाता है। पहले दुश्मन विरोध की इच्छा तोड़ने और लोगों को बेबस बनाने वाला propaganda करता था, और इसका classic उदाहरण Lord Haw-Haw था। https://en.wikipedia.org/wiki/Lord_Haw-Haw
      आजकल mainstream news channels और tech giants लोगों को स्थायी निराशा और anxiety में बाँधकर रखना चाहते हैं, ऐसा लगता है। tech discourse भी cynicism, avoidance, denial, resignation और learned helplessness का गड्ढा लगता है, और हाल में मैंने काफी interviews और sentiment analysis किए तो नतीजे डरावने थे। लगता है जैसे “tech” शब्द खुद “resistance is futile” का पर्याय बनता जा रहा है। सफलता की उम्मीद से नहीं, बल्कि उदाहरण पेश करने और अपनी sanity बचाए रखने के लिए कुछ भी करना सबसे सकारात्मक और मानवीय प्रतिक्रिया है
    • यह अजीब है कि ऐसा जवाब ‘hacker’ news पर लिखना पड़ रहा है, लेकिन जो करना चाहते हो वही करो। कुछ लोग लकड़ी का काम करते हैं, कारें ठीक करते हैं और games खेलते हैं; कुछ लोग coding पसंद करते हैं। मैंने भी कई वजहों से शुरू किए हुए side projects बहुत किए हैं और वे सब मजेदार रहे। शुभकामनाएँ, और इसका आनंद लो। शायद यह किसी बड़े रूप में भी बदल जाए
    • personal project के attitude से शुरू करना बहुत अच्छा है
      Linus Torvalds के अंदाज में कहें तो, “GNU जैसा बड़ा और professional कुछ बनाने की कोशिश नहीं, यह मेरे लिए है” वाले attitude से बनाते समय बहुत कम मेहनत में बहुत कुछ हासिल किया जा सकता है। ऐसा करने पर practical compromises किए जा सकते हैं, और learning के लिए हो या actual use के लिए, “product” बनाने की तुलना में बहुत कम effort से अपने लिए उपयोगी किसी चीज तक पहुँचा जा सकता है। मेरे personal projects भी कई बार ऐसे छोटे personal projects खोजकर उनके कुछ हिस्से reuse करते-करते बिल्कुल अलग दिशा में चले गए। किसी विशाल, पूरी तरह feature-complete beast को घटाने या fit करने से “काफी करीब” छोटे project को उठाना कहीं आसान है। browser की complexity बहुत हद तक इस बात से आती है कि उसे हर site और हर usage scenario को support करना पड़ता है, लेकिन अगर मैं अपने लिए बनाऊँ तो जिन sites की मुझे परवाह है उन्हें पर्याप्त अच्छे से चलाने पर focus कर सकता हूँ, जिससे समस्या काफी घट जाती है। काश और लोग “असंभव” projects आजमाएँ। पूरा project तुरंत दूसरों के काम न भी आए, तो भी उसके कुछ हिस्से उपयोगी हो सकते हैं, और कभी-कभी Linux की तरह छोटे personal project से बड़ी चीज निकल आती है
    • शोर को ignore कर देना चाहिए। HN पर कभी-कभी crab bucket mentality बहुत ज्यादा होती है
      अगर किसी के project को बेकार time waste बताने में लगाए गए समय का आधा भी constructive काम में लगाया जाता, तो दुनिया में कहीं ज्यादा शानदार और दिलचस्प projects होते। बिल्कुल कोशिश न करने से बेहतर है कि किसी bold और ambitious काम में fail हुआ जाए
    • काश और लोग browser implementation आजमाएँ। कई comments कह रहे हैं कि यह बहुत बड़ा काम है, और सच में हो सकता है, लेकिन इसका मतलब यह नहीं कि यह इतना भी बुरा है
      modern web browser की हर feature implement करने की जरूरत नहीं है। Battery API, game controller API, USB जैसी चीजों की जरूरत नहीं; अहम HTML, CSS, JS पर focus करें। सबसे बुरी स्थिति में भी आप कुछ नया सीखेंगे। project के लिए शुभकामनाएँ
  • “मुझे कुछ उम्मीद नहीं है, पूरा कर पाऊँगा इसकी भी उम्मीद नहीं है, मदद करने वाला कोई न मिला तो यह project जल्द मर जाएगा, market के giant players को गिरा देने वाला dominant browser बन जाएगा ऐसी उम्मीद नहीं है” वाली बात Linus ने comp.os.minix पर की गई Linux की पहली घोषणा जैसी लगती है
    वह post “minix इस्तेमाल करने वालों, नमस्ते। मैं 386(486) AT clones के लिए एक free operating system बना रहा हूँ। यह बस hobby है, gnu जैसा बड़ा और professional नहीं होगा…” से शुरू हुई थी; उसमें कहा गया था कि bash और gcc port कर लिए गए हैं, कुछ महीनों में practical चीज निकल सकती है, implementation का वादा नहीं है लेकिन जो features चाहिए वे बताइए। आखिर में यह भी कहा था कि इसमें minix code बिल्कुल नहीं है, multithreaded file system है लेकिन portable नहीं है, और शायद AT hard disks के अलावा कुछ support नहीं करेगा

    • उन्होंने कहा था “शायद AT hard disks के अलावा कुछ support नहीं करेगा,” और आज spacecraft में Linux install किया जा रहा है
      कोई नहीं जानता project कहाँ तक जाएगा। और अगर आप उसे अपनी वजहों से कर रहे हैं, तो एक तरह से यह मायने भी नहीं रखता
    • उस बहुत पुराने announcement को पढ़ना पागलपन जैसा लगता है, लेकिन आखिरकार हम आज यहाँ तक आ गए। यह भी अद्भुत है कि Linus अब भी ईमानदारी से project lead कर रहे हैं, और अब Linux internet का foundational operating system बन गया है। लगभग हर बड़ी company के server rooms ज्यादातर Linux या उसके internal derivatives चलाने वाले servers से बने हैं
  • ब्राउज़र और open web को लेकर HN पर इतना नकारात्मक माहौल देखना मेरे लिए आम बात नहीं है। सफलता मिले या न मिले, मुझे यह बहुत मूल्यवान कोशिश लगती है
    भले ही नतीजा सिर्फ़ ऐसा अधूरा ब्राउज़र हो जो बड़ी tech कंपनियों की मंशाओं से संचालित न हो, तब भी किसी दिन अगर Firefox पर निर्भर रहना बंद करना पड़े तो यह उपयोगी हो सकता है। मुझे Firefox बहुत पसंद है, इसलिए उम्मीद है वह दिन न आए, लेकिन मुझे एहसास हुआ कि web तक पहुँचते समय मेरा ब्राउज़र एक तरह की bottleneck है। वही content देखने के लिए दूसरी websites भी हैं, और इस्तेमाल करने के लिए दूसरे computer brands भी हैं, लेकिन बीच में हमेशा Firefox होता है। दूसरे browsers भी हैं, मगर ज़्यादातर Googlium पर या आजकल उसका जो भी नाम हो, उसी आधार पर बने लगते हैं। इसलिए मैं शुभकामनाएँ देता हूँ, सफलता की उम्मीद करता हूँ, और RSS feed subscribe करके कभी-कभी project पर नज़र डालने का सोच रहा हूँ

    • HN पर जब browser thread खुलती है, तो क्या यह लगभग तय क्रम नहीं होता कि नया browser बनाना असंभव है, यह दावा करने वाले क़रीब दर्जन भर बहुत-upvoted replies आ जाते हैं?
      असल में इसके संभव होने के प्रमाण भी हैं। Ladybird शुरू से बनाया गया था, और मूल रूप से तो उसने C++ standard library तक खुद बनाई थी; 3–4 साल के part-time काम के बाद अब यह Discord भी, भले धीमे ही सही, चला लेता है। अब इसमें full-time developer भी है। GoSub के मामले में cargo.lock देखें तो लगता नहीं कि वे सब कुछ scratch से implement करना चाहते हैं, और image decoder जैसी चीज़ों के लिए ready-made components इस्तेमाल करने की संभावना ज़्यादा दिखती है, इसलिए इसके तेज़ी से बढ़ने की क्षमता भी हो सकती है
  • आज “browser को scratch से लिखना” दरअसल काफ़ी हद तक डिब्बे के अंदर portable operating system, यानी web platform को implement करना और उसे उन चीज़ों से compatible बनाना है जिन्हें Google ने अपने browser में जोड़ने का फ़ैसला किया है
    Browser में features और APIs इतने विशाल हैं, और Google के लगातार feature बदलावों व dominance के साथ चलना इतना मुश्किल है कि Microsoft तक यह नहीं कर पाया। इससे जुड़ा एक personal project Tersenet है। https://github.com/runvnc/tersenet
    यह लगभग बिना implementation वाला concept है, लेकिन requirements जानबूझकर ऐसी चुनी गई हैं ताकि लोग इसे implement कर सकें। यह पूर्ण web browser से कहीं कम जटिल है। GPT-4 के साथ संबंधित चर्चा भी है। https://chat.openai.com/share/16d02b78-f876-4c87-949a-a60b4f...
    वास्तव में मौजूद और practical Gemini project भी संबंधित है। https://geminiprotocol.net/ इसी ने Tersenet idea को प्रेरित किया

    • ज़रूरी नहीं। Scope को hypertext document viewer तक सीमित कर दें, तो यह अचानक approachable हो जाता है। बहुत-से features PWA-टाइप के हैं जिन्हें किसी ने माँगा नहीं था और जिनका अच्छे काम में भी इस्तेमाल नहीं होता
      WebSQL, IndexedDB, service workers, WebGL, WebGPU, WebBluetooth, WebRTC जैसी चीज़ों को बस ऐसे treat किया जा सकता है मानो वे मौजूद ही नहीं हैं। असली websites की 99%, यानी web “apps” नहीं बल्कि sites, कोई functionality नहीं खोएँगी
    • Ladybird बहुत युवा project होने के बावजूद काफ़ी अच्छी गति से आगे बढ़ रहा है। हाँ, यह ध्यान रखना चाहिए कि lead developer को इस क्षेत्र का काफ़ी अनुभव है
      निजी तौर पर मैं Blink और उसके रिश्तेदार WebKit की monoculture, और Gecko/Quantum के अलावा भी और alternative engines देखना चाहूँगा। WebKit में absorb होने से पहले KHTML जिस जगह पर था, उसकी जगह लेने वाली कोई चीज़, या प्रयोग करने के लिए एक और open-source option हो तो अच्छा होगा
    • यह कहना ज़्यादा है कि Google ने अपने browser में जो जोड़ा है उससे compatible होना ही पड़ेगा। कई सम्माननीय लोग कहीं ज़्यादा सरल HTML के साथ personal homepage बनाए रखते हैं, और news.ycombinator.com भी अपना classic रूप बनाए रखने के कारण पसंद किया जाता है
      अच्छा होगा अगर इस सोच से काफ़ी सहमत लोग इस्तेमाल होने वाले subset पर सहमति बना लें, और ऐसा browser भी संतोषजनक हो सकता है जो Google browser की हर चीज़ न करे। मैं uMatrix से Google features का बड़ा हिस्सा बंद रखता हूँ, google.com domains को कभी allowlist में नहीं डालता, और फिर भी जैसे यह साबित कर रहा हूँ कि दुनिया खत्म नहीं होती। जो sites काम नहीं करतीं वे तुलनात्मक रूप से कम हैं
    • Google जो करता है वही करना क्यों ज़रूरी है? ज़्यादातर websites HTML और ECMAScript follow करती हैं। क्या इस project का मूल मक़सद बड़ी tech कंपनियों के कामों से decouple होना नहीं है?
      अधिकांश websites Google-specific तरीके से हाल में बनाई गई ad tech, AMP, DRM जैसी चीज़ें follow नहीं करना चाहतीं
    • क्या browser ecosystem को समृद्ध बनाने में जो चीज़ गायब है, वह Java जैसी modular, independent JavaScript runtime/interpreter नहीं है? Java में कई JVMs हैं। https://en.wikipedia.org/wiki/List_of_Java_virtual_machines
      शायद Mozilla और दूसरे लोगों को एक independent JavaScript “VM” बनानी चाहिए जिसे हर कोई इस्तेमाल कर सके
  • एक ऐसे व्यक्ति के रूप में जिसे “real” browser कैसे काम करता है इसका बिल्कुल पता नहीं था, फिर भी जिसने खुद browser लिखने का फैसला किया—वह भी custom layout engine तक बनाकर—मैं बस यही कहना चाहूँगा: कर डालिए
    अपने code से website render होते देखना, code या output चाहे जितना भी बिखरा हुआ हो, बेहद संतोषजनक होता है। मेरा project करीब ढाई साल पुराना है और अब HN और simple blogs को ठीक-ठाक render कर लेता है। जिस w3m को replace करने का इरादा था, उससे objectively बेहतर है या नहीं—ज़रूरी नहीं; इसलिए कुछ कामों के लिए मैं अभी भी w3m पर लौट जाता हूँ। फिर भी यह उन कामों में उपयोगी निकला जिनके बारे में सोचा नहीं था, मैंने programming के बारे में बहुत कुछ सीखा, और किसी भी तरह इसका काम करना ही cool है। https://sr.ht/~bptato/chawan

  • ब्राउज़र बनाना मतलब rendering engine और layout engine बनाना है। यह असंभव काम नहीं, लेकिन काफ़ी बड़ा प्रोजेक्ट है
    लेकिन ऐसे कई काम भी हैं जिनसे नतीजे मिलने की संभावना ज़्यादा है। Servo को Nyxt Browser पर पोर्ट करना, या WebKit/Servo/Gecko को fork करके पिछले 10 वर्षों में विज्ञापन कंपनियों द्वारा डाले गए, यूज़र के लिए हानिकारक और दखलअंदाज़ी करने वाले web standards को हटाया जा सकता है। अगर ये वे काम हैं जो शुरुआत से बनाते समय वैसे भी करने पड़ेंगे, तो शून्य से शुरू करने के बजाय किसी मौजूदा community से शुरू करना बेहतर है जो साथ काम करने को तैयार हो

    • इसलिए मैंने WebKit चुना। https://github.com/tholian-network/retrokit क्योंकि पता चला कि Servo अब पहले जितना modular नहीं रहा
      Gecko तो monolith की परिभाषा के काफ़ी करीब है, इसलिए attack surface हटाना नामुमकिन है, और Tor तक internal API या bridge बदलने पर हर बार टूट जाने वाली खराब stub-replacement पद्धति इस्तेमाल करता है। हालांकि upstream के साथ अकेले तालमेल बनाए रखना असंभव है, इसलिए contributors और maintainers चाहिए। cybersecurity के नज़रिए से मैंने attack surface को जितना हो सके document किया है, और बाकी बचे काम तथा आखिरकार हटाई जाने वाली चीज़ें लिख दी हैं। https://github.com/tholian-network/retrokit/blob/main/SECURI...
      मैं RetroKit को अपने Browser Stealth के webview के तौर पर इस्तेमाल करना चाहता हूँ, इसलिए यह काफ़ी subjective हो सकता है। Browser Stealth filtering proxy, scraper और decentralized cache की तरह काम करता है। https://github.com/tholian-network/stealth फिलहाल इसे golang में फिर से लिखा जा रहा है
    • मैं एक web layout library maintain कर रहा हूँ, जिसे दूसरे software में integrate करने के लिए design किया गया है। https://github.com/DioxusLabs/taffy
      इसे https://github.com/pop-os/cosmic-text जैसे text layout engine के साथ जोड़ना होगा, और यह अभी सभी features support नहीं करता। अभी जिन प्रमुख features की कमी है वे हैं float, display: inline-block, box-sizing: content-box, position: static। लेकिन Block, Flexbox और CSS Grid support हैं और और भी जोड़े जा रहे हैं
    • यह सच में भारी काम है, लेकिन मेरे हिसाब से इसलिए इसे छोड़ देने की ज़रूरत नहीं। कुछ मायनों में आज यह पहले से उल्टा आसान है। क्योंकि अब comprehensive standards मौजूद हैं
      यह बड़ा काम ज़रूर है, लेकिन एक committed छोटी team के लिए सबसे असंभव काम नहीं है
    • rendering और layout engine को शुरू से ही सभी ACID tests पास करने की ज़रूरत तो नहीं है, है न? धीरे-धीरे बनाया जा सकता है
      reasonably simple HTML websites render करने से शुरुआत की जा सकती है, जल्दबाज़ी की कोई ज़रूरत नहीं, और standards के हर कोने को implement करना है—ऐसा कोई सख्त नियम भी नहीं। web browser और web शानदार ढंग से मानवीय हैं
    • rendering और layout engine खुद तभी लिखने पड़ते हैं जब शुरुआत से लिखना चाहते हों। browser मुख्य रूप से user-facing application है, अंदर इस्तेमाल होने वाले gears खुद नहीं
      मौजूदा engines लेकर उन्हें जोड़ना, और उन्हें इतना modular बनाना कि कभी भी बदला जा सके, फिर भी एक proper browser है। निजी तौर पर मुझे लगता है कि यहाँ लोग अंदरूनी gears पर ज़रूरत से ज़्यादा focus कर रहे हैं, जबकि असल में rendering/layout/scripting के अलावा भी बेहतर interface और दूसरे components चाहिए
  • समर्थन है। जारी रखिए
    मैंने Python में ORC Solver algorithm का बहुत छोटा हिस्सा implement किया था, और rendering के लिए wxWidgets इस्तेमाल किया। text width calculate करने के लिए wxWidgets का text extent API इस्तेमाल किया। ORC Solver whitepaper यहाँ है। https://yuejiang-nj.github.io/Publications/2020CHI_ORCSolver...
    मैं सोच रहा हूँ कि branch and bound कैसे implement करूँ, इसलिए इससे जुड़ी जानकारी हो तो अच्छा होगा। typesetting algorithm देखने के लिए शायद TeX codebase पढ़ना पड़ेगा, और layout bin packing के लिए JavaScript library Masonry इस्तेमाल करना भी बहुत दिलचस्प था

  • “अगर तुम्हें मेरा HTML चाहिए, तो मैं दे दूँगा! ढूँढो! दुनिया की हर चीज़ मैंने वहीं छोड़ दी है”
    “और इस तरह hackers अपने सपने का पीछा करते हुए HyperText Line की ओर बढ़े, और दुनिया सचमुच महान browser युग में प्रवेश कर गई!”
    कई वर्षों तक मैं मानता था कि browser एक ऐसी पहाड़ी है जिसे पार नहीं किया जा सकता, लेकिन अब लगता है कि धीरे-धीरे और लोग मानने लगे हैं कि हम यह कर सकते हैं। 2-second analysis के हिसाब से यह trend इसलिए दिख रहा है क्योंकि नए browser makers मौजूदा विशाल दैत्यों की नकल करके उनसे compete नहीं करना चाहते, बल्कि web को बदलना चाहते हैं। मुझे यह पसंद है

  • लेख के राजनीतिक हिस्से पर, दुनिया टूटी हुई है और सिर्फ टूटी हुई खबरें पढ़ना थका देने वाला काम है। लेकिन वास्तविकता से कटकर “गैर-राजनीतिक” बन जाना मानवता को छोड़ देने जैसा है—यानी अपने बच्चों और भांजे-भतीजों, और सबसे करीबी दोस्तों के बच्चों को छोड़ देना।
    दुनिया बदलने की जरूरत भी नहीं है; अपने समुदाय में छोटे बदलाव ही काफी हैं। खासकर coder के तौर पर हम जो बनाते हैं, वह दुनिया भर के हजारों लोगों को प्रभावित कर सकता है और दिशा बदल सकता है। कभी-कभी सोचता हूं कि अगर हर कोई अपने समय का सिर्फ 3~5% समुदाय की मदद और किसी न किसी तरह की activism में लगाता, तो क्या हालात अलग होते?

    • मैं खबरें बिल्कुल नहीं देखता। 99% biased कचरा होती हैं, अक्सर सच भी नहीं होतीं, और दिमाग को दूषित करती हैं। इसकी वजह से मेरी जिंदगी और mental health काफी बेहतर हो गई है।
      खबरों में पढ़ी कोई भी चीज मेरे vote देने के तरीके को बदलने वाली नहीं है, जबकि शायद खबरें देखने की सबसे अच्छी वजह वही होनी चाहिए।
    • समुदाय में भागीदारी से मैं पक्के तौर पर सहमत हूं। किसी बुजुर्ग पड़ोसी के घर के सामने से बर्फ हटाना अच्छा है, क्योंकि वह सच में कुछ करना है।
    • मोटे तौर पर सहमत हूं। कुछ साल पहले मैंने खबरें सुनना बंद करने का फैसला किया था, लेकिन वह बच्चों न करने का फैसला लेने के बाद था। जो लोग बच्चे पैदा करते हैं, उनका अपने कान बंद कर लेना गलत लगता है।
      कहूं तो मैंने दुनिया से उम्मीद छोड़ दी है। लेकिन दूसरों के बच्चे मेरी जिम्मेदारी नहीं हैं। “सही काम” करने के लिए जितना दूसरे लोग करते हैं, उतना करता हूं, उससे ज्यादा नहीं। पहले मैं इन चीजों पर सोचता था, अपना व्यक्तिगत footprint घटाने की कोशिश करता था, sustainability और आने वाली पीढ़ियों के बारे में भी सोचता था, लेकिन उम्मीद खो दी। ऐसा लगता था जैसे धारा के विरुद्ध लड़ रहा हूं। अब बस इतना करता हूं कि मेरा footprint औसत से बड़ा न हो और आसपास के लोगों के साथ अच्छा व्यवहार करूं।
    • news industry से दूरी बना लेने का मतलब अपने-आप वास्तविकता से कट जाना नहीं है। कम से कम उम्मीद तो यही है। मैं non-tech news हफ्ते में करीब एक बार ही consume करता हूं।
  • अगर Rust जरूरी है, तो Servo में contribute करते हुए छोटे PR भेजकर सीखना ज्यादा फायदेमंद लगता है। https://github.com/servo/servo
    हालांकि मैं समझ सकता हूं, क्योंकि मैंने भी मौजूदा codebase पढ़ना मुश्किल लगा या लगा कि मैं बेहतर कर सकता हूं, इसलिए “शुरू से” project किए हैं। हर किसी का अपना तरीका होता है।

    • किसी program का toy version खुद लिखना बड़े version को समझने का बेहतरीन तरीका है।
    • Rust और Servo साथ-साथ शुरू हुए थे, इसलिए Servo में Rust 1.0 से पहले का काफी code है, और उसके असर से कुछ जगह style कम ideal है।
      इसी तरह Servo को Firefox browser के हिस्सों को replace करने के लिए design किया गया था, इसलिए उसे “Gecko आकार” के छेद में fit होना था। उदाहरण के लिए Firefox के बाकी हिस्सों के साथ compatibility की वजह से कई जगह UTF-16 strings का इस्तेमाल होता है। आज के समय में modern Rust से Servo को फिर से लिखा जाए, तो शायद उसे छोटा, चुस्त और शायद ज्यादा तेज बनाया जा सके।
    • Servo एक शानदार project है और Mozilla ने जो काम किया है वह भी पसंद है, लेकिन आखिरकार financially वह Google से जुड़ा हुआ नहीं है क्या?