From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Karl Fogel Newsgroups: gmane.emacs.devel Subject: Re: Question collaborative editing - Wikipedia reference Date: Sun, 04 Oct 2020 20:08:54 -0500 Message-ID: <87y2kla389.fsf@red-bean.com> References: <20200929215849.zg4wzytbrwx2b7ih@Ergus> <84B86B7C-81F0-42DF-894C-BF577E4B3D6E@mit.edu> <83a6x7js6y.fsf@gnu.org> <83eemji6e8.fsf@gnu.org> <20201001141144.GO4797@protected.rcdrun.com> <20201001160136.chwmpollk4d3qc2e@Ergus> <20201004175447.GG15516@protected.rcdrun.com> <87362tvnil.fsf@gmail.com> <20201004194815.GH15516@protected.rcdrun.com> <11EB917D-3276-4D34-8DCD-2336E8062950@mit.edu> Reply-To: Karl Fogel Mime-Version: 1.0 Content-Type: multipart/signed; boundary="==-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="26848"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) Cc: Ergus , Fermin , Jean Louis , Caio Henrique , Noam Postavsky , Emacs developers , Stefan Monnier , Eli Zaretskii To: Qiantan Hong Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Mon Oct 05 03:10:00 2020 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kPF0q-0006rN-9i for ged-emacs-devel@m.gmane-mx.org; Mon, 05 Oct 2020 03:10:00 +0200 Original-Received: from localhost ([::1]:42720 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kPF0p-0006n3-AZ for ged-emacs-devel@m.gmane-mx.org; Sun, 04 Oct 2020 21:09:59 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:52224) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kPF06-0006MH-3V for emacs-devel@gnu.org; Sun, 04 Oct 2020 21:09:14 -0400 Original-Received: from newsp.red-bean.com ([45.79.25.59]:60786 helo=sanpietro.red-bean.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kPF03-0003xp-NI; Sun, 04 Oct 2020 21:09:13 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=red-bean.com; s=202005newsp; h=Content-Type:MIME-Version:Message-ID: In-Reply-To:Date:Reply-To:References:Subject:Cc:To:From:Sender: Content-Transfer-Encoding:Content-ID:Content-Description; bh=EZQyodMfm4oR0cMKXxrcOEVQu16wW0tyNql/MCbR6kU=; t=1601860148; x=1603069748; b=GpBVNoi7L4MXfwVOsk/hR3JHaVJwbJZiemX+0yT0PucmxOJz6VJ9Oy6CKh0sad2/SF5ZyrV2tG XPV+oVt0yo767n2ypZiFrGgkscr5/1pbo5e65+1b2FgU1PY2jLqmx53QJgt2Pxg+xe/d7xsyLAfcx QcoIVmNtlPTbBDVTi7CvvF6wmpZ7KJsSpvsJkVQhPvfju8iH1HYZFdEFg/HhZcAVRs7M786RS4t4V J5Jk/Fr1uhrTL/BFLH5Y/XZb5pZKqJmcVI3K5f8vveba5XbDVYO1qKOTmZtk80ZlFdvBXAXKJ9i4H jI6bbyUwn923HenSJyQ5VxwV4bM0MTHTx3t/Q==; Original-Received: from 99-112-125-163.lightspeed.cicril.sbcglobal.net ([99.112.125.163]:53924 helo=floss) by sanpietro.red-bean.com with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kPEzw-0005Pi-Iu; Mon, 05 Oct 2020 01:09:04 +0000 In-Reply-To: (Qiantan Hong's message of "Mon, 5 Oct 2020 00:05:30 +0000") Received-SPF: pass client-ip=45.79.25.59; envelope-from=kfogel@red-bean.com; helo=sanpietro.red-bean.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/04 21:09:08 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:257060 Archived-At: --==-=-= Content-Type: multipart/mixed; boundary="=-=-=" --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable >Note that there=E2=80=99s some calls to CRDT-VERIFY-BUFFER >which is just for debug purpose (it scan the whole buffer and=20 >verify integrity). For a performance evaluation replace >it with an empty function or just comment out those calls. Note to those who looking for that string in crdt.el: The symbol is actual= ly `crdt--verify-buffer'. Qiantan, I'm very excited that you've started this work! I'll look at the = code try it out right away. May I suggest putting a copyright notice at the top of the file, so it's cl= ear that this is free software? Please see the attached patch for an examp= le of how to do it. Best regards, =2DKarl >> On Oct 4, 2020, at 7:59 PM, Qiantan Hong wrote: >>=20 >> I=E2=80=99ve finished the initial work for a CRDT based >> collaborative editing Elisp package. The .el is attached. >>=20 >> The focus is on implementing the core algorithm >> and evaluating performance, so no cursor indicator, >> username display etc was implemented. However, >> they should be easy to add and not relevant to performance >> concern. >>=20 >> I=E2=80=99ve tested it with my friends and the performance seems=20 >> reasonable. Using LogootSplit algorithm, the number of >> text property changes are relatively small. >>=20 >> M-x crdt-test-server starts a local server at port 1333, >> and M-x crdt-test-client connects to 127.0.0.1:1333. >> Or use crdt-serve-buffer and crdt-connect for arbitrary >> address/port. >> --=-=-= Content-Type: text/plain Content-Disposition: inline; filename=crdt-provenance-patch.txt Content-Transfer-Encoding: quoted-printable =2D-- crdt.el 2020-10-04 19:59:06.345935516 -0500 +++ crdt.el 2020-10-04 20:06:29.778398189 -0500 @@ -1,3 +1,24 @@ +;;; crdt.el: collaborative editing using Conflict-free Replicated Data Typ= es +;;=20 +;; Copyright (C) 2020 Qiantan Hong +;;=20 +;; Author: Qiantan Hong +;; Maintainer: Qiantan Hong +;; Keywords: collaboration crdt +;;=20 +;; CRDT is is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. +;;=20 +;; CRDT is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. +;;=20 +;; You should have received a copy of the GNU General Public License +;; along with CRDT. If not, see . + (require 'cl-lib) =20 ;; Loogoot split algorithm --=-=-=-- --==-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQJIBAEBCgAyFiEEsgfAWXyjn8Fyi3xbCKC3XMXtg0UFAl96ciYUHGtmb2dlbEBy ZWQtYmVhbi5jb20ACgkQCKC3XMXtg0WDTw//evuNAO92HRrSyxB3p5x51N8RPIPj 1wV3dy4wU/zqxkfg6WUY7HUxoF8XS53LdC1o8FhbCm0yhZeouS4bCtWm0g/Dkm7N E7OT1WY1wK0Qemz0mkyx/0Hy2X7Oj32KpCeESYmDUOHzjbOBtfzrPGPkJxzzAw+/ 1TR92pbw3bO6B+RtWOnu96hoVxXG3LcROZuycvAAFKQBUMej8Juzm2inlYUXIgP4 XyChHm06Wkm1MzNGiaSYISJGsdefRUw4qdriIeTG7k84Hu8KFgt0A9a6/ChiXTXi 6lAxiAV1vXeAMtQJBZWCQ3sR/oBvSrcojLynj/eCpZOEfPS5yu6S3fwWz3Is+SvS dSQ58XIM+ejBQrE8zu5FaAxVzZF1oM6n51J9/tJPFWFQvOAX6Fr8iX+rhUUSJRqW sz8S++38ClQYDOcTdaXCVl/BAvAiYpDz24GWnZ37I6P+jAVLdpPOivzLEHtmHgHa +aOkmS0ruQPk9mo9QWiZB8eGqsSQE0tFzHkFlFibWga8H6Zuii323hjXSfHUKbda dGwpvgQyjV0eYaX9nD2MuPRSMJhjkumyiKYRbWXz+YPtGo+XgD2c2bLbVu+9SqHb D7ENZjZxhXmvgt2+2ui5gtAEweOiHMKqhEuSBLNxsMT2QfZMHuBE5uz4U9I+0hNF Fy0NT57lt4MpONc= =FiKf -----END PGP SIGNATURE----- --==-=-=--