freesoftware, Kde, Planet

KDE-Telepathy Sprint (aka Woshibon) 2 ā€“ Day 3

Today was sadly the last day of the sprint. We had some more discussion, a short course by grundleborg about unit tests, a short walk around Cambridge after launch and a lot of hacking. Moreover we decided the new features that hopefully will land in the next release. We have a list of 22 cool features that we we want to implement before the 8th of October (soft freeze for Tech Release 0.2). And this list doesn’t include the stuff implemented and all the bugs fixed after the 0.1 release. Unfortunately audio and video call won’t land in the next release due to dependency problems (but if you are brave enough you will be probably able to compile the dependencies and the audio call ui from the git repository), and Nepomuk integration and contact merging will be delayed some more. However we will have drag and drop of contacts from the contact list to the desktop, integration with kwallet (a little hackish for the moment but that’s all we can do until the secret service will be integrated in kde), a new auth-handler for handling passwords and ssl certificates, auto away and now playing system, desktop sharing with contacts, and much more. Finally we will have some small changes in the git repositories and we plan to release the 0.2 release both as a set tarballs (one per module) and as a single tarball to help packagers in their work. We really believe that the next release will be awesome!

A few conclusive random thoughts about the sprint:

  • We were the same number of people last year at the sprint. However in the last year the team gained several new important members!
  • Opening new bugs is something that grundleborg can do damn fast.
  • Sprints are really funny, and at the same time you get a lot of work done.
  • Help is always needed! If you want to contribute, please join us on #kde-telepathy
  • I won’t to wear the same shirt for the next sprint. (See here).
  • Brasil and Australia are really far.
  • Of course thanks again to Collabora and KDE e.V. for sponsoring the event.
  • Nepomuk shall not die! Please support trueg and the Nepomuk project!

P.S.: Visa is something that should be abolished.
P.P.S.: You don’t want to mess with Thor.

freesoftware, Kde, Planet

KDE-Telepathy Sprint 2 ā€“ Day 1

KDE-Telepathy Sprint 2 is officially started!
Everyone is so excited that we came to Collabora office too early and we were locked out! So while waiting someone started hacking…

Hacking outside Collabora office
Hacking outside Collabora office

Someone else spent his time in other ways…

d_ed juggling bananas outside Collabora office
d_ed juggling bananas outside Collabora office

Today we covered several topics and a lot of decision were taken:

  • Nepomuk
  • Licensing
  • CMake
  • Git
  • Logo and missing icons
  • Libraries/git submodules
  • GStreamer and Farsight
  • Chat UI Plugins
  • Launch and dinner

And most important of all:

  • Releasing Tech Preview KDE-Telepathy 0.2

This release still won’t be including any Nepomuk integration and will be mostly for the hundred of bug fixes shipped after the 0.1 release + some new cool feature.
This is the plan:

  • 18 September: Feature freeze! That means that we will decide all the features and the components that will be decided at the sprint. We will start the 0.2 branch on all the repositories
  • 8 October: “Big” Freeze (Strings will be frozen, translators will be able to start the translation, etc)
  • 30 October: Release

If you want to know more about what is happening at the sprint you can find some more pictures of the sprint here (I will continue to update it) and you can Follow real time updates #kdetpsprint on twitter and status.net


P.S. A big hug to vHanda who wasn’t able to join us because of visa problems… That sucks!


EDIT: More pictures by mck182 here

freesoftware, GSoC, Kde, Planet

GSoC Project Summary: Telepathy Tubes and File Transfer in KDE

First of all an important note: KTelepathy is still in active development and there is still a huge amount of tasks to finish before the first real “preview release” [1] (any help is welcome). A telepathy sprint [2] is planned for september, so we’ll probably see a lot of progress soon!
The classes I wrote for GSoC are still pending for testing, review, and subject to sudden changes, that’s why I focussed on the library itself leaving the applications for later.

