Saturday, August 17, 2013

GSoC: Collaborative text editing in Kate + kde-telepathy: status report No. 3

Read my first status report for a more general introduction on what is happening. The second report gives some information about features implemented earlier.

Much has happened in the "bring collaborative text editing to kate and kde-telepathy" project! This blog post will outline some of the most important changes, such as undo support and sharing documents with chatrooms.
Current snapshot of kte-collaborative


Sharing documents with chatrooms


Cool feature, but not much to say about it: You can now share documents with XMPP chatrooms. As soon as a user joins the chatroom with any Telepathy-based client (or when he's already in there), he will receive an invitation to accept the "edit document" request.
In such a connection, the user initiating the connection is the host; if he disconnects, the connection breaks. This might need to be improved in the future.

Interacting with existing connections

So far, connections established by Telepathy (i.e. connections created through clicking "Share with contact") were pretty much a black box to the user; they were created in the background and never appeared explicitly in the user interface. Experience has shown me that this is not going to work; the topic of how connections should be managed (when to create a new connection, when to re-use which connection, when to close a connection ...), although it might seem simple, gets surprisingly complex quickly -- to a point where it's very difficult for an algorithm to make the choice the user actually wants. Even the question on when to close a connection gets very complex when both users can use an arbitrary amount of applications (e.g. kate and KDevelop) to edit an arbitrary amount of different documents.
I have thus decided that the concept of connections should be transparent to the user so he can decide himself what to do.
For this, we have a new widget listing Telepathy-iniatated connections, which is used in the "Open" and "Share" dialogs:
The new "Open" dialog, allowing to open files from existing connections

The new "Share" dialog, allowing to share documents with chatrooms, and adding documents to existing connections

Text tooltips

After fixing the interface for this in kate, we now have tooltips when moving the cursor over some text which tell who wrote this text!
Tooltips telling you who wrote some text.
Like every feature which could possibly be annoying, you can of course turn this off in the settings.

Undo support

The collaborative undo implemented by libinfinity now replaces KTE's plain undo. This means if you hit "undo" now, the editor will only undo what you wrote, and not what another user might just be typing.
Because of resource constraints, the size of the undo history is quite limited though, so I am considering to provide two undo functions -- one which only undoes what you wrote, and one which just stupidly undoes the last operation globally.

General UI polishing and bug fixes

Several grave and several less grave bugs have been fixed, making the program much more stable and reliable. Additionally the UI has been improved in several places. An example for this is better integration with dark colour schemes.
Reasonable automatic choice of colours for dark colour schemes
Fine-tuning of the colours can be done in the settings dialog.

Internal restructuring

A lot of internal restructuring has been done in the Telepathy-related parts of the project, which for example allowed for the "existing connections" widget presented above to be created.

Future plans

There are a few points which need to be sorted out next:
  • Error recovery for the text buffer part: in case something goes wrong, we should just reload the document (this doesn't lose data). Of course nothing should go wrong, but you all know what computers are like.
  • Automatic updates in the KIO slave, to display files created by remote users in the list immediately
  • Stabilization of the Telepathy Tubes backend we use for establishing connections (there's some issues there, but I'm quite positive we've tracked them down now).
Regardless of how bullet points 2 and 3 go, the plan is to do a beta release as soon as 1 is implemented, and have a stable release before the end of the next week; with the intention of people testing the concept and the non-Telepathy related parts (the latter need a bit more polishing before they are truly great).

No comments:

Post a Comment