PHP Atom Library (phpatomlib) release

So here I’m a getting ready for the Atom Publishing Protocol interop meeting in California and decided to release some software. In reality I should be doing many other things around the house since I’ll be away for almost the entire next week. In short, many of you know that I initially released an APP endpoint for WordPress a while back and it’s starting to feel like it’s a useful thing for others based on many bug reports I receive, as well as photomatt and Co picking it up for actual WordPress consumption.

However, access to WP subversion is very limited (as it should be) and it’s becoming a pain to submit patches, wait for the automattic guys to review and commit. Therefore, I decided to separate app.php into two components: server logic and parsing. Parsing is going over into a Google Code project called phpatomlib. The rest should stay where it is since it’s very specific to WordPress code. I hope there’s no conflict with the automattic folks adding atomlib.php via externals and I’ll continue working on app.php for the interop.

Like most, I started with a simple parsing library but with time, the number of Atom entries I had to support kept increasing. I looked at existing libraries to make sure I wasn’t completely re-inventing the wheel and found that there’s definitely a need since most of the existing libraries are lacking in a few areas. The biggest effort on my part was spent enhancing the different types of content elements, e.g supporting XHTML and other XML vocabularies, properly unescaping HTML and other things like Base64 encoding. Another big effort was to create a test suite reusing Sam’s feedvalidator atom test cases. I’m currently passing 65 of the 765. These are the tests that are not supposed to have an error. Now, I need to get on the ones that have errors and at least throw an error.

There are many things left to do. For example: make sure i18n is supported, missing/unparsed elements, add feed generation, improve the in-memory model, etc. If you are interested, just let me know and I’ll gladly work with you since PHP is not my main day job.

phpatomlib: svn checkout http://phpatomlib.googlecode.com/svn/trunk/ phpatomlib

Enjoy!

UPDATE: I forgot what else I needed to do, full support for xml:base and xml:lang. Any takers?

  • co.mments
  • connotea
  • del.icio.us
  • digg
  • Ma.gnolia
  • Reddit
  • scuttle
  • Technorati
  • YahooMyWeb

About this entry