Older blog entries for zeenix (starting at number 279)

Part of GNOME 3.0

The decision for inclusion of modules into GNOME (3.0) just came-in and proposal for Rygel was approved. \o/ Now I better get it working. :)

Syndicated 2010-06-01 23:59:00 (Updated 2010-06-01 23:59:01) from zeenix

Married

So last saturday I got married to this amazing woman I've been in love with for the last 3 years of my life. Except for the start of the wedding (when I was extremely nervous) I enjoyed the whole event a lot. That includes the bachelor's party that my awesome friends threw me 2 days before the wedding. Here are some pictures worth sharing, the first one being from Bachelor's party, as you can guess:





Although many people helped in different ways, three people that deserve the most appreciation are Timo (my best man) who arranged the Bachelor's party, Anna Haukka who was the main official photographer and Tiina Taxell (Bride's maid). Also special Thanks to Edward to arrange some important things before the wedding and Christian (also my best man) for bringing Edward so early in the morning and the rings. :)

One of the weird things about my wedding was that it brought many hackers from all around Europe to Helsinki for a few days. :)

Syndicated 2010-06-01 23:44:00 (Updated 2010-06-01 23:44:07) from zeenix

Rygel 0.6.0 (The Way We Weren't) is out!

Rygel 0.6.0 (The Way We Weren't) is out!

This release marks the start of the new stable release-cycle. Changes since
0.5.2:

- Localization:
- Fix translation framework.
- Mark all (possibly) user-visible string for translation.
- Use more translator-friendly language.
- Provide comments for translators.
- Correctly case abbreviations.
- Translations:
- German (de) 100%
- Slovenian (sl): 100%
- Spanish (es): 57%
- Fix time-seeking.
- Fix a potential race-condition in aborted HTTP requests.
- Don't stream if request is for subtitles.
- Use bigger (64Ki) buffers when streaming from gstreamer source element.
- Remux only if transcoding is not needed.
- Configuration option for specifying plugin load path.
- Add configuration from Environment.
- Fix port specification through commandline.
- Add and expose Rygel logo.
- Pause streaming pipeline when/if client isn't reading fast enough.
- Add more unit tests.
- Use gnome-autogen.sh.
- Add missing libuuid to build and linker flags for all plugins.
- Plugins are now able to provide a model description.
- MediaExport:
- File size change suggests file change.
- Move media DB and metadata harvesting code from core to module as this is
the only module that is using it.
- External plugin now sets model description.
- Lots of non-functional improvements and fixes.

Dependency-related changes:

- Sqlite now only needed for media-export plugin.

Bugs fixed in this release:

617762 Wrong file size exported to PS3
590649 LiveResponse does not rate limit the GStreamer pipeline
615834 Uses ALL_LINGUAS in configure.ac
616189 Translation issues
617750 Only re-encode audio and video when necessary

All contributors to this release:

Zeeshan Ali (Khattak)
Jens Georg
Mario Blättermann
Jorge González
Andrej Žnidaršič

Download source tarball here.

More info on the project on Rygel home page.

Syndicated 2010-05-15 14:05:00 (Updated 2010-05-15 14:05:09) from zeenix

Rygel logo v2

So based on comments received on the Rygel logo in the last blog entry, Klaus did some adjustments and came-up with even more improved version:

256x256:


32x32:

Syndicated 2010-04-21 22:01:00 (Updated 2010-04-21 22:01:08) from zeenix

21 Apr 2010 (updated 21 Apr 2010 at 17:06 UTC) »

Future of Rygel

While you can follow the progress of Rygel through the release announcements on my blog, mailing-lists and even git log, I feel that I am not providing enough information about the future plans. Also there are some things that are not (or so far have not been) in a shape to be part of a release so here is some of what is coming:

Logo


I've been looking for an artist to make me a nice logo ever since the start of the project. A few artists gave it a try but they didn't succeed in creating anything worth showing to anyone. I couldn't possibly blame them since:

  • Its not very clear to everyone what Rygel is and I suck at explaining things.
  • Its hard to represent it even when you learn what it is.

So what happened was that I told Sebastian that I was so jealous of his new logo, he asked Klaus to attempt to do the same for Rygel. He did and after a bit of talking and him trying different ideas, we finally agreed on this:

64x64:


32x32:

16x16:

Some people like it, some people don't but I like it. I think Klaus did a pretty good job, keeping in mind this wasn't an easy one. If you are one of those who don't like it, feel free to provide better alternatives or suggestions for Klaus.

Tracker or no Tracker


About an year ago, we (mostly Jens Georg) wrote a plugin (media-export) for Rygel that exposes folders on filesystem on the UPnP network. Although that meant us re-implementing some wheels and getting hated (no i know Ivan still loves me :)) for not being active member of Tracker revolution, I think this was still the right decision because:

  • The stable tracker version (0.6) we were using sucked big time in many ways, a fact admitted by every Tracker developer I've talked to regarding this.
  • AFAIK most GNOME developer (not involved with Tracker project) and distribution packagers didn't feel very positive about the project. Rygel was getting part of the heat for depending on it and that wasn't helping in gaining popularity for a new project.
  • It wasn't really very difficult to implement media-export in Vala, I didn't need to spend a lot of time on it myself and I didn't feel like standing in the way of a new plugin that I'll get almost for free and will satisfy a lot of people.

So now its mid'ish 2010, the world has changed and so has Tracker:

  • Tracker is now a blessed GNOME dependency. That means no one can say 'boo' at me anymore for depending on Tracker, while I walk the streets. More than enough people are now positive about the project.
  • New Tracker APIs are very different from that of 0.6, richer easier, dynamic, complete and future proof. Not to mention its based on existing and proven technologies/concepts: RDF and Sparql.
  • Most of the performance issues that tracker 0.6 was known for, has been addressed appropriately.
  • Tracker is now nicely divided in different components so an application can easily depend only on the parts that it really need. For example, Rygel won't have to depend on evolution since it doesn't need any email-related stuff.
  • I made sure 'nmm' ontology of Tracker has the needed UPnP properties that I will need in Rygel.

Some people still just don't like the very idea of Tracker and for those lost souls, I quote Owen Taylor:

I think it will definitely be hard to implement our ideas without something that looks a lot like Tracker, and since we have Tracker something that looks a lot like Tracker is most likely Tracker :-)

