Since Fedora 5.0 will be a major release, we have discussed whether we should make changes to the identifier generation configuration and implementation.  The main options that have been discussed are:

1. Keep the current PairTree configuration

This would keep the current configuration: when an identifier is generated, 4 levels of PairTree nodes are created to partition the identifier space.  These nodes do not behave like normal containers, for example when you list the members of a container, it traverses the PairTree nodes and lists their children.

2. Use AppleTrees

This takes a different approach to avoiding JCR nodes with too many children.  Instead of putting it in the externally-visible path, it generates an MD5 hash of the path and creates PairTrees internally to segment this child nodes.  This has many of the same benefits of #1, but hides the intermediary nodes from the user.  However, it also has the downside of being incompatible with migrating data, so it would require starting a new repository and migrating content.

3. Remove the PairTree configuration, but make it easier to adopt #1 or #2

This would simplify the default configuration, but at the expense of hurting scalability with the default configuration. To help address this, we would need to make it easier to change the configuration to use PairTrees or AppleTrees.