Federated Approach to Code Sharing
Jason Duley
OCIO T&I Division/ARC
jason.duley@nasa.gov
4/15/2016
Goals
-
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
-
-
How
-
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
-
Culture meets reality
-
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
Federated Approach
- Big Idea
- Provide some "centralized" systems such as developer.nasa.gov, GitHub.com/NASA, ipas-gitlab, etc. for teams that do not have the IT resources to setup their own
- Embrace teams that leverage existing center, workgroup and mission-based CM systems to participate
- Federate all of these
Benefits
- Idea
- Do for Heterogeneous distributed Code Repositories what Google did for Web Servers - provide a unified interface to find stuff in one place
- NASA users will be able to find code on geographically dispersed systems without regard for actual host location
- Why
- Allows localized control with agency-wide visibility
Progress
- Initial prototype developed and running in the Ames datacenter on small dev VM
- Received funding to build Phase 1 of system (expand prototype)
- Work for Phase 1
- Catalog existing nasa.gov domain code versioning instances across the agency
- Connect to participating repositories in each of those instances to form federation of repositories
- Enable full-text search and distributed code browsing from a single web application
- Apply metadata to projects and enable facet-search on projects to boost re-use and discoverability


Federated Code Sharing

Federated Code Sharing

Federated Code Sharing


Meta data
-
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


Backup
Process

Code Sharing
-
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
Code Sharing
-
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)
Code Sharing

Distributed Software Registry
- Problem: Need a way to describe Software Projects using a standard controlled vocabulary
- How: Leverage Data On A Project (DOAP) RDF vocabulary to model software assets
- Challenge: Need a simplified way to allow software owners create/manage descriptions
- Solution: Create a framework to allow authoring of project descriptions which are easy for developers to use, but create metadata descriptions with enough specificity
Code Sharing System Overview
By Jason Duley
Code Sharing System Overview
High level look at a Federated approach to code sharing for the agency
- 847