When we originally converted the build to maven we had a single "core" module defined, but later reverted this to a module-less build for the sake of simplicity.
It now looks like it's time to re-address this, as we have an actual need for modules to:
- provide a trimmed down "client" library that applications can make use of
- more cleanly support building against different versions of Hadoop, in place of some of the reflection machinations currently required
- incorporate the secure RPC engine that depends on some secure Hadoop classes
I propose we start simply by refactoring into two initial modules:
- core - common classes and utilities, and client-side code and interfaces
- server - master and region server implementations and supporting code
This would also lay the groundwork for incorporating the HBase security features that have been developed. Once the module structure is in place, security-related features could then be incorporated into a third module – "security" – after normal review and approval. The security module could then depend on secure Hadoop, without modifying the dependencies of the rest of the HBase code.