4 poin oleh GN⁺ 2024-05-16 | 1 komentar | Bagikan ke WhatsApp
  • Photoshop, yang menjadi alat utama untuk penyuntingan gambar digital, berawal dari program personal pada 1987, lalu melalui distribusi Adobe dan menjadi produk komersial pada 1990
  • Computer History Museum, atas izin Adobe Systems Inc., mempublikasikan kode sumber Photoshop 1.0.1 untuk penggunaan nonkomersial
  • Kode yang dipublikasikan terdiri dari 179 file, sekitar 128.000 baris, dengan sebagian besar ditulis dalam Pascal dan assembly 68000
  • Pustaka aplikasi MacApp yang dilisensikan dari Apple tidak termasuk dalam publikasi ini, dan ada pembatasan untuk redistribusi serta penggunaan komersial
  • Grady Booch menilai bahwa dari kode awal tersebut terlihat desain yang terstruktur dengan baik dan struktur dasar yang berlanjut hingga Photoshop modern

Awal Photoshop dan komersialisasinya

  • Thomas Knoll adalah mahasiswa doktoral yang meneliti computer vision di University of Michigan, dan pada 1987 ia menulis program untuk menampilkan serta memodifikasi gambar digital
  • John Knoll, yang bekerja di Industrial Light & Magic, melihat bahwa program ini berguna untuk penyuntingan foto, tetapi sejak awal tidak ada niat untuk menjadikannya produk
  • Nama awalnya adalah Display, dan seiring fiturnya makin canggih, pada musim panas 1988 mereka menilai program ini bisa menjadi produk komersial
  • Kedua bersaudara itu mengganti namanya menjadi Photoshop, dan produsen pemindai slide Barneyscan membundel sekitar 200 salinan versi 0.87 dengan nama Barneyscan XP

Adobe dan peluncuran Photoshop 1.0

  • Adobe, atas dorongan art director Russell Brown, memutuskan membeli lisensi untuk mendistribusikan versi Photoshop yang telah ditingkatkan
  • Kesepakatan selesai pada April 1989, dan Photoshop 1.0 mulai dikirimkan sejak awal 1990
  • Selama 10 tahun berikutnya, Photoshop terjual lebih dari 3 juta salinan
  • “Photoshop” menjadi begitu luas digunakan hingga di kamus online Merriam-Webster dipakai sebagai verba yang berarti mengubah gambar digital dengan Photoshop atau perangkat lunak penyunting gambar lainnya

Kode sumber Photoshop 1.0.1 yang dipublikasikan

  • Computer History Museum, dengan izin Adobe Systems Inc., mempublikasikan kode sumber Photoshop 1.0.1 versi 1990 untuk penggunaan nonkomersial
  • Sebagian besar kode disertakan, tetapi pustaka aplikasi MacApp yang dilisensikan dari Apple dikecualikan
  • Folder terkompresi berisi 179 file, terdiri dari sekitar 128.000 baris kode
    • Sekitar 75% adalah Pascal
    • Sekitar 15% adalah assembly Motorola 68000
    • Sisanya adalah berbagai jenis data
  • Photoshop awal ditulis terutama dalam Pascal untuk Apple Macintosh, dan bagian yang membutuhkan efisiensi eksekusi menggunakan bahasa mesin untuk Motorola 68000
  • Thomas Knoll menyatakan bahwa pada versi 1 ia adalah satu-satunya engineer, dan pada versi 2 ada dua engineer
  • Thomas menangani program aplikasi utama, sementara John menulis berbagai plugin pemrosesan gambar

Unduhan dan ketentuan lisensi

Struktur kode menurut Grady Booch

  • Grady Booch membandingkan pengalaman membuka kode sumber Photoshop 1.0 dengan Howard Carter yang pertama kali membuka makam Tutankhamun
  • Kode tersebut dinilai sebagai sistem yang sangat terstruktur dengan baik, dengan pemisahan antarmuka dan abstraksi yang konsisten
  • Untuk setiap kombinasi antarmuka dan implementasi umumnya ada satu tipe utama, sehingga keputusan desain yang mengomponenkan abstraksi mudah diikuti
  • Nama yang konsisten, metode yang terbagi dengan tepat, dan implementasi yang sederhana membuat struktur sistem relatif mudah dipahami
  • Di Photoshop 1.0 terlihat struktur dasar yang masih tersisa dalam bentuk yang lebih berkembang pada implementasi modern
    • Tile dan filter disebut sebagai struktur yang representatif
    • Termasuk abstraksi memori virtual untuk menangani gambar yang jauh lebih besar daripada buffer tampilan atau memori utama
  • Photoshop 1.0 berukuran sedikit di atas 100.000 baris, tetapi versi modern mencapai lebih dari 10 juta baris
  • Baik dulu maupun sekarang, banyak kode terkait dengan input/output dan berbagai format file yang harus ditangani Photoshop
  • Kode sumber versi 1.0 hampir tidak memiliki komentar, dan sebagian besar komentar menempel pada potongan assembly
  • Booch menilai bahwa kurangnya komentar bukan masalah karena kodenya mudah dibaca, dan komentar justru mungkin bisa mengganggu
  • Di dalam kode juga tersisa jejak dari masa itu
    • Kode pemrosesan untuk perangkat lunak pemindai Thunderscan milik Andy Herzfield
    • Dukungan untuk format file grafis raster TARGA awal
    • Beberapa referensi ke Barneyscan

