- डिजिटल image editing का प्रतिनिधि टूल बन चुका Photoshop 1987 के एक personal program से शुरू हुआ, Adobe के वितरण के बाद 1990 में एक commercial product के रूप में स्थापित हुआ
- Computer History Museum ने Adobe Systems Inc. की अनुमति से Photoshop 1.0.1 source code को non-commercial उपयोग के लिए सार्वजनिक किया
- सार्वजनिक किए गए कोड में 179 फाइलें हैं, कुल लगभग 128,000 lines हैं, और इनमें Pascal तथा 68000 assembly language का सबसे बड़ा हिस्सा है
- Apple से licensed MacApp application library इस public release में शामिल नहीं है, और पुनर्वितरण व commercial उपयोग पर भी प्रतिबंध हैं
- Grady Booch के अनुसार शुरुआती कोड में well-structured design और वह बुनियादी संरचना दिखाई देती है जो आधुनिक Photoshop तक जारी रही
Photoshop की शुरुआत और commercialization
- Thomas Knoll, University of Michigan में computer vision पर शोध कर रहे एक PhD छात्र थे, और उन्होंने 1987 में डिजिटल images को दिखाने और संशोधित करने वाला एक प्रोग्राम लिखा
- Industrial Light & Magic में काम कर रहे John Knoll ने देखा कि यह प्रोग्राम photo editing में उपयोगी हो सकता है, लेकिन शुरुआत से इसे product बनाने का इरादा नहीं था
- इसका पहला नाम Display था, और जैसे-जैसे इसकी capabilities अधिक sophisticated होती गईं, 1988 की गर्मियों तक यह माना गया कि यह commercial product बन सकता है
- दोनों भाइयों ने इसका नाम Photoshop रखा, और slide scanner निर्माता Barneyscan ने version 0.87 की लगभग 200 copies को Barneyscan XP नाम से bundle किया
Adobe और Photoshop 1.0 का लॉन्च
- Adobe ने art director Russell Brown के सुझाव पर Photoshop के बेहतर version को distribute करने के लिए license खरीदने का फैसला किया
- यह contract April 1989 में पूरा हुआ, और Photoshop 1.0 की shipment 1990 की शुरुआत से शुरू हुई
- इसके बाद 10 वर्षों में Photoshop की 30 लाख से अधिक copies बिकीं
- “Photoshop” इतना व्यापक हो गया कि Merriam-Webster online dictionary में यह Photoshop या किसी अन्य image editing software से digital image बदलने के अर्थ में एक verb के रूप में इस्तेमाल होता है
सार्वजनिक किया गया Photoshop 1.0.1 source code
- Computer History Museum ने Adobe Systems Inc. की अनुमति से 1990 version के Photoshop 1.0.1 source code को non-commercial उपयोग के लिए सार्वजनिक किया
- अधिकांश कोड शामिल है, लेकिन Apple से licensed MacApp application library इसमें नहीं है
- compressed folder में 179 files हैं और इसमें लगभग 128,000 lines का code शामिल है
- लगभग 75% Pascal है
- लगभग 15% Motorola 68000 assembly language है
- बाकी विभिन्न प्रकार के data हैं
- शुरुआती Photoshop, Apple Macintosh के लिए मुख्यतः Pascal में लिखा गया था, और जहाँ execution efficiency महत्वपूर्ण थी वहाँ Motorola 68000 के लिए machine code इस्तेमाल किया गया
- Thomas Knoll ने बताया कि version 1 में वे अकेले engineer थे, और version 2 में engineers की संख्या दो थी
- Thomas ने मुख्य application program संभाला, जबकि John ने कई image processing plugins लिखे
डाउनलोड और license शर्तें
- code डाउनलोड करने के लिए license शर्तों से सहमत होना आवश्यक है
- license केवल non-commercial उपयोग की अनुमति देता है, और web पर कहीं और उसकी copies पोस्ट करके किसी तीसरे पक्ष को फिर से license देने का अधिकार नहीं देता
- संबंधित सामग्री:
Grady Booch की नजर में code संरचना
- Grady Booch ने Photoshop 1.0 source code को खोलकर देखने के अनुभव की तुलना Tutankhamun की कब्र को पहली बार खोलने वाले Howard Carter से की
- code को interface और abstraction के लगातार अलगाव वाला एक बहुत अच्छी तरह structured system माना गया
- हर interface और implementation के संयोजन के लिए आम तौर पर एक प्रमुख type है, जिससे abstraction को componentize करने वाले design decisions को समझना आसान हो जाता है
- consistent naming, उपयुक्त रूप से विभाजित methods और सरल implementation की वजह से system structure को समझना अपेक्षाकृत आसान है
- Photoshop 1.0 में वह बुनियादी संरचना दिखाई देती है जो आधुनिक implementation में भी अधिक विकसित रूप में बनी हुई है
- tile और filter को प्रतिनिधि संरचनाओं के रूप में उल्लेख किया गया है
- display buffer या main memory से कहीं बड़े images को संभालने के लिए virtual memory abstraction शामिल है
- Photoshop 1.0 का आकार 100,000 lines से थोड़ा अधिक था, लेकिन आधुनिक versions 1 करोड़ lines से अधिक हैं
- तब भी और अब भी code का बड़ा हिस्सा input/output और Photoshop द्वारा संभाले जाने वाले विभिन्न file formats से संबंधित है
- version 1.0 source code में comments बहुत कम हैं, और अधिकांश comments assembly language के टुकड़ों के साथ जुड़े हुए हैं
- Booch का मानना है कि code इतना readable है कि comments की कमी समस्या नहीं है, बल्कि comments शायद बाधा बनते
- code में उस दौर के कुछ निशान भी बचे हुए हैं
- Andy Herzfield के Thunderscan scanner software को process करने वाला code
- शुरुआती TARGA raster graphics file format support
- Barneyscan के कुछ references
Photoshop 1.0 की विशेषताएँ और सीमाएँ
- शुरुआती Photoshop screen पर उपलब्ध tools दिखते थे
- brush में केवल color ही नहीं, बल्कि size और texture भी चुना जा सकता था
- sophisticated selection tools और विभिन्न image filters उपलब्ध थे
- एक महत्वपूर्ण अनुपस्थित feature images को कई layers में बाँटने की क्षमता थी, जिसे 1994 के version 3 में जोड़ा गया
- preferences page पर कुछ features को customize किया जा सकता था
- font, font size और font style के विकल्प सीमित थे
- text को dialog box में दर्ज करके image के भीतर ले जाया जाता था
1 टिप्पणियां
Hacker News की राय
2000 के दशक में Adobe में काम करते हुए Photoshop, Illustrator, PostScript और दूसरे apps के source code archive को सुरक्षित रखने की कोशिश की थी
Thomas Knoll का original Mac floppy backup बचा हुआ था, इसलिए Mac Plus लाकर serial cable और Kermit से files को laptop पर ट्रांसफर किया गया, और सबसे पहला version 6 जुलाई 1988 की तारीख वाला 0.54 था
floppy की files कई पुराने compressed archive formats में थीं, लेकिन ज़्यादातर पढ़ी जा सकती थीं, और जो भी code मिला उसे एक खास Perforce server में रखा गया
अफसोस की बात है कि Illustrator का सबसे शुरुआती backup एक खराब single external disk drive में था
उस समय interface interaction को लेकर feedback था कि वह बहुत अच्छा नहीं था, और अब कहना मुश्किल है, लेकिन FreeHand ने जल्दी लोकप्रियता हासिल की और बाद में गायब हो गया
इस source code से app build करने के लिए क्या-क्या चाहिए, इस पर अच्छी तरह लिखा गया एक लेख है: http://basalgangster.macgui.com/RetroMacComputing/The_Long_V...
इस तरह का ज्ञान रखने वाले लोग बहुत कम हैं
RSS मेरी तरफ़ तो ठीक काम करता है, लेकिन Miniflux में
This website is too slow and the request timed out: Get "http://basalgangster.macgui.com/RetroMacComputing/The_Long_View/…;: dial tcp 209.182.219.107:80: i/o timeoutदिखता हैयाद है कि 90 के दशक के मध्य में Adobe के साथ source code exchange करने गया था
PhotoShop, MacApp पर आधारित था, और Adobe के पास Windows पर चलने वाली एक layer थी
हमने बन रहे SQL engine का आदान-प्रदान किया था, और जो code मैं घर लाया उसमें निश्चित रूप से PhotoShop के कुछ हिस्से थे, हालांकि बहुत ज़्यादा नहीं, बस कुछ अजीब color space calculation code था जिसे मैंने नज़रअंदाज़ कर दिया था
source को देखकर जानना चाहता हूँ कि क्या MacApp के निशान अभी भी बचे हैं
हो सकता है 90 के दशक के मध्य के बाद सब बदल गया हो
ऐसे उदाहरण कम सुने हैं, इसलिए सोच रहा हूँ कि क्या ऐसी और code exchange stories हैं
जैसा उम्मीद थी, वह काफ़ी bloated software था
Think Class Library ने बहुत से developers को बचाया, और Greg Dow शायद आज भी Adobe में काम कर रहे हों
अब सोचता हूँ तो PowerPlant, TCL से भी बेहतर था: https://en.wikipedia.org/wiki/PowerPlant
यह चौंकाने वाला है कि user experience आज भी ज़्यादातर वैसा ही है
शुरुआती engineers की vision कमाल की थी
लेकिन आजकल app खोलते ही चिढ़ होने लगती है, और desktop पर सच में तेज़ महसूस होने का इकलौता समय वह छोटा दौर था जब MacBook Pro M1 नया-नया आया था और Adobe Photoshop का Silicon beta उपलब्ध था
वह दौर खत्म हो गया और फिर से सब धीमा लगने लगा
वह तकलीफ़ सचमुच असली थी, और उस समय ठीक से काम करने के लिए 96MB RAM वाला SGI Indigo बेहतर था
90 के दशक के आखिर में 9500 सबसे सही बैठता था, और तब भी पूरी 1GB RAM चाहिए होती थी
मैं अभी भी 2022 के आसपास वाले, M1 support देने वाले पहले cracked version का इस्तेमाल कर रहा हूँ, और यह आज भी 2 साल पहले जितना ही तेज़ है
Scott Belsky अब investor बन चुके हैं, और उन्होंने लिखा है कि कैसे BeHance और Adobe को rental economy की ओर धकेला गया
किताब अच्छी है, लेकिन यह घटती हुई executive class के लिए self-help book जैसी भी लगती है
फिर भी art और image work के लिए open source ecosystem पहले से बेहतर है, लेकिन हक़ीक़त यह है कि community support के बिना टक्कर न दे पाने वाले professional tools इतने महंगे हो गए हैं कि लगभग सभी बाहर हो गए
2013 की पोस्ट में 1990 का Adobe Photoshop 1.x, कमाल
मैंने source code देखा, लेकिन अच्छा होता अगर मैं समझ पाता कि उस code को सुंदर और elegant क्या बनाता है
Rust सीखते समय मुझे भी ऐसा ही लगा था कि एक साधारण Snake game में भी code structure तय करते समय बहुत ज़्यादा विकल्प होने से काम पेचीदा हो जाता है
“space” पर काम करने वाले functions और UI को कैसे बनाया जाए, यह सोचते हुए मुझे Photoshop और 3ds Max याद आए, और यह repository मिलना सच में अच्छा था, लेकिन मैं बस इसे समझ नहीं पा रहा हूँ
सीखने के नज़रिए से यह दिलचस्प है और मैं design patterns में अपनी समझ बढ़ाना चाहता हूँ, इसलिए अगर code structure सीखने के लिए कोई अच्छा resource हो तो बताइए
पहले मैं abstraction, design patterns और structure को लेकर बहुत परेशान रहता था
लेकिन फिर मुझे समझ आया कि “असल” imperative code पर काम करते हुए, classes को कुछ समय के लिए भूलकर, और सारा code एक ही file में रखकर, code खुद अपना structure दिखाने लगता है
इसका मतलब यह नहीं कि यही एकमात्र रास्ता है, लेकिन मुझे लगता है कि object-oriented तरीका विकल्पों में उलझाकर रुकावट बन सकता है
MacApp app की बुनियादी संरचना document-केंद्रित होती है, और MacApp framework events को handlers तक dispatch करता है
MacApp apps पर काम किए हुए काफ़ी समय हो गया है, लेकिन जहाँ तक याद है, बुनियादी structure ऐसा ही था
लगता है कि MacApp खुद इसमें शामिल नहीं है, लेकिन संभव है कि वह कहीं मौजूद हो, और Adobe ने एक समय सब कुछ फिर से न लिखना पड़े इसलिए MacApp को Windows पर port भी किया था
बाद में किसी समय इसे उनके अपने abstraction layer से बदल दिया गया होगा
John Knoll, Star Wars prequel trilogy के visual effects supervisor थे, और बाद में उन्होंने Rogue One पर भी काम किया
prequels के making-of documentaries आज भी देखने लायक हैं: https://youtu.be/da8s9m4zEpo?si=5y5gHUMxztwVzMny
https://www.imdb.com/title/tt19896784/?ref_=nv_sr_srsg_0_tt_...
उन्होंने radiation detection field की एक क्लासिक textbook लिखी थी
इसमें एक हिस्सा है: “उन्होंने शायद कभी नहीं सोचा होगा कि dictionary में एक word जोड़ देंगे”, लेकिन Adobe इसे रोकना चाहता है क्योंकि इससे trademark genericization हो सकती है
उनके trademark guidelines में ऐसे उदाहरण हैं: “हमेशा capital letters का इस्तेमाल करें और trademark को सही रूप में इस्तेमाल करें. सही उदाहरण: The image was enhanced with Adobe® Photoshop® Elements software. गलत उदाहरण: The image was photoshopped.”
[1]: https://en.wikipedia.org/wiki/Generic_trademark
[2]: https://www.adobe.com/legal/permissions/trademarks.html
मुझे याद है कि Xerox भी इससे जुड़ा एक बड़ा मुकदमा हार गया था
[1] उदाहरण: https://www.consumerreports.org/consumerist/15-product-trade...
https://www.youtube.com/watch?v=rRi8LptvFZY
लंबी अवधि में शायद इससे भी फ़र्क नहीं पड़ेगा, लेकिन अब मुझे कम-से-कम यह साफ़ पता है कि Velcro एक trademark name है
मुझे Adobe से पहले वाले Photoshop को Ann Arbor के एक hospital में देखने की याद है
मुझे वह सचमुच कमाल का लगा था
एक बात और जोड़ूँ तो, उस समय इस्तेमाल किया गया MacApp version Apple Pascal app framework था, और लगभग तय है कि वह beta में था
Tom Knoll ने contractor के रूप में हमारी company में जो code लिखा था, उसमें B-spline algorithm का इस्तेमाल curve editor की बुनियाद के रूप में किया गया था
सॉफ़्टवेयर के पुराने versions का source code सार्वजनिक करने वाली कंपनियों की सराहना होनी चाहिए
उम्मीद है कि आगे और भी ज़्यादा कंपनियाँ ऐसा करेंगी
बस चिंता यह है कि ऐसे source code का काफ़ी हिस्सा समय और लगातार कई बार हुए अधिग्रहणों की प्रक्रिया में कहीं खो न गया हो
version control का व्यापक उपयोग भी तुलनात्मक रूप से हाल की बात है, इसलिए अगर वह बचा भी हो तो उसके किसी मनमाने tape backup, floppy disk, या binder में रखे printout के रूप में होने की संभावना ज़्यादा है
“हम source code के रूप में software को इकट्ठा और संरक्षित करते हैं, क्योंकि software हमारे तकनीकी और वैज्ञानिक ज्ञान को समेटे हुए है और मानवता उसके खो जाने का जोखिम नहीं उठा सकती
software हमारी सांस्कृतिक विरासत का एक क़ीमती हिस्सा है
हम अपने संग्रह में मौजूद सभी software का संरक्षण करते हैं और उन्हें सुलभ बनाते हैं
क्योंकि केवल साझा करने से ही बहुत लंबे समय तक संरक्षण की गारंटी दी जा सकती है”
इसे मेरे मित्र Roberto Di Cosmo ने स्थापित किया था
इसमें समय से पहले लीक होने पर दंड देने वाला एक वास्तविक मानक कानूनी contract भी शामिल हो
यह काफ़ी हद तक automated और कम मेहनत वाली service हो सकती है
कंपनी अपने git repository को किसी संरक्षण संस्था द्वारा प्रबंधित private server पर mirror कर सकती है, और संरक्षण संस्था उसके अनुरूप एक खाली public repository बना सकती है
इसके बाद हर घंटे एक agent private repository को scan करे और सिर्फ़ उन commits को public repository में sync करे जिनका commit time 10 साल से ज़्यादा पुराना हो
refs भी साथ में sync किए जाएँ, लेकिन उन्हें इस तरह rewrite किया जाए जैसे
git filter-branchसे 10 साल से नए सभी commits हटा दिए गए हों, और filtering के बाद जो refs खाली रह जाएँ उन्हें छोड़ दिया जाए