THE LINUX FOUNDATION PROJECTS
Blog | Mentorship | Zowe

Summer Mentorships 2026: Building Workflow and System Variable APIs for the Zowe Client Java SDK

By | August 18, 2026

Muhammad Imran

Written by Muhammad Imran, Open Mainframe Project Summer Mentorship 2026, mentee researcher, guided by mentor Francesco Giordano

Introduction

I’m a recent Computer Science graduate from Farmingdale State College on Long Island, New York, with a minor in Applied Math. This summer I’m part of the LFX Mentorship Program, run by the Linux Foundation and the Open Mainframe Project. I’m working on the Zowe Client Java SDK, an open source project that lets Java programs talk to IBM mainframes. My mentor is Frank Giordano, a Broadcom engineer who maintains the SDK. My job has been adding new APIs for workflows and system variables, alongside four other mentees working on similar parts of the project.

Before this, I didn’t know anything about mainframes. Things like z/OS, JCL (the mainframe’s job scripting language), USS (its Unix-like file system), and z/OSMF were all brand new to me. Here’s what I’ve done and learned so far, at the halfway point.

What I’ve built so far

My first two issues, #476 and #478, let the SDK list a system’s archived workflows and delete one by its key. Frank reviewed this several times and had me redo different parts more than once until it matched the way the rest of the codebase is written. It got merged as PR #514.

My second issue, #504, added a way to create or update z/OS system variables. This became PR #531. This one also went through more than one round of fixes and redos before it was ready, including a mistake on my part that broke the build, which I talk about below.

I also helped test the workflow package more. A teammate, Ash, added a new way to create workflows from a local file, and I was the first to test it live. While testing it, I found a real bug in someone else’s code, a method that crashed every time because it never sent something the server needed. I fixed it, tested it for real, and opened PR #560 for it.

Testing against a real mainframe

One of the best parts of this mentorship has been testing everything on a real, live IBM mainframe using the IBM Z Xplore learning platform through VS Code, instead of just fake test data. I did several of Z Xplore’s exercises along the way, covering VS Code setup, working with datasets, running JCL jobs, and using USS. Each one unlocked more access I needed to actually test things.

Testing this way took a lot of trial and error. Some things worked the first time, and some didn’t, and I had to repeat the same steps again and again until they finally did. One time, a workflow file I made on the mainframe kept failing with a strange XML error, and it turned out a hidden invisible character got added when I created the file through the terminal. Another time, a permission setting on my own folder was quietly blocking the server from reading a file I’d just made. Figuring these out, through a lot of repeated attempts, taught me a lot about how these systems really work.

Challenges and lessons learned

The biggest lesson this summer came from that build break. I changed how a shared class handled an empty value. It looked totally safe based on everything I checked, but it broke a different test somewhere else that depended on the old behavior. Now I always search the whole codebase for anything that depends on a class before I change it, not just that class’s own tests.

I used Claude in a few specific situations during this project:

  • Some of the code didn’t make sense to me, so I used it to understand what was going on.
  • Frank gave me specific code sometimes, but I wasn’t sure how to actually use it, so I used it there too.
  • Other times, to help me understand the project itself, mostly for documentation.

What’s next

Both of my issues are merged and tested. Now I’m focused on helping test the rest of the workflow package, like the properties and start methods, on the live mainframe with the team, since the project is entering its testing phase before the next release. I also want to help write documentation for the new packages we built this summer.

Thanks to my mentor, Frank Giordano, for his patience and detailed reviews, and to my teammates, Jorge, Adithe, Eshaan, and Ash, for being great people to learn alongside.

 

Stay tuned for more mentee blogs as our Summer Mentorship Program continues!

Share