“The ubiquity of the Apache HTTP server is a testament not
only to the effectiveness of Open Source development, but also to
the benefits of modularity. Perhaps the two most widely-used
modules for Apache are mod_perl and mod_php. They’re both used for
dynamically generating content, and both were developed separately
from the Apache Project. The obvious implication is that without
Apache having its clearly defined API, mod_perl and mod_php would
not have succeeded anywhere near as well as they have.”
“Another example of the benefits of modularity comes in the form
of kernel modules (for example, in Linux). I, for one, use kernel
modules frequently. At the time of writing, I have 28 modules, and
4 of them are currently loaded (for my sound card). When I connect
to the Internet, 3 more are loaded (for PPP); after disconnection,
they’re unloaded. When I need to do some printing, 3 modules are
loaded (for parallel port access), and unloaded automatically after
a period of time. When I mount an Iomega Zip disk, the ide-floppy.o
module is loaded; after unmounting the disk, the module is
unloaded.”
“Unfortunately, modularity isn’t universally applicable.
There are several situations in which modularity can make things
worse, either by slowing things down, complicating matters, or
providing security holes. Since most of these situations have
technically obscure justifications, I’ll simply list two below:
- Microkernels — they compromise speed for the sake of stability
and security (though this is not necessarily a bad thing). - Some of the original SGI machines — they were so modular that
a thief could simply open the side of the case and pull various
components out (even while the system was still running!).”