This short paper is written as a follow-on to the proposals of Jim Wright regarding the separation of components within Stellation and the content of the interfaces between these components. This paper is presented at a higher level than Jim’s proposals and attempts to cover the full architecture of Stellation both as a standalone system and as integrated into the Eclipse IDE.
The diagram below shows a proposed component structure for Stellation. The structure is quite close to the existing Stellation structure except that it identifies separate components that are merged together in the current implementation.

The following sections describe each of the Stellation components in the diagram and each of the interfaces between the components.
This component is the heart of the Stellation system. It provides access from the outside world to Stellation. It provides the conduit between a Stellation repository and a Stellation workspace. The primary interface into the client manager is IScmProject. The client manager communicates with the repository via the Stellation server and with the workspace via an interface to be defined. Essentially the client manager can be considered the controller in a MVC architecture where the client applications supply the views and the Stellation workspace provides the model. The client manager will communicate with the Stellation Server using the IScmAccessPoint interface.
This component provides the implementation of the Eclipse team management facilities using a Stellation repository. It accesses the Stellation client manager via the IScmProject interface. It must completely insulate Eclipse from Stellation and vice-versa. This component is actually made up of a number of plug-ins as defined in the Eclipse Platform Plug-in Developer Guide.
Extracting the command line processing capabilities from the current workspace code will create this component. It will use the IScmProject interface to access the Stellation Client. It will have essentially the same functionality as the current command line utility with the following additions:
Options will persist until overridden or until all commands have been processed.
This component manages the internal representation of a Stellation workspace. This representation is expressed in terms of the same objects i.e. the artifact objects that are used in the Stellation server and repository. It should specifically NOT tie itself to a particular implementation of a persistent workspace such as a file system. It should also allow the implementation of a variety of persistent Stellation workspaces. This component will contain the logic required to implement the workspace
All persistent workspaces will be accessed through an interface that is yet to be defined. I believe that, at a minimum, the following workspace implementations will be required.
The Stellation Server is implemented as a daemon process under Unix or as a Windows service under Windows. This implies that the current ability to run the client and server within a single process will be dropped. It handles the logic required to implement the Stellation command processing needed to handle the preparation of project metadata and content for storage in the repository. The server should be implemented without containing specific knowledge of any repository or even of repository type. If this is done, it will be easy in the future to provide alternate repository implementations using other technologies such as object-oriented databases, or even radically different repository technologies in the future. The work that Rodolfo Raya, Mark and Jonathan did on generalizing SQL table definitions provides a starting point for this effort.
This component will contain the repository specific logic required to store Stellation objects in a repository. It will be accessed only from a Stellation server through an interface that is not yet fully defined.
See Jim Wright’s description of this interface for details in the “Overview” and “Issues” issues documents in the org.eclipse.Stellation.scm.model/doc directory. This interface is the primary interface to Stellation from the outside world.