2 poin oleh GN⁺ 1 hari lalu | 1 komentar | Bagikan ke WhatsApp
  • 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

 
GN⁺ 1 hari lalu
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”

    • Suka atau tidak suka Steve Jobs, keputusannya untuk tidak mendukung Flash di iPhone dan mendorong HTML5 sangat mempercepat kejatuhan Flash
    • Flash lebih baik saat masih disebut VideoWorks ;)
      Ada juga MusicWorks, dan keduanya khusus untuk Mac pada masa-masa sangat awal. Cukup mengatakan ini saja sudah menunjukkan umur saya
    • Sampai sekarang belum ada yang menandingi Flash sebagai media publishing yang paling mudah
      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

    • Saya banyak membaca buku dengan aplikasi FBReader, dan mereka membuka SDK agar bisa dipakai di aplikasi lain
  • 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 sini
    Secara pribadi, saya mengubah ePub menjadi kepub dengan kepubify(https://pgaskin.net/kepubify/try/) sebelum memindahkannya ke Kobo

    • Betul, saya juga melakukan itu untuk semua berkas. Penerbit seperti Standard Ebooks juga menyediakan unduhan kepub, dan seperti dijelaskan di sini, pembaca Adobe juga punya masalah
      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

    • Di dunia ePub, sudah cukup umum diketahui bahwa menargetkan 3.1 atau 2 adalah pilihan yang lebih masuk akal
      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...

    • Saya penasaran apakah Anda sudah pernah langsung memakai PineNote. Harganya $400, dan tertulis “ditujukan untuk pengembang Linux dengan pengetahuan sistem embedded yang mendalam atau yang berpengalaman dengan mobile Linux”. Firmware buatan komunitas yang ditautkan itu juga sudah lebih dari setahun tidak diperbarui
      Kobo juga tidak membatasi apa yang bisa dilakukan. Anda bisa sideload perangkat lunak pembaca ebook alternatif seperti KOReader untuk meningkatkan fungsi pembaca bawaannya
    • Layar e-ink open source 60Hz milik orang ini juga layak dilihat: [video] https://www.youtube.com/watch?v=nHbA2-_qzH4
  • 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

    • Saya penasaran apakah Anda sudah mencoba versi beta itu. Saya ingin tahu apakah memang cukup membaik
  • 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 begitu, secara keseluruhan mungkin saja itu menghemat cukup banyak waktu. Kalau melihat waktu kompilasinya saja, kalau dia lebih sering memeriksa sejak awal mungkin malah akan membuang lebih banyak waktu
      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 :-P
    Secara 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

    • Bahkan di lingkungan browser web target, HTML/CSS ini nyaris nyaris saja bisa berfungsi, jadi saya tidak tahu kenapa ada yang menganggap ini ide bagus untuk buku
      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
    • Ini seperti saat menggambar lalu tidak mewarnai bagian tengah karena kacamata seseorang retak dan bisa membuat gambar terlihat aneh. Atau mungkin lebih baik menyuruh pembuat kacamata membuat kacamata yang lebih baik, dan membiarkan seniman berkarya
  • Adobe Digital Editions dan RMSDK baru-baru ini dijual ke Wipro Engineering: https://helpx.adobe.com/enterprise/kb/eol-faq-adobe-digital-...

    • Saya penasaran apakah itu benar-benar penjualan, atau sebenarnya outsourcing
  • 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

    • Saya membacanya sebagai berarti Kobo baru yang keluar pada 2026 memakai perangkat lunak Adobe DRM yang aturan CSS-nya berhenti di tahun 2013