Law of License Propagation
In a previous post, I talked about how FeedBurner will "propagate, respect, and enforce" Creative Commons licenses in feeds. Here, I'd like to present the "Law of License Propagation", which details how licenses should be handled when multiple feeds are merged or spliced together.
In a feed, CC licenses can actually be specified for the feed as a whole, an individual item, or both. How this actually is actually represented depends upon the feed format we're talking about.
- RSS 1.0
- In RSS 1.0, we use the mod_cc namespace. A cc:license element can be either the child of the channel element (a feed-level license) or an item element (an item-level license).
- RSS 2.0
- In RSS 2.0, we use the creativeCommons namespace. A creativeCommons:license element can be either the child of the channel element (a feed-level license) or an item element (an item-level license).
- Atom
- For Atom feeds, we also use the creativeCommons namespace. A creativeCommons:license element can be either the child of the feed element (a feed-level license) or an entry element (an item-level license).
The license that applies to any given item can be resolved using these three rules:
- If an item has a license associated with it, that license applies to that item.
- If an item does not have a license, it should assume the feed's license.
- If neither the item nor its feed has a license, it means "all rights reserved" for that item.
How do we handle the merging or "splicing" of multiple feeds into a single resultant feed? We first have to identify one feed as the "master" feed and we'll call it "Feed A". Now, we'll follow the <boomingVoice>"Law of License Propagation"</boomingVoice> to splice some other feed (which we'll imaginatively call "Feed B") into Feed A:
- If Feed A has a feed-level license, "push it down" to any item in Feed A that does not have a license explicitly associated with it. Then, remove the feed-level license from the feed.
- If Feed B has a feed-level license, "push it down" to any item in Feed B that does not have a license explicitly associated with it.
- Insert the Feed B items into Feed A in reverse date order.
That's pretty much it. If you want to splice lots of feeds together, just repeat the procedure for each additional feed (keeping Feed A as the master). The important thing is that you don't want to get caught with an item that was "all rights reserved" in its home feed all of the sudden gets some default, feed-level license applied to it when it gets spliced. Check out the CC and splicing features at FeedBurner to see this in action.