CODE.NASA.GOV
Catalog of Open Source Software from NASA. Built using Polymer.
Do You have a Open-Source Code Project For This Site?
Instructions
Instructions for releasing a NASA open-source project can be found on https://code.nasa.gov/#/guide.
Code.json vs Category.json
Newly approved code projects for release are added to code.json. You can add your approved open-source NASA project to code.json, here.
All federal agencies are mandated to have a code.json that is then harvested by the General Services Adminstration (GSA) and aggregated into code.gov.
Code.json is reformatted by a script run by NASA's open-innovation team into category.json. Category.json has some attributes not in code.json and is used to build the project page on code.nasa.gov.
Additionally, at this time, only category.json has the A.I.-generated keyword tags in addition to the human-generated tags. This may change in the future.
Why code.json is bigger than category.json
Some of the code projects in code.json have open-source licenses. Other projects in code.json have government-source only licenses, meaning sharing is constrainted to government agencies. All of the code projects listed in category.json have open-source licenses.
Making your own data visualization with the JSONs that drive code.nasa.gov:
- https://observablehq.com/@justingosses/finding-recent-additions-to-code-nasa-gov
- https://observablehq.com/@briantoliveira/untitled
If you make your own visualization, please add it as an issue. We would love to see it!
Running The Code In This Repository
Setup
test
Prerequisites
Install bower and polymer-cli:
npm install -g bower polymer-cli
Check that you are using Node v8+
node -v
Install dependencies
bower i
Start the development server
This command serves the app at http://localhost:8080
and provides basic URL
routing for the app:
polymer serve --open
Build
This command performs HTML, CSS, and JS minification on the application
dependencies and generates a service-worker.js file with code to pre-cache the
dependencies based on the entrypoint and fragments specified in polymer.json
.
The minified files are output to the build/unbundled
folder, and are suitable
for serving from a HTTP/2+Push compatible server.
In addition the command also creates a fallback build/bundled
folder,
generated using fragment bundling, suitable for serving from non
H2/push-compatible servers or to clients that do not support H2/Push.
polymer build
Preview the build
This command serves the minified version of the app at http://localhost:8080
in an unbundled state, as it would be served by a push-compatible server:
polymer serve build/unbundled
This command serves the minified version of the app at http://localhost:8080
generated using fragment bundling:
polymer serve build/bundled
Deploying
When deploying to a static web server (with no HTTP/2+Push), be sure to copy only
the files from build/bundled
directory (NOT the project directory) which
contains a functional service worker and minified files. Put them in a top level part of the directory, not within another build/bundled directory within the production directory.
Adding a new view
You can extend the app by adding more views that will be demand-loaded
e.g. based on the route, or to progressively render non-critical sections
of the application. Each new demand-loaded fragment should be added to the
list of fragments
in the included polymer.json
file. This will ensure
those components and their dependencies are added to the list of pre-cached
components (and will have bundles created in the fallback bundled
build).