Para developer di balik Immich, sebuah platform manajemen foto open-source, telah menciptakan sesuatu yang unik di dunia software: sebuah log publik tentang pengetahuan terkutuk - penemuan-penemuan teknis yang menyakitkan yang membuat developer mempertanyakan pilihan hidup mereka. Koleksi bug yang membuat frustrasi, perilaku aneh, dan keterbatasan teknis yang benar-benar bizarre ini telah menyentuh hati komunitas programming, yang melihatnya sebagai sesuatu yang terapeutik sekaligus edukatif.
Konsep ini melampaui sekadar pelacakan bug sederhana. Setiap entri dalam database pengetahuan terkutuk mereka di-commit bersamaan dengan perbaikan yang sebenarnya, menciptakan catatan permanen dari masalah dan solusinya. Pendekatan ini mengubah hambatan teknis yang membuat frustrasi menjadi pengalaman belajar yang berharga yang dapat dimanfaatkan oleh developer lain.
Kekacauan Ekosistem JavaScript
Dunia JavaScript tampil menonjol dalam koleksi pengetahuan terkutuk Immich, dan itu ada alasannya. Satu masalah yang sangat terkenal melibatkan seorang anggota komunitas yang secara sistematis menambahkan kompatibilitas mundur ke proyek-proyek JavaScript populer dengan memperkenalkan puluhan dependensi package tambahan. Praktik ini telah menimbulkan kontroversi yang signifikan, dengan beberapa developer menghabiskan seluruh malam untuk mencoba menghapus dependensi yang tidak perlu ini dari proyek mereka.
Diskusi komunitas mengungkap kekhawatiran yang lebih dalam tentang pola ini. Beberapa orang menduga motivasinya mungkin terkait dengan membangun popularitas atau bahkan potensi risiko keamanan supply chain. Package-package yang dimaksud termasuk utilitas yang sangat sederhana, menyoroti bagaimana ekosistem JavaScript bisa menjadi bloated dengan dependensi sepele yang tidak memberikan tujuan praktis.
Masalah JavaScript/Node.js:
- bcrypt hanya menggunakan 72 byte pertama dari string password
- Objek Date JavaScript: menggunakan indeks 1 untuk tahun/hari, indeks 0 untuk bulan
- skrip npm melakukan panggilan HTTP ke registry pada setiap eksekusi
- Node.js <v20.8: pencampuran ESM/CommonJS dapat menyebabkan segfault dengan --experimental-vm-modules
Keanehan Database dan Sistem
PostgreSQL menghadirkan serangkaian tantangan tersendiri yang mengejutkan tim Immich. Batas database sebesar 65.535 parameter berarti operasi bulk insert bisa gagal spektakuler dengan dataset besar. Meskipun ini mungkin tampak seperti keterbatasan yang jelas bagi para ahli database, ini adalah jenis detail yang hanya muncul ketika Anda benar-benar mencoba memasukkan ribuan record sekaligus.
Kejutan PostgreSQL lainnya melibatkan fitur NOTIFY, yang beroperasi dalam transaksi dan dapat menyebabkan aktivitas write-ahead log yang tidak terduga. Penemuan-penemuan ini menyoroti bagaimana bahkan sistem database yang sudah mapan memiliki perilaku yang dapat mengejutkan developer yang bekerja dalam skala besar.
Keterbatasan PostgreSQL:
- Parameter maksimum per query: 65.535
- Operasi NOTIFY menulis ke WAL setiap 5 detik ketika digunakan dengan socket.io postgres-adapter
- Semua operasi termasuk NOTIFY berjalan dalam transaksi
Mimpi Buruk File System Lintas Platform
File system di berbagai sistem operasi memberikan sumber pengetahuan terkutuk yang kaya. File tersembunyi Windows tidak dapat dibuka dengan izin tulis, sebuah keterbatasan yang menjadi sangat bermasalah ketika dikombinasikan dengan opsi hide dot files SMB. Sementara itu, macOS secara diam-diam menambahkan file metadata dan indexing ke volume yang dapat dilepas, mengacaukan transfer file yang seharusnya bersih.
Dunia mobile menambahkan lapisan kompleksitas lain, dengan beberapa ponsel secara diam-diam menghapus data GPS dari gambar ketika aplikasi tidak memiliki izin lokasi. Meskipun perilaku ini sebenarnya adalah fitur privasi yang bekerja sesuai yang dimaksudkan, hal ini bisa membingungkan bagi developer yang tidak memahami mengapa pemrosesan gambar mereka tiba-tiba kehilangan informasi lokasi.
Keanehan Sistem File:
- Windows : File tersembunyi tidak dapat dibuka dengan flag "w"
- macOS : Nama file tidak peka huruf besar-kecil secara default, konversi NFC→NFD
- Mobile : Data GPS dihapus dari gambar untuk aplikasi tanpa izin lokasi
- Dimensi EXIF dapat berbeda dari dimensi gambar sebenarnya
Dampak yang Lebih Luas
Entri pengetahuan terkutuk di-commit bersamaan dengan perbaikan yang diperlukan untuk mengatasinya. Log ini tidak hanya katartik, tetapi mengubah setiap hambatan yang membuat frustrasi menjadi pengalaman belajar yang positif.
Pendekatan untuk mendokumentasikan titik-titik sakit teknis ini telah menginspirasi developer lain untuk mempertimbangkan praktik serupa dalam proyek mereka sendiri. Transparansi ini membantu membangun pengetahuan komunitas sambil memberikan bentuk terapi teknis bagi developer yang mengalami masalah-masalah ini.
Koleksi pengetahuan terkutuk tim Immich berfungsi sebagai pengingat bahwa pengembangan software penuh dengan gotcha yang tidak terduga, terlepas dari tingkat pengalaman. Dengan membagikan penemuan-penemuan ini secara publik, mereka telah menciptakan sumber daya yang berharga yang membantu developer lain menghindari jebakan yang sama sambil membangun empati untuk tantangan kompleks yang melekat dalam pengembangan software modern.
Referensi: Cursed Knowledge