Developers can now take advantage of NASA’s web-based mission control framework for data visualization on mobile & desktop; they can build dashboards for data analysis and situational awareness using the same tool that NASA uses for some of its spacecraft missions. We talked to Andrew Henry, a software developer for SGT Inc. who works on the Open MCT project at NASA’s Ames Research Center about how to get started with Open MCT, how they rewrote the plugin API so that the framework can be extended without imposing third-party libraries on developers & more.
JAXenter: Could you tell us more about Open MCT? How can it help developers interact with data?
Andrew Henry: Open MCT is a web-based tool used by NASA for real-time and historical analysis of spacecraft telemetry. Open MCT may also be used to display many other data types. Some examples that NASA has built are activity timelines, images, maps, rover traverses on planetary surfaces, clocks, timers, a notebook that integrates mission controller notes with data, and a 3D rover model/terrain view. More data displays are possible.
Many of the challenges of spacecraft operations that Open MCT is designed to address are not unique to that domain and are equally applicable to any scenario where real-time or historical analysis of time series data is required. Because it’s open source software, developers can build dashboards for data analysis and situational awareness using the same tool that NASA uses for some of its spacecraft missions.
JAXenter: What are its potential use cases?
Andrew Henry: Open MCT can be downloaded from our GitHub repository, and developers can get up and running in minutes. For developers wishing to use Open MCT to interact with their own data sources, we have a tutorial that will walk you through an example of data integration.
We moved to a more conventional imperative model where developers call functions and pass in options, rather than defining configuration files. It’s easier to document, and it’s easier to understand.
With the tutorial complete, developers could then start to integrate Open MCT with their own data sources. With an appropriate adapter plugin, Open MCT could be used with anything that produces time series data.
Some examples that developers might consider are
- IoT devices
- Arduino sensors,
- home automation APIs,
- robotics kits,
- public stock price tickers, etc.
We encourage developers to open source any plugins they produce so that others can benefit from them. We’d love to build an ecosystem of open source plugins for Open MCT so that potential users have a turnkey solution to a lot of different data visualization and situational awareness problems. If developers do build open source plugins for Open MCT, we would encourage them to contact us so that we can feature their plugin on our website.
JAXenter: What do developers need in order to get started with Open MCT?
If you’re interested in contributing to the project, the best way to do that right now is by developing new plugins or helping out with one of the existing plugins. We welcome anything that would make Open MCT useful to a wider range of users.
For example, we’ve had users develop plugins that integrate Open MCT with ROS (Robot Operating System), Kerbal Space Program, as well as other open source mission control systems like YAMCS. I’d suggest following our tutorial, integrating Open MCT with something (eg. IOT devices, public data sources, etc) and then releasing the plugin as open source software. Or, contribute to one of the previously mentioned plugins.
JAXenter: A new API is under development so much of the documentation will be deprecated. Why change the API? Does this mean Open MCT won’t be compatible with the currently documented API? What will change?
Andrew Henry: Our plugin API was changed in response to feedback from developers. The legacy API used a declarative model that supported extension through JSON configuration files. This was a legacy of the desktop version of Open MCT, which was a JAVA RCP application that used the RCP/OSGI model where extensions are configured in XML.
We have rewritten our plugin API so that Open MCT can be extended without imposing third-party libraries on developers.
For developers coming from desktop Open MCT, this made a lot of sense, but the feedback we got from developers coming to the platform for the first time was that this was a little obtuse and that it was inhibiting developer understanding of the platform. We moved to a more conventional imperative model where developers call functions and pass in options, rather than defining configuration files. It’s easier to document, and it’s easier to understand.
Our website differentiates clearly between current and legacy API. In our current API, some sections are marked “draft”, but otherwise it should be considered stable. The legacy API was deprecated some time ago, so developers coming to the platform now can be confident that they are using current API.
JAXenter: The framework is also being refactored to minimize the dependencies that using it imposes on developers such as the current requirement to use Angular JS. What changed? Why is Angular JS no longer required?
Andrew Henry: This was about improving the developer experience. We have rewritten our plugin API so that Open MCT can be extended without imposing third-party libraries on developers.
For example, previously, if a developer wished to create a new telemetry visualization for Open MCT, they had to have familiarity with Angular templates, controllers, etc. and they were stuck with the version of Angular we were using. Developers should be able to write visualizations using whichever framework or library they are most productive in – or none at all, if that’s what they prefer. And if Angular is your favorite framework, you can still use Angular.