4 puan yazan GN⁺ 2024-05-16 | 1 yorum | WhatsApp'ta paylaş
  • 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ı

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

 
GN⁺ 2024-05-16
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

    • Illustrator'dan sorumlu kişi Palo Alto'daydı ve ulaşması kolay biriydi
      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 sitedeki diğer yazıları biraz daha okuyunca şaşırdım
      Bu tür bilgiye sahip çok kişi yok
    • Feed okuyucusuna eklerken bir sorun olup olmadığını merak ediyorum
      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 timeout diyor
  • 90'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

    • Kod takası fikri harika
      Böyle örnekleri pek duymadım; başka kod takası hikâyeleri var mı merak ediyorum
    • Aslında istisna olarak açıkça belirtilmiş: “All the code is here with the exception of the MacApp applications library that was licensed from Apple”
    • Photoshop üzerinde yıllarca çalıştım; o kod hâlâ duruyor
    • Windows'ta MacApp ha
      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ı

    • 90'ların başında kullanıp kullanmadınız bilmiyorum ama 4 MB RAM'li bir Mac'te Gaussian Blur'u geri almak 5-10 dakika kadar sürerdi
      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
    • Bunun kullanıcı deneyimi iyi olduğu için mi, yoksa değiştirirlerse kullanıcıların topluca tepki göstereceği için imkânsız olmasından mı kaynaklandığını merak ediyorum
    • Sadece sürüm düşürün yeter
      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
    • The Messy Middle, eski BeHance CEO'sunun Adobe'nin bulut ürününü nasıl yeniden kurduğunu ve bunu nasıl yapacağını anlattığı harika bir kitap
      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
    • Hâlâ eski CS6 lisansımı kullanıyorum; uygulama içinde çevik ama açılırken hâlâ zaman alıyor
  • 2013 tarihli bir yazıda 1990'dan Adobe Photoshop 1.x ha

    • O kodun yaklaşık yarısı hâlâ photoshop.adobe.com'da WASM olarak çalışıyor olabilir
  • 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.

    • Bu kod ya da kişisel arka planım hakkında fazla şey söyleyemem ama dürüstçe, bir adım geri çekilip ilkeleri incelemenin iyi olacağını düşünüyorum.
      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.
    • Bu kod MacApp kullanıyordu; tekrar eden kodları üstlenmeye çalışan ilk framework’lerden biriydi.
      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

  • “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

    • Artık oldukça kesin biçimde jenerikleşme alanına girmiş gibi görünüyor.
      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...
    • Bu baskıyı anlıyorum ama kimse öyle konuşmayacaktır.
    • Bir görseli Gimp ile photoshopped yaptım.
    • Velcro da aynı şeyi çok daha etkili biçimde denemişti.
      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.
    • Jenerikleşmenin gerçekten bir sorun olup olmadığını merak ediyorum.
  • 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ı.

    • Hastanede onunla ne yaptıklarını merak ediyorum.
  • 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

    • https://www.softwareheritage.org/
      “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
    • Internet Archive gibi kuruluşlar yazılım kaynak kodu gecikmeli yayımlama emanet hizmeti sunsa, birçok şirketin bunu kullanacağını düşünüyorum
      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-branch ile 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