About Hyperion Scripting for JIRA

Hyperion Scripting for JIRA is a brand new product for writing JIRA extensions in TypeScript/JavaScript in the most productive way.

Following are the goals of Hyperion Scripting:
  • Writing Hyperion scripts should be easy to learn and it must accessible for all who are willing to learn some scripting, and not only by professional Java developers, for whom the current JIRA SDK is the most suitable for.
  • Writing scripts should be more productive than writing JIRA SDK counterpart in Java.
  • Hyperion IDE must include all the necessary features needed for scripting, and must also include language features that professional developers are used to.
  • Integrated testing/previewing for increased productivity.
  • Framework for logging and profiling, so script writers could easily have insights into their scripts.
  • Framework for extensibility, so other people could take advantage of Hyperion platform and extend it beyond its original capabilities.

Scripting

Hyperion scripting is a mix of TypeScript/JavaScript syntax and Java and JIRA APIs. TypeScript is a superset of JavaScript that adds optional static typing that Java also uses, albeit, not so optionally. That's the reason they can play so well together. JavaScript is currently the most popular programming language (as of 2018) and Java has always been one of the most popular enterprise languages. Combining TypeScript/JavaScript with Java ensures that a lot of people will understand Hyperion scripting right away without needing to start learning a new language.
It is not a coincidence that Hyperion scripting looks very familiar to Java developers, especially to Java developers who have written JIRA add-ons before. By design Hyperion tries to keep the experience very similar to what JIRA developers have come to expect, so they could immediately start using Hyperion without feeling alienated by its design.
For those who have not done any JIRA development before, the design reason to keep it as close as possible to Java ensures you can easily learn from Java examples that Atlassian provides, or get help from the community as they know how to get things done in JIRA using Java, which is the native language of the platform.

Productivity

Hyperion provides extension points in JIRA where Hyperion scripts can be used, so you can jump right into writing the business logic you need, without wasting time on other aspects, that add no value, which often times are needed when writing regular JIRA add-ons. In other words you just have to write with the business logic you need and leave the rest of the work for Hyperion to deal with. Combined with Hyperion API you can rest assured you will never feel dependent on the Hyperion vendor to provide all the necessary extension points you might need, as you can take the liberty of extending Hyperion yourself to add the missing functionality at any time.

Hyperion IDE

Hyperion comes with a purpose built IDE that is built from scratch just for writing Hyperion scripts and interacting with JIRA. Hyperion IDE has all the features you need for scripting without ever having to leave the environment. The only time you need to leave the IDE and visit JIRA is when you need to configure the extension point for the script you have finished. Beyond writing scripts, Hyperion IDE also provides features for publishing scripts, testing/previewing scripts without needing to test them manually in JIRA, and recording and browsing script in production for logging and profiling. You can also attach any source control system you like, should you be writing scripts in team. And you can also work with multiple JIRA instances simultaneously.
Significant effort is put into matching developer experience as closely as professional developers would expect from IDEs such IntelliJ IDEA or Visual Studio (Code) by providing features related to IntelliSense. Thanks to TypeScript you have all the type information available and can continue writing Hyperion scripts the same way as you are used to write code in Java or C#, with minor changes in the syntax. By also having a compiler, you can rest assured you will never make a syntax mistake.

Testing/Previewing

Hyperion IDE comes with a feature called Live Testing. Live Testing allows to run scripts and view test results inside Hyperion IDE by transparently uploading the script to JIRA where it will be executed. This way you can write your scripts and test them as you go without having to publish them and test them manually each time you need to check how they work. You just need to run the Live Test and check the result which usually takes less than 5 seconds (mileage may vary depending on developer's machine and on logic of the script). When your script returns visual result in HTML the IDE also allows to view the content as it would appear in JIRA (which it under the hood is doing). When dealing with more complex logic where unit testing is preferred, then unit tests can also be written and validated as part of Live Testing.

Logging and Profiling

Hyperion provides an instrumentation API that allows to write more convenient logging compared to default JIRA logging. Hyperion IDE allows to selectively start recording scripts running in production, which then later can be reviewed either for troubleshooting purposes or for performance tuning purposes. The same instrumentation data is provided each time when running a Live Test. Hyperion's instrumentation API is built to be used hierarchically so you would have a better overview what's going on inside the script when reviewing instrumentation data. These hierarchical blocks are called executions and each execution block is measured for profiling purposes. Logs are attached to execution blocks, so you can easily distinguish under which execution block the log belongs to.

Extensibility

Hyperion is also a platform and a framework to be built upon. Any extension point that Hyperion provides is built using public APIs. And you can use those public APIs to write your own extension points should you not find necessary extension points provided out of the box. Not only does Hyperion allow to write your own extension points, but you can also expose your custom API to be used in scripts, or add additional functions to be used in Velocity templates, or even write bundled scripts/templates for extension points that are not your own (extension points originating elsewhere). Extending Hyperion is done exactly the same way as writing JIRA add-ons, but instead of targeting JIRA APIs you would be targeting Hyperion APIs. You could even sell your Hyperion extension add-ons in Atlassian Marketplace, given that Atlassian does not have a problem with it.

This was just a brief introduction to Hyperion scripting, there is a lot more to discover. To fully understand what Hyperion offers, simply give it a try and check out the hyperionscripting.com to learn more.

Comments