- 2006 की गर्मियों में व्यक्तिगत कॉमिक रीडर Fiew बनाने का अनुभव शुरुआती आधार बना, और उसी के बाद C++ और Windows API का उपयोग करके Photoshop जैसे इमेज एडिटर Fedit को डिग्री थीसिस प्रोजेक्ट के रूप में बनाया गया
- Fedit इंस्टॉलर, compressed file, registry key, या अतिरिक्त runtime के बिना single executable file के रूप में चलता था, इसलिए सीमित permissions वाले PC या USB drive पर भी इसे सीधे चलाया जा सकता था
- इंटरफ़ेस को classic Photoshop के workflow जैसा बनाने के लिए डिज़ाइन किया गया था, और इसमें floating tool windows, color picker, layer management, undo history, image filters, और custom pixel movement filters शामिल थे
- सबसे बड़ी चुनौती user interface को फिर से बनाना थी, और tool settings panel के snap/unsnap व्यवहार तथा color और tool selector को लागू करने में बहुत समय लगा
- इस प्रोजेक्ट के परिणामस्वरूप थीसिस सफल हुई और Engineering में bachelor degree मिली, और बाद में इसने GoldenLine के CTO पर प्रभाव छोड़ा, जिससे bulk image upload के लिए WinAPI app बनाने वाली C++ नौकरी तक रास्ता बना
कॉमिक रीडर Fiew से इमेज एडिटर Fedit तक
- 2006 की शुरुआती गर्मियों में, उस समय के मौजूदा image reader apps पसंद न आने से इसकी शुरुआत हुई
- खासकर यह बात बाधा बनती थी कि सिर्फ mouse से पढ़ना नियंत्रित नहीं किया जा सकता था और बार-बार keyboard तक हाथ बढ़ाना पड़ता था
- यह उस समय की बात है जब विश्वविद्यालय में C++/Windows API कोर्स पूरा ही किया था, और गर्मी की छुट्टियों के दौरान निजी तौर पर एक आदर्श कॉमिक रीडर विकसित किया गया
- इस कॉिक रीडर का नाम Fiew था
- 2006 की शुरुआती शरद ऋतु में डिग्री थीसिस का विषय चुनना था, और image viewer development के सुचारु अनुभव के कारण लगा कि image editor भी बनाया जा सकता है
- उस समय Adobe Photoshop का काफी उपयोग किया जा रहा था, इसलिए लक्ष्य Photoshop जैसा editor बनाना था
Fedit का implementation और distribution constraints
- Fedit, C++ में लिखा गया Advanced Image Editor है, जो Windows API और GDI+ graphics library का उपयोग करता है
- यूज़र के लिए अनुकूल distribution format बनाए रखने हेतु पाँच नियम अपनाए गए
- कोई installer नहीं
- कोई compressed file नहीं
- कोई registry key नहीं
- कोई अतिरिक्त runtime नहीं
- single executable file
- परिणामस्वरूप यह बिना installation के तुरंत चलने वाला, सीमित अधिकारों वाले system या USB drive पर भी उपयोग योग्य, और कम resources इस्तेमाल करने वाला प्रोग्राम बना
Photoshop के करीब इंटरफ़ेस और फीचर्स
- इंटरफ़ेस को classic Photoshop जैसा दिखाने के लिए सावधानी से बनाया गया, और अक्सर उपयोग होने वाले फीचर्स शामिल किए गए
- मुख्य फीचर्स इस प्रकार थे
- स्वतंत्र रूप से तैरती हुई tool windows
- color picker
- आसान layer management
- step-by-step undo की जा सकने वाली history
- कई image filters
- सीधे pixel movement filter को encode करने के लिए matrix interface
- पिछले प्रोजेक्ट Fiew से लाया गया large-scale image library viewer भी इसमें शामिल था
- इससे बड़ी मात्रा में तस्वीरों को तेज़ी और आसानी से scroll किया जा सकता था
विकास प्रक्रिया, जिसमें खुद debugging करनी पड़ी
- MSDN और Experts Exchange का काफी सहारा लिया गया, लेकिन समस्याएँ इतनी विशिष्ट थीं कि अधिकांश मामलों में खुद analysis और debugging करनी पड़ी
- bachelor thesis की deadline पूरी करनी थी, इसलिए आखिरी दो महीनों में रोज़ 14 घंटे काम किया गया
- सबसे कठिन हिस्सा user interface था
- इच्छा यह थी कि workflow Photoshop के जितना संभव हो उतना करीब हो
- tool settings panel को स्वतंत्र रूप से snap और unsnap करने का व्यवहार खास तौर पर मुश्किल था
- color picker और tool selector को फिर से बनाना भी आसान नहीं था
- प्रोजेक्ट खत्म होने के करीब काफी थकान हो गई थी, और WinAPI के प्रति एक तरह की नापसंदगी भी पैदा हो गई थी
थीसिस के बाद के परिणाम और सार्वजनिक सामग्री
- थीसिस सफल रही, और Warsaw University of Technology से Bachelor of Science in Engineering की डिग्री मिली
- Fedit को ऑनलाइन कुछ सकारात्मक reviews मिले, लेकिन इसका सक्रिय रूप से प्रचार नहीं किया गया
- बाद में Fiew और Fedit ने GoldenLine के CTO पर प्रभाव डाला, और इसी से Flickr clone के लिए bulk image upload हेतु उच्च-दक्षता वाले WinAPI app बनाने का C++ काम मिला
- सार्वजनिक सामग्री
- Fedit और Fiew source code: GitHub पर उपलब्ध
- थीसिस दस्तावेज़ PDF: Fedit थीसिस दस्तावेज़
- मूल app website का Web Archive: उस समय की वेबसाइट आर्काइव
- Hacker News discussion: संबंधित चर्चा पेज
1 टिप्पणियां
Hacker News की राय
“यूज़र के फ़ायदे के लिए पाँच नियम: कोई installer नहीं, कोई compressed file नहीं, कोई registry key नहीं, कोई extra runtime नहीं, सिर्फ़ एक executable file” — यह पंक्ति पढ़कर एक गर्मजोशी और खुशी जैसा अहसास हुआ
मैं समझता हूँ कि registry क्यों मौजूद है, और आज Windows software ecosystem इस तरह क्यों चलता है, लेकिन पुराने दिनों की बहुत याद आती है जब ज़्यादातर desktop software सरल हुआ करते थे
आजकल जहाँ संभव हो, मैं portable install इस्तेमाल करता हूँ, और चाहता हूँ कि यह तरीका ज़्यादा आम हो। settings पूरी तरह restore हो पाएँगी या नहीं—इस समय, झंझट और अनिश्चितता की वजह से मैं Windows को reinstall करने से सक्रिय रूप से बचता हूँ
पहले मुझे portable software बहुत पसंद था, लेकिन अब अगर दोनों विकल्प मिलें तो मैं उल्टा installer को प्राथमिकता देता हूँ। नहीं तो search में आने लायक बनाने के लिए मुझे खुद Start menu में जोड़ना पड़ता है
लेकिन registry keys मुझे पसंद नहीं हैं। क्योंकि operating system reinstall करने पर वे अक्सर गायब हो जाती हैं। settings बस %appdata% में रखी जाएँ तो अच्छा होगा
विकल्प के तौर पर NSIS से single executable package बनाकर run करने से पहले सब कुछ temporary directory में extract करने का तरीका भी इस्तेमाल करता हूँ
मेरे हिसाब से Windows registry consistency के बिना और खराब design वाला कबाड़ ज़्यादा लगती है। तुलना करें तो Gnome की registry अच्छी तरह designed है। key descriptions, सीमित value choices, default values दिखाना—ये सब अच्छे user interface design के उदाहरण हैं
Windows group policy और registry mapping को ही देख लें, वही logical structure हर जगह अलग-अलग है, और keys में double negation तक मिला हुआ है
आज भी HKEY_CLASSES_ROOT में उसके निशान देखे जा सकते हैं
technically registry के बिना भी object बनाए जा सकते हैं। DLL load करने के बाद exported function call करके Factory object बनाएँ, और उस Factory object से instance बनाएँ। COM खुद भी यही करता है
लेख भी वाकई शानदार retrospective था। बस अच्छा होता अगर लेखक ने शुरुआत में जिन मुश्किलों की हल्की झलक दी, उन्हें और गहराई से कवर किया होता। फिर भी यह बस छोटी-सी नुक्ताचीनी है; लेख बहुत अच्छा है और काम सच में काफ़ी impressive लगता है
Photoshop में सचमुच बहुत सारे features हैं, इसलिए सिर्फ़ कुछ image filters को recreation कहना मुश्किल है
2006 का GIMP भी features से भरा हुआ था, लेकिन Photoshop के interface की तुलना में वह वाकई भयानक था
इस शानदार project का direct link भी होना चाहिए
https://github.com/f055/fedit-image-editor
“मैंने promotion नहीं किया। कुछ महीनों बाद मुझे C++ job मिल गई। आखिरकार वह सारी मेहनत रंग लाई” — यह हिस्सा दिलचस्प है
हम सहज रूप से जानते हैं कि मेहनत का इनाम मिलना चाहिए, लेकिन अफ़सोस है कि open-source developers अक्सर खासकर production में व्यापक रूप से इस्तेमाल होने वाले code पर बहुत मेहनत लगाते हैं और फिर भी उन्हें वास्तविक reward बहुत कम मिलता है
इसलिए शायद लोग reputation reward ढूँढते हैं, NPM “इस library के author को donate करने के बारे में क्या ख़याल है” जैसी सुविधाएँ जोड़ता है, और GitHub ने Patreon integration बनाया
हमें आज से बेहतर model चाहिए, जो भोले लेकिन ईमानदार युवा creators का फायदा न उठाए
2000s की शुरुआत में pixel32, और बाद में Pixel Studio Pro नाम का project था। वह सच में अच्छा दिखता था और early access के रूप में बेचा गया था
लेकिन अंततः वह vaporware बन गया, पैसे देने वाले लोग बहुत नाराज़ हुए, और creator तेज़ी से hero से villain बन गया
https://discuss.haiku-os.org/t/pixel-studio-pro-in-past-call...
लेखक ने कहा कि वे Warsaw University of Technology से graduate हुए हैं, और यहाँ इसे हमेशा काफ़ी अच्छे schools में से एक माना जाता था
इससे अलग, यह भी ध्यान देने लायक है कि उस समय की degree thesis आज से कितनी अलग थी। हाल ही में मैंने एक दूसरे बड़े शहर की technical university में thesis लिखी, और हमारी engineering bachelor's theses में से 90% का level काफ़ी low था—मेरी अपनी भी शामिल है
कुछ standout theses होंगी, लेकिन ज़्यादातर शायद काफ़ी boring होंगी
इसलिए मुझे Windows पसंद है। किसी खास niche को अच्छी तरह भरने वाले छोटे, open-source software की बहुत बड़ी संख्या है
पहले मैं sourceforge.net और freshmeat—शायद यही नाम था—जैसी जगहों पर घूम-घूमकर उन्हें ढूँढता था
Phonegap में काम करने वाले एक दोस्त को लगभग 10 साल पहले Adobe ने acquire किया था, और उसने मज़े के लिए तुरंत Photoshop को JavaScript में port कर दिया
मुझे लगा था कि software engineer के internal hacking project की कहानी दिलचस्प होगी, पर खैर, क्या किया जा सकता है
कुछ चीज़ें लोग बना लेते हैं लेकिन दुनिया को बताते नहीं। अच्छा है कि यह GitHub पर है, और सच में impressive है