28 पॉइंट द्वारा GN⁺ 2024-01-06 | 7 टिप्पणियां | WhatsApp पर शेयर करें

"Paper" टेक्स्ट एडिटर के solo डेवलपर के 9 साल

  • 2015 में वह एक सामान्य full-stack web डेवलपर था और Apple डेवलपमेंट की दुनिया से काफ़ी दूर था।
  • Mac इस्तेमाल करते हुए वह indie डेवलपर्स के apps से आकर्षित हुआ, और सरल व सुरुचिपूर्ण Markdown एडिटर iA Writer से प्रेरित होकर वैसा ही app बनाने का फैसला किया।
  • Mac के लिए native टेक्स्ट एडिटर बनाने हेतु उसने Xcode, AppKit, Objective-C जैसी नई tech stack सीखनी शुरू की।
  • app का नाम Paper रखा गया, और अत्यधिक minimalism अपनाते हुए एडिटर को एक साधारण rectangle की तरह डिज़ाइन किया गया।
  • 2017 में Mac App Store पर Mac app लॉन्च किया गया, और 2019 में iOS app जारी किया गया।

native app चुनने की वजह

  • Electron app की बजाय native app इसलिए चुना गया क्योंकि लक्ष्य सबसे बेहतरीन user experience देना था।
  • native apps हल्के और तेज़ होते हैं, और text से जुड़े अनोखे features लागू करने के ज़्यादा तरीके देते हैं।

Objective-C चुनने की वजह

  • 2015 में जब Swift शुरुआती दौर में था, तब उसने Objective-C और Swift में अलग-अलग खाली Xcode projects compile करके .app package की तुलना की।
  • Swift app में Swift runtime शामिल होने के कारण उसका आकार लगभग 5MB था, जबकि Objective-C app बहुत हल्का, लगभग 100KB था।
  • ज़्यादा हल्का और आसानी से वितरित किया जा सकने वाला app चाहिए था, इसलिए Objective-C चुना गया।

third-party dependencies

  • Paper में कोई third-party dependency नहीं है।
  • सब कुछ ख़ुद बनाकर उसने प्रतिस्पर्धियों पर थोड़ा बढ़त हासिल की।
  • उदाहरण के लिए, Paper का Markdown parsing engine custom है, और यह पारंपरिक Markdown एडिटर्स की तुलना में कम Markdown syntax को support करता है।

विज़न

  • Paper का शुरुआती विज़न iA Writer की मुख्य क्षमताओं को रखना था, लेकिन उसे और अधिक सुरुचिपूर्ण व minimalist package में पेश करना था।
  • फोकस इस बात पर था कि ध्यान भटकाने वाली चीज़ों को न्यूनतम रखा जाए ताकि एकाग्रता बढ़ सके।
  • समय के साथ Paper ने minimalism बनाए रखते हुए धीरे-धीरे features जोड़ने के तरीके से बाज़ार में अपनी जगह बनाई।

आर्किटेक्चर

  • Paper का code दो तरह के scope से बना है: application scope और document scope
  • हर scope के लिए storyboard परिभाषित किया गया है, जो views और widgets का वर्णन करता है और scope के भीतर modules को जोड़ता है।
  • modules वे Objective-C classes हैं जो app के भीतर किसी feature के एक हिस्से की ज़िम्मेदारी संभालती हैं, और संबंधित functionality को एक ही जगह समेटती हैं।

cross-platform code

  • AppKit और UIKit एक-दूसरे से मिलते-जुलते हैं, लेकिन कई मामलों में अलग भी हैं।
  • इन अंतरों को संभालने के लिए Objective-C के macros और category features का इस्तेमाल किया गया।

debugging

  • Apple frameworks के मामले में code की बजाय documentation पढ़नी पड़ती है, और breakpoints का उपयोग करके compiled stack trace का विश्लेषण किया जाता है।

paid features

  • 2015-17 के दौरान subscriptions अभी व्यापक नहीं हुए थे, और App Store में one-time payment आम बात थी।
  • paid features को user-friendly तरीके से देने के लिए केवल functionality नहीं बल्कि cosmetic upgrades को paid रखा गया।

pricing

  • शुरुआत में Pro features के दो sets के लिए 5 डॉलर के one-time payment से शुरुआत की गई।
  • अब इसकी pricing एक ही set के लिए 10 डॉलर प्रति माह या lifetime 100 डॉलर रखी गई है।
  • pricing experiments से पता चला कि users किसी कम-ज्ञात डेवलपर के app के लिए 100 डॉलर तक चुकाने को तैयार हो सकते हैं।

मुश्किल हिस्से

  • टेक्स्ट एडिटर्स जटिल होते हैं, और हर OS update के साथ text insertion, updates और interaction के नए तरीके जुड़ते जाते हैं।

gimmick

  • Things app से प्रेरित window resize bounce जैसी मज़ेदार features जोड़ी गईं।

GN⁺ की राय:

  1. नवोन्मेषी दृष्टिकोण: native app डेवलपमेंट का अनुभव न होने के बावजूद, डेवलपर ने user experience को सर्वोच्च प्राथमिकता देते हुए Paper बनाया—यह काफ़ी प्रभावशाली है। यह दिखाता है कि software development में user-centric design कितना महत्वपूर्ण है।
  2. सीखना और विकास: नई tech stack सीखकर उसके ज़रिए product बनाना शुरुआती software engineers के लिए भी प्रेरणादायक हो सकता है। यह रेखांकित करता है कि लगातार सीखना और चुनौती लेना डेवलपर के रूप में बढ़ने के लिए ज़रूरी है।
  3. user experience का महत्व: Paper की सफलता के प्रमुख कारणों में से एक user experience पर बारीक ध्यान और minimalism पर उसका फ़ोकस है। यह दिखाता है कि users वास्तव में क्या चाहते हैं, इसे समझना और उसे product में उतारना कितना अहम है।

