1. A method for restricting the customizability of a base metadata document, the base metadata document defining one or more characteristics of at least a portion of a software application, the method comprising: receiving, by a computer system, a type-level customization policy defined for a first object type of an object included in the base metadata document, the type-level customization policy indicating whether instances of objects having the object type may be customized by a first set of one or more users of the software application; receiving an instance-level customization policy defined for the object included in the base metadata document, the instance-level customization policy indicating whether an instance of the object may be customized by a second set of one or more users of the software application; and enforcing, by the computer system, the type-level customization policy and the instance-level customization policy at runtime of the software application to create or update a customization, the customization defining modifications to the base metadata document, the enforcing comprising: determining whether the instance of the object may be customized by a current user, based on how the object is instantiated, the type-level customization policy, the instance-level customization policy, and a set of precedence rules for the type-level customization policy and the instance-level customization policy, wherein how the object is instantiated comprises whether the object is instantiated as the first object type or as a second object type that is based on the first object type, and wherein the set of precedence rules for the type-level customization policy and the instance-level customization policy comprises one or more rules providing for a first case where the type-level customization policy and the instance-level customization policy apply without conflict, and one or more rules providing for a second case where the type-level customization policy and the instance-level customization policy apply with conflicting restrictions; determining whether a restriction of one of the type-level customization policy or the instance-level customization policy takes a higher precedence with respect to a conflicting restriction of the other of the type-level customization policy or the instance-level customization policy; wherein the customization is stored separately from the base metadata document, and wherein the customization is applied to the base metadata document to generate a customized metadata document used by the software application.
1. A method for restricting the customizability of a base metadata document, the base metadata document defining one or more characteristics of at least a portion of a software application, the method comprising: receiving, by a computer system, a type-level customization policy defined for a first object type of an object included in the base metadata document, the type-level customization policy indicating whether instances of objects having the object type may be customized by a first set of one or more users of the software application; receiving an instance-level customization policy defined for the object included in the base metadata document, the instance-level customization policy indicating whether an instance of the object may be customized by a second set of one or more users of the software application; and enforcing, by the computer system, the type-level customization policy and the instance-level customization policy at runtime of the software application to create or update a customization, the customization defining modifications to the base metadata document, the enforcing comprising: determining whether the instance of the object may be customized by a current user, based on how the object is instantiated, the type-level customization policy, the instance-level customization policy, and a set of precedence rules for the type-level customization policy and the instance-level customization policy, wherein how the object is instantiated comprises whether the object is instantiated as the first object type or as a second object type that is based on the first object type, and wherein the set of precedence rules for the type-level customization policy and the instance-level customization policy comprises one or more rules providing for a first case where the type-level customization policy and the instance-level customization policy apply without conflict, and one or more rules providing for a second case where the type-level customization policy and the instance-level customization policy apply with conflicting restrictions; determining whether a restriction of one of the type-level customization policy or the instance-level customization policy takes a higher precedence with respect to a conflicting restriction of the other of the type-level customization policy or the instance-level customization policy; wherein the customization is stored separately from the base metadata document, and wherein the customization is applied to the base metadata document to generate a customized metadata document used by the software application. 15. The method of claim 1 wherein, when the base metadata document is updated, the customization is not affected.