So keeping these facts in mind I've decided to:

  • Strip down almost all the functionalities of media-export so it only exposes the file-system hierarchies on UPnP network without any metadata. Actually this is exactly what Lennart wanted in the first place when he asked for this plugin. With metadata extraction in place, we are no better than tracker 0.6 anyway.
  • Remove media-export from preferences UI. Keeping in mind what kind of users will still use media-export in its new form, its quite enough that they can configure the directories to export by manually editing the configuration file.
  • Provide an easy way for the user to specify which media from tracker-store to expose on UPnP network. Since user chooses the files to harvest for metadata and keep in tracker-store using tracker's preferences UI, I think it's better if this option is also provided in there but I need to discuss with Ivan yet regarding this. If that is not feasible, I'll do this in rygel-preferences.

Other features


  • Unit tests: In the last release we introduced a few unit tests. This is just the beginning and we intend to write units for at least all core modules.
  • MediaServer v2: Iago and Juan talked about this in their blog and announced that they already have implemented v2 so now I have to do my part and implement the consumer part in Rygel: i-e Port v1 code to v2 and I am already on it.
  • DLNA compliance: Looking at the results of DLNA CTT session we had last time, we've a lot of work to do here. Hopefully mostly small fixes here and there.
  • Getting married on 29.05.2010. This is the hardest one but I'm sure I can do it. :)

Update


Some facts that I forgot to mention/explain when I posted the blog entry and to reply to some comments I received here and on IRC:

  • media-export is not being dropped. Please read carefully before making such assumptions and then saying 'Boo' to me for that. :)
  • I still don't plan to have a hard dependency on Tracker at all. It will still be one of the plugins. If you want something like Tracker that is not tracker, you are more than welcome to take the existing media-export code and maintain it as separate or part of your project/process.
  • Once gst-convenience library that Edward and Arun are working on, is in a stable state and delivers to it's promises of speeds (so far it has), we'll re-add export of metadata in media-export but this time around, we'll do it on the fly and won't need to deal with databases and stuff.
  • Tracker has always (even in the 0.6 days) provided easy ways for specifying which directories you want it to index so once we've a way to tell it which of the indexed media to expose on UPnP, we've all the features the media-export currently provides.

