Editor teks gratis untuk kolaborasi



Selama bertahun-tahun saya dihantui oleh gatal ini - mencoba menemukan editor teks yang "sempurna" untuk kolaborasi. Tapi bukan sembarang editor teks yang mendukung kolaborasi, oh tidak, tugas saya adalah menemukan (well, setidaknya mencari) editor teks terbuka dengan kerja kelompok secara real time (mis. Tidak hanya teks biasa, tetapi juga konten terstruktur). Dengan demikian, fokus dari artikel ini adalah pada kategori yang cukup khusus dari perangkat sumber terbuka dan teknologi yang mereka jalankan. Jika minat Anda lebih luas, Anda dapat merujuk ke daftar editor yang terus diperbarui ini .

Jadi Saya melompat dari tebing berkali-kali dan terjun ke lautan hampir tanpa akhir dari program kolaborasi waktu nyata. Terbang ke bawah, penyelaman yang menyegarkan ini ke dasar kolam, saya sudah tahu betul. Biasanya itu dimulai dengan beberapa kegembiraan dan kejutan awal ( lompatan ) dalam teknologi dan penelitian tingkat rendah baru, kemudian muncul perasaan kemacetan dan keinginan untuk muncul ( hei, cukup dalam di sini ) dan menjelajahi bagian yang diterapkan, dan kemudian periode ketika pikiran saya paling baik digambarkan dengan frasa: "Apakah aku benar-benar bodoh untuk ini?" (sangat mungkin), karena biasanya dokumentasi, demo dan kode tidak cocok atau masuk akal, komponen kolaborasi di server tidak dimulai dan ada situasi batas ketika lebih dari dua pengguna memasukkan kata yang sama, dan ... semuanya berakhir ( muncul, terengah-engah untuk udara ).

Setelah itu, sulit untuk mengangkat topik lagi, tahap berikutnya adalah semacam musim dingin pemikiran, dalam latihan, menunggu cuaca buruk, ketika saya biasanya membiarkan kode setengah jadi bekerja berbulan-bulan ... atau bertahun-tahun. Sampai kita bertemu lagi, tipe data yang direplikasi bebas konflik!


Fig. 1. Lompatan

Faktanya adalah bahwa pada tahun 2017 saya sangat bersemangat tentang prospek satu algoritma (semacam CRDT ) yang dijelaskan dalam artikel penelitian yang saya habiskan beberapa hari dan mengimplementasikannya dalam JavaScript , hanya untuk mengetahui bahwa ada situasi batas dalam artikel ilmiah yang mana tidak ada solusi yang diberikan (well ... tapi mungkin semua sama?). Pada saat itu, saya menoleh ke penulis, tetapi tidak menerima jawaban, dan menemukan bahwa situasi perbatasan khusus ini dipertimbangkan dalam algoritma yang sama oleh tim lain, tapi sial, karena seluk-beluk ini dalam pelaksanaannya, mungkin saya bisa mentransfernya ke Lisp ... SO BERHENTI! Apa yang sedang terjadi di sini? Tentu saja, saya tidak ingin memperkenalkan algoritma baru dari pekerjaan penelitian dan memperbaiki masalahnya! Apa yang saya lakukan, bagaimana saya sampai di sini? Ayo mundur!

Yang saya (dan mungkin juga Anda, pembaca yang budiman) benar-benar butuhkan adalah plug-and-play editor, produk jadi . Yang memecahkan masalah kolaborasi waktu nyata. Yang memungkinkan beberapa pengguna yang terhubung, terpisah ribuan mil, untuk mengedit dokumen terstruktur dengan menekan tombol pada keyboard dan melihat perubahan satu sama lain di layar mereka. Itu saja. Namun, editornya sulit ... dan saya tidak dapat menemukan alat seperti itu.

Sejauh ini

Tahun 2019 telah tiba ( gatal telah kembali dengan kekuatan ), dan kali ini bukan hanya editor ajaib yang muncul, tetapi bahkan dua pelamar untuk memenuhi spesifikasi yang telah lama ditunggu-tunggu. Awalnya, saya ingin terbang bersama Anda dan mendaftar hampir semua editor teks untuk kolaborasi, tetapi sepertinya tidak menambah banyak nilai . Sebagai gantinya, mari kita fokus pada dua editor yang bisa menjadi "seperti itu."

