Re:Firefox is on a slippery slope
by thomastjeffery on Saturday December 16, 2017 @04:08PM
(#15942112)
The biggest difficulty is tying components together.
There are a few methods:
1. Libraries linked by binaries.
This is the usual method, but it generally demands modules share some things, which usually couples them too tightly to their implementation.
2. IPC (Inter-Process Communication)
There are a few ways to accomplish this. Some are OS specific (named pipes), others are fairly generic (sockets). This requires modules to share a language, and has some overhead, but at least they aren't coupled.
3. Microkernel
Essentially the best points of 1 and 2, but generally a design challenge itself.
The biggest advantage to modular design is that you don't need to create all the modules before you get something useful.
This is essentially how teams that build huge software systems work. Like for instance, operating systems like windows/linux. The various teams at Microsoft, or trusted comitters for Linux, organize their various modules, components, subsystems, etc. independently, and eventually compose them into a coherent functioning whole to ship the whole system.