X deliberately specifies "mechanism, not policy". As such, an additional specification beyond the X protocol itself was needed for client interoperation. The ICCCM specifies cut and paste buffers, window manager interaction, session management, how to manipulate shared resources and how to manage device colours. These low-level functions are generally implemented within widget toolkits or desktop environments, meaning that application programmers rarely work directly with the ICCCM itself but instead use the higher-level toolkit functions that implement it.
The ICCCM is notorious for being ambiguous and difficult to correctly implement . Furthermore, some parts are obsolete or no longer practical to implement .
Efforts to update and clarify the ICCCM for current needs have resulted in the Extended Window Manager Hints (EWMH), which has gained fairly broad acceptance and continues to be extended as the need arises.