Tetapi ada dua editor, dan Anda perlu membuat pilihan - akan lebih baik untuk mempertimbangkan secara objektif mana yang benar-benar lebih cocok. Saya menawarkan sistem klasifikasi yang sangat ilmiah dengan kategori-kategori berikut (menggunakan kiwi sebagai unit standar barang):

  1. Lisensi Terbuka : Menambahkan 1 Kiwi (Ini juga merupakan kriteria pengecualian)
  2. Dukungan Gambar : Menambahkan 1 Kiwi
  3. Dukungan Tabel : Menambahkan 1 Kiwi
  4. Dukungan Daftar : Menambahkan 1 Kiwi
  5. Dukungan Matematika : Menambahkan 1 Kiwi
  6. Dukungan Kolaborasi Real-time : Menambahkan 1 Kiwi
  7. Komponen server yang tersedia: 1 kiwi
  8. Dukungan Kursor Jauh dan Sorotan: 1 Kiwi (mis. Anda dapat melihat kursor pengguna lain)
  9. Bekerja offline : 1 kiwi (Cukup sulit untuk menentukan)
  10. Pengalaman Produksi: 1 Kiwi
  11. Dukungan Seluler : 1 Kiwi

Dengan sistem penilaian seperti itu, editor bisa mendapatkan maksimal 11 unit kiwi. Ayo mulai!

Ckeditor 5



Gambar 2. Antarmuka CKEditor 5 (salah satu opsi yang mungkin), sumber

Mari kita mulai dengan CKEditor 5, versi terbaru dari sederetan editor berkualitas . Dia cantik. Saya tahu, saya tahu bahwa ini bukan kriteria, dan itu tidak terlalu penting (dan kita mungkin bahkan tidak setuju), tetapi saya hanya harus mengatakan tentang keindahannya. Jadi, editor ini membutuhkan banyak kiwi: dilisensikan di bawah GPL ( beberapa diskusi tentang batasan di sini ), (+1), mendukung gambar, tabel, daftar (+3), matematika didukung oleh plugin (+1) dan juga mendukung kolaborasi waktu nyata waktu dengan kursor dan pilihan yang dihapus (+2). Pembuat CKEditor menulis posting blog yang luar biasa dan terperinci tentang bagaimana mereka mengembangkannya menggunakan transformasi operasional.

Namun, saya tidak dapat menemukan implementasi server yang diperlukan untuk kolaborasi waktu nyata, dan semua dokumentasi menunjukkan kebutuhan wajib untuk layanan cloud dan komponen (berbayar) mereka, bahkan dalam proyek yang kompatibel dengan GPL.

Tingkat dukungan offline sulit untuk ditentukan , tetapi tampaknya tidak sepenuhnya lengkap (misalnya, editor dapat menahan koneksi yang terputus sebentar, tetapi tidak selama beberapa hari bekerja offline). Mungkin setengah kiwi? Hal yang sama berlaku untuk dukungan seluler, ada juga yang bekerja pada dukungan penuh (+0.5). Dan saat terakhir, CKEditor tentu digunakan dalam produksi, tetapi saya tidak dapat menemukan daftar produk berdasarkan itu (+0.5).

Editor yang baik, tetapi kurangnya server kolaborasi open source yang terjangkau benar-benar menyedihkan.

Peringkat lengkap: 8.5 / 11

Editor Atlaskit



Fig. 3. Atlaskit Editor oleh Atlassian

Sekitar setahun yang lalu, Atlassian meluncurkan sistem open source Atlaskit Design , dan banyak barang datang bersamanya, termasuk editor lengkap yang siap pakai berdasarkan ProseMirror . Saya sudah merasa bahwa ini mungkin editor yang kami cari! Ini dirilis di bawah lisensi Apache 2.0, menurut banyak orang, sebagai lisensi open source yang sangat permisif (+1 kiwi). Itu tidak hanya mendukung gambar, tabel dan daftar, tetapi mendukung mereka dengan sangat baik (+3 kiwi)! Implementasi tabel, yang sangat kurang untuk sebagian besar editor, sangat bagus di sini:


