Tools and Infrastructure

Starting in August 2012, we are spending six months doing infrastructure improvements, including project documentation, websites (wiki, forum, blog), and the GMAT build system. This page holds some documentation related to this effort.

Scope

The infrastructure improvement project will encompass the following items:

  • Web-based project infrastructure
    • Wiki
    • Forum
    • Issue tracker
    • Blog
    • Static documentation
  • Build system
  • CMMI-required documentation
  • Developer documentation

Current State

The current project infrastructure has the following major issues:

  • Web-based project infrastructure:
    • Information is scattered, non-cohesive, and hard to find.
    • Some tools are hosted in unacceptable places (wiki/forum: personal server; JIRA: project-funded third-party server).
    • The wiki software is out of date and hard to use, and cannot be easily upgraded.
    • Project members are responsible for system administration for various systems.
    • Some infrastructure items aren't being used appropriately (blog, mailing lists).
    • Some information that could be public is located internally (nightly build files, some documentation, test system, test results, etc.)
  • Build system:
    • The build system is hard to use, non-cohesive, non-standard, and partially undocumented.
    • Custom automated build and test processes are fragile and require frequent troubleshooting.
    • Test processes don't use an official daily build package as input.
  • CMMI documentation:
    • Documentation required by GPR 7150.2 is incomplete.
    • Existing documentation is disorganized and non-cohesive.
  • Developer documentation:

Getting started as a GMAT contributor is hard due to lack of "developer's handbook"-type documentation.

Vision

The infrastructure improvements should meet the following guiding principles:

  • Information should be organized, easy to find, and inviting to visitors.
  • Information should be easy to maintain by project contributors.
  • Information should be public unless required to be private.
  • Tools should encourage publicly-visible communication.
  • Tools should offer straightforward migration of data from old tools.
  • Documentation and processes should meet requirements of GPR 7150.2.
  • Where practical, tools should be free and open-source.
  • Selected tools should be established and widely used in the industry.
  • Automation tools should be easy to use by external users with a minimum of supporting documentation.

Requirements

  • Web-based project infrastructure:
    1. The Atlassian JIRA issue tracking system must be supported throughout the R2013a release cycle.
    2. The infrastructure must support import and export of existing JIRA data.
    3. The Apache Subversion issue tracking system provided by SourceForge must be supported throughout the R2013a release cycle.
    4. The Apache Subversion issue tracking system provided by GSFC Code 585 must be supported throughout the R2013a release cycle.
    5. The infrastructure tools must be maintained by a party external to the core GMAT project team.
  • Build system:
    1. The build system shall use free, open-source tools.
    2. The build system shall support building the GMAT application for the following architectures:
      1. x86
      2. x86-64
    3. The build system shall support building the GMAT application in the following configurations:
      1. GUI
      2. Console
    4. The build system shall support building the GMAT application on the following platforms:
      1. Windows 7
      2. Apple-supported versions of Mac OS X
      3. An active distribution of GNU/Linux
    5. The build system shall be structured to allow for use by automated processes directly after initial checkout from the code repositories.
  • CMMI documentation:
    • (TBD)
  • Developer documentation:
    • (TBD)

Milestones

  • Project Infrastructure
    1. Stand up a sandbox server. The server should be online, accessible, and configured with local installations of the Atlassian tools we're currently testing through Atlassian OnDemand. [9/21]
  • Build System (all by 10/18)
    1. Research existing build system
    2. Choose a new tool
    3. Apply new tool to 32-bit GMAT on Windows 7 64-bit.
    4. Apply new tool to 64-bit GMAT on Windows 7 64-bit, a current version of Mac OS X, and a modern distribution of Linux 64-bit.
    5. Apply new tool to 32-bit GMAT on Mac OS X 10.6 (Snow Leopard) 64-bit.
    6. Apply new tool to 32-bit GMAT on a modern distribution of Linux 32-bit.
    7. Finalize user documentation:
      1. How to use build scripts to build GMAT
      2. How to interact with the build scripts as a GMAT developer
      3. How to work with the build scripts as a build system maintainer

Hosting

We've gotten legal approval to choose our own host, as long as they meet certain Terms of Service requirements. No commercial hosting provider we've looked at has an acceptable TOS by default, but Joel has been contacting providers to gauge interest in creating a custom TOS. So far the following hosts have been contacted:

  • 1&1
  • Amazon Web Services
  • Arvixe - no
  • CoolHandle
  • GoDaddy
  • DotBlock - possible
  • DreamHost - no
  • GreenGeeks
  • HostGator
  • Hosting.com - possible
  • InMotion Hosting
  • Jumpline
  • LiquidWeb - possible
  • Linode
  • Lunarpages
  • MaximumASP - possible
  • MyHosting.com
  • NameCheap
  • Network Solutions
  • Rackspace - no
  • VPSDepot
  • WestHost