Adobe’s Common Extensibility Platform, or CEP, is a suite of technologies embedded in Adobe’s Creative Cloud (CC) desktop applications. CEP was originally known as CSXS—it first appeared as part of Adobe Creative Suite 4 in 2008.
CEP delivers a runtime environment that is integrated with the ExtendScript scripting support of the host application. CEP is implemented in Creative Cloud applications, including InDesign, Photoshop, Illustrator, Premiere Pro, and Dreamweaver.
You can think of CEP as a web browser that’s built into InDesign and other CC applications—but it’s a web browser with a connection to InDesign’s scripting document object model (DOM). In specific, CEP is built around a custom implementation of Google’s Chromium Embedded Framework (or CEF). CEF gives developers a way to include a version of Google’s Chrome browser in an application, including support for Google’s V8 JavaScript engine. In CEP, Adobe has created a custom version of CEF that runs inside Adobe’s desktop applications, such as InDesign. CEP connects to CC applications via interprocess communication with PlugPlug, an Adobe shared technology component. Through PlugPlug, CEP enables communication between the V8 JavaScript environment and the ExtendScript DOM in the host application.
CC extensions built on the CEP foundation typically include two main parts: a user interface built in HTML and JavaScript, and one or more ExtendScript files that manage the work of manipulating the InDesign DOM. The HTML/JavaScript side of an extension can connect to the web, just as if it were a normal, non-embedded browser, but it’s not required that your CC extension do so. In fact, most of the work done in a CC extension for InDesign will probably take place on the ExtendScript side—creating documents, adding text, placing graphics files, and so on.
CEP also extends CEF by adding node.js, a popular open-source framework based on V8 JavaScript. Node.js provides APIs for file system access, web interaction (such as file upload/download), cryptography, events, and other functions. In addition, node.js is extensible, and thousands of Node Packaged Modules (NPM) provide features such as authentication, database connectivity, and zip packaging. For more on node.js, see ; for more on NPM, see . In InDesign, support for scripting is built into plug-ins developed in C++ using APIs provided by the InDesign SDK. All plug-ins, whether developed by Adobe or by third parties, can add objects, methods, and properties to the InDesign DOM. The InDesign DOM is dynamic: if you add a plug-in, the scripting model implemented in that plug-in appears in the DOM; remove the plug-in, and the supported scripting features are no longer available.
Finally, CEP integrates the Adobe IPC Toolkit, an interprocess communications system for Adobe CC applications. Like CEP, the Adobe IPC Toolkit is enabled by PlugPlug. With the IPC Toolkit, you can, for example, control Photoshop or Illustrator from an InDesign extension.