GUPnP: achievements and way forward

As most of you probably know already, GUPnP is now officially part of Maemo and therefore future internet tablets. This is a major milestone and gives a big boost to my motivation to continue my UPnP adventure. Although I try to put as much of the bits and peaces of spare time i get from my job into UPnP work and I am pretty sure the Intel (former OH) will continue their work as well, we could certainly use more hands to accelerate the development.

If you want to help, here is a short list of TODOs that you might want to have a look at and decide if you could help on any of these:


  • Bindings: Although the more bindings we have the more worlds we can conquer but what we definitely need is bindings for most popular languages in GNOME/Maemo world, namely C#/mono, Java and Python. If you are interested in helping with this, I strongly suggest you take the g-i-r route. Also if you are only interested in C# bindings, I suggest you talk to Jerome Halton who already have a half-baked solution.

  • Integration: GUPnP can't possibly become the standard UPnP framework of the GNOME world until we have:

    • plugins for Totem, Rhythmbox and Banshee enabling these apps to browse and search contents on UPnP MediaServer (MS), export playback control on the UPnP network by implementing a MediaRenderer (MR) and to redirect playback of contents to other MRs.

      You might notice that I didn't mention sharing of contents on the network, the reason for which is that I believe (and Jorn agrees) that that should be the responsibility of a dedicated MS (gupnp-media-server) as part of the desktop session. Having a dedicated MR OTOH hardly makes any sense.


    • GVFS backend for UPnP, allowing the GIO world to browse, copy and move contents to/from UPnP MS as if it was just a local filesystem.


    • PulseAudio integration: Wouldn't it be nice if I could redirect all audio output of my laptop/internet tablet to my cool UPnP-enabled speakers or my desktop machine running Totem, Rhythmbox, Banshee or better yet PulseAudio itself (which would mean p-a implements both an MR and an MR control point (CP)? This is actually part of Lennart's great plan to conquer the world so I thought I mention it here in case someone does it before Lennart gets the time to do it himself.






UPDATE: Forgot to mention a very imporant task: Porting to platforms other than Linux. We mostly use glib, libxml2 and libsoup so this shouldn't be a huge task. The only platform-specific code in the whole stack that I know of is the networking bits.

Comments

Anonymous said…
No real need for bindings for C# I think, Scott Peterson did a complete upnp implementation directly in C#.

http://themonkeysgrinder.blogspot.com/2008/10/monoupnp-bun-in-oven.html
zeenix said…
No real need for bindings for C# I think, Scott Peterson did a complete upnp implementation directly in C#

I disagree! We need only one UPnP framework in GNOME so a nice gobject-based framework in C is the way to go.
Unknown said…
uPnP plugins already exist for RB and Totem using Python's Coherence. I agree that your server together with all the media apps plugged in is a great way forward (in fact, I have struggled with this situation for my Debian2Debian project).
zeenix said…
uPnP plugins already exist for RB and Totem using Python's Coherence.

Yeah i know but we want/need only one UPnP framework in GNOME, not many so it would be nice to write alternate implementations on top of GUPnP. Also the coherence plugin is like a MediaServer last i checked and I was talking of a Control Point. Otherwise we've an RB plugin too: http://svn.o-hand.com/repos/gupnp/trunk/rhythmbox-gupnp/
Unknown said…
My apologies for telling you something you already knew. This was my first time reading your blog and I didn't realize that you have regular "conversations" on the Coherence blog with the maintainer.

I have used the Totem plugin from Coherence. While the framework supplies a server, the plugin merely is a CP and will stream content (e.g. from MythTV). It's still a little buggy, though. As I said, I'm looking for parts to my D2D project.

I completely agree that Gnome needs one framework. I know that you understandably want that to be your project, but the community will benefit from a ubiquitous uPnP library the same way we currently benefit from GStreamer and will from Telepathy in the near future.

The future of Gnome is bright.
zeenix said…
My apologies for telling you something you already knew.

Heh, i don't see any need for appologies, was just informing you.

I didn't realize that you have regular "conversations" on the Coherence blog with the maintainer.

Hmm? Is there something wrong with that? I think we are also having a "conversation" here.

I have used the Totem plugin from Coherence. While the framework supplies a server, the plugin merely is a CP and will stream content (e.g. from MythTV). It's still a little buggy, though. As I said, I'm looking for parts to my D2D project.

I see, thanks for the info.

I completely agree that Gnome needs one framework. I know that you understandably want that to be your project, but the community will benefit from a ubiquitous uPnP library the same way we currently benefit from GStreamer and will from Telepathy in the near future.

Exactly what I believe but it's not me who needs to understand this but the Coherence maintainer. Last I met him in February, I politely asked him if he could replace his core with GUPnP, we'll all be then one big happy family but he refused the offer saying "I don't want a dependency on glib for portability reasons" but when I asked "So could you name one platform to which python has been ported by not glib" and he had no answer. Of course we need python bindings for him to be able to use GUPnP but the bindings are usually contributed by people who actually need those bindings.

The future of Gnome is bright.

Amen.
Unknown said…
"Conversations" was just my euphemistic way of saying that I saw some of your disagreements on his blog (WRT Coherence and Nautilus) on the same day I saw your post.

Popular posts from this blog

Welcome to the virtual world!

clutter-gst

zbus and Implementing Async Rust API