> The module mechanism was invented so that you could add functionality without having to include it in the kernel as a compile time option.
No, it wasn't. It was added so that the *compiled* modules didn't all need to be loaded into memory at boot time, enabling the core kernel to stay quite small, but allow a single binary build to provide all the drivers necessary for booting on many systems, which is key (for example) to how distributions provide support for the numerous x86 systems with a single installation.
The kernel doesn't provide a stable module ABI, or infact any guarantees about the stability of the module API for use with out of tree drivers. It is strongly recommended that drivers get merged into the kernel source (should they meet the required coding standards and prove acceptable to the kernel developers).
What the kernel developers will do is fix any drivers that use an internal kernel API when it is changed, assuming it's been merged into the kernel source tree. There are also strong promises in place that the kernel/user space API won't change (quickly at least), but that is an orthogonal issue.