HistoryViewLinks to this page Revision from: 2012 September 6 | 02:36 pm
This is the revision from 2012 September 6 at 02:36 pmView the current live version of the article.

What is a baseline?

Often, systems need to maintain collections of resources - for example, the set of sources that were used to construct your software, or the set of requirements that apply to a specific model of a product. This set of resources, their states, and the links between them, is called a configuration. During the development and evolution of a system, the set of resources in a configuration and the states of those resources may vary. To reproduce an earlier state for testing, or for audit trail reasons, etc., it is often important to have a permanent and immutable record of a configuration at some specific point in time. This immutable record of a configuration is called a baseline. Not all providers can guarantee complete immutability of baselines - for example, administrative actions might modify data.

A baseline captures the exact state of a set of resources, including the state of each resource in the set and the links between them. An immutable record of a resource could be made through copying, versioning, or a change in the state of the original resource.

  • A baseline is an OSLC gettable resource
  • It has certain properties of its own

What is in a baseline?

  • A baseline has a collection of versions and/or states of resources that are members of the baseline
  • The members of a baseline may themselves have member resources that are also part of the baseline, forming a linked graph of resources (perhaps a hierarchy)
  • Baseline members are gettable resources, so may have their own unique properties and links, and other resources may link to baseline members
  • Baseline members may also have links to resources outside the baseline: such referenced resources might not be immutable
  • Baseline member resources need not all be from the same OSLC domain (or indeed from any OSLC domain)

Types of baseline

  • A baseline might be a member of a larger baseline
  • The term ‘composite baseline’ has been used to describe a baseline whose members come from multiple OSLC domains; since the proposals on this page address baselines whose members may come from one or more OSLC domains and providers, they include ‘composite baselines’; that term is considered redundant
  • Similarly, this proposal also covers baselines some of whose members are not OSLC or RDF resources.

Immutability

Baselines themselves are, in general, mutable resources: they may have a mutable set of local properties such as comments, status, etc., and possibly a mutable set of link properties such as associated test results, etc.

Baselines are intended to provide an immutable view of their members. How such a view is maintained depends on the provider – some systems might provide read-only copies or versions of the member resources, some might record enough of the state of the member resource to present an immutable view of mutable resources. In general, a system cannot promise complete immutability of the view or the underlying resources.

The set of members of a baseline is normally immutable. However, a large cross-domain baseline might need to be constructed over time using multiple tools manager by multiple owners. It is quite possible that those owners are not necessarily all available at the same time - one might be out on vacation or sick at the time someone else needs to start creating the composite baseline. Hence the member set needs to be able to be mutable and have members added to it incrementally until it is marked as complete.

Once a baseline has been completely constructed and its properties set as desired, it should be possible to get an immutable view of the baseline resource itself, as well as its members.

Durability

Some baselines may be more important than others - for example, the product release or regulatory inspection baseline might need to be very complete and kept for a very long time, whereas an interim baseline formed to tell the testing group that some version and/or part of a product is ready for test might be transitory and incomplete.