216
edits
Neustradamus (talk | contribs) m |
Neustradamus (talk | contribs) 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 [ | 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 | 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 | * 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 | 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 | * Read documentation again, mainly other XEPs and a few old mailing lists, especially about writing the XEP. | ||
* Started writing the | * 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 | 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 | * 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 | * 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 | * 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 | * 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 | * 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 | * 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 | 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 | 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 | # 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 | ** Initial draft for XEP | ||
* 0.1.1 - 0.9.9 | * 0.1.1 - 0.9.9 | ||
**Fixing bugs, Getting feedback, Improving | **Fixing bugs, Getting feedback, Improving XEP | ||
* 1.0.0 | * 1.0.0 | ||
** Psi: Bug free | ** Psi: Bug free | ||
** | ** XEP usable, even if not final | ||
[[Category:Summer of Code 2006]] | [[Category:Summer of Code 2006]] |
edits