1 पॉइंट द्वारा GN⁺ 2025-03-17 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • 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++ काम मिला
  • सार्वजनिक सामग्री

1 टिप्पणियां

 
GN⁺ 2025-03-17
Hacker News की राय
  • “यूज़र के फ़ायदे के लिए पाँच नियम: कोई installer नहीं, कोई compressed file नहीं, कोई registry key नहीं, कोई extra runtime नहीं, सिर्फ़ एक executable file” — यह पंक्ति पढ़कर एक गर्मजोशी और खुशी जैसा अहसास हुआ
    मैं समझता हूँ कि registry क्यों मौजूद है, और आज Windows software ecosystem इस तरह क्यों चलता है, लेकिन पुराने दिनों की बहुत याद आती है जब ज़्यादातर desktop software सरल हुआ करते थे
    आजकल जहाँ संभव हो, मैं portable install इस्तेमाल करता हूँ, और चाहता हूँ कि यह तरीका ज़्यादा आम हो। settings पूरी तरह restore हो पाएँगी या नहीं—इस समय, झंझट और अनिश्चितता की वजह से मैं Windows को reinstall करने से सक्रिय रूप से बचता हूँ

    • installers बहुत-से उपयोगी काम भी करते हैं, और काफ़ी end users उन्हें सच में चाहते हैं। जैसे Start menu में shortcut जोड़ना ताकि उसे ढूँढा या search किया जा सके, file types को associate करना, और Windows programs list में register करना वगैरह
      पहले मुझे portable software बहुत पसंद था, लेकिन अब अगर दोनों विकल्प मिलें तो मैं उल्टा installer को प्राथमिकता देता हूँ। नहीं तो search में आने लायक बनाने के लिए मुझे खुद Start menu में जोड़ना पड़ता है
      लेकिन registry keys मुझे पसंद नहीं हैं। क्योंकि operating system reinstall करने पर वे अक्सर गायब हो जाती हैं। settings बस %appdata% में रखी जाएँ तो अच्छा होगा
    • इसलिए मुझे Go पसंद है। single executable होने से दूसरे लोगों के लिए tool इस्तेमाल करना आसान हो जाता है
      विकल्प के तौर पर 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 तक मिला हुआ है
    • registry का मूल उद्देश्य COM को GUID देखकर DLL file की location ढूँढने देना था। तब COM object instance बना सकता था
      आज भी HKEY_CLASSES_ROOT में उसके निशान देखे जा सकते हैं
      technically registry के बिना भी object बनाए जा सकते हैं। DLL load करने के बाद exported function call करके Factory object बनाएँ, और उस Factory object से instance बनाएँ। COM खुद भी यही करता है
    • ऐसा सरल और हल्का design मुझे भी बहुत अच्छा लगा
      लेख भी वाकई शानदार retrospective था। बस अच्छा होता अगर लेखक ने शुरुआत में जिन मुश्किलों की हल्की झलक दी, उन्हें और गहराई से कवर किया होता। फिर भी यह बस छोटी-सी नुक्ताचीनी है; लेख बहुत अच्छा है और काम सच में काफ़ी impressive लगता है
    • libraries को statically compile करके include किए बिना single-binary app बनाने का सबसे अच्छा रास्ता क्या है, यह मुझे ठीक से नहीं पता। licensing की वजह से आम तौर पर यह मुश्किल हो जाता है
  • Photoshop में सचमुच बहुत सारे features हैं, इसलिए सिर्फ़ कुछ image filters को recreation कहना मुश्किल है

    • लेकिन user interface को सही तरह match करना बेहद कठिन और बेहद अहम है
      2006 का GIMP भी features से भरा हुआ था, लेकिन Photoshop के interface की तुलना में वह वाकई भयानक था
    • फिर भी undergraduate project के हिसाब से यह बहुत, बहुत impressive है
    • मुझे नहीं लगता कि यहाँ “recreate” को बिल्कुल शाब्दिक अर्थ में लेने को कहा गया है
    • सही। मुझे लगता है Photopea सबसे नज़दीकी clone attempt है, लेकिन उसमें भी बहुत-से features missing हैं
    • अगर कहा जाए “मैंने एक basic image editor बनाया”, तो स्वाभाविक है कि वह इतना impressive नहीं लगेगा। लेख की शुरुआत देखकर यह चौंकाने वाला भी नहीं है

      As I’m getting older I look back on all the things I’ve done as a creative developer, and I see so many cool projects!
      क्या विनम्रता है…

  • इस शानदार 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 था—मेरी अपनी भी शामिल है

    • मुझे नहीं लगता कि आज भी बहुत अलग होगा। मेरी जानकारी में लक्ष्य field को आगे बढ़ाना नहीं, बल्कि bachelor's या master's degree देने वालों को यह साबित करना है कि आप thesis-format output बना सकते हैं
      कुछ standout theses होंगी, लेकिन ज़्यादातर शायद काफ़ी boring होंगी
  • इसलिए मुझे Windows पसंद है। किसी खास niche को अच्छी तरह भरने वाले छोटे, open-source software की बहुत बड़ी संख्या है
    पहले मैं sourceforge.net और freshmeat—शायद यही नाम था—जैसी जगहों पर घूम-घूमकर उन्हें ढूँढता था

  • Phonegap में काम करने वाले एक दोस्त को लगभग 10 साल पहले Adobe ने acquire किया था, और उसने मज़े के लिए तुरंत Photoshop को JavaScript में port कर दिया

    • downvotes पर शिकायत करने की कोशिश नहीं है, लेकिन यह काफ़ी अजीब है कि यह कहानी Hacker News को नापसंद आने वाली लगती है
      मुझे लगा था कि software engineer के internal hacking project की कहानी दिलचस्प होगी, पर खैर, क्या किया जा सकता है
  • कुछ चीज़ें लोग बना लेते हैं लेकिन दुनिया को बताते नहीं। अच्छा है कि यह GitHub पर है, और सच में impressive है