Project Structure

JOSIF Main Page | Project Structure

Introduction

This section describes the subversion project repository structure which has been implemented for JOSIF. All of the implementation and framework artifacts have now been moved into this structure. You should also read the entry in the strongly related subject of Version Numbering

Please note that the old name for JOSIF was TIP (TM Forum Interface Program). Although the name has changed, TIP is still used as a root name in the subversion hierarchy as it would be too difficult to migrate all of the projects to accommodate the overall name change.

Principles guiding project layout

For a background on alternative repository layouts see a good article on Subversion Repository Layout layout http://blogs.open.collab.net/svn/2007/04/subversion_repo.html and Choosing a Repository Layout http://svnbook.red-bean.com/en/1.0/svn-book.html#svn-ch-5-sect-6.1

It is important to get a good understanding of the Subversion system since we should be using it extensively for copies and branches going forwards. It is also worth understanding the capabilities of subclipse in this area as this will be a primary tool for managing the merging of work going forwards. See http://svn.collab.net/subclipse/help/index.jsp for more information.

The basic principles for the layout I have chosen are as follows:

I have favored the 'Apache' approach towards separate trunk, branch, tag layouts for each project where the resulting software artifact is released asynchronously to other artifacts. The current development stream is held in Trunk, 'off to the side experiments are held in Branches and Tags are versioned Snapshot or main Releases. In the fullness of time all of the released artifacts should have corresponding Release or Snapshot entries in the maven repository. This way any given downstream project can know for certain which version of the tigerstripe plugins etc they are using. This will also tie in with bug and feature management going forwards. Each project in the repository will be related to a 'BaseProject' In all cases the base project is intended to provide a maven 2 project which controls the build, provides common variables and consistent site documentation. The use of separate BaseProjects' will make the later introduction of a continuous integration system and automatic site wide documentation much easier.

SVN Repository Branches

I have identified the following main branches for the repo.

1. The framework branch is used for artifacts which generate the specifications and are held in the 'framework' branch. These are mostly plug-ins which are developed and released relativity independently and therefore warrant separate trunk / branch / tag

2. The platform branch is used for common implementation artifacts intended to support the creation of RI's TCK's and interface libraries. Ultimately this will provide a (possibly osgi based) platform for development and testing of TIP interfaces. The Platform branch also hosts a 'Project Creator' which developers can use to create archetype projects which will consistently fit into the overall build system. Note that the platform branch also contains a sub branch called Platform_Test_Projects. These are test projects (versioned as a complete entity) and corresponding to the structure of projects in the 'interfaces' branch but which are designed only to exercise and test the features of the platform artifacts.

3. The models branch is used to host individual model projects for common models used across interfaces. These models should be tagged and versioned and ultimately released models will be hosted as part of the maven build system for consistent downstream usage.

4. The interfaces branch is used to host complete interface specification and/or implementation projects which contain sub modules which are considered to be logically part of he same component. In this case the entire project is versioned with trunk / branch / tag rather than each sub-module

5. The sandbox branch has sub branches allocated to each developer who requests one. Developers are free to organize there work however they like in their own branch - although if the intention is to merge or contribute the work late to the main project, developers would be wise to adopt similar practices to those described above. Developers should provide descriptions of their sandbox work on their own sandbox pages referenced from the Developers Sandbox page.

6. Finally the documents branch provides a version controlled location for documents which are linked to from the MediaWiki. See JOSIF Subversion Documents for details.

I believe that the above provides a good starting point for setting up the project repository. However the one advantage of subversion is that this is not set in stone. We can adapt the conventions to our changing needs going forwards if we need to.

TIP Project Subversion Layout

