1 poin oleh GN⁺ 2025-03-17 | 1 komentar | Bagikan ke WhatsApp
  • Pengalaman membuat pembaca komik pribadi Fiew pada musim panas 2006 menjadi titik awal untuk mengimplementasikan editor gambar mirip Photoshop, Fedit, sebagai proyek tesis menggunakan C++ dan Windows API
  • Fedit berjalan sebagai satu berkas executable tanpa installer, berkas kompresi, kunci registry, atau runtime tambahan, sehingga bisa langsung dijalankan di PC dengan hak akses terbatas atau dari drive USB
  • Antarmukanya dirancang agar menyerupai alur kerja Photoshop klasik, mencakup jendela alat mengambang, pemilih warna, manajemen layer, riwayat undo, filter gambar, dan filter pemindahan piksel kustom
  • Tantangan terbesar adalah mereproduksi antarmuka pengguna; banyak waktu dihabiskan untuk perilaku snap/unsnap pada panel pengaturan alat serta implementasi pemilih warna dan alat
  • Proyek ini berujung pada keberhasilan tesis dan perolehan gelar sarjana teknik, lalu mengesankan CTO GoldenLine dan membuka jalan ke pekerjaan C++ untuk membuat aplikasi WinAPI unggah gambar massal

Dari pembaca komik Fiew ke editor gambar Fedit

  • Pada awal musim panas 2006, titik awalnya adalah ketidakpuasan terhadap aplikasi pembaca gambar yang ada
    • Yang paling mengganggu adalah tidak bisa mengontrol aktivitas membaca hanya dengan mouse, sehingga harus terus meraih keyboard
  • Saat itu baru saja menyelesaikan mata kuliah C++/Windows API di universitas, dan selama liburan musim panas mengembangkan sendiri pembaca komik ideal
  • Pembaca komik ini diberi nama Fiew
  • Pada awal musim gugur 2006 harus menentukan topik tesis, dan karena pengalaman mengembangkan image viewer berjalan lancar, muncul penilaian bahwa editor gambar juga bisa dibuat
  • Karena saat itu banyak menggunakan Adobe Photoshop, targetnya menjadi editor yang mirip Photoshop

Cara implementasi Fedit dan batasan distribusi

  • Fedit adalah Advanced Image Editor yang ditulis dalam C++, menggunakan Windows API dan pustaka grafis GDI+
  • Demi bentuk distribusi yang menguntungkan pengguna, lima aturan diikuti
    • Tanpa installer
    • Tanpa berkas kompresi
    • Tanpa kunci registry
    • Tanpa runtime tambahan
    • Satu berkas executable
  • Hasilnya adalah program yang langsung berjalan tanpa instalasi, bisa dijalankan pada sistem dengan hak akses terbatas atau dari drive USB, dan menggunakan sedikit sumber daya

Antarmuka dan fitur yang mendekati Photoshop

  • Antarmukanya dibuat dengan cermat agar tampak seperti Photoshop klasik, dan mencakup fitur-fitur yang sering digunakan
  • Fitur utamanya adalah sebagai berikut
    • Jendela alat yang bebas mengambang
    • Pemilih warna
    • Manajemen layer yang mudah
    • Riwayat yang dapat di-undo langkah demi langkah
    • Berbagai filter gambar
    • Antarmuka matriks untuk mengodekan sendiri filter pemindahan piksel
  • Viewer pustaka gambar berskala besar yang diambil dari proyek sebelumnya, Fiew, juga disertakan
    • Memungkinkan menggulir foto dalam jumlah besar dengan cepat dan mudah

Proses pengembangan yang harus di-debug sendiri

  • Banyak merujuk ke MSDN dan Experts Exchange, tetapi karena masalahnya terlalu spesifik, sebagian besar harus dianalisis dan di-debug sendiri
  • Karena harus memenuhi tenggat tesis sarjana, selama dua bulan terakhir bekerja 14 jam sehari
  • Area paling sulit adalah antarmuka pengguna
    • Ingin alur kerja yang semirip mungkin dengan Photoshop
    • Perilaku snap dan unsnap bebas pada panel pengaturan alat sangat sulit
    • Mereproduksi pemilih warna dan pemilih alat juga tidak mudah
  • Menjelang akhir proyek, rasa lelah cukup besar dan muncul juga antipati terhadap WinAPI

