That’s not the reason people advise against it. You can definitely make changes to core DocTypes without losing them during updates. You just have to be willing to spend time doing git merging. It’s the savings in time + effort that fuels these suggestions.
But for anyone who’s previously worked with an ERP using a compiled programming language? Merging code modifications is a fact of life, and the -only- way to upgrade.
Frappe/ERPNext are able to skip this step(*), because they’re based on a pair of interpreted programming languages: Python and Javascript. This introduces some interesting tricks, which are used with advantage by hooks.py
, Customization, Server and Client scripts, etc. They allow us to split the code into different places: original, appended, and overwritten.
There are both advantages and disadvantages to this approach. It potentially saves a lot of time, and makes concepts like App Stores much easier. But it can also introduce unexpected runtime errors, and makes it difficult to clearly see the entire code set.