The TIP subversion structure is described below. Please note that this is illustrative of the principles. The actual layout in subversion may differ slightly as the project developes. To view the actual repository you may use the following links;

  • The Web Viewer is available at http://openoss.svn.sourceforge.net/viewvc/openoss/tip/
  • Subversion root is at https://openoss.svn.sourceforge.net/svnroot/openoss/tip/
    tip (Root of TIP project)<BR>
    <BR>
    .. admin - minutes and contributions to JOSIF project meetings<BR>
    .... Contributions<BR>
    .... meetings<BR>
    .... training - Training material<BR>
    .. contributedDocuments - documents contributed through and released by the TM Forum<BR>
    <BR>
    .. documents - location of version controlled documentation which is linked from the wiki (see [[JOSIF Subversion Documents]])<BR>
    .... original<BR>
    .... wiki-linked-pdf<BR>
    <BR>
    .. framework - location of framework projects - soap and documentation generators etc. See [[JOSIF Framework]]<BR>
    .... documents<BR>
    ........ ProjectManagement - Framework project management documents. See [[Project Management]]<BR>
    .... TIP_Framework_BaseProject<BR>
    ........ branches<BR>
    ........ tags (note trunk ,tags and branches for EACH SEPARATE MODULE under framework)<BR>
    ........... RELEASE_1_0_0<BR>
    ............... TIP_Framework_BaseProject<BR>
                    (Note - Releases replicate the trunk branch structure at a point in time.<BR>
                            For simplicity the content of the release tags are not shown below)<BR>
    ........ trunk<BR>
    ............... TIP_Framework_BaseProject<BR>
    .... TIP_Soap_Generator - Tigerstripe WSDL/XSD generator. See [[TIP_Soap_Generator]]<BR>
    ........ branches<BR>
    ........ tags (note trunk ,tags and branches for EACH SEPARATE MODULE under framework)<BR>
    ........... RELEASE_1_0_0<BR>
    ........ trunk<BR>
    ................ TIP_Soap_Generator<BR>
    ................ TIP_Soap_Generator_Package  (deploys packaged TIP_Soap_Generator to maven)<BR>
    .... TIP_Doc_Generator - Tigerstripe Documentation generator. See [[TIP_Doc_Generator]]<BR>
    ........ (trunk, tags, branches etc...)<BR>
    .... TIP_Profile - Tigerstripe project containing Profile for TIP Projects. See [[TIP_Profile]]<BR>
    ........ branches<BR>
    ........ tags (note trunk ,tags and branches for EACH SEPARATE MODULE under framework)<BR>
    ........... RELEASE_1_0_0<BR>
    ........ trunk<BR>
    ................ TIP_Profile_Model<BR>
    ................ TIP_Profile_Package (deploys packaged profile to maven)<BR>
    .... TIP_Common_Model - Tigerstripe project containing Common artifacts for TIP Projects. See [[TIP_Common_Model]]<BR>
    ........ branches<BR>
    ........ tags (note trunk ,tags and branches for EACH SEPARATE MODULE under framework)<BR>
    ........... RELEASE_1_0_0<BR>
    ........ trunk<BR>
    ............... TIP_Common_Model<BR>
    .... TIP_Generator_Internal_Model - Tigerstripe project containing injected artifacts for TIP Projects. See [[TIP_Generator_Internal_Model]]<BR>
    ........ branches<BR>
    ........ tags (note trunk ,tags and branches for EACH SEPARATE MODULE under framework)<BR>
    ........... RELEASE_1_0_0<BR>
    ........ trunk<BR>
    ............... TIP_Generator_Internal_Model<BR>
    .... TIP_MetaModel_Model - Tigerstripe project TIP Meta Model documentation See [[TIP_MetaModel_Model]]<BR>
    ........ branches<BR>
    ........ tags (note trunk ,tags and branches for EACH SEPARATE MODULE under framework)<BR>
    ........... RELEASE_1_0_0<BR>
    ........ trunk<BR>
    ............... TIP_MetaModel_Model<BR>
    .... TIP_Fmk_TestProjects - Test projects for the TIP Framework<BR>
    ........ TIP_Fmk_Test1 - See [[TIP_Fmk_Test1]]<BR>
    ............ branches<BR>
    ............ tags<BR>
    ............... RELEASE_1_0_0<BR>
    ............ trunk (note trunk ,tags and branches for EACH PROJECT under TestProjects projects )<BR>
    ................ TIP_Fmk_Test1_BaseProject<BR>
    ................ TIP_Fmk_Test1_Model<BR>
    ................ TIP_Fmk_Test1_SoapSpecPackage<BR>
    ................ TIP_Fmk_Test1_DocSpecPackage<BR>
    ................ TIP_Fmk_Test1_JvtSpecPackage<BR>
    ................ TIP_Fmk_Test1_EjbImplGenSrcPackage<BR>
    ................ TIP_Fmk_Test1_EjbImplProject<BR>
    ........ TIP_Fmk_Test2 - See [[TIP_Fmk_Test2]]<BR>
    ................ (trunk, tags, branches etc...)<BR>
    <BR>
    .. platform - location of the base implementation projects. See [[JOSIF Platform]]<BR>
    .... TIP_Platform_BaseProject<BR>
    ........ branches<BR>
    ........ tags<BR>
    ........... RELEASE_1_0_0<BR>
    ........ trunk (note trunk ,tags and branches for EACH SEPARATE MODULE under platform)<BR>
    ............... TIP_Platform_BaseProject<BR>
    .... TIP_JvtSpec_Generator<BR>
    .... TIP_EjbImpl_Generator<BR>
    .... TIP_Project_Creator<BR>
    .... TIP_EjbImpl_BaseClasses<BR>
    .... TIP_Platform_TestProjects<BR>
    ........ TIP_Platform_Test1<BR>
    ............ branches<BR>
    ............ tags<BR>
    ............... RELEASE_1_0_0<BR>
    ............ trunk (note trunk ,tags and branches for EACH PROJECT under TestProjects)<BR>
    ................ TIP_Platform_Test1_BaseProject<BR>
    ................ TIP_Platform_Test1_Model<BR>
    ................ TIP_Platform_Test1_SoapSpecPackage<BR>
    ................ TIP_Platform_Test1_DocSpecPackage<BR>
    ................ TIP_Platform_Test1_JvtSpecPackage<BR>
    ................ TIP_Platform_Test1_EjbImplGenSrcPackage<BR>
    ................ TIP_Platform_Test1_EjbImplProject<BR>
    <BR>
    .. models - location of TIP core tigerstripe models (Note - not yet used )<BR>
    .... TIP_CBE<BR>
    ........ branches<BR>
    ........ tags<BR>
    ........ trunk (note trunk ,tags and branches for each model project under models )<BR>
    ............ TIP_CBE_BaseProject<BR>
    ............ TIP_CBE_Model<BR>
    ............ TIP_CBE_SoapSpecPackage<BR>
    ............ TIP_CBE_DocSpecPackage<BR>
    <BR>
    .. interfaces - location of interface projects which use the other artifacts. See [[TIP Interfaces]]<BR>
    .... ServiceProblemManagement - See [[Service Problem Management]]<BR>
    ............ branches<BR>
    ............ tags<BR>
    .............. RELEASE_1_0_0<BR>
    ............ trunk (note trunk ,tags and branches for EACH PROJECT project under interfaces )<BR>
    ................ TIP_SPM_BaseProject<BR>
    ................ TIP_SPM_Model<BR>
    ................ TIP_SPM_SoapSpecPackage<BR>
    ................ TIP_SPM_DocSpecPackage<BR>
    ................ TIP_SPM_EjbImplGenSrcPackage<BR>
    ................ TIP_SPM_EjbImplProject<BR>
    ................ TIP_SPM_JvtSpecPackage<BR>
    <BR>
    .. sandbox - Developers individual projects. See [[Developers Sandbox]]<BR>
    .... developer a sandbox - developers can work on their own projects here outside of the main release streams<BR>
    .... developer b etc...<BR>