Ok, Denis was faster in writing mails=)

Am 18.04.2011 03:40, schrieb Matt Chan:
> 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).
If you write to the Mailing list everybody knows about it, that's OK.

> 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.
You don't need to know GTK or something else, if you do changes like 
this you kneed to know Xournal;-)
(You need to change the Xournal Model and call rerender on the view, etc.)
> 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.
There are no big changes any more, Xournal++ is nearly finished, so the 
Api wont change.

If you really want to do this I'll create you the files where you can 
start, and where you get the necessary events you need. Xournal++ 
contains now about 30'000 lines of code, so it's not easy for you to 
find out where you should start...

> 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.
I't don't really matter what you would do, there are only two 
possibilities to start, everything else is to complicated, especially if 
you don't know Xournal++ and don't have much practise in C++ (C++ is 
really worse, because of memory Corruption etc.)

Anyway you need a server and clients, theoretical it's also possible 
that all "clients" have the same responsibility (P2P) but this is a lot 
more complicated.

Ideas to start:

1) All clients get all drawings from the server, but if the client draws 
on the document the changes are local, and not sent back to the server, 
so this is a one way solution.

2) If somebody draw something everybody gets a copy of this, as if 
you're all writing to the same paper, I think this is what you would do.
BUT: you have to disable Undo / Redo, this is to much to implement at 
the start. (We can add this later, but not at start)

Drawing: if a stroke is drawn you can Serialize it (Serialize of model 
content is implemented, everything you can draw on the screen you can 
also serialize).
BUT: you don't see the other drawing, you see only the stroke if it's 
finished.

Editing: Eraser, move selection, change color of selection, etc. should 
be implemented in a second part, else it's to complicated.
BECAUSE: you need an ID which is unique in the network, else you cannot 
refer to elements.

So, if you would do it write me an email, then I create a necessary 
files where you can start.

I is possible to implement "send new stroke" to all other, even if you 
don't have much practise, you can add all other functionalities later.

For this you only need to implement network connection, which is enough 
complicated;-)

(I'll add a configure flag so we can disable this if it's not yet 
stable, so there is no risk)

Andreas

> 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

------------------------------------------------------------------------------
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