Fid-exp is some great work done by Andrea Aime to fix a few issues with our DataStore implementations. The specific aim was to change featureids (fids) from Strings to an Interface. This way fids will not be as easily confused. I believe it also allows for fids to be defined by more than one column. Previously the definitions of fids was somewhat arbitrary, each datastore would look for a good candidate or have a requirement like 'all must have a primary key'. The fid-exp allows the user to define what strategy to use to determine the fid. Each datastore has a default as well, so there should be little change from how it was done previously from a user's perspective.
The work on fid-exp also lead to a good bit of clean-up with jdbc datastore. Things got too complicated with our attempt to follow using attributeReaders, managing them across result sets. Andrea simplified their use substantially, making things quite a bit cleaner. He also cleaned up a number of little bugs, such as deletes in postgis. The work is definitely an evolutionary change, nothing major, but it should be incorporated soon, as a good bit of the underlying classes have changed.
The current state of fid-exp (june 10, 2005) as I understand it is that oracle is all that remains to be completed, and then documentation needs to be cleaned up and it must be merged onto head. I think that this needs to happen before work begins in earnest on these proposed changes, as both are centered around our DataStores, and we don't want to be forking and have a nasty merge in the future. So we should devote resources to helping Andrea wrap up fid-exp and then perhaps start another branch off of head after it is merged.
The fid-exp branch was present during the move from cvs to subversion, and during the module merge. I believe the cvs to subversion move was fine, but the module merge will require a bit of work to get some of the classes in the right place. The branch can be checked out using svn co http://svn.geotools.org/geotools/branches/fid_exp/