Difference between revisions of "Psi Whiteboarding"

Jump to navigation Jump to search
3 bytes removed ,  01:01, 18 December 2020
m
no edit summary
m
 
m
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
==Latest Progress==
==Latest Progress==


If you're interested in learning about Psi Whiteboarding and/or Shared XML Editing (SXE), check out [http://xmpp.org/extensions/inbox/sxe.html the latest documentation] and the [http://psi-im.org/development/ Psi svn repository]. Simply uncomment "CONFIG += whiteboarding" in src/src.pro before running make to enable (experimental) whiteboarding in Psi.
If you're interested in learning about Psi Whiteboarding and/or Shared XML Editing (SXE), check out [https://xmpp.org/extensions/inbox/sxe.html the latest documentation] and the [http://psi-im.org/development/ Psi svn repository]. Simply uncomment "CONFIG += whiteboarding" in src/src.pro before running make to enable (experimental) whiteboarding in Psi.


==Overview==
==Overview==


This SoC 2006 project aimed to design a proposal for a JEP for whiteboarding and implement it for Psi. The Summer of Code is now finished and the code and the JEP draft I wrote can be found in this [[Media:Wbfiles.tar.gz]] file as they were at the time of the deadline. However, those files are completely outdated; check the "Latest Progress" section above for up-to-date information.
This SoC 2006 project aimed to design a proposal for a XEP for whiteboarding and implement it for Psi. The Summer of Code is now finished and the code and the XEP draft I wrote can be found in this [[Media:Wbfiles.tar.gz]] file as they were at the time of the deadline. However, those files are completely outdated; check the "Latest Progress" section above for up-to-date information.