I'll leave the comments about the Logo for Klaus to reply. :)

Update#2


OK OK, I get it that I am making a lot more people unhappy than I am making happy with the 'media-export' plan. So based on that and the fact that Jens is willing to keep maintaining media-export for me, I'll leave this as is. I'll just move code in the core that only media-export uses into media-export plugin. I myself will embrace the future and concentrate on Tracker integration. :)

Syndicated 2010-04-21 00:19:00 (Updated 2010-04-21 16:27:54) from zeenix

Rygel 0.5.2 released!

Rygel 0.5.2 (Crackers Don't Matter) is out!


Another release in the unstable 0.5.x series. Changes since 0.5.0:

- Add support for Xbox 360 and Window Media Player 11.
- Add support for subtitles. Currently only useful for certain Samsung DLNA TVs.
- Add Windows Media Video (WMV) transcoder.
- Add unit tests for a few modules.
- Fix some (potential) crashes.
- Make database operations cancellable.
- Throw error on database creation failure.
- Simpler (hopefully) build rules.
- Fix race-condition in streaming code so we don't terminate the connection
before all the bytes are sent to the client.
- Fix leaking of HTTP messages of live streams on termination.
- Fix 'Content-Length' header values for partial requests.
- Fix parsing of search expression containing characters not within the original
latin1 range.
- Use bigger (64Ki) buffers when streaming media to reduce cpu usage and
therefore improve battery life.
- Include spec version in description document.
- Remove now unneeded work-around for vala bug#568972.
- Advertize photos with their specific class, i-e 'photo' rather than 'image'.
- MediaExport:
- Implement search by URIs.
- Implement search by album.
- Error-out on invalid search expression.
- Add support for virtual containers. This allows creation of metadata-based
hierarchies in the user-config.
- Fix deletion of containers.
- URI-escape meta-data fields.
- Catch previously uncaught exceptions.
- Fix upgrade of database from older schemas.
- Lots of code clean-ups and documentation fixes.

Dependency-related changes:

- Require gupnp >= 0.13.3.
- Require gupnp-av >= 0.5.5.
- Require gupnp-vala >= 0.6.5.
- Require valac >= 0.8.0.

Bugs fixed in this release:

608886 - media export plugin corrupts its database when you change directories
609944 - Files not harvested on update
606305 - Samsung subtitles

All contributors to this release:

Jens Georg
Zeeshan Ali (Khattak)
Cyrille Chepelov

Download source tarball from here

Syndicated 2010-04-14 14:40:00 (Updated 2010-04-14 14:40:44) from zeenix

GSSDP 0.7.2, GUPnP 0.13.3, GUPnP AV 0.5.5 & GUPnP Vala 0.6.5

GSSDP 0.7.2 released!


Changes since 0.7.1:

- Provide gobject-introspection GIR and typelib.
- Use silent build rules.
- Fix issues with version-independence magic in SSDP code.
- Fix build issues in jhbuild environment.

Bugs fixed in this release:

2025 - autogen.sh fails to find autoconf macros when they're installed in a
non-standard location
1927 - gssdp fails to answer M-SEARCH sometimes
1921 - GObject Introspection Makefile for GSSDP

All Contributors:

Zeeshan Ali (Khattak)
Zach Goldberg
Jens Georg
Neil Roberts
Ross Burton

Download source tarball from here

GUPnP 0.13.3 released!


Changes since 0.13.2:

- Include the Content-Type header in the HTTP messages. This satisfies DLNA
CTT test cases 7.2.5.9 and 7.2.29.1.
- Use g_message instead of g_warning if we can't connect to DBus.
- Make the HTTP server listen on the context's interface only.
- Fix some potential crashes in GUPnPServiceProxy and GUPnPContextManager code.
- Fix build issues in jhbuild environment.
- Fix some gcc warnings.
- Add new API to host path for specific user-agent(s).
- Add gobject-introspection support:
- Provide gobject-introspection GIR and typelib.
- Add needed annotations to doc comments.
- Add GList variants of action-related functions to satisfy PyGI.
- A few non-functional improvments.

Dependency related changes:

- gssdp >= 0.7.1

Bugs fixed in this release:

2054 - Xbox hacks
1965 - gcc warning fixes
2039 - GUPnP is hard to use with jhbuild
1948 - Signal handler are not disconnected when ContextManager is disposed
2030 - gupnp context listens on 0.0.0.0 instead of the context's ip
1924 - Content-Type header must contain charset="utf-8" in all HTTP transactions
2006 - Implement 3 new functions for language bindings (begin_action_list,
end_action_list, gupnp_service_action_get_value_type)
1919 - Add GObject Introspection Annotations and Makefile
1979 - g_warning make gupnp-igd test fails
1906 - Tests failed with gupnp 0.13

All contributors:

Zeeshan Ali (Khattak)
Zach Goldberg
Ross Burton
Olivier Crête
Neil Roberts
Sven Neumann
Jens Georg
Yakup Akbay

Download source tarball from here
-----------

GUPnP AV 0.5.5 released!


Changes since 0.5.4:

- Provide gobject-introspection GIR and typelib.
- Provide microseconds in 'duration' to satisfy XBox.
- Fix data type of GUPnPDIDLLiteContainer:child-count
- Fix build issues in jhbuild environment.
- Enable silent build rules if they are available.

All contributors to this release:

Zeeshan Ali (Khattak)
Zach Goldberg
Neil Roberts
Ross Burton

Download source tarball from here
-----------

GUPnP Vala 0.6.5 released!


Changes since 0.6.4:

- Require & adapt to:
- gssdp 0.7.2
- gupnp 0.13.3
- gupnp-av 0.5.5
- vala 0.8.0
- Don't hide gupnp_root_device_get_relative_location

All contributors:

Zeeshan Ali (Khattak)

Download source tarball from here

Syndicated 2010-04-09 16:47:00 (Updated 2010-04-09 16:47:04) from zeenix

3 Apr 2010 (updated 3 Apr 2010 at 16:09 UTC) »

Introducing Zhaan

I mentioned this cool guy Zachary Goldberg in my blog and in my talk before. While I mentioned his name in regards to his efforts to making sure GUPnP glues nicely with gobject-introspection and is usable from Python, he went much further than I expected and made a cool new UPnP control-point for N900 based on GUPnP in Python. He named it Zhaan (another character from Farscape in the spirit of Rygel).

Some mandatory screenshots:




You can check out more screenshots/specs of the project and follow its status here.

There are many people out there making cool UIs but they end-up using wrong tools and/or re-inventing the wheel so its nice to see someone doing cool stuff but the right way. :)

