2013'te yayımlanan Adobe Photoshop 1.0.1 kaynak kodu
(computerhistory.org)- Dijital görüntü düzenlemenin simge aracı haline gelen Photoshop, 1987'de kişisel bir program olarak başlayıp Adobe dağıtımıyla 1990'da ticari bir ürün olarak yerini aldı
- Computer History Museum, Adobe Systems Inc. izniyle Photoshop 1.0.1 kaynak kodunu ticari olmayan kullanım için yayımladı
- Yayımlanan kod 179 dosyadan oluşuyor, yaklaşık 128.000 satır büyüklüğünde ve büyük bölümü Pascal ile 68000 assembly dilinden oluşuyor
- Apple'dan lisanslanan MacApp uygulama kütüphanesi yayıma dahil değil ve yeniden dağıtım ile ticari kullanım konusunda da kısıtlamalar var
- Grady Booch, erken dönem koddaki iyi yapılandırılmış tasarımın ve modern Photoshop'a uzanan temel mimarinin görülebildiğini söylüyor
Photoshop'un başlangıcı ve ticarileşmesi
- Thomas Knoll, University of Michigan'da bilgisayarlı görü üzerine çalışan bir doktora öğrencisiydi ve 1987'de dijital görüntüleri göstermek ve düzenlemek için bir program yazdı
- Industrial Light & Magic'te çalışan John Knoll, bu programın fotoğraf düzenleme için yararlı olabileceğini düşündü, ancak baştan itibaren onu bir ürün haline getirme niyeti yoktu
- İlk adı Display idi; özellikleri giderek gelişince 1988 yazında bunun ticari bir ürün olabileceğine karar verildi
- İki kardeş adı Photoshop olarak değiştirdi ve slayt tarayıcı üreticisi Barneyscan, yaklaşık 200 adet 0.87 sürümünü Barneyscan XP adıyla paketleyerek sundu
Adobe ve Photoshop 1.0'ın çıkışı
- Adobe, sanat yönetmeni Russell Brown'ın önerisiyle Photoshop'un geliştirilmiş bir sürümünü dağıtmak için lisans satın almaya karar verdi
- Anlaşma Nisan 1989'da tamamlandı ve Photoshop 1.0 1990'ın başından itibaren sevk edilmeye başlandı
- Sonraki 10 yıl içinde Photoshop 3 milyondan fazla sattı
- “Photoshop”, Merriam-Webster çevrimiçi sözlüğünde dijital bir görüntüyü Photoshop veya başka bir görüntü düzenleme yazılımıyla değiştirmek anlamında fiil olarak kullanılacak kadar yaygınlaştı
Yayımlanan Photoshop 1.0.1 kaynak kodu
- Computer History Museum, Adobe Systems Inc. izniyle 1990 sürümü Photoshop 1.0.1 kaynak kodunu ticari olmayan kullanım için yayımladı
- Kodun büyük kısmı dahil edilse de Apple'dan lisanslanan MacApp uygulama kütüphanesi hariç tutuldu
- Sıkıştırılmış klasörde 179 dosya bulunuyor ve toplamda yaklaşık 128.000 satır kod içeriyor
- Yaklaşık %75'i Pascal
- Yaklaşık %15'i Motorola 68000 assembly
- Kalanı çeşitli veri türlerinden oluşuyor
- İlk Photoshop, Apple Macintosh için ağırlıklı olarak Pascal ile yazıldı; çalışma verimliliğinin kritik olduğu bölümlerde Motorola 68000 için makine dili kullanıldı
- Thomas Knoll, sürüm 1'de tek mühendis olduğunu, sürüm 2'de ise mühendis sayısının ikiye çıktığını belirtti
- Thomas temel uygulama programını üstlenirken John çeşitli görüntü işleme plugin'leri yazdı
İndirme ve lisans koşulları
- Kodu indirmek için lisans koşullarını kabul etmek gerekiyor
- Lisans yalnızca ticari olmayan kullanıma izin veriyor ve kopyaların web'in başka yerlerinde yayımlanarak üçüncü taraflara yeniden lisanslanması hakkını vermiyor
- İlgili materyaller:
Grady Booch'un gördüğü kod yapısı
- Grady Booch, Photoshop 1.0 kaynak kodunu açma deneyimini, Howard Carter'ın Tutankhamun'un mezarını ilk açmasına benzetiyor
- Kod, arayüz ve soyutlamaların tutarlı biçimde ayrıldığı son derece iyi yapılandırılmış bir sistem olarak değerlendiriliyor
- Her arayüz ve uygulama birleşimi için genellikle tek bir ana tip bulunuyor ve soyutlamaları bileşenlere ayıran tasarım kararlarını takip etmek kolay
- Tutarlı adlandırma, uygun şekilde bölünmüş metotlar ve sade uygulamalar sayesinde sistem yapısını anlamak görece kolay
- Photoshop 1.0'da, modern uygulamada da daha gelişmiş biçimde yaşamayı sürdüren temel yapılar görülüyor
- Tile ve filter en öne çıkan yapılar arasında anılıyor
- Ekran tamponu ya da ana bellekten çok daha büyük görüntülerle çalışmak için sanal bellek soyutlaması da bulunuyor
- Photoshop 1.0 biraz 100 bin satırın üzerindeydi, ancak modern sürüm 10 milyondan fazla satıra ulaşıyor
- Hem o dönemde hem bugün kodun önemli bir bölümü, giriş/çıkış ve Photoshop'un işlemesi gereken çeşitli dosya biçimleriyle ilgili
- Sürüm 1.0 kaynak kodunda neredeyse hiç yorum yok ve mevcut olanların çoğu assembly parçalarının yanında yer alıyor
- Booch'a göre kod okunması kolay olduğu için yorum eksikliği sorun değil; hatta yorumlar dikkat dağıtıcı bile olabilirdi
- Kodun içinde dönemin izleri de korunuyor
- Andy Herzfield'ın Thunderscan tarayıcı yazılımı işleme kodu
- Erken dönem TARGA raster grafik dosya biçimi desteği
- Barneyscan'e bazı referanslar
Photoshop 1.0'ın özellikleri ve sınırlamaları
- Erken dönem Photoshop ekranında kullanılabilir araçlar gösteriliyordu
- Fırçada yalnızca renk değil, boyut ve doku da seçilebiliyordu
- Gelişmiş seçim araçları ve çeşitli görüntü filtreleri sunuluyordu
- Önemli eksik özelliklerden biri, görüntüyü birden fazla katmana ayırma yeteneğiydi; bu özellik 1994'te çıkan sürüm 3'e eklendi
- Tercihler sayfasında bazı özellikler özelleştirilebiliyordu
- Yazı tipi, yazı tipi boyutu ve yazı tipi stili seçenekleri sınırlıydı
- Metin, bir iletişim kutusuna girildikten sonra görüntünün içine taşınarak yerleştiriliyordu
1 yorum
Hacker News yorumları
2000'lerde Adobe'de çalışırken Photoshop, Illustrator, PostScript ve diğer uygulamaların kaynak kodunu arşivlemeyi denemiştim
Thomas Knoll'un orijinal Mac disket yedekleri duruyordu; bir Mac Plus getirip seri kablo ve Kermit ile dosyaları dizüstüne aktardım, ilk sürüm 6 Temmuz 1988 tarihli 0.54'tü
Disketlerdeki dosyalar çeşitli eski sıkıştırılmış arşiv biçimlerindeydi ama çoğu okunabiliyordu; bulduğum tüm kodları özel bir Perforce sunucusunda sakladım
Ne yazık ki en eski Illustrator yedeği, bozuk tek bir harici disk sürücüsündeydi
O dönemde arayüz etkileşiminin pek iyi olmadığı yönünde geri bildirim vardı; bugün değerlendirmek zor ama FreeHand hızla popülerleşip sonra ortadan kayboldu
Bu kaynak kodla uygulamayı derlemek için nelerin gerektiğini iyi özetleyen bir yazı var: http://basalgangster.macgui.com/RetroMacComputing/The_Long_V...
Bu tür bilgiye sahip çok kişi yok
RSS benim tarafta çalışıyor, ama Miniflux'ta
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 timeoutdiyor90'ların ortasında Adobe'ye kaynak kodu takası yapmaya gittiğimi hatırlıyorum
PhotoShop MacApp tabanlıydı ve Adobe'de Windows'ta çalışan bir katman vardı
Biz geliştirmekte olduğumuz SQL motorunu takas ettik; eve getirdiğim kodda PhotoShop'un bazı parçaları kesinlikle vardı ama çok değildi, görmezden geldiğimiz tuhaf renk uzayı hesaplama kodları gibi şeylerdi
Kaynağa bakıp MacApp izlerinin hâlâ durup durmadığını görmek isterim
90'ların ortasından beri her şey değişmiş de olabilir
Böyle örnekleri pek duymadım; başka kod takası hikâyeleri var mı merak ediyorum
Elbette öyleydi ama epey şişkin bir yazılımdı
Think Class Library birçok geliştiricinin hayatını kurtardı; Greg Dow hâlâ Adobe'de çalışıyor olabilir
Düşününce PowerPlant, TCL'den daha iyiydi: https://en.wikipedia.org/wiki/PowerPlant
Kullanıcı deneyiminin hâlâ büyük ölçüde aynı olması şaşırtıcı
İlk mühendislerin vizyonu müthişmiş
Ama bugünlerde uygulamayı her açtığımda sinir oluyorum; masaüstünde gerçekten çevik hissettirdiği tek dönem, MacBook Pro M1'in ilk çıktığı ve Adobe Photoshop'un Silicon betasının olduğu kısa dönemdi
O dönem bitti, yine yavaşladı
Acı gerçekti; o dönemde düzgün kullanmak için 96 MB RAM'li bir SGI Indigo daha iyiydi
90'ların sonunda 9500 ile en iyi uyumu sağlıyordu ve o zaman bile RAM'in tamamı olan 1 GB'a ihtiyaç duyuyordu
Hâlâ 2022 civarında çıkan, M1'i ilk destekleyen crack'li sürümü kullanıyorum; iki yıl önceki gibi hâlâ çevik
Scott Belsky artık yatırımcı oldu; BeHance ve Adobe'yi kiralama ekonomisi tarafına nasıl sattığını yazdı
Harika bir kitap dense de, sayıları azalan yöneticiler için bir kişisel gelişim kitabına da yakın
Yine de sanat ve görüntü işleri için açık kaynak ekosistemi her zamankinden iyi; çünkü gerçekte, topluluk desteği olmadan yetişemeyen profesyonel araçlar aşırı pahalılaştığı için herkes dışarı itildi
2013 tarihli bir yazıda 1990'dan Adobe Photoshop 1.x ha
Kaynak koda baktım ama o kodu neyin güzel ve zarif yaptığını anlayabilsem isterdim.
Rust öğrenirken, basit bir Snake oyununda bile kod yapısını belirlerken çok fazla seçenek olduğu için bunun zor olduğunu hissedip benzer şeyleri düşündüm.
“Mekân” üzerinde çalışan fonksiyonları ve UI’ı nasıl yapacağımı düşünürken Photoshop veya 3ds Max aklıma geldi; bu depoyu bulmak gerçekten iyi oldu ama açıkçası anlayamıyorum.
Öğrenme açısından ilginç ve tasarım kalıpları konusundaki becerimi geliştirmek istiyorum; kod yapısını öğrenmek için iyi kaynaklar varsa söylerseniz sevinirim.
Eskiden soyutlama, tasarım kalıpları ve yapı yüzünden çok zorlanırdım.
Ama “gerçek” imperatif kodla çalışıp, sınıfları bir süreliğine unutup, tüm kodu aynı dosyada tutunca kodun kendi kendine bir yapıya kavuşmaya başladığını fark ettim.
Bunun tek yol olduğunu söylemiyorum ama nesne yöneliminin insanı seçeneklere boğup engel olabildiğini düşünüyorum.
Bir MacApp uygulamasının temel yapısı belgedir ve MacApp framework’ü olayları handler’lara dağıtır.
MacApp uygulaması üzerinde çalışmayalı uzun zaman oldu ama temel yapının böyle olduğunu hatırlıyorum.
MacApp’in kendisi dahil değil gibi görünüyor ama bir yerlerde olması mümkün; Adobe de bir dönem her şeyi baştan yazmamak için MacApp’i Windows’a port etmişti.
Sonrasında bir noktada bunu kendi soyutlama katmanıyla değiştirmiş olmalı.
John Knoll, Star Wars prequel’lerinin görsel efekt sorumlusu idi ve daha sonra Rogue One’da yer aldı.
Prequel’lerin yapım arkası belgeseli bugün bile izlenebilir: https://youtu.be/da8s9m4zEpo?si=5y5gHUMxztwVzMny
https://www.imdb.com/title/tt19896784/?ref_=nv_sr_srsg_0_tt_...
Radyasyon algılama alanında klasik bir ders kitabı yazmış biriydi.
“Sözlüğe bir kelime ekleyeceğini hayal bile etmemiştir” şeklinde bir kısım var; Adobe bunu markanın jenerikleşmesine yol açtığı için engellemeye çalışıyor.
Marka yönergelerinde “Her zaman büyük harfle yazın ve markayı doğru biçimde kullanın. Doğru örnek: The image was enhanced with Adobe® Photoshop® Elements software. Yanlış örnek: The image was photoshopped.” gibi örnekler var.
[1]: https://en.wikipedia.org/wiki/Generic_trademark
[2]: https://www.adobe.com/legal/permissions/trademarks.html
Xerox’un da bununla ilgili büyük bir davayı kaybettiğini hatırlıyorum.
[1] Örnek: https://www.consumerreports.org/consumerist/15-product-trade...
https://www.youtube.com/watch?v=rRi8LptvFZY
Uzun vadede yine de işe yaramayacaktır ama artık Velcro’nun bir marka adı olduğunun kesinlikle farkındayım.
Adobe’den önceki Photoshop’u Ann Arbor’daki bir hastanede gördüğümü hatırlıyorum.
Gerçekten harika olduğunu düşünmüştüm.
Bir şey eklemek gerekirse, o dönemde kullanılan MacApp sürümü Apple Pascal uygulama framework’üydü ve neredeyse kesinlikle betaydı.
Tom Knoll, bizim şirkette yüklenici olarak çalıştığı kodlardan birindeki B-spline algoritmasını eğri düzenleyicinin temeli olarak kullanmıştı.
Yazılımın eski sürümlerinin kaynak kodunu yayımlayan şirketler övgüyü hak ediyor
Gelecekte daha fazla şirketin bunu yapmasını umuyorum
Ancak bu kaynak kodların önemli bir kısmının zaman içinde ve ardışık satın alma süreçlerinde kaybolmuş olmasından endişe ediyorum
Sürüm kontrolünün yaygınlaşması da nispeten yeni bir olgu; geriye kalmış olsalar bile büyük olasılıkla rastgele teyp yedeklerinde, disketlerde ya da klasörlerdeki çıktıların arasında bulunuyorlardır
“Yazılımın teknik ve bilimsel bilgimizi içerdiğine ve insanlığın onu kaybetme riskini göze alamayacağına inandığımız için, yazılımı kaynak kod biçiminde topluyor ve koruyoruz
Yazılım, kültürel mirasın değerli bir parçasıdır
Topladığımız tüm yazılımları yönetiyor ve erişilebilir kılıyoruz
Çünkü çok uzun süreli korumayı ancak paylaşarak garanti altına alabiliriz”
Arkadaşım Roberto Di Cosmo tarafından kuruldu
Erken sızıntıları cezalandıran fiili standart bir hukuki sözleşme de buna dahil olmalı
Oldukça otomatikleştirilebilen ve fazla insan müdahalesi gerektirmeyen bir hizmet olabilir
Şirket git deposunu koruma kuruluşunun yönettiği özel bir sunucuya mirror edebilir; koruma kuruluşu da buna karşılık gelen boş bir herkese açık depo oluşturabilir
Daha sonra her saat çalışan bir ajan özel depoyu tarayıp yalnızca commit zamanı 10 yıldan eski olan commit’leri herkese açık depoya senkronize eder
Referanslar da birlikte senkronize edilir; ancak
git filter-branchile 10 yıldan daha yeni tüm commit’ler kaldırılmış gibi yeniden yazılır ve filtreleme sonrası boş kalan referanslar atılır