13 March 2009

libsoup migration

Hello! I'm Emilio Pozuelo Monfort and this is my first post to the Liferea blog. Hopefully there will be more to come!

In the beginning of the 1.5 development cycle, Lars replaced the old proprietary networking code with a libcurl implementation. This had several benefits, including more maintainable code, but brought a new problem: the user interface didn't respond when there was network operations, for example when updating feeds, making Liferea unusable during that time. I heard WebKit GTK+ port had switched from libcurl to libsoup too and thought I would look if it was suitable for our needs.

Using libsoup has some benefits. It integrates very well with GLib-based applications (like Liferea) by having an asynchronous (GMainLoop based) interface. It also supports most of our needs: cookies, proxy (including authentication), SSL... meaning we can have a libsoup-based Liferea without regressions from the previous implementations.

I started working in migrating our code, since the unresponsive GUI was marked as a blocker for the 1.6 release. It wasn't easy for me as I'm not very skilled yet :-) but given the nice libsoup API I could do the work. Adrian Bunk tested it a lot and reported me some issues, and after fixing all the concerns from Lars, the patch landed yesterday in trunk! It will be released with the next unstable release, 1.5.14.

So if you feel like giving a hand and feel comfortable with unstable releases (beware it can kill your cat!), testing and reporting bugs is much appreciated!

13 comments:

Babyshamble said...

Is there any .deb to try it on jaunty? It would be awesome to find a "usable" version of liferea to ubuntu unstable!

Anonymous said...

Still scaling have problems with liferea 1.4. I have 79 feeds that I follow with liferea. Sometimes liferea eats all CPU ressources, of my 1.73 MHz Intel Centrino chipset, when updating the feeds. The only thing that helps is to kill liferea or to wait and wait, which stops me from being productive. I am using Debian Testing.

pochu said...

@Babyshamble: there seems to be in this PPA but for Intrepid: https://launchpad.net/~janvitus/+archive/ppa

I don't know about anyone providing 1.5.x debs for Jaunty.

@Anonymous: that's a known bug that only happens when using Xulrunner, see http://liferea.blogspot.com/2008/07/serious-problems-with-xulrunner-19.html. That problem doesn't happen when using WebKit (e.g. on 1.5).

Anonymous said...

pochu: If it is only a xulrunner bug I am excitingly looking forward for the webkit version and happy that this bug is not only known but the reason is also known. Best wishes!

Babyshamble said...

Pochu thanks for the link, but using liferea from janvitus ppa gives me this problem:

** ERROR **: Failure while preparing statement, (error=1, no such table: itemsets) SQL: "SELECT item_id FROM itemsets WHERE node_id = ?"
Trace/breakpoint trap

any feaseable solution?

pochu said...

@Babyshamble: that is a bug introduced before 1.5.13 (we didn't know about it until today). Adrian Bunk is working on a fix, and it will be released soon in 1.5.14.

Anonymous said...

Unfortunately the performance issue which has stopped me from using Liferea, is probably not related to networking, but to the sqlite database. As soon as I start up Liferea, it starts thrashing my disk with about 3 MB/s reads and writes, and that for several minutes. Quickly looking at an strace trace, it seems to be constantly creating and unlinking a ~/.liferea_1.4/liferea.db-journal file while lseeking writing and fsyncing the sqlite db file.

Anonymous said...

Opening the Martin Pitt blog
http://martinpitt.wordpress.com/ in a separate tab in liferea 1.5.11 causes a crash:
Liferea did receive signal 11 (Segmentatiefout).
Is this on purpose?

pochu said...

Of course it's not! But it's probably that it's WebKit's fault (1.0 is crashy, you should be using 1.1 and Liferea >= 1.5.14).

But please, report such bugs in the bug tracker!

Anonymous said...

@pochu: thanks for your comment. Will investigate this case more in detail and report bugs if needed

Baybal Ni said...

I hope curl would be left as fallback backend. Whole gliby goodies to mem hungry.

And curl could work in async manner too.

Anonymous said...

It's posible to change the fonts of the feeds?
Maybe an option to chose the fonts...
In liferea 1.5.14 looks very bad :(

Lars said...

Fonts can be changed using a user provide stylesheet or using the .gtkrc mechanism.