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