XML::Atom and XML::Feed hackathon

miyagawa on 2006-12-14T07:28:15

Ben Trott and I are planning to do XML::Atom and XML::Feed hackathon mid-week of next week to clear up the tasks that have been tagged "ToDo" for a long time.

If you have some requests or local hack to these modules, let me know to figure out if we can incorpolate the changes during the hackathon.


My XML::Atom Baggage

Shlomi Fish on 2006-12-14T11:35:38

  • I filed this bug report for XML::Feed. However, it is possible it may work by converting the feed from Atom to RSS using the following function:

    sub myconvert
    {
        my $feed = shift;
        if (
            (($output_format eq "RSS") &&
             ($feed->format() eq "Atom")
            )
               ||
            (($output_format eq "Atom") &&
             ($feed->format() ne "Atom")
            )
           )
        {
            return $feed->convert($output_format);
        }
        else
        {
            return $feed;
        }
    }

    If this is the case, please close this bug. However, it may be a nice thing if XML::Feed will seamlessly convert feeds from Atom to RSS and back.

  • Some XML::Feed tests now fail due to an XML::RSS regression. The second link contains a patch against XML::RSS that wasn't applied to the repository or has been released as a new version. Please apply it before installing the new XML::RSS so your tests won't fail.

As you may know, I've been helping ABH with XML::RSS, and would be happy to see some work on the XML::Atom and XML::Feed fronts.

Re:My XML::Atom Baggage

miyagawa on 2006-12-14T18:52:34

Yes, we realize the test failure with the recent XML::RSS releases. Thanks!

Dependencies

petdance on 2006-12-14T15:18:49

The Socialtext Open wiki uses XML::Feed for its RSS handling. One of the things I'm always concerned about in Socialtext is the number of modules that people have to install.

XML::Feed has a lot of dependencies. They all look like they're getting used, but anything to reduce the number of required modules would be swell. I provide this list in case there's anything that you see that is surprising: "Oh, we don't need to include THAT."

Here's a list of unique dependencies:

  • Class::Data::Inheritable
  • Class::ErrorHandler
  • Class::Singleton
  • Compress::Raw::Zlib
  • Compress::Zlib
  • DateTime
  • DateTime::Format::Mail
  • DateTime::Format::W3CDTF
  • DateTime::Locale
  • DateTime::TimeZone
  • Feed::Find
  • HTML::Entities
  • HTML::Parser
  • HTML::Tagset
  • HTML::TokeParser
  • IO::Compress::Base
  • IO::Compress::Base::Common
  • IO::Compress::Gzip
  • IO::Compress::Gzip::Constants
  • IO::Uncompress::Base
  • IO::Uncompress::Gunzip
  • LWP
  • Module::Build
  • Params::Validate
  • Test::Manifest
  • URI
  • URI::Fetch
  • XML::Atom
  • XML::Feed
  • XML::Parser
  • XML::RSS
and here's the full dependency tree:

XML::Feed
Class::ErrorHandler
DateTime
  DateTime::Locale
   Module::Build
   Params::Validate
  DateTime::TimeZone
   Class::Singleton
   Module::Build
   Params::Validate
  Params::Validate
DateTime::Format::Mail
  DateTime
   DateTime::Locale
    Module::Build
    Params::Validate
   DateTime::TimeZone
    Class::Singleton
    Module::Build
    Params::Validate
   Params::Validate
  Module::Build
  Params::Validate
DateTime::Format::W3CDTF
  DateTime
   DateTime::Locale
    Module::Build
    Params::Validate
   DateTime::TimeZone
    Class::Singleton
    Module::Build
    Params::Validate
   Params::Validate
