Prior to AEM 6.4, customer code was deployed in unpredictable areas of the JCR that were subject to change on upgrades. Because of this, it was common for formal AEM releases to overwrite custom code, configuration or content. In addition, customer changes sometimes overwrote AEM product code or content, breaking product functionality.
By clearly delineating hierarchies for AEM product code and customer code, these conflicts can be avoided.
To that end, beginning in AEM 6.4 and to be continued in future releases, content is being restructured out of /etc to other folders in the repository, along with guidelines on what content goes where, adhering to the following high-level rules:
1. AEM product code will always be placed in /libs, which must not be overwritten by custom code
2. Custom code should be placed in /apps, /content, and /conf