I started the GSoC writing a few jobs for SteamTubes, DBusTubes and file transfer channels:

  • Jobs to start a channel: The channel is started and handled in the same job and some result (if needed) is returned, for example a dbus connection for a dbus-tube. This is not exactly the best thing to do, because the channel should be requested to the channel dispatcher, and handled by the preferred handler.
  • Jobs to accept a channel: The incoming channel is handled and some result (if needed) is returned, exactly like the start channel. That means that a lot of code is redundant and duplicated.

So after writing a few applications of those jobs (file transfer in Cantor[3], Konqueror[4], and KSnapshot[5]) we decided to do a step backwards and to write some more jobs:

  • Jobs to request a channel: Request a channel to the channel dispatcher. The channel is not handled by the job itself, but must be handled by the default (or preferred) handler.
  • Jobs to handle a channel: This is mostly the same thing as the accept channel jobs, with the main difference that it is not limited to incoming jobs, but can also handle outgoing channels.

All those jobs use Nepomuk resources representing the “contact”. I wrote a couple of abstract classes that do most of the job so, and that are quite easy to subclass to handle new types of channels. I also wrote a job to start a “text chat” and integrated it into “telepathy-contactlist“, so it is now possible to start a chat that is handled by empathy or by “telepathy-chat-handler“.

About the QtDBus peer-to-peer connection patch, required for DBusTubes, I updated the merge request, adding unit tests as requested and fixing a few issues, but I’m still waiting for reviews. I really hope to get it reviewed and merged before Qt 4.8 feature freeze, but it’s not up to me now.

At aKademy, we fixed TelepathyQt4 DBusTube branch, so it really works now and we also wrote a cool “KWhiteboard[6] application to share a canvas over a DBusTube. It’s not really beautiful and yet, but it works!

I also started using DBusTubes in Cantor, but there is nothing really shared on the dbus tube yet, I’m writing some sort of “shared worksheet manager” class so that you can manage more than one worksheet on the same tube and that could be useful also for other applications.

Unluckily I wasn’t able to do any work on Plasma widget sharing. The protocol used now is not that simple as I thought, so getting widget shared over telepathy is not possible just using a StreamTube as planned and will take a lot more time than I expected when I proposed the project, and it wasn’t probably worth to work on it yet, as the library is quite unstable. Anyway this is still in my todo list!

Ok, that’s not all what I did during this summer, but this is the most important part of it. You can find some beautiful screenshots im my previous blog posts[3][4][5][6]

[1]https://bugs.kde.org/showdependencytree.cgi?id=232378&hide_resolved=1
[2]http://community.kde.org/Telepathy/Events/TelepathySprint1
[3]http://blogs.fsfe.org/drdanz/?p=273
[4]http://blogs.fsfe.org/drdanz/?p=276
[5]http://blogs.fsfe.org/drdanz/?p=292
[6]http://blogs.fsfe.org/drdanz/?p=260

P.S. Many thanks to Google, to my mentor George, to all #kde-telepathy people! It was definitely a very funny summer!

freesoftware, GSoC, Kde, Planet

More Telepathy StreamTubes in KDE

Offering a TCP StreamTube finally works as it is supposed to do! So, if you want to start a streamtube, you just have to create an OfferTcpStreamTubeJob using your favorite method offered by TelepathyBridge:

KJob* offerTcpStreamTube(const Nepomuk::PersonContact& contact,
                         const QVariantMap& parameters = QVariantMap());
KJob* offerTcpStreamTube(const Nepomuk::PersonContact& contact,
                         const QHostAddress& hostAddress,
                         quint16 port = 0,
                         const QVariantMap& parameters = QVariantMap());
KJob* offerTcpStreamTube(const Nepomuk::PersonContact& contact,
                         QTcpServer* server,
                         const QVariantMap& parameters = QVariantMap());
KJob* offerTcpStreamTube(const Nepomuk::Person& metacontact,
                         const QVariantMap& parameters = QVariantMap());
