The Linux Foundation Projects
Skip to main content
BlogMentorshipZoweZowe Development Updates

Summer 2024: Zowe App Store UI

By October 16, 2024October 17th, 2024No Comments

Written by Atharva Kanherka, a student at Indian Institute of Information Technology, Design and Manufacturing Jabalpur

Hello! I’m Atharva Kanherkar, a pre-final year computer science student who loves creating software that people enjoy using. There’s nothing more rewarding than hearing someone say, “What an app you made, loved it!” This passion led me to the Open Mainframe Project’s LFX Mentorship Program, where I had the incredible opportunity to contribute to real-world products that make a difference.

My journey into the world of Zowe, mainframes, and low-level programming has been incredibly enlightening. Despite facing numerous challenges, the guidance from our mentor, Leanid Astakou—a Software Engineer and Scrum Master at Rocket Software—has been instrumental in our progress.

How Did I Get Selected?

I was always busy making software products or contributing to open-source projects. Our college seniors told us about programs that teach and mentor you in open source, emphasizing how prestigious they were. Intrigued, I started researching. The LFX Mentorship Program seemed vast, with many applicants. I wondered if I could make it.

One of my friends, who also got selected for the mentorship, encouraged me to apply. So, I did! One evening, my future mentor, Lenny, messaged me to ask if I was available for an interview. I was so excited! We scheduled it for the next day, and it was an awesome experience. Even if I hadn’t been selected, I would have been happy because I learned so much about Zowe, mainframes, and how z/OS systems work during the interview. It was truly intriguing.

A few days later, he texted me that I was selected. My mom, who is always interested in tech things, was very happy when I told her. I was on cloud nine—it was one of the most beautiful days of my life.

Watch my final presentation:


What Is Zowe?

Zowe is an open-source project that makes it easier to work with mainframe systems using modern tools. It bridges the gap between new and old technology, allowing developers to use familiar tools to interact with mainframes. Zowe includes three main components:

  • Zowe Application Framework (ZLUX): A web UI that makes mainframes more user-friendly.
  • Zowe API Mediation Layer: An API gateway that allows mainframe services to be used as REST APIs.
  • Zowe CLI: A command-line interface that simplifies interacting with mainframe systems.

Wrapping Up My Zowe Journey: Simplifying and Improving the Server

As I near the end of my time working on the Zowe project, I want to share what I’ve been up to since the mid-term evaluation. It’s been a mix of learning, problem-solving, and teamwork, all of which have helped me grow as a developer.

What I’ve Been Working On

After the mid-semester check-in, our team continued focusing on making the Zowe server more stable and improving the development environment. We wanted to make it easier for other developers to contribute and use the server without running into problems.

Fixing Server Errors and Cleaning Up Code

One of the main things I did was to tidy up the code that creates directories when the server starts. Before, the code had a lot of repeated sections that did the same thing. This made the code messy and harder to maintain.

What I Changed:

  • Created a Helper Function: I wrote a new function called ensureDirSync() that handles creating directories if they don’t already exist. This way, we don’t have to write the same code over and over.
  • Removed Repeated Code: By using the new function, I was able to delete the repeated sections, making the code cleaner and easier to read.
  • Simplified Start-Up Process: I also removed some unnecessary logging messages that weren’t helpful, which makes the server start-up smoother.

Handling the SAF Keyring Error:

While working on the code, I came across an error related to the SAF keyring. This error was stopping the server from starting properly. Until we can find a proper fix, I changed the code so that it logs the error to the console instead of stopping everything. This means users can still use the server while we work on a solution.

Type of Change: This was a bug fix that doesn’t break anything else.

Pull Request Links:

  1. Refactor Directory Creation Logic in Zowe:
    • PR Link: Updating the README with Better Instructions and Swift Development
    • Description: This PR addresses the need for more detailed instructions on setting up Node.js, handling errors, and configuring the Zowe environment on Windows. It includes information on:
      • Choosing the right Node version.
      • Installing Node on Windows without nvm.
      • Common errors and their resolutions.
      • Setting environment variables.
      • Validating YAML configuration.
      • Handling unhandled rejection errors and server issues.
    • Changes Made: Updated the README to provide comprehensive support for users setting up and troubleshooting their Zowe environment on Windows.
  2. Fixing Server Errors and Other Minor Changes:
    • PR Link: Fixing Server Errors and Other Minor Changes
    • Description: This PR refactors the directory creation logic by introducing the ensureDirSync() helper function. It also removes redundant debug logging and makes minor improvements for better readability and maintainability.
    • Changes Made:
      • Replaced repetitive directory creation code with a helper function.
      • Removed redundant debug logging.
      • Simplified the overall structure.

Understanding the Changes

In the initInstance.js file, which helps start the server, I made the following changes:

Removed Repeated Code:

// Old way with repeated code

initUtils.mkdirp(destination, initUtils.FOLDER_MODE);

initUtils.mkdirp(config.groupsDir, initUtils.FOLDER_MODE);

initUtils.mkdirp(config.usersDir, initUtils.FOLDER_MODE);

New Helper Function:

// New function to handle directory creation

function ensureDirSync(dirPath, mode = initUtils.FOLDER_MODE) {

  if (!fs.existsSync(dirPath)) {

    fs.mkdirSync(dirPath, { mode, recursive: true });

  }

}

// Using the new function

ensureDirSync(destination);

ensureDirSync(config.groupsDir);

ensureDirSync(config.usersDir);

Cleaned Up Messages:

I removed some extra console logs and made warning messages clearer.

Making It Easier for Developers

By cleaning up the code and making it simpler, we hope that new developers will find it easier to set up and work with the server. This should help more people get involved with the Zowe project without running into setup problems.

Challenges and What I Learned

Working on such an important part of Zowe wasn’t easy. I had to understand a lot of complex code, and sometimes things didn’t work as expected. But with the help of my mentor, Leanid Astakou (Lenny), I was able to figure things out.

Dealing with the SAF Keyring Error

The SAF keyring error was tricky because it deals with security settings on the mainframe. While we haven’t fully fixed it yet, logging the error allows the server to keep running, and we can collect more information to solve it later.

Teamwork and Mentorship

Lenny has been a huge help throughout this project. He guided me through difficult problems and taught me best practices for working with mainframe systems. Working with the team has shown me how important communication and collaboration are in software development.

Looking Forward

As we wrap up the project, there are still a few things we’d like to do:

  • Fix the SAF Keyring Error Completely: We want to find the root cause and fix it properly.
  • Keep Improving: We’ll look for more ways to make the server better and easier to use.
  • Update Documentation: We’ll make sure all the instructions and help files are up to date so others can follow along easily.

Final Thoughts

Working on Zowe has been a fantastic experience. I’ve learned so much about mainframe systems and open-source projects. The challenges I faced helped me grow, and I’m grateful for the support I received.

A big thank you to Lenny for his mentorship and to the team for their collaboration. I’m excited to keep contributing to projects like this in the future.

Thank you for reading about my journey. I’m looking forward to what’s next in the world of mainframe development!

Stay tuned here and the Open Mainframe Project social channels for more mentee blogs and videos.