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. 
 

Reply via email to