Marina

When I read that the Liferea hackers were considering doing a rewrite, I jumped at the opportunity to throw together a prototype. I had been dabbling with this in python for the last year or so anyway, solving interesting problems with storing lots of data while keeping memory usage light.

I also wanted a project to start using GTask so that I could find more blemishes to cleanup the API (more on that later). Interestingly enough, it was the perfect use case for my BdbListStore which I blogged about a month or so ago.

In the process, I threw together a quick List+Hash implementation for a LRU to reduce the deserialization overhead. My C# implementation for Adroit had this and it helped significantly. You can find it here. Look at the BdbListStore in that directory for how to use it.

So below is a screenshot of what marina looks like right now. It's not complete by any means, but its a start. It has a rich plugin architecture based on that of GEdit. I hope to foster even a fraction of the success that GEdit's plugin community has had.


There is a rudimentary google reader plugin that shows how to use the plugin API. Python will be supported in the near future as soon as I finish the python bindings. I intend to add support for Seed and Mono as well, but time is incredibly limited.


You'll notice that it also supports color-schemes. I still need to find a way for plugins to extend the html properly here. However, when webkit gets DOM support, life will be much much easier. I noticed that webkit will block when you call load_html()/execute_script() on a dns query as a result from getaddrinfo(). If you have really shitty dns, this is a problem. I'd fix it, but I think libsoup integration will make it a non-issue.


At this point, you may be screaming at your monitor in disbelief that we need yet another f*cking feed reader. However, I disagree. Whats available is poor on memory and has an antiquated style of information management that has proven to fail over and over.

It doesn't quite look it now, as I'm busy building the infrastructure for the application, but Marina will be different. It will learn what you like through the use of a bayessian plugin. It will watch your firefox browsing patterns and automatically bring in feeds that are similar to news that you are interested in. It will provide a generic syndication parser to the desktop so applications like gnome-shell can just ask for information and get it.

I also can't stand the perusal pattern of current readers. I've noticed that when I catch up on blogs and news that it takes 100% of my attention. Situations like these are perfect for fullscreen. I very much imagine a flashy newspaper view with my unread articles categorized by content as apposed to source. Similar to the sections of a newspaper for sports, entertainment and science.

You could even tie in social aspects with integration to myspace and twitter, or sharing your feeds with your friends over jabber.

And most importantly, they can all be plugins :-)

You can follow my branch at git.dronelabs.com or fork me on github.

git clone git://github.com/chergert/marina.git 

I've created a PPA with dependencies for Ubuntu Intrepid Ibex.

deb http://ppa.launchpad.net/audidude/ubuntu intrepid main
deb-src http://ppa.launchpad.net/audidude/ubuntu intrepid main
apt-get install libgtask-dev libgtask-doc librss-glib-dev
librss-glib-doc libjson-glib-dev libxml2-dev libgnome-keyring-dev
libwebkit-dev gnome-common libgconf2-dev gtk-doc-tools
uuid-dev libsoup2.4-dev libdb4.7-dev

Comments (10)

  1. mike wrote:

    I like it :)

    Especially the ability to have twitter/identi.ca in there sound useful, so I don’t have to have yet another client…

    Would it be possible to ship with a small plugin, which enables to watch the whole page instead of the excerpt?

    In some feeds the excerpt is like nothing, and loading the page directly would really help.

    Tuesday, February 17, 2009 at 2:06 pm #
  2. Very nice Chris, you should pimp these @SCALE.

    Tuesday, February 17, 2009 at 2:17 pm #
  3. chergert wrote:

    @mike a plugin to do that doesn’t sound out of the question. especially since we already have the item’s link available to us.

    @jeff you wake up at insanely early hours. its scary.

    Tuesday, February 17, 2009 at 2:35 pm #
  4. mike wrote:

    speaking of plugins: well Liferea has this feature to show comments (which takes fare to long and kinda blocks the WebKitView..).

    However, if ever thinking about any feature in that direction, it would be cool to set a “reminder” that is fired, when there are new comments.

    sometimes comment-discussion are really interesting, but take a lot of time to evolve.

    or maybe it would be better if more blogs let you subscribe to comments via mail. not sure.

    Tuesday, February 17, 2009 at 3:55 pm #
  5. chergert wrote:

    This sounds very doable with a plugin. We could add an option to mark the item as edited/unread when new comments are added.

    Tuesday, February 17, 2009 at 9:05 pm #
  6. Perhaps instead of waking up early I just never sleep?

    Thursday, February 19, 2009 at 1:47 pm #
  7. nash wrote:

    Silly question… iris-1.0? I’m not sure where to find it in debian, or elsewhere?

    Friday, May 29, 2009 at 4:27 am #
  8. chergert wrote:

    Hi nash, you need to install it from my git repository at:

    git clone git://git.dronelabs.com/iris

    I hope to add nightly packages for everything next week.

    Friday, May 29, 2009 at 5:46 am #
  9. RubenV wrote:

    This is looking fantastic! A great addition to planet GNOME, looking forward to reading more of your blog :-)

    Friday, May 29, 2009 at 12:34 pm #
  10. devolute wrote:

    Is that a Google Reader plugin I see? You have my attention. Keep up the good work.

    Monday, June 1, 2009 at 10:18 am #

Trackback/Pingback (1)

  1. [...] be re-usable outside of gedit. I should know, thats what I did in my syndication reader prototype, Marina. The framework is simplistic and has been incredibly successful at converting users into [...]