Cairngorm 2 is a simple and prescriptive Model-View-Controller framework implementation.
Most large-scale applications within Adobe Technical Services are now built by applying patterns and practices of Cairngorm 2 using Inversion-of-Control (IoC) containers. Design patterns advocated with Cairngorm MVC, such as encapsulating operations within command objects, declaring models and services externally, and separating presentation and domain concerns, can be applied with Inversion-of-Control containers to simplify development and testability. Please refer to the tools section for more detail on IoC frameworks.
Cairngorm 2 remains as is and is not deprecated. It has been in use now for a decade and its simple, prescriptive nature allowed developers with a background in J2EE core patterns to apply it successfully. Popular extensions to Cairngorm 2 can be found at Universal Mind.
Cairngorm 2 is available for Flex 1.5, Flex 2, Flex3 and was even ported to Flex4
At the time of the release of Flex 2, portions of the-then-named Flex Data Services were moved into LiveCycle Data Services, a licensable product. So as to ensure that Cairngorm could be used without the need for LiveCycle Data Services (for example, using BlazeDS), Cairngorm was packaged into two SWCs, once containing the core Cairngorm code, and one containing the code that had dependencies on classes in LiveCycle Data Services. This latter SWC is named Cairngorm Enterprise and is only needed when using the classes that ship with LiveCycle Data Services (Producer, Consumer and DataService classes).
Things have changed further with the release of Flex 3, and although the current package structure supports the latest release of Flex, Cairngorm will be changed to better reflect these changes in a future release.
The Cairngorm 2 Plugin is an Eclipse plugin that augments Flex Builder to provide tooling that improves productivity when developing Cairngorm-based RIAs.
The initial focus of the Cairngorm Plugin is on the Controller. It aims to improve productivity by removing the repetitive action of creating a new Command and associated Event and adding them to the Controller.