Name a File in (Almost) Every Project
- Makefile? Nope!
- Unless you count Rakefile, Ant's build.xml, etc.
- configure? Not even.
- (Besides, its not exactly "data")
- README? OK, I'll give you that one
You Say Tomato, Quayle Spells It Tomatoe
- Changes → Changelog → ChangeLog
- ...or...
- Changelog.xml, maybe?
What is it?
- Started as a simple XML spec
- Turns out, there's more to it
- Now supports sub-projects, multi-lingual descriptions
- (Perl tools don't handle other languages)
- (yet)
Umm, Why?
- Tired of copying data from ChangeLog to README to web site
- In fact, tired of manually formatting ChangeLog
- Hard to parse it out
- Almost everyone has their own pet formatting-style
Surely Someone Did This Already?
Basic Structure
- A <project>...
- ...contains <release>s...
- ...which contain <change>s...
- ...which contain <fileset> (or just <file>)
and <description>
- A <project> may also have <subproject>s
Data in Attributes
- Anything not meant to be human text is in attributes
- Non-attribute data is pretty much just <description>
bodies and project meta-data
- <release> blocks track version, date
- <change> blocks can also track date, and/or author
- <file> tags track path, possibly operation and/or version
- <description> block can have a language attribute!
Multi-Language Descriptions
- Default is English
- ("Do you speak it, $%&#?!?" --Pulp Fiction)
- Sorry, it's the only language I (currently) know
- (I'm studying Russian, but that's not relevant to this talk)
- XSLT will (soon) support a language-selection parameter, to prefer the
specified language while falling back to English
Open-Ended Expansion via Namespaces
- RDF (Dublin Core metadata, etc.)
- VCS information (Git, SVN, etc.)
- Commits, versions, tags, etc.
- Even URLs, clone info
- Goes the other way; should be embeddable in DOAP, for example
I'm Using It, and So Can You!
- Project's ./Build dist step
- All my modules converted to using Changelog.xml
- Will eventually get them all to Build.PL, as well