WEBVTT

00:00.000 --> 00:12.000
So let's welcome Mikhail Mikhail Mikhail

00:12.000 --> 00:13.000
Who will talk Mikhail?

00:13.000 --> 00:20.000
We'll talk about using the strategies for collaborative commenting on your favorite free software desktop

00:20.000 --> 00:25.000
Work processor, you have to guess which one it is, or maybe you got it already

00:25.000 --> 00:28.000
Let's welcome him with a round of applause

00:30.000 --> 00:50.000
Okay, so first I want to thank Annette Foundation for the funding for this project because otherwise it wouldn't be possible

00:51.000 --> 01:03.000
And yeah, so we've worked on this for a little while and I guess you all know the writer application

01:03.000 --> 01:12.000
That is a very famous desktop application this 30 years old is very complex as many features

01:12.000 --> 01:24.000
And we wanted to explore as a prototype whether it's possible to enable some sort of collaborative editing in writer using CADDs

01:24.000 --> 01:34.000
And you should not expect that this is perfectly working on its prototype just to explore the possibility

01:34.000 --> 01:37.000
And so how does it look like?

01:37.000 --> 01:49.000
This is an example here where we have two writers running on the same system connected over local software

01:49.000 --> 02:04.000
And in the comments edit comments and format comments, so the main document itself is read only so you can only interact with the comments

02:04.000 --> 02:11.000
This is because yeah, writer has too many features and the comments have much fewer features

02:11.000 --> 02:16.000
So this was a realistic way to get anything working at all

02:16.000 --> 02:27.000
Yeah, and we even have some implementation of Andrew which is a bit fragile but kind of works

02:27.000 --> 02:32.000
Using also the right

02:32.000 --> 02:41.000
So the first question which we started with is which CADDs should we use and we looked at a few papers it definitely looked like

02:41.000 --> 02:49.000
There were very smart people working on CADDs much smarter than we are so we should reuse an existing library not write our own

02:49.000 --> 03:06.000
So we picked the wires CADDs library and this hasn't happened with also the first rust code that anybody integrated into into writer or which is otherwise CADDs plus

03:06.000 --> 03:24.000
And why we choose the wires because it has a rich text editing types of white text that supports all of the features that the edit engine text editing component in our application offers

03:24.000 --> 03:34.000
So there are actually two text editing components the other one is writer itself basically but the comments use edit engine

03:34.000 --> 03:38.000
Yeah, so we wrote a lot of boring civilization code

03:38.000 --> 03:42.000
What does the CADD itself look like?

03:42.000 --> 03:47.000
So we have a white document it can change the map of comments

03:47.000 --> 04:00.000
The each comment has an anchor position that is just two integers which have to be manually updated for any editing of the writer document

04:00.000 --> 04:04.000
And that's why you can only insert and delete comments

04:04.000 --> 04:16.000
Then we have a map of properties that the comment has and the white text itself that basically duplicates all of the states of the internal edit engine edit document

04:16.000 --> 04:24.000
So the way it works to use a does something then it goes into the edit engine

04:24.000 --> 04:34.000
And that then updates the white text and that it's sent over the network and the other end it is received is applied to the white text

04:34.000 --> 04:44.000
And then that updates the edit doc and then someone invalidates to window and the user CZ update

04:44.000 --> 04:55.000
And actually turn out that figuring out how this invalidation and updating things should work in our own code

04:55.000 --> 05:02.000
It took more time to figure out than the white slavery interface and so on and how to use that

05:02.000 --> 05:17.000
Okay, then we also have the colors of each peer we have a color as you continue in the demo in writers just to introduce in edit engine

05:17.000 --> 05:22.000
We could also use the reference from the way it's library

05:23.000 --> 05:27.000
So how does it work well kind of it kind of works here

05:27.000 --> 05:36.000
We can do all of the formatting we can we have curves of we have under which is a bit fragile

05:36.000 --> 05:44.000
Yeah, as I said, why is it basically as it's alphabet works we had just one problem with an experimental feature

05:45.000 --> 05:54.000
Yeah, we're only testing these two peers there are some open questions that I don't know the answers to and I think we're out of time

05:56.000 --> 06:01.000
Thank you very much

