Jason Duley
OCIO T&I Division/ARC
jason.duley@nasa.gov
4/15/2016
Goals of a successful Code Sharing System:
Re-use, Re-use, Re-use
Provides Localized Access Control
Empowers Localized DevOps
Heterogenous Architecture
Reduction of Copies/Orphan Branches
Automates
Software Release Process
Meta-data collection
Approaches: Centralized vs Federated
Centralized vs Federated Code Sharing architecture is not an "OR" but an "AND" and requires concepts from both paradigms
Need to overcome short-comings of pure Centralized approach and meet goals developers demand using a minimally intrusive and loosely-coupled Federated Approach
NASA Missions/Projects/Programs are highly distributed, highly diverse and require IT systems to match this reality
These parties require localized control to match their requirements based on mission type, funding, CM versioning system of choice, level of security, DevOps customization, etc.
The agency needs a way to integrate these disparate systems that; give teams control to work effectively and provide the ability to have insight into all of NASA's software efforts
Projects define meta data in JSON serialized descriptor files that live with the project
Software/Code owners can define their own facet values which are dynamically displayed in the federation browser at runtime
Architecture can support extensive descriptor vocabularies to increase specificity of metadata
Open Source Software publication
180+ Released Open Source projects
Community-driven via Open Software Catalog
Search Projects, SRA Contact Info, Process Information
http://code.nasa.gov
Internal NASA Code Sharing
Heterogenous Federated Code Sharing System Prototype
Repositories (GIT / SVN / Hg / CVS / Custom)
Distributed Repository Browsing
Full-text Search of Source Code
Faceted Search of Projects
Leverage Data Standards to model software projects (Distributed Software Registry)
Distributed Software Registry