Fig. 4. Mengelola tabel di Atlaskit Editor

Sayangnya, matematika tidak didukung, tetapi editor itu sendiri didasarkan pada ProseMirror, jadi seharusnya tidak menjadi masalah untuk menambahkan solusi yang ada (+0,5) ke dalamnya. Ini pasti mendukung kolaborasi waktu nyata dengan kursor jarak jauh dan pilihan (+2), ini adalah salah satu contoh UI terbaik dari dukungan yang pernah saya lihat (misalnya, kursor jarak jauh gelap jika tumpang tindih dengan Anda sendiri, dan detail implementasi hebat lainnya ) Selain itu, dari pengujian saya, dukungan offline tampaknya sangat solid (+1) - ini mungkin disebabkan oleh pendekatan "kompetensi pusat" yang digunakan ProseMirror untuk kolaborasi . Wow, kita sudah mencapai 7,5 kiwi, dan masih banyak lagi poin! Silakan!

Sayangnya, di sinilah kita dihadapkan dengan kenyataan pahit. Seperti CKEditor, tidak ada implementasi sisi server yang tersedia untuk kolaborasi waktu nyata. Orang malas. Nyebelin besar. Saya ingin tahu apakah ini dapat diperbaiki? ..

Bagaimanapun, jika Anda terus turun sesuai dengan kriteria, maka segala sesuatu yang lain layak dengan qiwi: pasti digunakan dalam produksi (jutaan pengguna), dan memiliki dukungan seluler (+2). Tepat ketika saya akan mengumumkan pemenang (total 9,5 kiwi) dan menerbitkan posting ini, sesuatu yang lain muncul. Ternyata logo dan lencana yang digunakan dalam editor dan banyak komponen Atlaskit lainnya dilisensikan di bawah lisensi ADG yang sangat ketat, yang menyatakan bahwa Anda tidak dapat menggunakannya di luar alam semesta Atlas. Namun, ikon yang sama banyak digunakan dan diintegrasikan dengan ketat ke dalam editor. Nyebelin nomor dua, dan saya mengambil kiwi dari mereka. Kami kembali ke 8,5, dan jika Anda menghitung, Anda melihat bahwa hasilnya sekarang sama. Dan dia final.

Sekarang, jika Anda dapat melakukan sesuatu dengan ikon-ikon ini ...

Saya berpikir bahwa setelah semua kemajuan terbaru dalam editor teks online, akan sangat menyedihkan untuk tetap dengan dua editor hebat dengan fitur luar biasa yang masih tidak dapat Anda gunakan dalam proyek sumber terbuka - baik karena masalah perizinan, kurangnya blok bangunan yang dapat diakses, atau baik itu, dan yang lainnya.

Oleh karena itu, pertama saya mengembangkan sisi server (berdasarkan PostgreSQL, kerangka PubSweet dan campuran REST / WebSockets), kodenya tersedia di sini . Ini cukup sederhana, tetapi melakukan tugasnya dan memastikan kegigihan dokumen dan saluran komunikasi secara real time. Anehnya, berkat komunitas ProseMirror yang besar, saya dapat mengetahui bagaimana semuanya harus bekerja tanpa memiliki spesifikasi antarmuka yang tepat (+1 kiwi).

Dan kemudian saya mengganti ikon yang digunakan oleh editor dengan ikon dari set Feather . Secara khusus, tiga paket harus diganti. Karena lisensi ADG, antara lain, melarang karya turunan apa pun, paket ini harus diulang dari awal. Mungkin, karena ini, beberapa fungsi hilang, terutama dari sudut pandang aksesibilitas bagi penyandang cacat, tetapi basis terbuka yang baik diciptakan untuk pengembangan lebih lanjut. Misalnya, dalam beberapa kasus tidak ada alternatif yang lebih baik untuk ikon , jadi jika Anda ingin berkontribusi pada proyek ini, inilah masalah pertama (+1 kiwi)!

