लोगों की भावनाएँ जगाने वाला सॉफ्टवेयर बनाइए
(rapha.land)- व्यक्तिगत उपयोग के लिए बने कोड एडिटर Boo के लेखक ने परियोजना को कुछ समय के लिए रोककर नई प्रोग्रामिंग भाषा बनाने के कारण समझाए
- Boo एक Rust-आधारित एडिटर है जिसमें मानव-केंद्रित कीबोर्ड नेविगेशन और LSP विकल्प प्रणाली है, और इसका मकसद वाणिज्यीकरण से ज़्यादा निजी उपयोग है
- उन्होंने कहा कि दोहराव भरा विकास रचनात्मकता को गिरा देता है, इसलिए वे लोगों को प्रेरित करने वाला सॉफ्टवेयर बनाने के आनंद पर जोर देते हैं
- उन्होंने LEGO ब्लॉक निर्माण और The Legend of Zelda: Breath of the Wild का उदाहरण देकर यादगार रचना की अहमियत पर बल दिया
- सफलता का फ़ॉर्मूला अपनाने के बजाय वे अपनी रुचि और सीखने-केंद्रित डेवलपमेंट फिलॉसफ़ी को बनाए रखते हुए भविष्य में Boo को अपनी बनाई भाषा में फिर से लिखने की योजना बता रहे हैं
Boo परियोजना और विकास की प्रेरणा
- Boo लेखक का अपना-कोड एडिटर प्रोजेक्ट है, जिसका लक्ष्य जनसामान्य में लोकप्रियता नहीं बल्कि निजी उपयोगिता है
- इसमें मानव-कीबोर्ड नेविगेशन है और LSP (Language Server Protocol) की जगह एक तेज़ व कम OS लोड लेने वाला सिस्टम उपयोग होता है
- यह वर्तमान में दैनिक काम के लिए पर्याप्त रूप से चलता है, लेकिन इसे ओपन सोर्स के रूप में रिलीज़ करने की कोई योजना नहीं है
- Boo और Rio Terminal दोनों Rust में लिखे गए हैं और उनकी संरचना व रिलीज़ प्रक्रिया भी मिलती-जुलती है
- यही समानता इन्हें बार-बार वही काम करने जैसा महसूस कराती है और निर्माण का मज़ा कम कर देती है
रचना और प्रेरणा का रिश्ता
- LEGO ब्लॉक्स से खेलने का उदाहरण देते हुए उन्होंने कहा कि हर बार अलग आकार बना पाना ही रचनात्मक आनंद देता है
- वही पार्ट्स बार-बार जोड़ने की जगह बाहरी तत्व जोड़कर नया परिणाम बनाने की प्रक्रिया ही असली रुचि का स्रोत है
- जैसे-जैसे प्रोग्रामिंग अधिक दोहरावदार होती जाती है, “वाओ” प्रभाव वाले आउटपुट की संभावना घटती है
- उन्होंने इस पर जोर दिया कि पहले खुद प्रेरित होना ज़रूरी है, तभी प्रेरणादायी सॉफ्टवेयर बनाया जा सकता है
यादगार सॉफ्टवेयर के उदाहरण
- The Legend of Zelda: Breath of the Wild का उदाहरण देते हुए उन्होंने बताया कि इस गेम ने ऐसे लोगों को भी कंसोल खरीदने पर प्रेरित किया जो इसे नहीं खेलते थे
- यह दिखाता है कि कोई रचना खेलने के बाद भी लंबे समय तक याद रह जाने वाला अनुभव दे सकती है
- उन्होंने कहा कि इसी स्तर की बारीक़ी से बनाई चीज़ें लोगों पर भावनात्मक छाप छोड़ती हैं
Boo का विराम और नई भाषा का निर्माण
- Boo कोई बिजनेस-ड्रिवन प्रोजेक्ट नहीं, बल्कि एक शौकिया परियोजना है, इसलिए इसमें न मुनाफ़ा लक्ष्य है न डेडलाइन का दबाव
- VS Code जैसे बड़े प्रोजेक्ट बनाने की कोई मंशा नहीं है, और न ही इसे मजबूरी में आगे बढ़ाया जा रहा है
- प्रेरणा लौटने पर फिर से शुरू करने के लिए लेखक ने Boo को अस्थायी रूप से रोक दिया है और अभी अपनी खुद की प्रोग्रामिंग भाषा विकसित कर रहे हैं
- लंबी अवधि में Boo को इसी भाषा में दोबारा लिखने की योजना है
विकास दर्शन और रवैया
- नई भाषा बनाना भारी काम है, लेकिन लेखक इसे आनंददायक लर्निंग प्रक्रिया के रूप में देखते हैं
- इसमें बाइनरी और कंपाइलर की समझ को बढ़ाते हुए वे अपनी ही गति से आगे बढ़ रहे हैं
- बाहरी सफलता फ़ॉर्मूले या सलाहों का पीछा करने के बजाय, वे अपनी सोच और रुचि को केंद्र में रखकर डेवलप करते रहने पर टिके हैं
- यह पूरा लेख खुद Boo का इस्तेमाल करके लिखा गया है
1 टिप्पणियां
Hacker News की राय
यह पढ़कर कि वह आज उठा, कॉफी पी, और परिवार सो गया इसलिए उसकी दोपहर खाली थी, मुझे सच में यह जिज्ञासा हुई कि आखिर उसके परिवार का time zone उससे अलग कैसे है। मैंने यह भी कल्पना की कि शायद उसका परिवार दोपहर में सोता है, या शाम को उठकर दिन शुरू करता है
“यह editor मुझे खुश करने के लिए मौजूद है” — यह बात ताज़गी भरी लगी। आजकल हर side project पर open source या SaaS में बदलने का दबाव होता है, और कई बार वही रचनात्मकता को मार देता है। Boo या Rio जैसे प्रयोगात्मक projects शायद इसी आज़ादी से निकलते हैं
“मैंने इसे अपने लिए बनाया” — यह कई कलाकारों का तरीका रहा है। Tolkien ने भी ऐसा ही किया, और ज़्यादातर लोग पहले अपने लिए बनाते हैं, बाद में दुनिया को दिखाते हैं। लेकिन आम तौर पर किसी को फ़र्क नहीं पड़ता, या फिर मौत के बाद ध्यान मिलता है। फिर भी कोई बात नहीं। अहम बात है कल्पना को बाहर व्यक्त करने की मानवीय प्रवृत्ति
जब programming दोहराव वाली हो जाती है, तो ‘wow’ factor कम हो जाता है। लेकिन yt-dlp जैसा project, जो अलग-अलग sites को support करता है, अपवाद है। ढेर सारे data parsers बनाना उबाऊ हो सकता है, लेकिन आख़िर में वह “हर जगह काम करता है” वाला एहसास देता है
मैं ऐसा software बनाता हूँ जो लोगों में emotions जगाता है — ज़्यादातर गुस्सा। आख़िर में software दो ही तरह का होता है: जिसे लोग नज़रअंदाज़ कर दें, या जिसे लोग इतना इस्तेमाल करें कि शिकायत करने लगें
Emacs और Emacspeak मुझे बेहद गहरी भावनाएँ देते हैं। पूरा सिस्टम जैसे एक ही manual हो, और सिर्फ C-h m दबाते ही सारे commands सामने आ जाएँ। कुछ भी छिपा हुआ नहीं, HTML docs में खोदने की ज़रूरत नहीं। अगर कुछ नहीं चलता, तो Codex से ठीक करवाकर भी मैं उसे अपनी इच्छा के मुताबिक चला लेता हूँ
आदर्श स्थिति में, software development को craft की तरह देखा जाना चाहिए। जैसे woodworking उपयोगी भी हो सकती है और कला भी। लेकिन बहुत से projects में developers के साथ factory workers जैसा व्यवहार होता है। समस्या है quality से ज़्यादा quantity को महत्व देने वाली संस्कृति।
साथ ही software को सिर्फ कला मानना भी व्यावहारिक नहीं है। Code का मकसद सराहना पाना नहीं, चलना है। फिर भी यह थोड़ा अफ़सोस की बात है कि “craftsmanship से बना software” वाक्य अटपटा लगता है
Meta, Google जैसी FAANG कंपनियाँ भी पहले ही लोगों में भावनाएँ जगाने वाला software बना चुकी हैं — गुस्सा, उदासी, कभी-कभी खुशी भी। लेकिन यह भी दिखाता है कि अच्छी नीयत से शुरू हुई technology कैसे विकृत हो सकती है। जैसे कहा जाता है, “नरक का रास्ता अच्छी नीयत से पाटा जाता है”; अच्छाई की तलाश में भी बुराई पैदा हो सकती है।
Knuth को उद्धृत करें तो, “हज़ारों computer scientists को आज़ादी से वह करने दो जो वे करना चाहते हैं” — यही प्रगति की ताकत है। Bell Labs की तरह, खोज की आज़ादी बहुत महत्वपूर्ण है।
आजकल हम optimization के पीछे पड़े रहते हैं, लेकिन गणितीय रूप से उतने सक्षम नहीं, और नतीजतन खोज बंद कर चुके समाज बन गए हैं। मुझे लगता है इसी वजह से प्रगति धीमी पड़ गई है
Casey Muratori और Jonathan Blow से सीखी एक आदत है: मुझे भी अपनी छोटी-सी दुनिया बनाना पसंद है। ऐसे projects जहाँ मैं ही अकेला user हूँ और मैं ही target audience हूँ। वहाँ कोई deadline नहीं, कोई requests नहीं, कोई runtime नहीं — बस शुद्ध आनंद की जगह
आजकल ज़्यादातर software मुझमें तेज़ भावनाएँ जगाता है