I've just completed a good chunk of the work for this project. It's at the point now where the classes can create very nice RSS & ATOM feeds of any version. Although, why anybody would want to create anything other than ATOM 1.0 and/or RSS 2.0 is beyond me.
There's still more work to go, including:
- Research more differences between each format. This is not as critical in the creation phase as it is in the parsing phase, but there are differences. For example, in RSS 0.91 and lower, there is a limit to 15
<item>
s per channel element. - Finish the parsing routines. There are 10 classes, 1 module, and 1 class interface which makes up this product. 10 out of those 12 are complete. The 2 laggers are the major ones: RSSFeed and RSSArticle. Although they can create xml, I need to create the parsing routines for those two. Parsing works for the other 8 classes.
- Write the test suite. The alpha and beta products will contain an application called Feed Tester. The purpose is to test feeds. When an xml parsing or syntax error occurs, it will ask to report the error to me over the web, without input from the user. If the parsing succeeds, but something is not correct, the user has the option to still report the feed, but will need to describe what is wrong. There will also be a third option to provide it a text file full of feed URLs, which it will attempt all of them in sequence and report the errors back at once. This suite will provide us invaluable information while writing the parsing routines - there are many feeds that are not standards compliant.
I've also decided on the license type for this product. Given the large amount of work both in implementation and support, but also in maintenance (some formats are still evolving), I have decided to release the product as a commercial product. The fees will be reasonable for both commercial and personal users. I do not intend to for the price to be prohibitive.
The unexpected part about all this will be my policing it. I simply won't. I'm not going to bother encrypting the items, or making the user jump through ridiculous hoops. If somebody were to steal this, they would do it no matter what method I use.
So, this will be honestyware. If you use it, you're expected to pay for it. If you don't, aw well.