caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Adrien Nader <adrien@notk.org>
To: caml-list@inria.fr
Subject: [Caml-list] [ANN] Prose v1 - a collaborative text editor
Date: Thu, 6 Jul 2017 14:13:51 +0200	[thread overview]
Message-ID: <20170706121351.GA15013@notk.org> (raw)

Hello,

I am happy to announce the first release of Prose, a collaborative text
editor started after being both frustrated and horrified by Etherpad
Lite.
Etherpad Lite is heavily used in groups I am involved in or close to:
FFDN, DIY ISPs, Éxégètes Amateurs, Framasoft, ... (all being horrible
leftists and libre-ists). It occurred to me that its bugs,
administration costs and limitations were hampering us.

It realistically aims at replacing Etherpad Lite with something better
on every aspect for both clients and servers: lower CPU, memory and
network usage, more features, fewer bugs and an active development.

The code is hosted on https://gitlab.com/adrien-n/prose and can be
downloaded either through git or through tarballs on
https://gitlab.com/adrien-n/prose/tags .
A demo is available on http://prose.yaxm.org/pads/caml-announce . Any
document name can be used and the website root is an alias for
"default".

Its development has been in line with the vision of the new French
President to make France a « Startup Nation ».
As such, the current release works, has an UI that shouldn't change too
much but also has a few caveats that aren't immediately visible. It is a
« minimum viable product », i.e. « a product with just enough features
to satisfy early customers, and to provide feedback for future
development. » [1]. It is believed the AGPLv3 license will scare
absolutely no angel investor.

I haven't conducted thorough benchmarks because performance is very
clearly in favor of Prose:
- lower network usage for cold and hot browser caches, almost optimal,
- much much lower CPU usage
- > 4 times lower server-side memory
- > 5 times lower page load time

Installation is not documented through an Ansible role which is stored
under ansible/ in the sources. Ansible code is not very fun to write but
reading it shouldn't be an issue and it guarantees the procedure is
always up-to-date.

The project wouldn't exist without Ocsigen and QuillJS.
QuillJS [ https://quilljs.com/ ] is a rich-text editing widget which
features Operational Transform [2] for edition deltas.
Ocsigen [ https://ocsigen.org/ ] is already well-known in the OCaml
world; it does most of the hard work an everything else is based on it.

The code has been quite heavily documented and its entrypoint is
prose.eliom.
One of the project goal has been to make an ocsigen project that could
be used by others to learn. Maybe it has now grown too much for that but
it should still be possible to extract interesting blocks and make a
nice tutorial using it.

Besides general improvements, future version will introduce client-side
storage, session-handling and encryption along with more export formats.
Tests, bug reports and contributions are warmly welcome. Development is
carried on gitlab which handles oauth2 and authentication using accounts
from twitter, facebook, github and bitbucket is possible.

[1] https://en.wikipedia.org/wiki/Minimum_viable_product
[2] https://en.wikipedia.org/wiki/Operational_transformation

-- 
Adrien Nader

             reply	other threads:[~2017-07-06 12:13 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-06 12:13 Adrien Nader [this message]
2017-07-06 22:39 ` SP
2017-07-11 11:53 ` Sébastien Hinderer
2017-07-11 13:09   ` Adrien Nader
2017-07-11 15:24     ` Sébastien Hinderer
2017-07-13  6:38       ` Adrien Nader
2017-07-13  6:52         ` Sébastien Hinderer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170706121351.GA15013@notk.org \
    --to=adrien@notk.org \
    --cc=caml-list@inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).