GSoC: Kobby Week 8
There has been a lot of development work this past week with Kobby. After posting about some design issues I was attempting to clear up before diving into code, Armin Burgmeier (Creator of infinote) pointed out that the term ’session’ in infinote is used to describe the editing ’session’ of a single document, unlike in Kate where it is used to describe a set of documents. Instead of deciding whether confuse either users or developers, I came up with a new naming scheme for the control dialogs which might actually better represent the actions being performed.
After getting the control dialogs worked out I went to connect the infinote functionality for an XmppConnection and ran into some issues with sigc++ and Qt. Luckilly this was a quick (albeit somewhat dirty) fix. It wasnt much longer before I got the connection functionality working, and ran into the next issue: Needing to use the Glib event system from my Qt app. Luckilly, libinfinity was designed to allow for the plugging in of any event system by implementing the Io interface the library provides to register sockets to be monitored and the handling callback functions (very cool). The only issue now is that as far as I can tell, the way this is implemented doesnt doesnt fit well with Glibmm’s design, meaning I may have to create the C GObject subclass for proxying the C++ wrapper by hand.
GSoC Phase 2: Kobby Development
After over a month of working on a C++ wrapper for the infinote libraries I was finally able to start development of the collaborative editing KTextEditor plugin this week. Its amazing what getting to see some of your development work in action, no matter how little, can do for inspiration. This week I plan on completing the session management interface and all its appendages (join session dialog, create session dialog, etc…) and hopefully will have functionality for users to connect to infinote servers by the weeks end. For those of you wondering what I’m referring to by session management: The infinote libraries allow for a set of documents, which comprise a session, to be hosted on a server and be collaboratively edited simultaneously. The Kobby session manager will allow users to join any number of sessions, keeping track of the documents in each editing session and opening/closing them when joining/leaving an infinote session. This brings up some design issues: Because a session could have a large number of documents, downloading and opening all the documents upon joining a session doesn’t seem like a good idea. The options I see are (a) creating a document management interface to select documents to open off the infinote server or (b) having a lazy-opening implementation where documents on the server are added to the editing session, but are not pulled off the server until they are actually selected by the user (anyone know for sure if this is possible?). For now, I’m going to take the document manager interface route, but the lazy implementation sounds like a tempting project, maybe worthy of an option in the configuration interface.