Hasil setelah tesis dan materi publik

  • Tesis berhasil, dan memperoleh gelar Bachelor of Science in Engineering dari Warsaw University of Technology
  • Fedit menerima beberapa ulasan positif secara online, tetapi tidak dipromosikan secara aktif
  • Setelah itu, Fiew dan Fedit mengesankan CTO GoldenLine, yang kemudian berujung pada pekerjaan C++ untuk membuat aplikasi WinAPI berefisiensi tinggi untuk unggah gambar massal bagi sebuah klon Flickr
  • Materi publik

1 komentar

 
GN⁺ 2025-03-17
Komentar Hacker News
  • Membaca kalimat “lima aturan yang menguntungkan pengguna: tanpa installer, tanpa file arsip, tanpa key registry, tanpa runtime tambahan, satu file executable” membuat saya merasa hangat dan bahagia
    Saya paham kenapa registry ada, dan kenapa ekosistem software Windows saat ini berjalan seperti ini, tetapi saya benar-benar merindukan masa ketika sebagian besar software desktop dulu begitu sederhana
    Sekarang, sebisa mungkin saya memakai instalasi portabel, dan saya berharap cara seperti ini lebih umum. Waktu, kerepotan, dan ketidakpastian apakah pengaturan bisa dipulihkan sepenuhnya membuat saya sangat menghindari instal ulang Windows

    • Installer juga melakukan banyak hal berguna, dan cukup banyak pengguna akhir memang menginginkannya. Misalnya menambahkan shortcut ke Start Menu agar bisa ditemukan atau dicari, mengasosiasikan tipe file, dan mendaftarkannya di daftar program Windows
      Dulu saya sangat menyukai software portabel, tetapi sekarang kalau keduanya tersedia, saya justru lebih memilih installer. Kalau tidak, saya harus menambahkannya sendiri ke Start Menu agar bisa dicari
      Namun saya tidak suka key registry. Karena sering hilang saat sistem operasi diinstal ulang. Saya lebih suka pengaturan cukup disimpan di %appdata%
    • Karena itu saya menyukai Go. Satu file executable membuat orang lain lebih mudah memakai tool
      Sebagai alternatif, saya juga memakai cara memaketkan satu file executable dengan NSIS lalu mengekstrak semuanya ke direktori sementara sebelum dijalankan
      Menurut saya Windows Registry lebih mirip kumpulan barang campur aduk yang tidak konsisten dan dirancang buruk. Sebagai perbandingan, registry Gnome dirancang dengan baik. Hal seperti deskripsi key, pilihan nilai yang dibatasi, dan tampilan nilai default adalah desain antarmuka pengguna yang baik
      Melihat pemetaan antara Windows Group Policy dan registry saja, struktur logika yang sama bisa berbeda-beda, bahkan key-nya mencampurkan negasi ganda
    • Tujuan awal registry adalah memungkinkan COM menemukan lokasi file DLL berdasarkan GUID. Dengan begitu COM bisa membuat instance objek
      Jejaknya masih bisa dilihat di HKEY_CLASSES_ROOT
      Secara teknis, objek bisa dibuat tanpa registry. Muat DLL, lalu panggil fungsi yang diekspor untuk membuat objek Factory, dan gunakan objek Factory itu untuk membuat instance. COM sendiri memang melakukan hal seperti itu
    • Desain yang sederhana dan ringan seperti itu juga terasa sangat mengena bagi saya
      Tulisannya juga merupakan retrospektif yang benar-benar bagus. Hanya saja, saya berharap penulis membahas lebih dalam kesulitan-kesulitan yang sedikit ia isyaratkan di awal. Tapi itu cuma keberatan kecil; artikelnya sangat bagus dan pekerjaannya memang terlihat cukup mengesankan
    • Saya tidak yakin apa jalan terbaik untuk membuat aplikasi satu binary tanpa menyertakan library lewat kompilasi statis. Karena lisensi, biasanya ini jadi sulit ditangani
  • Photoshop punya begitu banyak fitur sehingga beberapa filter gambar saja sulit disebut sebagai reproduksi

    • Namun mencocokkan antarmuka pengguna dengan benar itu sangat sulit dan sangat penting
      GIMP pada 2006 juga punya sangat banyak fitur, tetapi dibandingkan dengan antarmuka Photoshop, rasanya benar-benar buruk
    • Meski begitu, untuk proyek sarjana, ini sangat, sangat mengesankan
    • Saya rasa “reproduksi” di sini tidak dimaksudkan untuk dipahami secara harfiah
    • Betul. Menurut saya Photopea adalah upaya kloning yang paling mendekati, tetapi itu pun masih kehilangan banyak fitur
    • Kalau dibilang “membuat editor gambar dasar”, tentu tidak terdengar semengesankan itu. Melihat tulisan ini dimulai seperti ini, tidak terlalu mengejutkan

      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!
      Rendah hati sekali…

  • Seharusnya ada juga tautan langsung ke proyek keren ini
    https://github.com/f055/fedit-image-editor

  • Bagian “Saya tidak mempromosikannya. Beberapa bulan kemudian saya mendapatkan pekerjaan C++. Pada akhirnya semua kerja keras itu terbayar” menarik
    Secara naluriah kita tahu bahwa pekerjaan yang dilakukan dengan susah payah seharusnya mendapat imbalan, tetapi sayangnya developer open source terlalu sering mencurahkan banyak upaya, terutama pada kode yang dipakai luas di production, namun hampir tidak mendapat kompensasi nyata
    Karena itu sepertinya mereka mencari imbalan reputasi, atau NPM menambahkan fitur seperti “bagaimana kalau berdonasi kepada penulis library ini”, dan GitHub membuat integrasi Patreon
    Kita membutuhkan model yang lebih baik dari sekarang, yang tidak memanfaatkan kreator muda yang naif tetapi bersungguh-sungguh

  • Pada awal 2000-an ada proyek bernama pixel32, lalu kemudian Pixel Studio Pro. Kelihatannya benar-benar bagus dan dijual sebagai early access
    Namun akhirnya menjadi vaporware, orang-orang yang sudah membayar sangat marah, dan pembuatnya dengan cepat berubah dari pahlawan menjadi penjahat
    https://discuss.haiku-os.org/t/pixel-studio-pro-in-past-call...

  • Penulis mengatakan ia lulus dari Warsaw University of Technology, dan di sini kampus itu selalu dianggap sebagai salah satu sekolah yang cukup bagus
    Terlepas dari itu, yang juga menonjol adalah betapa berbedanya skripsi saat itu dibandingkan sekarang. Baru-baru ini saya menulis skripsi di universitas teknik di kota besar lain, dan 90% skripsi sarjana teknik kami kualitasnya cukup rendah, termasuk milik saya

    • Saya rasa sekarang pun tidak jauh berbeda. Setahu saya, tujuannya bukan memajukan bidang tersebut, melainkan membuktikan kepada orang-orang yang memberi gelar sarjana atau magister bahwa kita bisa membuat hasil kerja berbentuk tesis/skripsi
      Mungkin ada karya yang menonjol, tetapi sebagian besar barangkali cukup membosankan
  • Karena itulah saya menyukai Windows. Ada sangat banyak software kecil dan open source yang mengisi ceruk tertentu dengan baik
    Dulu saya sering menjelajahi sourceforge.net dan freshmeat, kalau tidak salah itu namanya, untuk mencarinya

  • Seorang teman yang bekerja di Phonegap, setelah diakuisisi Adobe sekitar 10 tahun lalu, iseng-iseng langsung mem-port Photoshop ke JavaScript

    • Saya tidak bermaksud mengeluh soal downvote, tetapi cukup aneh rasanya cerita seperti ini terlihat seperti sesuatu yang akan dibenci Hacker News
      Saya kira cerita tentang proyek hacking internal seorang software engineer akan menarik, tapi ya sudahlah
  • Ada hal-hal yang dibuat orang tetapi tidak mereka kabarkan ke dunia. Untungnya ini ada di GitHub, dan benar-benar mengesankan