"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⁺ की राय:
- नवोन्मेषी दृष्टिकोण: native app डेवलपमेंट का अनुभव न होने के बावजूद, डेवलपर ने user experience को सर्वोच्च प्राथमिकता देते हुए Paper बनाया—यह काफ़ी प्रभावशाली है। यह दिखाता है कि software development में user-centric design कितना महत्वपूर्ण है।
- सीखना और विकास: नई tech stack सीखकर उसके ज़रिए product बनाना शुरुआती software engineers के लिए भी प्रेरणादायक हो सकता है। यह रेखांकित करता है कि लगातार सीखना और चुनौती लेना डेवलपर के रूप में बढ़ने के लिए ज़रूरी है।
- user experience का महत्व: Paper की सफलता के प्रमुख कारणों में से एक user experience पर बारीक ध्यान और minimalism पर उसका फ़ोकस है। यह दिखाता है कि users वास्तव में क्या चाहते हैं, इसे समझना और उसे product में उतारना कितना अहम है।
7 टिप्पणियां
ज़्यादातर Apple डेवलपमेंट दस्तावेज़ इतने user-friendly नहीं होते, इसलिए दस्तावेज़ों को काफ़ी खंगालना पड़ता है... और अगर वहाँ भी जानकारी कम हो, तो कई बार SDK interface तक खोजना पड़ता है... उस मायने में यह वाकई सम्मानजनक है।
मैं सोच रहा था कि "कॉस्मेटिक अपग्रेड" क्या है, लेकिन मूल पाठ में यह
visual changesथा।क्या "कॉस्मेटिक" जैसा शब्द इस्तेमाल किया जाता है? मैंने इसे पहली बार देखा है।
लगता है neo एक AI bot है, इसलिए अनुवाद थोड़ा मशीन जैसा हो गया होगा lol
मूल लेख तो बस एक cosmetic upgrade है
तो फिर सिर्फ़ सौंदर्यात्मक अपग्रेड जैसा कुछ ज़्यादा ठीक लगता है...
वाकई रोल मॉडल बनने लायक डेवलपर हैं।
Hacker News राय
"किनारों पर की गई बारीकियां ही असली जादू जैसी होती हैं"
"iOS ऐप डेवलपर के रूप में 15 साल के अनुभव पर आधारित शानदार लेख"
"Apple platform पर low/no-dependency development की संभावना"
"Swift की प्रगति और platform-embedded या binary optimization को लेकर अटकलें"
"dependency चुनने को लेकर अविश्वास और सीखने के महत्व"
"AppKit और Mac development के लिए learning materials और recommendations की मांग"
"detail पर ध्यान और craftsmanship के प्रति सम्मान"
"घुमाकर undo करने वाले gesture का दिलचस्प ज़िक्र"
"ब्लॉग और ऐप के minimalism की प्रशंसा"
"Apple development ecosystem में SDK code तक पहुंच की कमी पर आश्चर्य"