On 14/04/13 05:45, Marcelo Galvão Póvoa wrote: > Greetings! > > My name is Marcelo Galvão Póvoa, a Computer Science graduate student from > UNICAMP, Brazil.
Hi Marcelo, welcome to LyX! As outlined by others, consider that to apply to GSoC 2013 for a project related to LyX you should follow the application procedure outlined here: http://www.google-melange.com/gsoc/org/google/gsoc2013/lyx. Of course we can preliminarily discuss on the list a number of issues related to the project, to understand what are the best implementation paths. See below. > Coincidentally enough, I have already coded such thing for a school project > once: it was a very simple text editor with support for multiple users > editing the same document with a server used to receive and dispatch updates. > It was written in Java using RMI and it behaved much like Google Docs does. > Indeed, it was very important to carefully design the update routines to > ensure consistency and be coherent. The most challenging part was dealing > with Undo/Redo operations after the contents were modified. Your prior experience seems valuable in this context, and I see you dropped a number of very focused questions arising sensible issues. > I have a couple questions to ask: > - Can someone point me to the proof-of-concept patch that was posted on the > list? I searched but couldn't find it. Both the LyX Chat and the collaborative editing were merged into a patch available at: http://www.lyx.org/trac/ticket/7964 > - Is the network approach supposed to be peer-to-peer? That patch was a quick'n'dirty hack that I realized in the fastest possible way. So, I assumed LyX instances could be reachable from one another, so I used one of them as a server, the other as a client. Unfortunately, this would not be the case 99% of the regular usage cases, so a server should be needed to let users find each other, from a networking perspective. However, also having the document kept onto a server may also be possible, but it has pros and cons: pros: - document always available, no need for waiting the server user to be on-line (as it was required in the patch). However, other possibilities are to allow for off-line editing, and synchronizing only when the users are on-line cons: - security/confidentiality: the server sees the document :-(! In the other case, info among users may be client-side encrypted, so the doc may be confidential to the users having access to it. Not sure if a server might limit itself to keep merely a set of encrypted actions to be propagated across clients, then when they connect they would get them and apply them locally to the document. In such a way, the security issue would be overcome, but perhaps consistency issues would become more difficult. Also, such a set-up might have lots in common between interactive editing and a chat client (suggested as two projects, merely because in the case of the chat there's no consistency issues to deal with, so it's easier). > If so, I guess it would be harder to ensure consistency across local copies > of the document since a user can disconnect at any time (e.g, just before or > after making an edit). A centralized approach would be easier, with the > server keeping a copy of the document, but should have more scalability > issues. all good remarks. > - How would we deal with more complex actions such as when a user adds an > image? If we just add the inset to the other user, the image reference will > be obviously broken, but should we actually upload the file? Doesn't seem > like a good idea since it may be modified later. in the protocol one might vehicle also the added external content(s), perhaps with as an optional action. Though, such a feature would "cross" with version-control features (support for git/svn...) > I am looking forward to your feedback. Just tried, thanks for your inquiry. Feel free to reply with your further comments. Thanks, T.