- Melampaui keterbatasan PDF dan halaman web statis, Nota bertujuan menjadi bahasa dokumen yang membuat browser memahami struktur dokumen dan memungkinkan pembaca memanfaatkannya secara langsung
- Dokumen Nota dikompilasi menjadi program JavaScript yang berjalan di browser, sehingga variabel, fungsi, dan struktur data dapat digunakan dalam penulisan dokumen
- Dirancang dengan mempertimbangkan integrasi pustaka JavaScript seperti KaTeX, Vega-Lite, dan Penrose, serta dukungan kebutuhan aksesibilitas
- Dengan paket
@nota-lang/nota, pengguna dapat memasang executablenotadan mengelola dokumen melalui alur build atau penyuntingan interaktif - Karena masih merupakan teknologi baru yang terus berubah, arsitektur dan API dapat berubah, dan pengguna perlu memperhitungkan bug, kekurangan, serta ketidakakuratan pada alat dan dokumentasinya
Struktur dokumen yang dipahami browser
- Nota adalah bahasa untuk menulis dokumen seperti makalah akademik dan posting blog
- Tujuannya adalah membawa dokumen menjadi media abad ke-21
- Di dalam dokumen terdapat banyak struktur yang perlu diikuti pembaca, seperti definisi istilah dan referensi
- Sebagai contoh, kata
Notamerujuk pada istilah yang didefinisikan di paragraf sebelumnya - Nota memungkinkan penulis mengekspresikan struktur semacam ini, lalu browser memahaminya agar dapat dimanfaatkan pembaca
- Pada halaman contoh, pengguna dapat mengeklik atau mengeklik ganda referensi
Notauntuk melihat cara kerjanya
- Sebagai contoh, kata
- Dokumen Nota dikompilasi menjadi program JavaScript
- Dokumen dapat dilihat di perangkat apa pun yang memiliki browser web
- Variabel, fungsi, dan struktur data dapat digunakan untuk menyederhanakan penulisan dokumen
- Dapat diintegrasikan dengan pustaka JavaScript seperti KaTeX, Vega-Lite, dan Penrose
- Lebih mudah mendukung kebutuhan aksesibilitas seperti screen reader
Alur instalasi dan penyuntingan
- Nota dapat digunakan dengan memasang executable
notamelalui paket@nota-lang/nota- Persyaratannya adalah NodeJS ≥ 16 dan npm ≥ 6
- Direktori binary global NodeJS harus berada di
PATHshell
- Satu dokumen Nota dapat dibangun dengan alur berikut
npm install --global @nota-lang/notaecho "@Title: Hello world" > index.notanota build index.notaopen dist/index.html
- File Nota dapat disunting secara interaktif dengan perintah
nota edit index.nota - Cara menulis dokumen dapat dilihat di Reference
- Untuk menambahkan Nota ke situs web atau melihat arsitekturnya, lihat Integration guide
Kesenjangan antara PDF dan web statis
- Media utama dokumen digital terbagi menjadi PDF dan halaman web
- PDF dirancang untuk merepresentasikan dokumen fisik, sehingga memiliki batasan kertas seperti pemisahan halaman, lebar tetap, dan gaya yang tidak berubah
- Halaman web memungkinkan pemformatan dinamis, seperti penyesuaian ukuran untuk ponsel, penerjemahan ke bahasa lain, atau perubahan warna untuk pengguna dengan buta warna
- Halaman web juga memungkinkan interaksi dinamis, seperti teks yang meminta konteks tambahan, diagram dengan perspektif yang berubah, dan anotasi untuk kemudian hari
- Fitur dinamis seperti ini saat ini terutama hanya dapat diakses oleh pengembang web profesional
- Alat dokumen yang ada seperti LaTeX, Pandoc, Markdown, dan Scribble sebagian besar hanya dapat menghasilkan halaman web statis
- Nota berupaya menjembatani kesenjangan itu sebagai bahasa dokumen dengan hambatan masuk rendah, batas ekstensi tinggi, dan kurva belajar yang mulus
Status saat ini dan referensi
- Nota masih merupakan teknologi baru yang terus berevolusi
- Arsitektur dan API terus berubah
- Alatnya mungkin memiliki bug dan fitur yang belum ada
- Dokumentasinya mungkin belum lengkap atau tidak akurat
- Saat ini, Nota mencari pengguna awal yang ingin ikut menjadikannya bahasa dokumen masa depan
- Komponen
@Definitiondan@Refmemungkinkan penulis menambahkan sedikit anotasi dokumen, sehingga runtime Nota dapat menampilkan definisi dari referensi sebagai tooltip di dalam konteks- Versi Nota di masa mendatang dapat mencakup fitur seperti menemukan semua referensi untuk definisi tertentu
- Filosofi desainnya dapat dilihat lebih lanjut di A New Medium for Communicating Research on Programming Languages
1 komentar
Pendapat di Hacker News
Saya pembuat Nota, dan sejak prototipe awal halaman webnya, saya sedang menyempurnakan ulang desainnya
Saya sedang membangun landasan yang lebih kuat untuk persoalan seperti bagaimana mencampur konten dan komputasi(https://arxiv.org/abs/2310.04368), serta bagaimana sintaks membuat pekerjaan dokumen menjadi mudah/sulit/tidak mungkin(https://github.com/cognitive-engineering-lab/doclang-benchma...)
Saya masih percaya pada filosofi besarnya, tetapi Nota tampaknya akan cukup berubah dalam sekitar 6 bulan. Sementara itu, menurut saya perkembangan paling keren di bidang bahasa dokumen adalah Typst, jadi saya sarankan untuk mengeceknya: https://typst.app/
Versi Nota berikutnya rencananya akan ditulis 99% dalam Rust :-)
Jika performa benar-benar menjadi masalah, Rust lebih masuk akal daripada JavaScript, tetapi saya tidak yakin itu akan menjadi penentu untuk sebagian besar use case
Saya tidak pernah menyukai LaTeX meski sudah banyak menulis dokumen besar dengannya; rasanya seperti monster untuk akademia, bukan untuk bisnis. Bahkan di Word, hal-hal yang ingin dilakukan secara konsisten tidak selalu mudah, style cepat berantakan, dan penomoran serta bullet juga mudah disusupi kesalahan
Ketika beberapa putaran revisi bolak-balik, pelacakan perubahan menjadi masalah besar, dan pada akhirnya kita bergantung pada kepercayaan bahwa pihak lain tidak menimpa pelacakan itu. Produk yang sejak awal hingga persetujuan akhir menjamin semua perubahan terlihat dengan benar saja sudah bisa menjadi killer app yang disukai perusahaan dan pengacara
Kalau ditaburi blockchain, mungkin akan lebih mudah menggalang investasi, tetapi sebenarnya ini tampak lebih dekat ke masalah kriptografi dasar daripada blockchain, dan kompleksitas sebesar itu tampaknya tidak diperlukan
Hal terpenting dalam bahasa dokumen adalah memprioritaskan keduanya. Misalnya, dokumen TeX dimulai dengan kode persiapan seperti
\documentclass, berbagai\usepackage, definisi theorem, dan pengaturan font, sedangkan dokumen R Markdown/Quarto langsung dimulai dengan makna tulisan yang sebenarnya seperti judul, penulis, dan abstrakPerbedaan penekanannya terlihat jelas
Ini mencakup layout yang padat dan sarat informasi seperti poster konferensi A0, style dokumen standar nasional seperti GOST di wilayah pasca-Soviet, tuntutan style bibliografi yang meledak sesuai tiap tradisi internasional, membuatnya tampak seperti style default versi MS Word tertentu, menempatkan gambar atau teks secara presisi di atas gambar untuk koreksi cepat pada paper, dan menyesuaikan hal-hal semacam itu secara sadar
Di dunia TeX, semuanya secara teknis mungkin, tetapi dalam praktiknya membutuhkan sihir hitam yang begitu dalam sampai pengguna biasa bergelar akademik pun tidak ingin menggalinya
Selama beberapa bulan terakhir, saya senang menggunakannya untuk mengeksplorasi ide animasi SVG(https://simpatico.io/svg) atau mematangkan struktur data/algoritme baru(https://simpatico.io/stree3)
Seluruh server dan pemroses Markdown-nya sekitar 500 baris kode Node yang mudah dibaca, dependensinya sangat sedikit, tidak ada dependensi transitif, dan tidak perlu tahap kompilasi. Secara default, server tidak mengizinkan sumber daya pihak ketiga atau cookie jenis apa pun
Ada di GitHub dengan lisensi MIT, dan sedang saya rapikan sambil memindahkannya dari repositori pribadi ke repositori organisasi. Referensi: https://simpatico.io/lit
Di tempat yang tidak membutuhkan “kedimanisan yang esensial”, justru ketiadaannya adalah fitur, bukan bug
Di mobile, saya jauh lebih suka membaca halaman web daripada PDF, karena halaman web yang masuk akal biasanya bisa menyesuaikan diri dengan layar mobile
Kita perlu format yang mengodekan informasi visual dan informasi digital sekaligus. Lapisan digital pada dasarnya tidak harus terlihat, tetapi harus bisa diakses saat diperlukan
Tentu saja “fitur-fitur” semacam ini dianggap bug dan dihapus dari spesifikasi ISO PDF/A untuk preservasi jangka panjang: https://en.wikipedia.org/wiki/PDF/A
Intinya, terkadang dokumen harus tetap sekadar dokumen. Dalam makalah ilmiah, LaTeX adalah sesuatu yang ditulis manusia untuk manusia, dan berkat perintah serta paket kustom, kita bisa menulis dokumen teks polos yang semudah dibaca seperti makalah yang dihasilkan. Dari sisi aksesibilitas pun bagus
Ada wilayah menarik yang belum banyak dieksplorasi dalam dokumen dinamis, tetapi dibutuhkan contoh-contoh bagus tentang cara menggunakannya secara elegan
Ringkasnya, ini lebih dekat ke LaTeX dan juga memiliki sebagian elemen Markdown; ditulis dengan JavaScript sehingga banyak orang bisa berkontribusi memakai bahasa yang sudah mereka kenal, dan bagus juga karena berlisensi MIT
Saya belum tahu apakah akan langsung punya kebutuhan untuk memakainya, tetapi kelihatannya cukup keren. Jika saya menulis sesuatu yang membutuhkan fitur ala LaTeX tetapi tempat pengajuannya tidak mewajibkan LaTeX, sepertinya saya akan mencoba Nota
Saya menganggap Knuth hampir seperti sosok setengah dewa, tetapi bukan berarti ia turun dari langit, memberikan TeX, lalu berkata “jangan pernah mencoba hal baru selamanya”
Terlalu banyak juga perlindungan dari kesalahan dan fitur kenyamanan yang diberikan bahasa modern tetapi tidak ada di sana. Saat memakai LaTeX, saya sangat bergantung pada potongan
\input{}untuk mengisolasi blok, demi menghindari kerusakan hanya karena satu escape terlewatSaya terus berharap ada penafsiran ulang yang modern, tetapi rasanya kita terjebak di optimum lokal yang sulit ditinggalkan karena puluhan tahun inersia dan paket yang menumpuk di TeX
Hal-hal serupa mencakup https://pandoc.org/, https://quarto.org/, https://markdoc.dev/, https://mdxjs.com/, https://typst.app/
Masalahnya, setiap percobaan baru di bidang ini masuk ke ruang yang sudah terlalu sesak. Tidak terlalu penting apakah solusi yang ada sudah sempurna atau belum
Ini mirip masuk ke kota bersejarah di Eropa dengan seribu tahun sejarah arsitektur lalu mengusulkan rancangan bangunan baru yang hebat. Lahan kosong jarang ada, dan orang tidak akan begitu saja merobohkan struktur lama hanya untuk menguji yang baru. Mereka harus merasakan keunggulan yang luar biasa
Dalam arsitektur, baja dan beton bertulang membuka dimensi vertikal dan sangat meningkatkan pemanfaatan ruang, lalu sejarah berubah setelahnya
Pertanyaan utamanya adalah apakah ada dimensi yang belum dieksplorasi yang cukup kuat untuk menarik orang ke format dokumen lain lagi demi “memperbaiki” ASCII, reStructuredText, wikitext, Markdown, TeX/LaTeX, AsciiDoc, HTML, dan sebagainya
Jawaban yang umum adalah infrastruktur hiperteks semantik. Visi aslinya belum terwujud. Jika kita menganggap ekosistem tertutup masa kini sebagai mimpi buruk yang akan berlalu, web yang kembali terdesentralisasi membutuhkan infrastruktur penulisan dokumen yang modern, ramah pengguna, dan memberdayakan
Namun mungkin juga ada dimensi lain yang dapat mengangkat penulisan dan berbagi dokumen ke tingkat baru. Keindahan inovasi adalah bahwa ia tidak terikat oleh aturan dan kebijaksanaan yang sudah ada
Kita membutuhkan format dokumen yang efisien, dan untuk itu format tersebut tidak boleh berusaha melakukan semuanya. Artinya, tabel harus memisahkan jenis dokumen per file, seperti format spreadsheet standar; berbeda dari HTML yang mencoba menangani sendiri tabel, grafik (SVG), dan sebagainya
Dengan memisahkan masing-masing ke file tersendiri, pengguna bisa memilih program yang mereka inginkan untuk melihat atau memanipulasi dokumen, alih-alih melihat semuanya lewat satu browser; ini juga membantu distribusi jaringan dan menguntungkan di lingkungan dengan ruang penyimpanan atau bandwidth rendah
Jadi dari sudut pandang saya, tidak ada yang perlu diciptakan baru. Cukup spesialisasikan dan poles apa yang sudah ditemukan
Jika mengikuti tautannya, https://willcrichton.net/nota/ menunjukkan keunggulan yang meyakinkan di ceruk penggunaan yang memang dituju Nota, yaitu membuat makalah akademik ilmu komputer tentang bahasa pemrograman lebih mudah dipahami
Apakah bisa dirender menjadi PDF berkualitas tinggi tentu saja merupakan kebutuhan sekaligus pertanyaan. Demi kompatibilitas dengan sistem yang sudah ada, mungkin justru lebih baik jika bisa dirender ke LaTeX
Pada dasarnya Nota adalah markup + kode (JavaScript), dan kombinasi ini adalah area yang dibidik MDX. Dulu ketika seseorang menyebutkan hal ini, pembuatnya mengatakan bahwa Nota ditujukan untuk dokumentasi, sedangkan MDX untuk situs web: https://news.ycombinator.com/item?id=31349579
Kalau begitu, menurut saya agar Nota bisa populer, seseorang perlu membungkusnya sebagai produk. Hasilnya terlihat bagus, tetapi harus berurusan dengan Node.js hanya untuk membuat dokumen itu terlalu merepotkan, dan rasanya kembali seperti LaTeX. Kebanyakan orang akan lebih memilih Notion atau pengolah kata
Selain itu, Nota bukan pesaing langsung keluarga TeX. Nota membuat sesuatu untuk dibaca browser web, sementara xxxTeX membuat sesuatu untuk dibaca pembaca PDF. Saya tahu xxxTeX juga bisa menghasilkan format keluaran lain, tetapi kebanyakan orang memakainya untuk membuat PDF
MDX siap dipakai dengan framework apa pun seperti React/Vue, tetapi itu pada dasarnya berarti ia tidak memberikan opini bawaan apa pun
Nota terasa seperti bisa ditancapkan ke static site generator. Tentu saja untuk itu keduanya harus dibuat bekerja sama, tetapi menurut saya itu ekspektasi yang bisa dicapai oleh seseorang yang sedikit lebih berdedikasi daripada saya
Saya tidak mengerti mengapa diperlukan bahasa yang dikompilasi ke JavaScript untuk membuat halaman teks. Tujuan yang sama sudah ditangani oleh AsciiDoc
Penerbit sungguhan seperti O’Reilly pun memakai AsciiDoc sebagai format input untuk membuat buku dan situs web
Saya sudah memakai AsciiDoc selama beberapa tahun terakhir dan menyukainya. Saya hanya kembali ke Markdown di tempat yang belum mendukung AsciiDoc. Misalnya GitHub dan GitLab mendukung rendering AsciiDoc
Sayangnya PyPI belum mendukungnya, tetapi menyenangkan melihat makin banyak orang meninjaunya: https://github.com/pypa/readme_renderer/issues/205
Namun ada hal yang membuat frustrasi pada tooling saat ini. Saya bisa melihat dan menghargai upaya besar yang masuk ke Asciidoctor, tetapi tidak ada keluaran HTML5 semantik, integrasi dengan generator gambar sulit atau setidaknya lebih sulit daripada semestinya, dan cukup berat sampai-sampai menjadi satu-satunya dependensi Ruby di seluruh mesin saya
Selain masalah Ruby, isu-isu ini sudah terbuka di GitHub, jadi sepertinya akan terselesaikan jika ada lebih banyak waktu dan sumber daya
Entahlah. Emacs org-mode tampaknya lebih baik dan lebih rendah ketergantungannya pada JavaScript
https://docusaurus.io/ juga sangat bagus dan fleksibel. Jika ingin mengembangkan Nota dengan cara serupa, saya menyarankan untuk melihat keduanya
Saya sedang memikirkan cara termudah membuat blog yang sebagian besar berisi konten statis, tetapi bila mau bisa memasukkan grafik interaktif atau kustomisasi sesuka hati. Saya penasaran apakah Nota pilihan yang bagus
Sebagai opsi lain, saya juga melihat Quarto(https://quarto.org/), dan mungkin juga bisa memakai blog static site sederhana seperti Jekyll lalu mengedit langsung HTML keluarannya saat diperlukan
Dengan cara ini saya bisa memakai seluruh HTML, proses pembuatannya bisa dikustomisasi, dependensinya relatif mudah dikelola, dan format-format terkait sudah distandardisasi
Dengan Astro, jika Anda menulis komponen bergaya React, ia akan mengompilasinya menjadi HTML/CSS murni kecuali pada kasus yang benar-benar membutuhkan JavaScript. Situs pribadi dan blog saya juga dibuat dengan Astro: https://sjer.red/, sumbernya ada di https://github.com/shepherdjerred/shepherdjerred.com
Ada juga tutorial membuat blog dengan Astro: https://docs.astro.build/en/tutorial/0-introduction/