Hi Adrian, thanks for getting in touch.
I think it's no secret at this point that progress on Shards is a bit stalled, not due to lack of interest on the part of the developers but rather because of a magical combination of higher priority work (the stuff Google actually pays us to do) and Major Life Events (marriages, births, geographical displacements). Excuses excuses, I know, but that's how these things go.
We definitely intend to support EJB3, and in fact this is what we're waiting for before making Shards GA. Hooking the Sharded implementations up to the EntityManagerFactory and the EntityManager won't be too bad, but getting a useful implementation of ShardedQuery will be most of the work. I've spent a bit of time looking at what will be involved and my feeling is that it will be a bit more subtle than what we did for Criteria/ShardedCriteria. The reason is that we need to be able to decorate the queries that we dispatch to the individual shards. For example, if we need to perform an average over the values in a column across all shards, we need to make sure we request not just the avg but also the count from each shard, otherwise we don't have enough information to return the correct aggregate value. Decorating a Query might be tricky because we either need to write our own parser, which seems like a waste of time considering Hibernate has already done this (and anyways, ugh), we need to find a place to hook into the syntax tree that Hibernate is building, or we need to modify the existing parser to, for example, turn 'avg(col)' into 'count(col), avg(col)'. Ideally we could find a way to do this without relying on anything below the Hibernate interface layer, but I'm not optimistic.
So anyway, that's where we stand. I'm glad that Shards is doing well for you so far. If you'd like to contribute in any way we'd be very pleased to have your help and we can definitely support you as you move forward.