A new RSS/Atom Parser

December 31, 2008

From its very beginning until now, newsbeuter has always used libmrss to parse RSS and Atom feeds. But there were a few problems: libmrss (and libnxml, the XML library it builds upon) are both written in pure C. Also, they are quite big (more than 6000 lines of code), and licensed under the LGPL, a license that I don’t really prefer.

So I decided to replace libmrss and libnxml with a self-developed RSS/Atom parser, using libxml2 as its base XML library. While the development of a new RSS/Atom parser isn’t too difficult by itself, it is still not that trivial due to the vast amount of variations of RSS. I already tested it with more than 100 feeds, but I urge everyone to check out the git master branch from newsbeuter’s git repository, compile it, and test it with the feeds that you read. Don’t hesitate to report any issues or irregularities back to me. Every feedback helps with the stability of newsbeuter, and I want to make the new parser as stable as possible before releasing the next version of newsbeuter.


Migration to GitHub

December 20, 2008

Earlier today, I migrated newsbeuter’s Subversion repository to a Git repository that is hosted on GitHub. You can find information about the new GitHub repository (including how to access it) here.

Why git? Why GitHub? Well, the primary reason to migrate the source repository away from its old location was that I simply wanted to move it away from my own infrastructure. One property of git, namely being a distributed version control system, made the decision easy in favor of it, i.e. wherever the source is hosted, it can be easily migrated to other locations. The choice for GitHub fell when I saw the kind of features that it provides. Not only does it make its service available for free for open-source project, but it also makes it easy to start own forks, including the ability for developers (like me) to view and (optionally) merge changes and improvements that others produced. And it also forces me to learn git better. 😉

newsbeuter 1.3 released!

December 6, 2008

Finally, after 3 months of developing, I released newsbeuter 1.3. You can download it from the usual location.

So, what’s new in this release? First of all, the most fundamental change is an internal change: I improved the internal architecture of newsbeuter to make all the random crashes disappear that many people had: most datastructures within newsbeuter are now using smart pointers, using the C++ TR1 std::tr1::shared_ptr<> implementation. This also means that a g++ 4.0 or later is required to build newsbeuter.

Besides this change, a number of new features have been added:

  • Podbeuter now keeps finished downloads in the queue until they’ve been played.
  • Placeholders can now be used in the download-path so that podbeuter downloads are automatically sorted into a directory structure and/or get meaningful names.
  • The list of subscriptions can be edited directly from newsbeuter’s feedlist by pressing “E”. The content of the $EDITOR environment variable will be used to edit the ~/.newsbeuter/urls file.
  • A file format to exchange information about read/unread  articles between newsbeuter installations has been added. That makes it possible to e.g. dump the GUIDs of read articles at work, send them home, and import them there. This avoids the situation that a user is bothered twice with an article he has already read.
  • A new configuration option feed-sort-order has been added that allows the user to sort the feedlist by the first tag that has been assigned to every feed.
  • It is now possible to toggle the read flag from the article view. This feature was implemented by Isaac Good and sent to me as a patch.
  • It is now also possible to configure the number of parallel download threads to enhance the download experience for users with lots of subscribed RSS feeds.

In additon, I would like announce the newsbeuter group on Google Groups. I created this group to provide a discussion platform for newsbeuter users that aren’t comfortable with using the existing IRC channel (#newsbeuter on irc.freenode.net).

I hope that the next release of newsbeuter won’t take 3 more months, but don’t expect it too soon, either, as I’m going to relocate from Linz, Austria to Berlin, Germany where I accepted a job as software developer (doing C on Unix) for a big German webhosting company. The relocation will happen in January, and during that time, the Subversion repository will also be offline and probably be relocated to another server.