Fitur dan keterbatasan Photoshop 1.0

  • Layar awal Photoshop menampilkan alat-alat yang tersedia untuk digunakan
  • Brush dapat dipilih bukan hanya berdasarkan warna, tetapi juga ukuran dan tekstur
  • Tersedia alat seleksi yang canggih dan beragam filter gambar
  • Salah satu fitur penting yang belum ada adalah kemampuan membagi gambar ke dalam beberapa layer, dan fitur ini ditambahkan pada versi 3 pada 1994
  • Pada halaman Preferences, sebagian fitur dapat dikustomisasi
  • Pilihan font, ukuran font, dan gaya font masih terbatas
  • Teks dimasukkan ke dalam kotak dialog lalu dipindahkan ke dalam gambar

1 komentar

 
GN⁺ 2024-05-16
Pendapat Hacker News
  • Saat bekerja di Adobe pada tahun 2000-an, saya pernah mencoba mengarsipkan kode sumber Photoshop, Illustrator, PostScript, dan aplikasi lain
    Masih ada cadangan floppy Mac asli milik Thomas Knoll, jadi saya membawa Mac Plus, lalu memindahkan file ke laptop dengan kabel serial dan Kermit; versi pertamanya adalah 0.54 tertanggal 6 Juli 1988
    File-file di floppy itu memakai berbagai format arsip kompresi lama, tetapi sebagian besar masih bisa dibaca, dan semua kode yang ditemukan disimpan di server Perforce khusus
    Sayangnya, cadangan Illustrator yang paling awal berada di satu drive disk eksternal yang rusak

    • Penanggung jawab Illustrator berada di Palo Alto dan orangnya mudah dihubungi
      Saat itu ada masukan bahwa interaksi antarmukanya kurang baik, dan meski sekarang sulit menilainya, FreeHand cepat populer lalu kemudian menghilang
  • Ada tulisan yang merangkum dengan baik apa saja yang diperlukan untuk membangun aplikasi dari kode sumber ini: http://basalgangster.macgui.com/RetroMacComputing/The_Long_V...

    • Setelah membaca lebih banyak tulisan lain di situs ini, saya terkesan
      Tidak banyak orang yang memiliki pengetahuan semacam ini
    • Saya penasaran apakah ada masalah saat menambahkannya ke feed reader
      RSS berfungsi baik di sisi saya, tetapi di Miniflux muncul 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
  • Saya ingat pernah pergi ke Adobe pada pertengahan 90-an untuk melakukan pertukaran kode sumber
    PhotoShop berbasis MacApp, dan Adobe punya layer yang berjalan di Windows
    Kami menukar mesin SQL yang sedang kami kerjakan, dan kode yang saya bawa pulang jelas berisi sebagian PhotoShop, meski tidak banyak; hanya semacam kode perhitungan ruang warna yang aneh yang kami abaikan
    Saya ingin melihat-lihat sumbernya untuk mengetahui apakah jejak MacApp masih tersisa
    Bisa saja semuanya sudah berubah sejak pertengahan 90-an

    • Gagasan pertukaran kode itu keren
      Saya jarang mendengar contoh seperti ini, jadi penasaran apakah ada cerita pertukaran kode lainnya
    • Memang disebutkan secara eksplisit sebagai pengecualian: “All the code is here with the exception of the MacApp applications library that was licensed from Apple”
    • Saya bekerja di Photoshop selama bertahun-tahun, dan kode itu masih ada sampai sekarang
    • MacApp di Windows, ya
      Tentu saja begitu, tetapi itu perangkat lunak yang cukup bongsor
      Think Class Library menyelamatkan banyak developer, dan Greg Dow mungkin masih bekerja di Adobe sampai sekarang
      Kalau dipikir-pikir, PowerPlant lebih baik daripada TCL: https://en.wikipedia.org/wiki/PowerPlant
  • Mengejutkan bahwa pengalaman pengguna secara umum masih sama sampai sekarang
    Visi para engineer awalnya luar biasa
    Namun belakangan saya merasa kesal setiap kali membuka aplikasinya, dan satu-satunya periode singkat ketika terasa responsif di desktop adalah saat MacBook Pro M1 pertama keluar dan ada beta Silicon untuk Adobe Photoshop
    Masa itu sudah berakhir, dan kini kembali lambat

    • Entah apakah Anda pernah memakainya pada awal 90-an, tetapi di Mac dengan RAM 4MB, membatalkan Gaussian Blur butuh sekitar 5–10 menit
      Penderitaannya nyata, dan saat itu jika ingin memakainya dengan benar, SGI Indigo dengan RAM 96MB lebih baik
      Pada akhir 90-an, paling cocok dipakai di 9500, dan waktu itu pun butuh seluruh RAM 1GB
    • Saya penasaran apakah itu karena pengalaman penggunanya memang bagus, atau karena jika diubah para pengguna akan memberontak massal sehingga tidak mungkin dilakukan
    • Tinggal downgrade saja
      Saya masih memakai versi crack dari sekitar 2022 yang pertama mendukung M1, dan masih tetap responsif seperti dua tahun lalu
    • The Messy Middle adalah buku bagus yang merangkum bagaimana mantan CEO BeHance membangun ulang produk cloud Adobe dan bagaimana ia melakukannya
      Scott Belsky kini menjadi investor, dan ia menulis tentang proses menjual BeHance dan Adobe ke arah ekonomi sewa
      Meski bisa disebut buku yang bagus, isinya juga terasa lebih seperti buku pengembangan diri untuk kalangan eksekutif yang makin menyusut
      Meski begitu, ekosistem open source untuk karya seni dan gambar kini lebih baik dari sebelumnya; dalam praktiknya, ini karena alat profesional yang tak bisa disaingi tanpa dukungan komunitas menjadi terlalu mahal sehingga semua orang tersisih
    • Saya masih memakai lisensi CS6 lama, dan meski aplikasinya responsif di dalam, saat dijalankan tetap butuh waktu
  • Artikel tahun 2013 tentang Adobe Photoshop 1.x dari 1990, ya

    • Rasanya sekitar separuh kode itu masih berjalan sebagai WASM di photoshop.adobe.com
  • Saya sudah melihat kode sumbernya, tetapi saya berharap bisa memahami apa yang membuat kode itu indah dan elegan
    Saat belajar Rust, saya punya kegelisahan serupa: bahkan untuk game Snake sederhana pun, menentukan struktur kode terasa sulit karena ada terlalu banyak pilihan
    Ketika memikirkan cara membuat fungsi dan UI yang bekerja di atas “ruang”, saya teringat Photoshop atau 3ds Max, dan menemukan repositori ini benar-benar menyenangkan, tetapi saya memang tidak bisa memahaminya begitu saja
    Dari sudut pandang pembelajaran ini menarik dan saya ingin meningkatkan kemampuan pola desain, jadi kalau ada materi bagus untuk mempelajari struktur kode, mohon beri tahu

    • Saya tidak bisa banyak bicara tentang kode ini atau latar belakang pribadi, tetapi jujur saja menurut saya sebaiknya mundur selangkah dan melihat prinsip-prinsipnya
      Dulu saya sangat bergulat dengan abstraksi, pola desain, dan struktur
      Namun saya menyadari bahwa ketika bekerja dengan kode imperatif yang “sebenarnya”, melupakan class sejenak, dan menaruh semua kode dalam file yang sama, kode itu mulai membentuk strukturnya sendiri
      Bukan berarti ini satu-satunya jalan, tetapi saya merasa pemrograman berorientasi objek bisa menjadi penghambat karena membuat kita tenggelam dalam pilihan
    • Kode ini menggunakan MacApp, salah satu framework awal yang mencoba menangani kode berulang
      Struktur dasar aplikasi MacApp adalah dokumen, dan framework MacApp mendispatch event ke handler
      Sudah lama sejak saya mengerjakan aplikasi MacApp, tetapi seingat saya struktur dasarnya seperti itu
      MacApp sendiri tampaknya tidak disertakan, tetapi kemungkinan ada di suatu tempat, dan Adobe pernah mem-port MacApp ke Windows agar tidak perlu menulis ulang semuanya
      Saya menduga pada suatu titik kemudian mereka menggantinya dengan lapisan abstraksi mereka sendiri
  • John Knoll adalah kepala efek visual untuk prekuel Star Wars, dan kemudian ikut mengerjakan Rogue One
    Dokumenter behind-the-scenes pembuatan prekuel itu masih layak ditonton sekarang: https://youtu.be/da8s9m4zEpo?si=5y5gHUMxztwVzMny

  • Ada bagian yang mengatakan “mereka pasti tidak membayangkan akan menambahkan satu kata ke kamus”, tetapi Adobe berusaha mencegah hal ini karena bisa mengarah pada generikisasi merek dagang
    Pedoman merek dagangnya memuat contoh seperti “Selalu gunakan merek dagang dengan huruf kapital dan dalam bentuk yang benar. Contoh benar: The image was enhanced with Adobe® Photoshop® Elements software. Contoh salah: The image was photoshopped.”
    [1]: https://en.wikipedia.org/wiki/Generic_trademark
    [2]: https://www.adobe.com/legal/permissions/trademarks.html

    • Sekarang tampaknya sudah cukup jelas masuk ke wilayah generik
      Seingat saya Xerox juga kalah dalam gugatan besar terkait hal ini
      [1] Contoh: https://www.consumerreports.org/consumerist/15-product-trade...
    • Saya mengerti tekanan semacam itu, tetapi tidak ada orang yang akan berbicara seperti itu
    • Saya mem-photoshop gambar dengan Gimp
    • Velcro juga sudah mencoba hal yang sama dengan jauh lebih efektif
      https://www.youtube.com/watch?v=rRi8LptvFZY
      Dalam jangka panjang mungkin tetap tidak berhasil, tetapi sekarang saya jelas sadar bahwa Velcro adalah nama merek dagang
    • Saya penasaran apakah generikisasi benar-benar menjadi masalah
  • Saya ingat pernah melihat Photoshop sebelum Adobe di sebuah rumah sakit di Ann Arbor
    Saya pikir itu benar-benar luar biasa
    Sebagai tambahan, versi MacApp yang digunakan saat itu adalah framework aplikasi Apple Pascal dan hampir pasti masih beta
    Tom Knoll menggunakan algoritme B-spline dari kode yang ia kerjakan sebagai kontraktor di perusahaan kami sebagai dasar editor kurva

    • Saya penasaran apa yang mereka lakukan dengannya di rumah sakit
  • Perusahaan yang membuka kode sumber perangkat lunak versi lama patut dipuji
    Saya berharap ke depannya lebih banyak perusahaan melakukan hal itu
    Namun saya khawatir banyak kode sumber seperti ini sudah hilang seiring waktu dan melalui beberapa proses akuisisi beruntun
    Penggunaan version control secara luas juga merupakan fenomena yang relatif baru, jadi kalaupun masih tersisa, kemungkinan besar ada di backup tape acak, floppy disk, atau hasil cetak di dalam binder

    • https://www.softwareheritage.org/
      “Kami mengumpulkan dan melestarikan perangkat lunak dalam bentuk kode sumber, karena perangkat lunak memuat pengetahuan teknis dan ilmiah kita, dan umat manusia tidak boleh mengambil risiko kehilangannya
      Perangkat lunak adalah bagian berharga dari warisan budaya
      Kami mengelola semua perangkat lunak yang kami kumpulkan dan membuatnya dapat diakses
      Karena hanya dengan berbagi, pelestarian untuk waktu yang sangat panjang dapat dijamin”
      Didirikan oleh teman saya, Roberto Di Cosmo
    • Jika organisasi seperti Internet Archive menyediakan layanan escrow untuk pembukaan tertunda kode sumber perangkat lunak, tampaknya banyak perusahaan akan menggunakannya
      Termasuk juga perjanjian hukum standar yang nyata untuk menghukum kebocoran dini
      Ini bisa menjadi layanan yang cukup otomatis dan minim campur tangan
      Perusahaan dapat melakukan mirroring repositori git ke server privat yang dikelola organisasi pelestarian, lalu organisasi pelestarian membuat repositori publik kosong yang bersesuaian
      Setelah itu, setiap jam sebuah agen memindai repositori privat dan menyinkronkan ke repositori publik hanya commit yang waktu commit-nya lebih dari 10 tahun lalu
      Ref juga disinkronkan, tetapi ditulis ulang seolah-olah semua commit yang lebih baru dari 10 tahun telah dihapus dengan git filter-branch, dan ref yang kosong setelah difilter dibuang