Getting Started

Download and build Open MCT locally

In order to build Open MCT from source there are a number of prerequisites that you must have installed in your development environment. With the build prerequisites installed, Open MCT can be downloaded and built using the steps at right. Starting with an empty directory, these steps will check out Open MCT from github, build it, and run a local web server.

Git

Git is the source control system used, and a git client must be installed. Git is available for most operating systems, and may already be installed on your system. Try running git at a command prompt. If it’s not currently installed, you can download a git client from https://git-scm.com/downloads

Node.js

Node.js is used to build the source code, and npm is used to manage build dependencies. Node is available to download from https://nodejs.org/

  • 1Clone the source code

  • 2Install development Dependencies

  • 3Run a local development server

A New API

A new API is currently under development that will deprecate much of the documentation and tutorials below, however Open MCT will remain compatible with the currently documented API. An updated set of tutorials is being developed with the new API, and currently covers how to register object and telemetry providers in the new API.

The new API moves away from a declarative system of JSON configuration files, and instead presents an imperative system based on function calls. Developers will be able to extend and build on Open MCT by making direct function calls to a public API. Open MCT is also being refactored to minimize the dependencies that using Open MCT imposes on developers, such as the current requirement to use Angular JS.

Questions, comments, or feedback on the new APIs is appreciated and should be emailed to the team or posted in the Open MCT issue tracker.

Developing for Open MCT

Open MCT provides a plugin mechanism for adding new telemetry sources, object providers, and visualization functionality. Documentation and tutorials are provided to help developers get started developing Open MCT plugins.

Integrating with Telemetry Sources

Open MCT is a rich web client that is designed to be integrated with telemetry sources. Integrating with a new data source requires a little JavaScript to define a new telemetry provider that fetches data and makes it available to the platform for display. The visualizations provided by Open MCT will then be able to display the data provided by the new data source, or new visualizations can be built using the plugin mechanism. Any extensions to Open MCT, including telemetry sources, are defined as plugins.

Broadly speaking, there are two types of telemetry sources that you might want to integrate with: Those that provide real-time streaming data, and those that provide historical data. The nature of the connections used to receive telemetry data (such as via HTTP request, or WebSockets) is not prescribed by Open MCT, nor is the format of the telemetry, and developers are encouraged to use the method that best suits their needs.

A tutorial is provided that gives an example of writing a telemetry provider and integrating with real-time and historical telemetry sources.

Extending Open MCT

Open MCT can be extended to provide new ways of visualizing and interacting with data, while offering a consistent user experience. Plugins may utilize Open MCT's provided extension points to define new:

  • Views
  • Object Types
  • Toolbars, and toolbar items
  • User actions (e.g. context menu items)
  • Status indicators

These extension points are not fully documented or implemented in the new API. This page will be updated as we continue to develop the documentation and related tutorials. If you are interested in trying out these extension points now, please contact us.

For more information on our timeline for updating the API and these documents, please check out the API Roadmap under Documentation

Contributing to Open MCT

Open MCT is an open source project hosted on Github. To get started with Open MCT, see our Getting Started guide.

This is an opportunity to contribute in a tangible way to NASA's exploration of the solar system. Your contributions may potentially be used to study Mars, explore the poles of the Moon, or improve our understanding of the Earth. There are opportunities for coders and non-coders alike to contribute.

Contributor License Agreement

Before we can merge any code into our repository and potentially start using it on a mission, there is a Contributor License Agreement that must be completed.

  1. For individual contributions, please download the Individual Contributor License Agreement. For companies, use the Corporate Contributor License Agreement.
  2. Once completed, please email the completed form to the address at the bottom of the PDF, and cc arc-dl-openmct@mail.nasa.gov.
  3. In the email, please also include your GitHub username.

I'm a coder, where do I start?

Start here, young padawan: documentation and tutorials. The tutorials will take you through a number of common use-cases for extending Open MCT. We also have a contributor's guide that will take you through some of the specifics of submitting your own code to our repository.

When you're ready to start writing code, you can either start hacking away at your own ideas, or take a look at our Help Wanted list.

We also have a roadmap of upcoming features. If you’d like to help out with any of these features specifically, please contact us to discuss next steps.

I'm not a coder, can I still help?

Absolutely. Try our software out, and let the world know about it. If you have any suggestions for improving it, find any bugs, know of novel ways of visualizing complex data, have outreach ideas, or anything else please let us know by filing an issue on Github or emailing us.

I am using Open MCT in my own project

That's great! Please let us know if you are using Open MCT, we would love to hear about it. Are you using Open MCT for your mobile robotics project? Have you integrated it with Kerbal Space Program? Anything you do with Open MCT is of interest to us. Also, if you have created plugins, visualizations, bug fixes, or anything else in your own project based on Open MCT, we would love to incorporate them into our software. Please file a pull request!