Products can be customized by modifying the source code, but that is a path that leads to very high maintenance costs, so as a result users and developers push towards adding more built-in extensibility the more extensible, the easier it is to meet end user requirements
at significantly lower costs.