7 टिप्पणियां

 
woung717 2024-01-06

ज़्यादातर Apple डेवलपमेंट दस्तावेज़ इतने user-friendly नहीं होते, इसलिए दस्तावेज़ों को काफ़ी खंगालना पड़ता है... और अगर वहाँ भी जानकारी कम हो, तो कई बार SDK interface तक खोजना पड़ता है... उस मायने में यह वाकई सम्मानजनक है।

 
ndrgrd 2024-01-06

मैं सोच रहा था कि "कॉस्मेटिक अपग्रेड" क्या है, लेकिन मूल पाठ में यह visual changes था।
क्या "कॉस्मेटिक" जैसा शब्द इस्तेमाल किया जाता है? मैंने इसे पहली बार देखा है।

 
geeker 2024-01-08

लगता है neo एक AI bot है, इसलिए अनुवाद थोड़ा मशीन जैसा हो गया होगा lol

 
apkas 2024-01-07

मूल लेख तो बस एक cosmetic upgrade है

 
cosine20 2024-01-08

तो फिर सिर्फ़ सौंदर्यात्मक अपग्रेड जैसा कुछ ज़्यादा ठीक लगता है...

 
ragingwind 2024-01-06

वाकई रोल मॉडल बनने लायक डेवलपर हैं।

 
GN⁺ 2024-01-06
Hacker News राय
  • "किनारों पर की गई बारीकियां ही असली जादू जैसी होती हैं"

    • यूज़र शुरुआत में ऐप की सूक्ष्म बारीकियों पर ध्यान न दें, लेकिन समय के साथ वे उन्हें खोज लेते हैं।
    • ऐसे सोच-समझकर जोड़े गए छोटे फीचर ही यूज़र को ऐप को सिर्फ पसंद करने से आगे बढ़ाकर उससे प्यार करने पर मजबूर करते हैं।
    • इससे यह एहसास होता है कि डेवलपर यूज़र को समझता है और प्रोडक्ट की अच्छी देखभाल की जा रही है।
    • Procreate ऐप का उदाहरण देते हुए, यूज़र इंटरफ़ेस (UI) को सरल रखते हुए भी उसमें खोजे जा सकने वाले कई छिपे फीचर होने की प्रशंसा की गई।
  • "iOS ऐप डेवलपर के रूप में 15 साल के अनुभव पर आधारित शानदार लेख"

    • native development पर टिके रहने, third-party dependencies से बचने, और Objective-C के उपयोग जैसे फैसलों को अच्छा बताया गया।
    • अब Swift पर आ गए हैं, लेकिन कभी-कभी Objective-C की खूबियां याद आती हैं।
    • ऐप डाउनलोड करके इस्तेमाल किया, और menu bar में दिए गए छोटे संकेत पसंद आए।
  • "Apple platform पर low/no-dependency development की संभावना"

    • AppKit/UIKit की समृद्धि और गहराई की वजह से third-party तत्वों के बिना भी व्यावहारिक रूप से polished ऐप बनाए जा सकते हैं।
    • Qt जैसे दूसरे framework से तुलना करते हुए भी Apple के framework को प्रतिस्पर्धी बताया गया।
  • "Swift की प्रगति और platform-embedded या binary optimization को लेकर अटकलें"

    • Swift 5 से ABI (Application Binary Interface) stability हासिल हुई।
    • 2014 से सिर्फ Swift इस्तेमाल करने का फैसला सही साबित हो रहा है।
    • SwiftUI के बारे में राय है कि उसे अभी UIKit/AppKit की जगह लेने लायक बनने में काफी आगे बढ़ना बाकी है।
  • "dependency चुनने को लेकर अविश्वास और सीखने के महत्व"

    • कोड लिखने से पहले external package और library जोड़ने की प्रवृत्ति पर नाराज़गी जताई गई।
    • Apple ecosystem की कमियों को सकारात्मक learning experience में बदलने वाले लेखक के दृष्टिकोण की सराहना की गई।
  • "AppKit और Mac development के लिए learning materials और recommendations की मांग"

    • Mac development की जानकारी ढूंढने में कठिनाई होने की बात कही गई।
    • Apple के नए documentation के अपर्याप्त होने, और पुराने docs के Swift के मुताबिक अपडेट न होने के कारण Xcode autocomplete पर निर्भर रहने की स्थिति बताई गई।
  • "detail पर ध्यान और craftsmanship के प्रति सम्मान"

    • लेखक की बारीकी से ध्यान देने की आदत और craftsmanship की बहुत सराहना की गई, और लेख को सुंदर व प्रेरक बताया गया।
  • "घुमाकर undo करने वाले gesture का दिलचस्प ज़िक्र"

    • इसे फ़िल्म "Doctor Strange" के नायक द्वारा समय को पीछे और आगे घुमाने वाले दृश्य की याद दिलाने वाला gesture बताया गया।
  • "ब्लॉग और ऐप के minimalism की प्रशंसा"

    • लेखक के बनाए ऐप का उपयोग करते समय मिलने वाली खुशी व्यक्त की गई, और कहा गया कि vim-motions या Neovim इस्तेमाल करते समय भी वैसी ही भावना आती है।
  • "Apple development ecosystem में SDK code तक पहुंच की कमी पर आश्चर्य"

    • इस बात पर हैरानी जताई गई कि assembly code सीधे देखना पड़ता है, और इस पर पुष्टि मांगी गई।