==Progress Reports==
==Progress Reports==
Line 18: Line 18:
** Installed darcs and pulled Psi
** Installed darcs and pulled Psi
** Installed Coccinella for reference
** Installed Coccinella for reference
* Read again different existing material on the topic, like JEP-113, Mats' Memo, the whiteboarding mailing list, David Durand's Palimpsest model, some of the Tiny SVG spec and the XMPP specs.
* Read again different existing material on the topic, like XEP-113, Mats' Memo, the whiteboarding mailing list, David Durand's Palimpsest model, some of the Tiny SVG spec and the XMPP specs.
* Defined subgoals for defining the protocol and wrote notes outlining what I think would be the principles, assumptions and basic format of the protocol in relation to these subgoals. Spent most of the first two days or so worrying about lost  or corrupt packages which was of course redundant. Anyway, at least it came up quite soon.
* Defined subgoals for defining the protocol and wrote notes outlining what I think would be the principles, assumptions and basic format of the protocol in relation to these subgoals. Spent most of the first two days or so worrying about lost  or corrupt packages which was of course redundant. Anyway, at least it came up quite soon.
* Got in contact with Mats
* Got in contact with Mats
Line 26: Line 26:
===Week 2 (13.6-19.6.2006)===
===Week 2 (13.6-19.6.2006)===
====General====
====General====
This week I spent quite a lot of time on the project. I tried to note down the hours and all in all they amount to about 41 hours excluding all breaks. I spent amount quarter of the time on thinking about Mats' synchronization scheme and writing a proof for it for multiple clients. That's quite a lot of time but I think it was worth it because now it should be clear that the scheme works given some assumptions. This week I also finally got to write some code. I wrote two classes related to rendering changing SVG documents inherited from Qt's own QSvgRenderer and a test app to wrap the classes. This took more that half of my time this week because I had to learn some Qt, read the QSvgRenderer sources and remind myself of some of the C++ ways of coding because I've been recently using "higher level" languages like Perl or C#. I spent the remaining time starting to write the JEP, reading other JEPs and exploring the Psi code and thinking how to integrate my components there. All in all, I'm happy with the progress I made this week. The one question mark to me at the moment is how I'm going to implement the edit user interface. I can start from scratch but I'd be really surprised if there wasn't already a similar interface in some existing Qt based project that I just haven't found yet.
This week I spent quite a lot of time on the project. I tried to note down the hours and all in all they amount to about 41 hours excluding all breaks. I spent amount quarter of the time on thinking about Mats' synchronization scheme and writing a proof for it for multiple clients. That's quite a lot of time but I think it was worth it because now it should be clear that the scheme works given some assumptions. This week I also finally got to write some code. I wrote two classes related to rendering changing SVG documents inherited from Qt's own QSvgRenderer and a test app to wrap the classes. This took more that half of my time this week because I had to learn some Qt, read the QSvgRenderer sources and remind myself of some of the C++ ways of coding because I've been recently using "higher level" languages like Perl or C#. I spent the remaining time starting to write the XEP, reading other XEPs and exploring the Psi code and thinking how to integrate my components there. All in all, I'm happy with the progress I made this week. The one question mark to me at the moment is how I'm going to implement the edit user interface. I can start from scratch but I'd be really surprised if there wasn't already a similar interface in some existing Qt based project that I just haven't found yet.
====Things I did====  
====Things I did====  
* Wrote a proof for Mats' sync scheme
* Wrote a proof for Mats' sync scheme
Line 32: Line 32:
* Wrote SvgStreamRenderer and SvgStreamWidget classes (compare to QSvgRenderer and QSvgWidget)
* Wrote SvgStreamRenderer and SvgStreamWidget classes (compare to QSvgRenderer and QSvgWidget)
[[Image:wbtestapp1.png|center]]
[[Image:wbtestapp1.png|center]]
* Read documentation again, mainly other JEPs and a few old mailing lists, especially about writing the JEP.
* Read documentation again, mainly other XEPs and a few old mailing lists, especially about writing the XEP.
* Started writing the JEP
* Started writing the XEP
===Week 3 (20.6-26.6.2006)===
===Week 3 (20.6-26.6.2006)===
====General====
====General====
I managed to spend quite a lot of time on the project again, regardless of the midsummer's party here in Finland. I noted down 36.5 hours but I don't think that includes all of it. I think I spent the time more or less equally between working on the draft of the JEP and working on the code to process and render the elements according to the JEP. Besides that there was a useful groupchat with people interested in whiteboarding on Monday. I had some technical difficulties with receiving messages but otherwise that meeting was very useful. Also, I was in contact with Mats again and Dale who develops the Inkboard as his SoC project.
I managed to spend quite a lot of time on the project again, regardless of the midsummer's party here in Finland. I noted down 36.5 hours but I don't think that includes all of it. I think I spent the time more or less equally between working on the draft of the XEP and working on the code to process and render the elements according to the XEP. Besides that there was a useful groupchat with people interested in whiteboarding on Monday. I had some technical difficulties with receiving messages but otherwise that meeting was very useful. Also, I was in contact with Mats again and Dale who develops the Inkboard as his SoC project.
====Things I did====  
====Things I did====  
* Improved the JEP
* Improved the XEP
* Did some small polishing to the proof of the sync scheme with Mats.
* Did some small polishing to the proof of the sync scheme with Mats.
* Wrote a WbWidget class that processes full <wb/> elements and renders them using SvgStreamRenderer
* Wrote a WbWidget class that processes full <wb/> elements and renders them using SvgStreamRenderer
Line 49: Line 49:
====Things I did====  
====Things I did====  
* Discussed many protocol and some implementation issues with Mats (Coccinella) and Dale (Inkboard)
* Discussed many protocol and some implementation issues with Mats (Coccinella) and Dale (Inkboard)
* Consequently improved the JEP again
* Consequently improved the XEP again
* Wrote rough versions of WbManager and WbDlg classes for Psi
* Wrote rough versions of WbManager and WbDlg classes for Psi
* Modified Iris (Psi) code to parse the <wb/> elements
* Modified Iris (Psi) code to parse the <wb/> elements
Line 59: Line 59:
====Things I did====  
====Things I did====  
* Discussed many protocol and some implementation issues with Mats (Coccinella) and Dale (Inkboard)
* Discussed many protocol and some implementation issues with Mats (Coccinella) and Dale (Inkboard)
* Consequently improved the JEP again
* Consequently improved the XEP again
* Installed Qt 4.2 TP1
* Installed Qt 4.2 TP1
* Rewrote WbWidget and WbScene (which replaces SvgStreamRenderer)
* Rewrote WbWidget and WbScene (which replaces SvgStreamRenderer)
Line 85: Line 85:
Week 8 was good and I managed to do most of the things mentioned below during that. On the other hand I was occupied by non SoC matters for almost all of Week 9.
Week 8 was good and I managed to do most of the things mentioned below during that. On the other hand I was occupied by non SoC matters for almost all of Week 9.
====Things I did====  
====Things I did====  
* Discussed many protocol and some implementation issues with Mats (Coccinella) and Dale (Inkboard) as well as someone called Bernhard who's doing Jabber whiteboarding with Javascript.
* Discussed many protocol and some implementation issues with Mats (Coccinella) and Dale (Inkboard) as well as someone called Bernhard who's doing XMPP whiteboarding with Javascript.
** Consequently, changed some of the syntax and structure of the <configure/> element
** Consequently, changed some of the syntax and structure of the <configure/> element
* Added support for changing properties (color, stroke width) of existing elements through a context menu.
* Added support for changing properties (color, stroke width) of existing elements through a context menu.
Line 107: Line 107:
====Things I achieved====  
====Things I achieved====  
* Made small changes to the negotiation process
* Made small changes to the negotiation process
* A major update to the JEP draft so that it now accurately describes the protocol I use
* A major update to the XEP draft so that it now accurately describes the protocol I use
* Restructuring of the classes
* Restructuring of the classes
* Added support for adding the the shape elements (except polyline/polygon) of SVG
* Added support for adding the the shape elements (except polyline/polygon) of SVG
Line 122: Line 122:
|-
|-
|  
|  
* Draft a JEP
* Draft a XEP
|
|
* 60 %
* 60 %
Line 184: Line 184:


==References==
==References==
I've used sources listed at [http://laukner.freewebpage.org/] for information and particularly I've used JEP-0113 and Mats Bengtsson' memo [http://www.visit.se/%7Ematben/SVG/MemoSVG_XMPP.txt].
I've used sources listed at [http://laukner.freewebpage.org/] for information and particularly I've used XEP-0113 and Mats Bengtsson' memo [http://www.visit.se/%7Ematben/SVG/MemoSVG_XMPP.txt].




Line 191: Line 191:
Introduction
Introduction
----
----
I want to research and design a whiteboarding solution for the Jabber protocol. Clearly, there is interest for this[1] and some client specific implementations already exist[2]. However, in order for the feature to be adopted the clients need to inter operate. I think that the Google SoC is an excellent opportunity to have a person (i.e. me :) prepare a solid draft for a whiteboarding JEP based on the suggestions of different developers and the lessons of different existing solutions. Alongside with developing the protocol I would develop support for it for Psi. Obviously, I can not promise that the JEP will be final by the the end of the summer, in fact it's unlikely, because of the community based procedure. However, I will do my best to produce a solid framework.
I want to research and design a whiteboarding solution for the XMPP protocol. Clearly, there is interest for this[1] and some client specific implementations already exist[2]. However, in order for the feature to be adopted the clients need to inter operate. I think that the Google SoC is an excellent opportunity to have a person (i.e. me :) prepare a solid draft for a whiteboarding XEP based on the suggestions of different developers and the lessons of different existing solutions. Alongside with developing the protocol I would develop support for it for Psi. Obviously, I can not promise that the XEP will be final by the the end of the summer, in fact it's unlikely, because of the community based procedure. However, I will do my best to produce a solid framework.


Deliverables
Deliverables
----
----
# Initial draft for a JEP for Whiteboarding protocol.
# Initial draft for a XEP for Whiteboarding protocol.
# Implementation of the protocol for Psi (C/C++ source, documentation).
# Implementation of the protocol for Psi (C/C++ source, documentation).


Line 222: Line 222:
** Features complete
** Features complete
** Testing and bug tracking
** Testing and bug tracking
** Initial draft for JEP
** Initial draft for XEP
* 0.1.1 - 0.9.9
* 0.1.1 - 0.9.9
**Fixing bugs, Getting feedback, Improving JEP
**Fixing bugs, Getting feedback, Improving XEP
* 1.0.0
* 1.0.0
** Psi: Bug free
** Psi: Bug free
** JEP usable, even if not final
** XEP usable, even if not final


[[Category:Summer of Code 2006]]
[[Category:Summer of Code 2006]]
216

edits

Navigation menu