The Redfish specification allows for OEM resources and properties to be implemented by OEMs. As a general rule, OpenBMC discourages the use of OEM namespaces in APIs. In line with this, bmcweb does not expose an API for adding OEM properties in a backward API compatible way for resources that have not been merged to master.
OEM properties in an open source project pose many problems when compared to their closed source brethren in terms of reliability, code reuse, compatibility, and maintenance.
As a general rule, OpenBMCs external Redfish API aims to be as compatible between systems as possible. Adding machine-specific resources, properties, and types largely defeats some of that goal, as clients must implement machine-specific APIs, some of which are likely to overlap, which increases the amount of code overall. OpenBMC also has very little visibility into clients that might interface with Redfish, and therefore needs to take care when adding new, non-standard APIs.
In practice, OEM resources trend toward a lower level of quality and testing than their spec-driven alternatives, given the lack of available systems to test on, and the limited audience of both producers and consumers. This poses a problem for maintenance in the long run, as it is very difficult to make a breaking change to an external API, given that clients are likely to be implemented in projects that OpenBMC isn't aware of.
If a given workflow eventually becomes standardized, OpenBMC OEM endpoints now have to break an API boundary to be able to move to the standard implementation. Given the amount of effort it takes to break an API, it is much simpler to wait for the standard to be completed before merging the OEM code to master.
DMTF has many more Redfish experts than OpenBMC. While the bmcweb maintainers do their best to stay current on the evolving Redfish ecosystem, we have significantly limited scope, knowledge, and influence over the standard when compared to the experts within DMTF. Getting a DMTF opinion almost always leads to positive API design changes up front, which increases the usefulness of the code we write within the industry.
If you've read the above, and still think an OEM property is warranted, please take the following steps.
Regardless of the OEM namespace being used, implementations should plan to implement all appropriate CSDL and OpenAPI schemas for their given OEM resources, should pass the redfish service validator, and should follow redfish API design practices. We require this same level of quality as non OEM to ensure that OEM is truly required by the contributor to satisfy their use case. If OEM were held to a lesser level of quality requirements, bwcweb would consist entirely of OEM code.
bmcweb maintainers retain the final approval on OEM schemas.