- EPUB tanpa DRM yang lolos validasi pun bisa dianggap “corrupted” di Kobo, dan masalahnya bukan pada kesalahan format file melainkan pada kompatibilitas mesin perender
- epubcheck adalah alat validasi standar de facto untuk memeriksa struktur EPUB dan kepatuhan terhadap aturan, tetapi tidak dapat menangkap masalah parser CSS usang pada perender tertentu
- Kobo menggunakan RMSDK, mesin perender ebook proprietari milik Adobe, yang dibuat berbasis EPUB2 lalu diperbarui secara ringan untuk EPUB3, tetapi tidak pernah dimodernisasi
- Penyebab masalahnya adalah satu baris
max-width: min(150px, 30vw);; kode CSS level 4 yang valid ini tidak didukung oleh RMSDK sehingga menyebabkan kegagalan memuat buku di Adobe Digital Editions dan Kobo
- Untuk memeriksa kompatibilitas Kobo, epubcheck saja tidak cukup; diperlukan validasi tambahan dengan benar-benar membuka file di Adobe Digital Editions
Masalah yang berawal dari EPUB yang lolos epubcheck
- Alat Adobe sering dipakai karena Creative Suite menjadi standar industri atau karena minimnya alternatif, dan kegelisahan dalam tulisan ini berangkat dari ketidakpuasan terhadap perangkat lunak Adobe
- Buku baru didistribusikan sebagai file
EPUB tanpa DRM yang diberikan langsung kepada pembaca, dan sebelum distribusi telah melewati beberapa tahap termasuk lolos pemeriksaan epubcheck
epubcheck adalah alat standar de facto untuk memastikan ebook tersusun dengan benar, dan agar lolos, manifest harus mencerminkan seluruh bagian dan gambar dalam buku tanpa ada yang terlewat
- Jika urutan elemen HTML tidak sesuai atau sedikit saja menyimpang dari aturan International Digital Publishing Forum, validasi akan gagal
- Mencapai hasil lulus
epubcheck 100% tidak mudah bagi pemula, tetapi bagi pekerja penerbitan alat ini berperan mirip linter tipe atau test suite formal
- Harapan dasarnya adalah buku yang lolos
epubcheck akan bekerja di pembaca atau aplikasi yang kompatibel dengan EPUB mana pun
“Corrupted” hanya muncul di Kobo
- Buku baru ini lolos
epubcheck ruleset 3.3, tetapi seorang pembaca melaporkan muncul pesan “corrupted”
- Untuk memeriksa kemungkinan kompatibilitas ke belakang, versi EPUB2 juga disediakan, tetapi file itu pun tetap mematuhi aturan sepenuhnya dan memunculkan masalah yang sama
- Pembaca tersebut mengatakan buku tidak bisa dibuka di beberapa generasi perangkat Kobo
- EPUB yang sama berjalan tanpa masalah di lingkungan lain seperti Amazon Kindle, Apple Books, dan Thorium
- Hasil penyelidikan menunjukkan bahwa Kobo menggunakan RMSDK, mesin perender ebook proprietari milik Adobe
Penyebab yang menyempit ke RMSDK dan Adobe Digital Editions
- RMSDK adalah mesin inti Adobe Digital Editions dan juga digunakan di berbagai perangkat Kobo serta perangkat Sony dan Nook lawas
- Mesin ini dibuat sekitar tahun 2010 dengan fokus pada EPUB2, lalu diperbarui secara ringan untuk EPUB3 tetapi tidak dimodernisasi
- Fakta bahwa Kobo memakai RMSDK memang tidak langsung menyelesaikan perbedaan hasil antara
epubcheck dan Kobo, tetapi memberi arah untuk debugging
- Saat buku dimasukkan ke Adobe Digital Editions, sesuai dugaan buku gagal dimuat dan bahkan tidak ada pesan kesalahan
- Ketika dicoba dimuat ulang, muncul pesan bahwa buku itu sudah ditambahkan sehingga tidak bisa diimpor lagi, tetapi layar tetap putih
- Setelah itu dilakukan pengujian dengan membuat berbagai varian file, dan semua varian tersebut tetap lolos
epubcheck
- Dicoba penataan ulang struktur folder, penghapusan metadata, penghapusan atribut bahasa, pembuatan UUID baru, perataan direktori, perubahan ekstensi, pembuatan ulang ZIP, dan perubahan
manifest
- Meski sudah mencoba semua itu, kegagalan pemuatan di Adobe Digital Editions tetap berulang
Penyebab sebenarnya: satu baris CSS yang valid
- Setelah stylesheet dinonaktifkan, buku tiba-tiba berhasil dimuat, sehingga lingkup masalah menyempit ke stylesheet
- Setelah membuat lebih banyak varian yang hanya menerapkan sebagian stylesheet, akhirnya teridentifikasi satu baris yang menyebabkan masalah
.copyright img {
max-width: min(150px, 30vw);
}
- Kode tersebut adalah kode CSS level 4 yang sepenuhnya valid, tetapi RMSDK tidak mampu mendukungnya
- Setelah kode itu diganti ke cara yang lebih lama, yaitu
max-width: 150px;, buku dapat dibuka dengan normal di Adobe Digital Editions
- Parser CSS RMSDK kira-kira tertinggal di kondisi tahun 2013 dan tidak mendukung flexbox, grid, fungsi matematika, maupun custom properties
- Saat menemui CSS yang tidak dikenali, alih-alih memberi fallback atau kesalahan yang jelas, mesin ini diam-diam crash
epubcheck memang melakukan pemeriksaan CSS dasar, tetapi pada dasarnya tidak bisa memvalidasi CSS terhadap perender tertentu yang secara fundamental rusak
Pelajaran dalam memvalidasi kompatibilitas Kobo
- Bahkan pada 2026, selama Kobo masih menggunakan RMSDK sebagai dasar perenderan buku, satu baris CSS yang valid dapat membuat seluruh EPUB yang valid menjadi “corrupted file”
- Dalam kasus ini Kobo tidak memberi pesan kesalahan yang jelas maupun fallback, sehingga seluruh buku gagal dibuka
- Untuk menghindari masalah itu, versi baru telah didistribusikan dan langkah telah diambil agar pembaca tidak mengalami kesalahan yang sama lagi
- Dalam kondisi ideal, RMSDK seharusnya keluar dari keterbatasan CSS yang usang atau setidaknya menyediakan penanganan kesalahan, tetapi saat ini masalahnya masih tetap ada
- Untuk benar-benar memastikan kompatibilitas Kobo,
epubcheck saja tidak cukup; perlu memeriksa apakah file benar-benar bisa dimuat di Adobe Digital Editions
- EPUB adalah standar terbuka yang sangat baik untuk ebook, tetapi banyak implementasinya menunjukkan cacat mendasar dalam struktur yang lebih mengutamakan pembatasan akses
1 komentar
Pendapat Hacker News
Adobe juga selalu seperti ini. Mereka menyia-nyiakan pangsa pasar Flash yang sangat besar, padahal alternatifnya cuma perlu menghabiskan beberapa juta dolar untuk QA, dan pada akhirnya membuat semua pembuat browser sepakat bahwa “web lebih baik berjalan tanpa mitra yang tidak bisa diandalkan seperti ini”
Dulu saya pernah merilis beberapa hal dengan Flash, dan itu adalah perangkat lunak mengerikan yang penuh dengan heisenbug: crash acak dan perubahan di satu area merusak fungsi yang sama sekali tak terkait di modul lain. Harganya sekitar 800 dolar, tetapi dukungannya praktis tidak ada, dan meski saya melaporkan beberapa bug yang mudah direproduksi lengkap dengan test case yang sudah diperkecil, saya hanya menerima balasan otomatis setelah rilis berikutnya yang berkata “mungkin sudah diperbaiki, jadi silakan beli lisensi harga penuh untuk memastikannya”
Ada juga MusicWorks, dan keduanya khusus untuk Mac pada masa-masa sangat awal. Cukup mengatakan ini saja sudah menunjukkan umur saya
Tumpukan berlapis-lapis sistem build JavaScript dan “standar web” jauh lebih sulit daripada sekadar menggambar sesuatu, menulis sedikit fungsi sederhana, lalu membuat berkas statis yang bisa di-embed atau diunduh di mana saja. Kalau mau memakai pengganti Flash, terlalu banyak waktu habis untuk konfigurasi, dan “standar” itu pun lebih buruk
Saya tidak suka Steve Jobs yang membunuh Flash, dan juga tidak suka Adobe yang mengelola salah satu teknologi web paling menakjubkan dengan sangat buruk. Anak-anak yang tumbuh sekarang tidak tahu betapa magisnya Flash dulu. Itu seperti Roblox atau Minecraft versi web
Sampai sekarang situs web masih kalah dibanding Flash awal 2000-an. Sudah puluhan tahun berlalu, tetapi baru meniru sebagian kecil kekuatannya, dan sama sekali belum bisa menandingi kemudahannya
Saya sempat cukup lama mencoba membuat perangkat lunak pembaca ebook, lalu akhirnya berniat membuat kesepakatan dengan setan dan membangunnya di atas RMSDK
Tapi ternyata sama sekali tidak ada jalan untuk mengaksesnya. Bukan cuma karena biaya lisensinya terlalu mahal bagi pengembang independen, meski itu juga benar, melainkan memang tidak ada orang yang bisa diajak bicara. Email di situs web tidak pernah dibalas, bahkan ucapan seperti “terima kasih atas ketertarikannya” atau “kami akan menghubungi lagi” pun tidak ada
Saya pernah bertanya kepada seorang mantan rekan yang dulu bekerja di sana tentang prosedur akses RMSDK, dan dia bilang sudah mencari dokumen internal tetapi tidak menemukan apa-apa. Saya juga mencoba mencari orang di LinkedIn yang tampaknya terkait RMSDK dan bertanya kepada mereka, hasilnya sama saja
Sementara itu, para penerbit hanya mendistribusikan sebagian besar buku melalui salah satu vendor DRM terkenal seperti Apple, Amazon, atau Adobe, dan dua yang pertama sepenuhnya tertutup. Kalau ini bukan perilaku monopoli antipersaingan, saya tidak tahu lagi apa namanya
Setahu saya, perangkat Kobo memakai rendering engine yang lebih canggih kalau nama filenya diberi
.kepub.epub. Sepertinya berbasis ePub 3, meski saya tidak tahu apakah itu akan memperbaiki masalah di siniSecara pribadi, saya mengubah ePub menjadi kepub dengan kepubify(https://pgaskin.net/kepubify/try/) sebelum memindahkannya ke Kobo
https://standardebooks.org/help/how-to-use-our-ebooks#kobo-f...
Saya sangat suka Kobo Clara Colour, dan rasanya akan sempurna kalau pembaca Adobe saja dihapus. Saya juga sudah mencoba KOReader, tetapi saya suka buku perpustakaan OverDrive dan Kobo Store, jadi belum sepenuhnya pindah
Sayangnya, epub dan epubcheck bukan standar yang jelas-jelas bagus tanpa kontroversi seperti yang dikatakan penulis. Saat W3C, Inc. mengambil alih pengelolaan spesifikasi sekitar ePub 3.1, mereka langsung merujuk ke WHATWG HTML dan spesifikasi browser yang terus membesar([1])
“Standar hidup” seperti ini tidak punya versioning maupun QA. Akibatnya, karena berbasis pada versi HTML yang mendefinisikan ulang header dan sectioning, ePub 3.2 membuat ePub lama menjadi tidak patuh standar. Itulah sebabnya Calibre dan alat lain masih menyarankan 3.1, atau lebih baik lagi 2
Kasus fungsi CSS
min()yang ditolak juga menunjukkan bahwa mengimpor seluruh spesifikasi CSS yang terlalu kompleks tidak banyak membantu. Pembaca ebook bukan browser yang terus diperbarui ke kondisi terbaru[1]: https://news.ycombinator.com/item?id=41326179
Dalam masalah kompatibilitas EPUB, CSS harus selalu jadi tersangka nomor satu. Menggunakan fitur CSS yang “modern” lalu mengeluh tidak ada flexbox atau grid itu pola pikir khas pengembang web
Hanya karena EPUB berbagi sebagian stack dengan web bukan berarti keduanya sepenuhnya tumpang tindih, dan memang tidak perlu begitu. Sebagian besar perangkat pembaca e-ink bawaan tidak memakai browser untuk rendering, melainkan menanam toolchain parsing dan rendering HTML/CSS khusus tujuan ke dalam firmware, lalu sangat jarang memperbaruinya. Kalau tertarik, lihat crengine milik KOReader atau Crosspoint reader yang berjalan di ESP32
Tulisan blog tersebut memang berbau gaya AI yang terlalu percaya diri, tetapi jangan terkecoh
Jika Anda mencari perangkat, ada juga PineNote
https://pine64.org/devices/pinenote/
Harganya lebih mahal dan perangkat lunak siap pakainya lebih sedikit, tetapi soal kepemilikan perangkat dan perangkat lunak apa yang bisa dijalankan, pendekatannya jauh lebih lugas dan syarat pembatasnya lebih sedikit
Ada juga tulisan yang merangkum pengalaman memakai PineNote dengan baik
https://shom.dev/posts/20250308_pinenote-day-one/
https://shom.dev/posts/20250406_a-pinenote-only-5-day-weeken...
Kobo juga tidak membatasi apa yang bisa dilakukan. Anda bisa sideload perangkat lunak pembaca ebook alternatif seperti KOReader untuk meningkatkan fungsi pembaca bawaannya
Kobo memang sedang menulis ulang perangkat lunak pembaca ebook mereka sepenuhnya, dan di UE versi beta-nya bisa diunduh. Hampir pasti ini sudah tidak lagi berbasis RMSDK
Adobe buruk dalam mengelolanya, lalu setelah itu mereka menyerahkannya ke pihak ketiga dengan penjualan yang makin membuat pengguna akhir dan platform kesal karena migrasinya berantakan, sehingga pada dasarnya pasar DRM EPUB mereka serahkan begitu saja kepada LCP. Platform-platform kini meninggalkan Adobe lebih cepat daripada sebelumnya
Bagian “Saya takut pada saat menekan tombol validasi pada buku yang sudah selesai setelah berbulan-bulan dikerjakan. Selalu saja ada sesuatu yang ditemukannya untuk dipermasalahkan” mengingatkan saya pada seorang mahasiswa magister yang nyaris menangis saat mencoba mengompilasi draf makalah LaTeX
Dia terlalu harfiah menerima nasihat “tulis saja dulu, format belakangan”, jadi baru mencoba kompilasi untuk pertama kalinya menjelang tenggat
Meski saya tidak tahu bagaimana tenggat yang makin dekat memengaruhi persepsi itu ;-P
Kalau pembacanya sejak awal memakai pembaca ePub yang mendukung atau setidaknya mengabaikan hal seperti
max-width, itu sudah termasuk beruntung :-PSecara pribadi, saat memakai pembaca ePub, saya kadang harus memperbaiki sendiri berkas yang tidak berfungsi atau tampil aneh karena style yang tidak perlu. Saya juga pernah dengar ada berkas yang di sisi saya tidak bermasalah, tetapi ternyata tidak bisa dibaca oleh orang lain, dan kalau memang tidak butuh format mewah yang benar-benar penting, rasanya lebih baik tetap memakai HTML yang paling dasar, yang bahkan IE4 pun tidak akan merender terlalu keliru
Karena itu, kadang saya berpikir untuk suatu hari membuat alat epub reconstruct yang menyusun ulang ePub menjadi HTML/CSS sesederhana mungkin. Idealnya, ini harus bisa dikonfigurasi untuk kompatibilitas maksimum
Saya sering berpikir, bagaimana kalau ditentukan saja sebuah subset yang berjalan cepat di komputer mana pun, lalu saya hanya memakai itu untuk halaman web yang saya buat. Kalau seseorang merangkum cakupan seperti itu untuk ePub juga, hasilnya akan jauh lebih berguna
Adobe Digital Editions dan RMSDK baru-baru ini dijual ke Wipro Engineering: https://helpx.adobe.com/enterprise/kb/eol-faq-adobe-digital-...
Saya mengerti frustrasi penulisnya, tetapi berapa banyak pembaca yang benar-benar memakai pembaca ePub yang sudah tua dan tidak pernah ditingkatkan, atau tidak bisa ditingkatkan? Jika penulis ingin karyanya tersedia untuk semua pembaca, maka dia harus menyesuaikan ke penyebut bersama terendah
Kalau itu berarti sesuatu dari tahun 2013, ya disayangkan, tetapi memang itulah kenyataan pasar