emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

GSoC: collaborative editing


From: Brian Templeton
Subject: GSoC: collaborative editing
Date: Sat, 11 Apr 2009 16:07:20 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.91 (gnu/linux)

Would anyone be willing to mentor me for this project, if my application
is accepted?

Package name and title of the project (e.g.: emacs - better foo bar):

Emacs - collaborative editing system

Summary:

A real-time collaborative editing system for GNU Emacs.

Benefits:

This project will provide a free alternative to existing proprietary
collaborative editors such as SubEthaEdit and MoonEdit, and it will be
more extensible and will have more powerful editing features than
existing free collaborative editors like Gobby.

As an ancillary benefit, a precise change tracking mechanism will be
useful to other Emacs projects, particularly projects involving
hypertext and version control. For example, Planner could transclude
task list entries instead of keeping multiple copies of the same data in
different files, ensuring the consistency of the task database as well
as providing a more intuitive user interface.

Deliverables:

1. A precise change reporting mechanism, replacing
   {before,after}-change-functions. This will require cooperation with
   other Emacs developers and must not reduce performance for
   applications not requiring precise change reporting.

2. A transclusion system, which will be used as a test of the new change
  reporting mechanism.

3. A collaborative editing system using a modified version of the
   Jupiter algorithm
   (<ftp://ftp.lambda.moo.mud.org/pub/MOO/papers/JupiterWin.ps>),
   comprising:

   - A client written in Emacs Lisp.
   - A modified version of an existing server written in Erlang. (I
     wrote the server in 2007 for a commercial project; it has not yet
     been released to the general public.)

4. End-user documentation, including a user guide published either as
   Texinfo or on the EmacsWiki.

5. An updated version of the Emacs Lisp manual describing the new change
   reporting mechanism.

Plan:

In the time before May 23, I'll familiarize myself with the relevant
parts of Emacs's C code and discuss possible designs for an improved
change-tracking system with other Emacs developers -- on emacs-devel,
etc.

In the six weeks before mid-term evaluations, I'll implement the new
change-tracking system, write the transclusion library, and improve the
GOTO inclusion transformation function to avoid inefficient corner
cases. I'll also debitrot the Erlang server and add support for a simple
binary protocol in addition to the HTTP interface used by the old JS and
Flash clients.

During the last half of the program I will work on the client itself --
implementing the revised Jupiter algorithm, support for the binary
protocol, a simple interactive client, lists of remote users,
visualization of the activity of other users (e.g. coloring spans of
text according to who last edited it, indicating others' point
positions, etc.), and so on. If time permits, I hope to include some
sort of history-browsing feature and a useful undo command. I will also
write the user documentation during this time period.

I will be able to work on this full-time.

Communication:

I am willing to use whatever communications media my mentor finds
convenient: email, IM, telephone or voice-chat, etc.

I will publish my code in darcs repositories available via HTTP and in
AFS space.

Qualification:

I have been using Emacs and writing in Emacs Lisp since 2001 or so. I
have contributed small amounts of code to GNU Emacs and am the original
author of a few publicly released Emacs packages, including HCoop's
domtool-mode. I also have previous experience with real-time
collaborative editing systems; in 2007 I wrote a collaborative editing
system with an Erlang server and Javascript and Flash clients, and began
work on an Emacs client but found that it was not possible to write a
reliable client without hacking on Emacs internals.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]