Syndicated 2010-04-03 14:57:00 (Updated 2010-04-03 15:29:57) from zeenix

Rygel 0.5.0 (Mind the Baby) is out!

The first release in the unstable 0.5.x series. Changes since 0.4.6 that were
not provided by any subsequent 0.4.x releases:

- New URI generation scheme that avoids problematic characters which makes some
crappy renderers choke.
- Allow creation of new media items and tranfering data into existing ones (
upload). This is relavent to, and works for both MediaExport and Tracker.
- Implement GetTransferProgress and StopTransferResource actions.
- Advertise:
- support for connection stalling.
- live response to be sender-paced.
- Rewrite SearchCriteria parser to make it more reliable.
- Tracker:
- Port to the Tracker 0.7 APIs.
- Provide richer & more intuitive media hierarchy.
- Signal container update on changes to subjects.
- Act on config options allowing user to define which categories to share.
- Support for search by URI.
- Descriptive IDs for containers.
- MediaExport
- Implement custom search that translates to an SQLite query and therefore
performs much faster than before.
- Print message on console when harvesting is done.
- Don't modify DB if harvester was cancelled.
- Cancel harvester before starting new one.
- Lots of non-functional improvements and fixes.

All contributors to this release:

Zeeshan Ali (Khattak)
Jens Georg

Download source tarball from here

Syndicated 2010-02-23 23:31:00 (Updated 2010-02-23 23:31:13) from zeenix

Rygel 0.4.12 (Through the Looking Glass) is out!

Another release in the stable 0.4.x series. Changes since 0.4.10:

- Fix desktop file.
- A few fixes to satisfy latest valac (0.7.10).
- Adapt to new libxml Vala API.

All contributors to this release:

Zeeshan Ali (Khattak)
Andreas Henriksson
Philip Withnall

Download source tarball here

Syndicated 2010-02-23 23:26:00 (Updated 2010-02-23 23:26:45) from zeenix

270 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!