3. Why Plugins?

The reason eJourn uses plugins for so many features is: I believe in a simple design which is scalable. This way, new users aren't overwhelmed and are given a path to learn on (adding plugins when they care, ignoring when they don't).

Also, plugins allow you to put in more experimental features. Things which you're unsure of how they work without worrying about alienating users. This is because you can simply turn the plugin off!

Plugins also allow you to literally fork functionality. You can make two plugins which do radically different things and users which wanted one can use it, and those which wanted the other can use it!

Code cleanliness. Keeping functionality seperated by plugins helps keep the base code more readable.