Open source tools and frameworks are gaining ground, and while many view the mainframe as a legacy platform, there are tools to make it more accessible. Dan Kelosky, principal software engineer at Broadcom, explored one such open source framework – Zowe – from an assembler point of view at SHARE Fort Worth in his session “Understanding Zowe from a z/OS Assembler Perspective.” He says that Zowe appeals, in particular, to recently graduated students who enter the mainframe field with a background in distributed development. “Zowe helps make mainframe development familiar and allows for working with the mainframe using familiar, open tools,” adds Kelosky.
Key Tools of Zowe
Slide capture from “Understanding Zowe from a z/OS Assembler Perspective”, SHARE Fort Worth (2020)
The key tools in the chain that make up Zowe are REST APIs (Representational State Transfer Application Programming Interfaces) that run on z/OS, Zowe API Mediation Layer (ML), Zowe Desktop, Zowe CLI, and Zowe Explorer. REST APIs on z/OS make mainframe services and products available for off-platform use and let you integrate mainframe services with any other service.
Kelosky explains that the Zowe API ML is a single point through which you can control access to these REST APIs services on z/OS. It can load balance API requests among multiple instances of services and can allow for a single sign-on (SSO) experience for mainframe services routed through it. Zowe Desktop, Zowe CLI, and Zowe Explorer are all capable of accessing REST APIs through the Zowe API ML.
Zowe Desktop, meanwhile, is a workstation-like user interface accessed through a web browser. It has applications within it (like 3270 emulators, z/OS job viewer, and z/OS files/data sets explorer) that don’t need to be installed on individual workstations. Users can access these applications through their web browser alone.
Zowe CLI and Zowe Explorer allow access to z/OS resources through integrated development environments (IDE) and for automating certain z/OS developer workflows. Zowe CLI and Zowe Explorer are both installed on individual developers’ workstations; the latter is an extension to the Visual Studio (VS) Code editor.
Skills, Skills, Skills
“High Level Assembler (HLASM) programmers might want to understand Zowe because they can continue to work with HLASM, while also benefiting from many modern development practices,” says Kelosky. “HLASM is a great language and fun to work with. However, it can often require a lot of manual processes related to building and testing some piece of changed or newly developed HLASM code,” he explains. “But with Zowe tooling, you can automate previously manual processes and give more attention to coding.”
Programmers with knowledge of Java, TypeScript, JavaScript, C / C++, Metal C, and assembler (HLASM) can contribute easily to Zowe. Kelosky says that it’s also good to know a little about the Java Virtual Machine (JVM). For TypeScript and JavaScript, it's helpful to know a little web development or Node.js (the former for Zowe Desktop development and the latter for Zowe CLI and Zowe Explorer development).
In Zowe, programmers use HLASM when they want to surface some low-level z/OS service or interface in a higher level Java- or Node.js-based REST API. Kelosky shared that with minimal Java skills and some HLASM experience, programmers can follow this blog to create a REST API that calls HLASM.
The advantage to providing a low-level z/OS service as a REST API is that the services can be consumed and reused by off-platform users and services, says Kelosky. The services are more accessible and available for integration, which wasn’t possible before. “For example, within Broadcom, we developed a Zowe conformant REST API to our CA JCLCheck Workload Automation product. Prior to this, you could only use CA JCLCheck through the 3270 interface, and now it is integrated with VS Code because of the Zowe-based REST API.”
Beyond the languages themselves, REST APIs are often built using "frameworks" like Spring Boot for JVM and Express. Kelosky adds that to contribute, programmers will need a GitHub account and to understand the basics of git. Tools like VS Code will help with editing any of the languages mentioned above and make working with git simple. “These are things you can generally pick up along the way,” he says.
Developing for Zowe Stack
According to Kelosky, developing for the Zowe stack is likely very new and unfamiliar for mainframe HLASM developers. The tooling is very different and the development environment is different as well.
At a glance, when you're writing a piece of assembler code, it might look like this:
Slide capture from “Understanding Zowe from a z/OS Assembler Perspective”, SHARE Fort Worth (2020)
Kelosky observes, “You get basic highlighting, but most often you don't find compiler or runtime errors in your code until later on.”
When writing for the Zowe stack, the editing experience is very different:
Slide capture from “Understanding Zowe from a z/OS Assembler Perspective”, SHARE Fort Worth (2020)
He explains, “More than being visually different from ISPF editing, this experience is very different in that you can see certain runtime errors in real time (like ‘Unreachable code detected’ above) while editing your source code.”
In terms of similarities, Kelosky notes, the programming and debugging techniques developers use are the same overall, and these skills apply to other languages. “The advantage to learning the Zowe stack is that you can bring back new skills to your HLASM development process, especially skills around testing and deployment automation,” he says.
Kelosky shared that he loves working with Zowe because he can straddle mainframe and distributed technologies. “I have a ton of fun writing code for both sides independently, but the best days are when I get to work on HLASM, C, Java, and TypeScript all in the same day,” he says. “The variety keeps work interesting for myself and seems to appeal to the new mainframe hires we've been attracting to the mainframe platform.” As its founding companies continue to invest in Zowe, and other companies and individuals contribute to the framework, it is likely to continue to be popular and flourish in the mainframe environment.