Hi Matt,

I gave a lot of thought to collaborative editing a while ago, because I 
wanted it done *right*, i.e. in a manner that is robust with respect to 
network lags, disconnects/reconnects, etc. (which are likely since a lot 
of tablet users are highly mobile and might move between network access 
points while working), and allows each collaborator to undo their 
changes independently of each other.

It turned out to be too big a project given my available time and the 
preliminary need for a serious code rewrite before anything could be 
done. With xournalpp's much cleaner architecture, it's still a big 
project, but might be more doable.

I tried to summarize my thoughts on the question, and a proposed  in a 
May 2010 thread on this mailing list, more specifically the message

http://sourceforge.net/mailarchive/message.php?msg_id=25270238

which I encourage you to look at.

(Andreas as well, unless I've already spammed you with this: while this 
probably goes way beyond the scope of what you want to be doing for now, 
some of the structural constraints discussed in there might be of 
interest to you, in case they agree with design decisions you have been 
considering for xournalpp).

In terms of the theory of collaborative editing my views haven't changed 
since that May 2010 message. In terms of the practice, a few comments:

- no point in trying to do this with old-xournal, its code is not 
written appropriately to make this easily implementable.

- probably best to wait for Andreas to have reached a point where the 
code of xournalpp doesn't change too much anymore before doing real 
serious work. In any case, at this point it's certainly up to Andreas to 
decide whether he's ok with someone else working simultaneously on his 
code and to what extent. (But my impression is that it'd make sense to 
wait more, since xournalpp's code still seems to be evolving very fast.)

- it is probably worth taking a look at the structure of xournalpp in 
the context of future networking plans, to see if any changes would be 
desirable at this stage. (For example, would some tweaking make it 
easier to perform actions on the journal initiated by a network message 
rather than by the local user? How about the other issues I pointed out 
concerning the architecture of old-xournal?)

- while I'd love to end up with an elegant and powerful collaboration 
mechanism, I'm realistically not going to be the one doing it, and 
whoever does it gets to choose how it gets done. This is important 
enough that careful thinking should be required before moving on to any 
implementation, but you should feel free to disagree with my opinions on 
the question. All that matters in the end is that things work in a way 
that's reliable and user-friendly. If it means some reasonable 
restrictions on what can or can't be done simultaneously by the 
collaborators, so be it.

- finally, while I don't want to discourage any volunteers, I'd like to 
reiterate that this is not an easy thing to implement. I don't think 
much GTK+/UI familiarity is required, but it requires at least: a 
careful study and good understanding of the inner workings of 
xournal/xournalpp; experience with network programming (understanding at 
least the general principles and the constraints that arise, the actual 
handshake and messaging code can probably be outsourced to someone else 
if needed); experience with code that handles complex data (the 
interaction of real-time local user operations with networking is more 
challenging than one might imagine at first, and undo-redo adds a whole 
other layer of complexity, see my post referenced above).

Denis

On 04/17/2011 06:40 PM, Matt Chan wrote:
> Hi,
>
> I've been reading up on the xournal++ changes lately and I've been
> impressed. I'm not sure whether this would be better posed to Andreas,
> Denis, or anyone else, but I'm interested in adding collaborative
> functionality to xournal (and getting some C++ practice before I start
> my M. Sc in September).
>
> I have wanted to write up a collaborative notepad program ever since I
> tried to ask a calculus question to a friend over skype and couldn't
> draw a graph. I've looked at Xournal before, but I wasn't aware of what
> kind of changes would need to be made to implement collaborative
> functionality.
>
> Since the xournal++ effort is underway and my undergrad requirements are
> complete, I thought it might be a good time for me to get cracking on
> putting this together.
>
> Just a disclaimer: I'm sorely out of coding practice and lacking in
> experience. I did my undergrad in chem/comp sci, but I've been taking
> algorithms courses for the past few years. I've also never touched GTK+
> and I've only used Qt for a few hours. Finally, I've only collaborated
> with other people on a large programming project once, and we worked
> together in person. I may need a bit of hand-holding or have stupid
> questions. I hope people are willing to put up with me for a bit.
>
> I have a couple of questions before I start:
>
> 1) What code should I start working from? It seems that the xournal++
> trunk is actively changing, and I'd like not to write code that depends
> on a function only to find out it disappeared later on.
>
> 2) What kind of vision does everyone else have when they think of
> collaborative xournal? I'm interested in features and infrastructure
> requirements specifically. I'll use this information to try and figure
> out some kind of implementation that satisfies this.
>
> Thanks for your time. I hope that something great comes of this.
>
> Matt
>
> ------------------------------------------------------------------------------
> Benefiting from Server Virtualization: Beyond Initial Workload
> Consolidation -- Increasing the use of server virtualization is a top
> priority.Virtualization can reduce costs, simplify management, and improve
> application availability and disaster protection. Learn more about boosting
> the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev
> _______________________________________________
> Xournal-devel mailing list
> Xournal-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/xournal-devel


-- 
Denis Auroux                             aur...@math.berkeley.edu
University of California, Berkeley       Tel: 510-642-4367
Department of Mathematics                Fax: 510-642-8204
817 Evans Hall # 3840
Berkeley, CA 94720-3840

------------------------------------------------------------------------------
Benefiting from Server Virtualization: Beyond Initial Workload 
Consolidation -- Increasing the use of server virtualization is a top
priority.Virtualization can reduce costs, simplify management, and improve 
application availability and disaster protection. Learn more about boosting 
the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev
_______________________________________________
Xournal-devel mailing list
Xournal-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/xournal-devel

Reply via email to