KJob* offerTcpStreamTube(const Nepomuk::Person& metacontact,
                         const QHostAddress& hostAddress,
                         quint16 port = 0,
                         const QVariantMap& parameters = QVariantMap());
KJob* offerTcpStreamTube(const Nepomuk::Person& metacontact,
                         QTcpServer* server,
                         const QVariantMap& parameters = QVariantMap());

…for example…

Nepomuk::PersonContact targetContact = ...;
server = new QTcpServer;
server->listen();
KJob* job = TelepathyBridge::instance()->offerTcpStreamTube(targetContact, server);

…then just start the job…

connect( job, SIGNAL(result(KJob*)), this, SLOT (handleResult(KJob*))); job->start();

…and you should be able to forget that you are using telepathy and you can control everything using your QTcpServer!

If you feel brave enough to test it, you can find the code on gitorious

And now time for some more beautiful screenshots (Yeah, they are not really useful, but I wanted to show something šŸ˜› )

More StreamTube Parameters
More StreamTube Parameters
KNotify and StreamTubes
KNotify and StreamTubes

EDIT: I really hate you, WordPress! Iā€™m sorry for escaped characters…

freesoftware, GSoC, Kde, Planet

Hello Planet KDE && GSoC: Telepathy Tubes and File Transfer in KDE

Hello Planet KDE,
My name is Daniele (drdanz on irc), I’m a PhD student from Italy and this summer I’ll take part in Google Summer of Code with KDE.

The aim of my project “Telepathy Tubes and File Transfer in KDE” is to provide a bridge for Telepathy Tubes and for file transfer using Telepathy.
Then the new framework will be used in two different applications:

  • Plasma widgets sharing with contacts using StreamTubes
  • Collaboration in mathematical software using Cantor and Telepathy DBusTubes

(If you don’t know what are Telepathy and Telepathy Tubes you can find some informations here, here and here)

So… let’s start from the beginning

Phase 1: Telepathy tubes and file transfer KDE bridge

The first part of the project will be a “bridge” which makes it easy to access to Telepathy Tubes and File transfer Telepathy-qt4 functions using Nepomuk resources.

It will add classes and functions to offer and accept StreamTubes and D-Tubes and to send and receive files. It will also aim to get integration with knotify and a service menu to send files to contacts right clicking on a file from file manager.

Phase 2: Plasma widget sharing with contacts

Since KDE 4.4, Plasma allows to share widgets over a network. It is possible for widgets to be interacted with remotely and simultaneously by several people. A big limitation is that widget are shared/discoverd using avahi/zeroconf, and this means that they can be shared only on the same subnet.

StreamTubes will be used to allow the widget to be shared with contacts using instant messaging protocols. Widget sharing protocol is already defined, so there is no need to rewrite it, StreamTubes will allow to transport it over the network using telepathy and IM protocol.

Phase 3: Collaboration in Math Software using Cantor

Cantor already allows to share worksheets using Get Hot New Stuff, but collaborative editing of a worksheet would be really useful and a killer feature for promoting Cantor over other Math software.

This will add some features to cantor that will be enabled or disabled depending on the used backend:

  • Synchronization of entered commands: Entered command will be sent to all people working on the same worksheet, and will be executed simultaneously.
  • Collaborative editing of worksheet: Worksheet sections will be locked while someone else is editing that section.
  • Figures sending to contacts: In order to send your figures to someone, Math software usually takes some time (save the figure, open kopete, find the contact, right click, etc.); sending figures as png to a contact just right clicking on the figure could be really useful time-saver
  • Variables syncing (optional): commands could be execute on just one pc instead of running it on all of them, and then the results shared. (This part might be a bit tricky, because Cantor doesn’t offer any access to the variables at the moment, but there are plans to write a variable inspector, so this feature will be left as last and will be implemented only if an easy access to variables will be possible)

Looks like it will be a very funny summer!