Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.



### Cairngorm 3 - [ Home ][1] - [ Guidelines ][3] - [ Tools ][4] - [ Libraries Downloads ][2]
### Cairngorm 2 - [ Home ][5] - [ Framework Downloads ][6] - [ Eclipse Plugin ][7]
### Project - [ Source ][8] - [ Bug Database ][9] - [ Submitting a Patch ][10] - [ Developer Documentation ][11] - [ Forums ][12] - [ License ][13]

Getting Started With Cairngorm 3

The best way to get started with Cairngorm depends on your own background. Are you a new comer, an old timer or a visitor?

  • New Comer - Cairngorm is new to you. How do you even pronounce it?
  • Old Timer - You're already skilled in Cairngorm 1 & 2, so what's new?
  • Visitor - You prefer to use another framework, but maybe Cairngorm 3 has something to offer?

New Comer

Named after a mountain range in the eastern Highlands of Scotland, Cairngorm is a resource provided by the Adobe Technical Services Organisation to developers and technical architects to deliver successful Flex projects in the enterprise. Cairngorm is pronounced kern-grm and you can hear it said with an American accent here or in more authentic Scots here.

Cairngorm began life in 2002 as an ActionScript library for building applications that apply a form of the Model-View-Controller (MVC) pattern. This continued for some time, with the project becoming open-source in 2004. In the meantime, many third-party frameworks were also developed and released, and a trend emerged towards Inversion-of-Control (IoC) frameworks. In 2009, the scope of Cairngorm was increased, transforming the MVC framework into a broader foundation of guidelines, tools and libraries that apply across frameworks.

To get started with Cairngorm, begin on the Cairngorm Guidelines page, where you will find some introductory material and a sample application. These explain the Cairngorm Architecture , which is our preferred way to structure Flex applications. Below the introductory material can be found more detailed information about the Cairngorm Architecture, and a collection of Best Practices documents covering many areas of Flex development. These can be used to help keep development teams on the right track.

In addition to the guidelines, Cairngorm provides tools and libraries . The tools help to ensure efficient and high-quality delivery of Flex applications, while the libraries solve recurring problems in Rich Internet Applications.

Old Timer

If you're already skilled in Cairngorm 1 & 2, you'll be interested to hear how the focus of Cairngorm 3 has changed. Instead of centering around a specific implementation of the Model-View-Controller pattern, Cairngorm 3 consists of a broader set of guidelines, tools and libraries that apply across frameworks. Cairngorm aims to help developers apply Flex and third-party frameworks effectively.

The Cairngorm Guidelines describe our preferred client-side architecture, which is known as the Cairngorm Architecture. It consists of various patterns, some of which will be instantly familiar to experienced Cairngorm users. For example, the Command pattern is still recommended for encapsulating the operations that an application performs. Similarly, models and services are declared externally to the view, as with the Service Locator and Model Locator. However, Cairngorm 3 acknowledges new approaches to accessing models and services, such as using an Inversion-of-Control (IoC) container to automatically inject them where required.

The original Cairngorm library remains a part of Cairngorm 3, but has not been updated for this release. It can be found on the Cairngorm Libraries page, alongside a collection of newer libraries. In addition, the Cairngorm Tools page describes various tools that we have found useful for ensuring quality in the applications we deliver. These range from commerical products for automation testing, to simple Ant scripts for generating test suites and cleaning up MXML files.
To migrate from Cairngorm 2 to 3, you should first read the Cairngorm Guidelines to understand how your existing client-side architecture might be improved. This could involve introducing an inversion-of-control container or simply refining the way you use the original Cairngorm library. For example, it may be beneficial to decentralize, splitting an application into distinct functional areas, with their own models and services. After reading the guidelines, you may evaluate the Cairngorm Tools to decide whether there are parts of your development process that could be strengthened. Finally, you might review the Cairngorm Libraries to see whether they provide solutions to any of the problems you are facing in your application code.


Thanks for dropping by. If you're already happy delivering Flex projects with one of the newer third-party frameworks, you might be interested to hear that Cairngorm has changed. Instead of centering around a specific implementation of the Model-View-Controller (MVC) pattern, Cairngorm has transformed into a foundation of guidelines, tools and libraries, many of which apply across frameworks.

The Cairngorm Guidelines describe a client-side architecture that can be implemented using any modern inversion-of-control framework, such as Parsley, Swiz or Spring ActionScript, while the accompanying Best Practices apply to the Flex SDK in general, regardless of your application framework of choice. These guidelines and best practices can help teams to delivery high-quality applications.

The Cairngorm Tools page describes a number of tools that we have found valuable during development of large enterprise projects. These range from commercial products for automation testing, to simple Ant tasks for generating unit test suites and cleaning up MXML files. The emphasis of the tools is on achieving quality and agility during delivery.

The Cairngorm Libraries may or may not be of interest. They address common problems that we have encountered repeatedly in our engagements, such as complex validation requirements, processing tasks sequentially and in parallel, and managing pop-ups. Some third-party libraries provide their own solutions to these problems. Please evaluate these libraries and apply them if they solve problems relevant to your project needs.