This weekend I rewrote the RSS feed reader. Since a lot of effort has gone into the last couple of versions, I wanted to take some time to outline my current vision for the system and why I'm replacing working code. The very short answer is: "simplify." My original intention this weekend was to add some code to our SpamAssassin connector to train the filters right from inside of Citadel, instead of using an external script. And when I looked at the code, I realized that at some point we started making things more complex than they needed to be. And when I started looking at the kind of things you can do with libcurl, I realized that we really want to let libcurl do as much of the heavy lifting as possible.
In the not too distant future I'm going to rip out everything we've done with the SMTP and POP3 clients, and just let libcurl do all the work. But I wanted to start with something simple, and the RSS feed reader was a good place to start. The new code is about a third of the size of the previous version, it's easier to read, and it still handles multiple versions of RSS/RDF/Atom. It might be a few milliseconds slower, because the parser does a series of if/then lookups instead of putting everything into a hash/callback table, but I really feel the readability of the code is more important than saving a tiny bit of CPU time that no one is really going to notice. Again, this is about having simple, easy-to-read code. A decade ago we were still envisioning a platform that was going to have a big marketplace of plugins and an API that could do anything. It's clear that this isn't where Citadel is going. Our users *love* that the program is simple, easy to install, and does lots of different things in a single integrated package. I want to focus on that.
