Feedback for the network kioslave, please

Two things that cheered me up today:

1. A really interesting interview with two developers of Γ‰toilΓ©. I think they are so right with their approach. The application-centric approach sucks a lot and is one of the biggest culprits of the sad state of the personal computer interface still after four decades since the so-called mother of all demos, from 1968 (sic!). Since I first heard from that project three (already?) years ago I have been checking their homepage for news every week πŸ™‚ Definitely a project to watch and learn from. If you look closely at the Okteta sources, the Kakao part, you might even see where I try to lay the base for something remotely similar to CoreObject. And a project to join? Hm, if I would start with FLOSS I would definitely try to work in that project. But I am now engaged with KDE, which also is going some good directions πŸ™‚

2. A really big Multiseat deployment in Brazil, with up to ten(!) workplaces per mainboard. No idea, if they are using KDE. But I feel so inspired by the technical approach, and still feel sorry I once failed to setup a multiseat myself (due to X drivers of the graphic cards surprised to not be the only graphics card on the same PCI bus and by this confused, or something, memories are fading), so I could never show it at the local Linux-Info-Tag Dresden (BTW: Will you be at the Chemnitzer Linuxtage, 14.-15. March? KDE will be there, thanks to Palapeli-Stefan and others).

If they are using KDE, I am wondering what the output of the network kioslave would be and how it could be improved.

Now, you can cheer me up, too:
Just give some ideas how you would want network kioslave to work like. Go and try it, should also compile with KDE 4.2:

svn co svn://
mkdir build
cd build
cmake ../networkkio
make install

This will install a kded-module for kio-updates on changes of the network, a solidnetwork library, the network-kioslave and some mimetypes for known services.
Some of the services are for now simply subtypes of the types directory or symlink, so clicking on it should forward to the url that is attached to them. You can also redefine the handling with the usual file association dialog.

Even better, join the coding, I welcome everyone to write the backends for UPnP, WebServices, Lisa-like scanning and what else there is that could be shown in the network.
I also would like better code for the device type detection. Are there any services which would help to see if a host is a big server, a laptop, a netbook, a router? Perhaps even the model, like Producer Cooldevice 2010? Currently I plan to go for heuristics by found services, but I wonder how it is done in Windows or OS X if listing other devices in the network.
Then a config would be nice, to limit the number of service shown (and hide the unknown optionally). Also to define which other domains than the local network should be scanned.

Browse your network

Have you developed a network service, used DNSSD:: PublicService to publish it with the zeroconf system, and then wondered why it didn’t show up in Konqueror with zeroconf:/ from the kdenetwork module?

I did. And found out that the zeroconf kioslave restricts itself to filesystem services and redirects to the listing of the services for convenient browsing of such filesystems. It also orders the listing by the service types in the first level, not the hosts. Which is nice for that, but not what I was looking for. I wanted to see all devices and the services in the domains I care for, like lan:/ might have done (if it ever had worked for me), I only know it from screenshots, like this one πŸ™‚

So hands on, write your own, brave man. Followed that, so find the prototype code in playground as network-kioslave. It also includes a library which might develop into something general to be added to Solid. But let’s wait for that. There is a lot of stuff that needs to be done, integrating the different service lookup systems, finding a general model for all them, and much more. I have first-hand rumors that others are starting on support for UPnP, so I am looking forward for some cooperation where possible. If you are experienced with samba, please contact me, too.

See a lovely screenshot in the style of the season (isn’t it always this season?) for what already works. As backend KDNSSD is used, and then quite some guesswork happens to generate a device and service structure from the info available. But it’s a start:
Browsing the network with the network-kioslave
Nothing much to see, the local network is pretty empty currently, just a lonely router and my computer… And the one on it offering KBattleShip is myself, so nothing to distract me πŸ˜‰

Clicking on the services shows where I am currently stuck. A service item represents a service running on a host at some port (or even ports?). But what to do on this service? E.g. the ssh service could be used to open a ssh-session in Konsole. Or be used for browsing with the “fish:/” kioslave. A database service could be either queried or configured. So just doing a redirect to another protocol is not what I want here. Instead there should be some new mimetypes one could register clients/handlers for. So in the context menu you could choose another option than the default one. Would also be nice for metadata display. I already install some new mimetypes for network services/devices, but the naming pattern might need some discussion. And xdg spec support. Much to be done…

Bonjour, what services are in this location?

I just committed a KDE 4 port of the SLP kioslave into playground. The KDE 3 version might be at least known to the OpenSuse users, as Novell is a strong supporter of the Service Location Protocol (SLP, srvloc), and so it had been developed in some Suse repository and always been installed with the OpenSuses.

So far it’s a 1:1 port, perhaps with new bugs introduced by the port:
SLP kioslave ported to KDE 4

Why did I do this port? I am looking to see of there could be a better presentation of the units and services in a network, e.g. in Konqueror, Dolphin and the filedialog. I was at least impressed by the environment view of Sugar.

Before I ported the SLP kioslave I had made myself a little familiar with the zeroconf kioslave residing in the module kdenetwork, for the Zero Configuration Networking (Zeroconfig). Perhaps I can take up, where Jakub has stopped previously, and move all service discovery services (recursiveness ahead) behind an abstraction/wrapping layer, best support for multiple backends at the same time.

In the end I hope to reach a system in which programs that support realtime collaboration on the same data do not need to provide a second selector view to choose the document to connect to, but can just reuse the filedialog. Or get started from the “file” manager by a click on the relevant service item.
There are lots of possibilities in this area. E.g. you could checkout a module from a repository to a place on your disk with one drag. Just let your imagination roll what is possible…

Our friends in the GNOME camp are already some more happy camper with regard to realtime collaboration. See for GTK+ getting support for MPX, the same for Vino for a multi-pointer remote desktop, the GTK+-using AbiWord getting support for the Telepathy tubes, or just the working Gobby.

At least concerning Gobby there is hope for KDE, see some recent update on the state of Kobby. And then there is the Teamwork plugin for KDevelop, but I haven’t yet managed to get it running. My plans for Okteta in this regard are stalled a little by the work on the service discovery, but it’s them which are driving me there πŸ™‚