Feed::Find
  Class::ErrorHandler
  HTML::Parser
   HTML::Tagset
  LWP
   Compress::Zlib
    Compress::Raw::Zlib
    IO::Compress::Base
    IO::Compress::Base::Common
    IO::Compress::Gzip
     Compress::Raw::Zlib
     IO::Compress::Base
     IO::Uncompress::Base
    IO::Compress::Gzip::Constants
     Compress::Raw::Zlib
     IO::Compress::Base
     IO::Uncompress::Base
    IO::Uncompress::Base
    IO::Uncompress::Gunzip
     Compress::Raw::Zlib
     IO::Compress::Base
     IO::Uncompress::Base
   HTML::Parser
    HTML::Tagset
   URI
  URI
HTML::TokeParser
  HTML::Tagset
LWP
  Compress::Zlib
   Compress::Raw::Zlib
   IO::Compress::Base
   IO::Compress::Base::Common
   IO::Compress::Gzip
    Compress::Raw::Zlib
    IO::Compress::Base
    IO::Uncompress::Base
   IO::Compress::Gzip::Constants
    Compress::Raw::Zlib
    IO::Compress::Base
    IO::Uncompress::Base
   IO::Uncompress::Base
   IO::Uncompress::Gunzip
    Compress::Raw::Zlib
    IO::Compress::Base
    IO::Uncompress::Base
  HTML::Parser
   HTML::Tagset
  URI
URI::Fetch
  Class::ErrorHandler
  LWP
   Compress::Zlib
    Compress::Raw::Zlib
    IO::Compress::Base
    IO::Compress::Base::Common
    IO::Compress::Gzip
     Compress::Raw::Zlib
     IO::Compress::Base
     IO::Uncompress::Base
    IO::Compress::Gzip::Constants
     Compress::Raw::Zlib
     IO::Compress::Base
     IO::Uncompress::Base
    IO::Uncompress::Base
    IO::Uncompress::Gunzip
     Compress::Raw::Zlib
     IO::Compress::Base
     IO::Uncompress::Base
   HTML::Parser
    HTML::Tagset
   URI
  URI
XML::Atom
  Class::Data::Inheritable
  URI
XML::RSS
  DateTime
   DateTime::Locale
    Module::Build
    Params::Validate
   DateTime::TimeZone
    Class::Singleton
    Module::Build
    Params::Validate
   Params::Validate
  DateTime::Format::Mail
   DateTime
    DateTime::Locale
     Module::Build
     Params::Validate
    DateTime::TimeZone
     Class::Singleton
     Module::Build
     Params::Validate
    Params::Validate
   Module::Build
   Params::Validate
  DateTime::Format::W3CDTF
   DateTime
    DateTime::Locale
     Module::Build
     Params::Validate
    DateTime::TimeZone
     Class::Singleton
     Module::Build
     Params::Validate
    Params::Validate
  HTML::Entities
   HTML::Tagset
  Test::Manifest
  XML::Parser

Re:Dependencies

miyagawa on 2006-12-14T18:53:46

I'm currently thinking of separating the distribution to 3 distros: XML::Atom::Feed (parser), XML::Atom::Client and XML::Atom::Server. That way you can reduce # of deps to XML::Atom::Feed hence it doesn't require crypto and authentication related modules.

Re:Dependencies

DAxelrod on 2006-12-14T22:23:55

What tool did you use to generate that tree? It's pretty.

Re:Dependencies

petdance on 2006-12-14T22:27:01

I was hoping someone would ask. :-)

Module::Depends::Tree: http://search.cpan.org/dist/Module-Depends-Tree/

My requests...

tima on 2006-12-23T00:00:20

* Merge with XML::Atom::Syndication
* Support for SAX and a PurePerl version fallback option
* Use XML::RAI and/or XML::RSS::Parser

Re:My requests...

miyagawa on 2006-12-23T11:07:04

Ben is working on SAX based parser to save memory with Atom based upload on Vox, and he says "it's almost done."

We're afraid of breaking the existent apps that rely on XML::Atom internal use of XML::LibXML (which is bad, but I know a couple of examples), so we need to figure out how to make it backward compatible.

Re:My requests...

tima on 2006-12-23T15:50:55

Understood. I'm always open to collaborating and finding ways to maintain backwards compatability.