After my recent post on vendor product usage scenarios, one of my colleagues asked me to elaborate what I meant by product customizations... Here's how I think about it. Please join this discussion to help define it...
Customization: You've customized a software product, when you've made a change in the product that the vendor doesn't provide a published and supported* mechanism for...
* The published and supported mechanism for change in a software's behavior are through configuration and API.
Tests to detect customizations:
- Did you use published and supported mechanisms (configuration, API) in the product to change product behavior?
- Will your changes be compatible with new product versions? I.e. will your changes work seamlessly after you've upgraded the software product to a newer version? (This test is necessary but not sufficient, as any changes to published and supported configuration and/or API can also make this test true)
- Does the vendor support your changes through its "regular" support or does it charge you extra?
Open question: How does this differ between Open Source Software and proprietary vendor software?