Semua ini berarti bahwa sekarang kita hanya setengah qiwi dari hasil yang sempurna (tetapi kita mungkin dapat mengatasi matematika). Apa yang terjadi adalah apa yang saya tidak percaya ketika saya memulai perjalanan ini. Ini juga berarti bahwa kita memiliki pemenang yang jelas dalam pertempuran ini, dan akhirnya Editor Atlaskit menang berkat komunitas ProseMirror yang beragam, terbuka, dan bermanfaat . Lihatlah dokumentasi proyek untuk instruksi di mana harus memulai. Saya percaya bahwa jika Anda memulai proyek baru dan sedang mempertimbangkan kemungkinan kerja sama secara real time, ini adalah tempat yang bagus untuk memulai, bahkan dengan semua peringatan .


Fig. 5. Tunjukkan kemampuan pengeditan waktu-nyata dalam Editor Atlaskit

Hasil akhir (dikoreksi): 10.5 / 11

Sebutkan yang terhormat


Ada dua editor yang ingin saya sebutkan, meskipun saat ini mereka tidak memiliki solusi siap pakai untuk kolaborasi waktu nyata, tetapi keduanya dibangun di atas perpustakaan yang mendukung fungsi ini. Mungkin keduanya punya rencana.


Fig. 6. Editor lilin (pengolah kata berbasis ProseMirror)

Yang pertama adalah Wax (dinamai tablet lilin kuno) dari Coko Foundation. Pengolah kata ini pertama kali dibuat di perpustakaan Substance ( repositori ), dan sekarang telah dibangun kembali di bawah ProseMirror ( repositori ). Ini secara eksklusif dikemas dengan fungsionalitas. Ini bukan fungsi yang kami berikan kiwi, tetapi mereka adalah fungsi yang sangat baik. Lilin awalnya dibangun untuk buku-buku penyusunan huruf , mendukung catatan (anotasi bernomor yang umum dalam buku), mengubah sejarah, mencari dan mengganti, ornamen dan lain-lain. Mungkin berikan jeruk untuk itu ? Dalam hal ini, Wax akan menerima 4 kiwi (lisensi terbuka, gambar, daftar, digunakan dalam produksi) dan beberapa jeruk, mungkin empat. . Ini banyak buah!

Tekstur



Fig. 7. Tekstur, editor berbasis zat

Terakhir, kami memiliki Texture , editor yang sangat spesifik, profesional (tetapi open source) untuk membuat konten ilmiah dalam format JATS (standar XML untuk artikel jurnal). Jika Anda berlatih menghitung buah, kita hampir pasti kehabisan jari: lisensi terbuka, tabel, gambar, dukungan matematika dalam, tautan dan rujukan silang, daftar, dukungan metadata, daftarnya terus berlanjut! Saya ulangi, baik Wax dan Texture adalah editor yang luar biasa , dan satu-satunya hal yang membuat mereka dari jumlah kiwi maksimum adalah kurangnya fitur co-editing real-time, yang didedikasikan untuk artikel ini.

Kesimpulan


Jika Anda membuat sistem di mana pengeditan kolaboratif waktu-nyata merupakan komponen utama, Anda telah memilih waktu yang tepat. Tahun lalu, lanskap telah matang, dan sekarang hampir semua solusi terbuka plug and play telah muncul di sini. Mungkin, dengan bantuan Anda, tepatnya dalam setahun kami akan memiliki seluruh rangkaian proyek terbuka. Dan mungkin, hanya mungkin, kita juga akan menggunakan alat yang dibangun di atas lapisan terbuka ini, tanpa menyadarinya.

Bacaan lebih lanjut


  1. Data yang dimasukkan sejarah: pohon-pohon kausal dan CRDT operasional
  2. Pelajaran dari Membuat Editor Teks Real-Time
  3. Contoh pengolah kata HTML
  4. Editing Bersama di ProseMirror

Source: https://habr.com/ru/post/id451204/


All Articles