## Universal intro

### What is the universal intro?

The universal intro is complete, ready out-of-the-box implementation of intro with a pre-defined page structure that all products can rely on (as API). It is a complete implementation, including presentation, but without content, and can be used by any product.

### Motivation

Prior to 3.2, the intro framework provided for defining welcome pages with unique contribution points or 'anchors'. Other components could provide extensions that add content into these anchors. Although this mechanism worked well for closed solutions, it is increasingly hard to maintain for large products. Due to the 'bottom-up' nature of contributions from clients into the welcome pages, it is hard to control the final result and resolve conflicting contributions.

Take, for example, the provider of a reusable eclipse feature. He/she has created a useful feature consisting of a number of plug-ins. The feature can take part in several products, each one having its own Welcome implementation. There are several problems that the feature provider will face when creating Welcome contribution:

- Since it must contribute into a number of different products, the feature must know about the page identifiers for each of the products upfront.
- It is entirely possible that one of the products will have a Welcome implementation that is completely different from what the feature provider expects; the contribution will not show up in these products.
- Even if the products share a common Welcome implementation, the importance of the feature (and hence its relative position on the page) is not going to be the same. The feature can be one of the most important components in the product, or may be ranked as 'See Also'. Nevertheless, the feature provider is asked to fully spell out the location on the target page in advance.

It is clear that the Welcome contribution of a reusable feature is be much easier to develop with the following conditions in place:

- There is a common Welcome implementation that can be counted on (as a form of API)
- Delayed target page resolution (so that the decision of the final position of the contribution is left to the product assembler)

### Enter universal intro

The universal intro is based on experience with intro implementations and the need to have an implementation in place that contributors can count on. The implementation is built using the existing intro framework, and for this reason, all existing intro implementation will continue to work and clients will be able to switch to the new model according to their schedules. Of course, as long as they don't switch, they will not reap the benefits of the new implementation such as intelligent content merging, new visual solution etc.

### Benefits

Some of the benefits of using the universal intro include:

- Products can simply to point to the universal intro without the need to implement an intro from scratch
- Each product should be able to configure the intro to a certain degree (title, branding image, presentation theme)
- A number of root pages that cover most of the products' needs are be provided. The list of pages to show is also configurable
- The presentation is sufficiently product-agnostic to better suit the increasingly componentized world. It works well with both monolithic products and 'best of breed' eclipse products assembled with components created by different companies
- End-users can configure the universal intro in a user-friendly way, via the preference page