Hello, I am Priyansh Mehta, a pre-final year student and an Open Source Enthusiast. I have a tendency to get easily bored, which is precisely why this journey of LFX’23 has been nothing short of an incredible adventure for me as a mentee in the Open Mainframe Project.
While I started as a newcomer, I’ve learned so much about Zowe, mainframes, and working with low level languages. The journey was not without its challenges, but with the guidance of our mentor Leanid Astakou and the support of my colleague Sidharth, we’ve made significant progress.
How did all of this start?
LFX has always been like one of the dream Open Source Programs for me. I used to think that the tech stacks generally included here are not something which are a cup of tea. And this thought is what always kept me away from applying to LFX.
But during this summer at home, when I saw the project listed on the site having some of the things in the tech stack which I was aware of, I thought, “Why not let’s give it a try?” And the first thing I did, spending some sleepless nights searching about what the project is? What’s the objective behind it? Trust me, it was a lot overwhelming in the beginning, but with whatever little knowledge I got, I started to prepare some questions and a sort of proposal.
Next thing, I shared my findings with the mentor (Leanid), and I was surprised to see that I got a reply from him at 3 A.M. in the night, asking me to further discuss my perspective on the project. At that moment, I was shocked! I decided to schedule the interview for the morning.
Even though he had taken so many interviews the whole night, he didn’t let me feel anything different, introduced himself, and very gently created such a welcoming environment. From just a 30- minute call, it lasted for 1 hr 30 min, and both of us didn’t even realize how the time just vanished in the air. The last line he mentioned was, “You are just an amazing candidate, but from the 100+ interviews I have taken, there are at least 10+ candidates who are very talented! So, I will use a random selector to shortlist one among the 10+ candidates.”I was a bit afraid but I really enjoyed his company for the whole interview.
June 1, 2023, around 8 P.M., Lenny’s message dropped in: “Would you like to join me as an App Store mentee for the Zowe project?” And tears just dropped from my eyes, and I was ready to embark on this wonderful journey.
Understanding Zowe and My Role
My journey began with a simple question: What is Zowe, and why does it matter? What piqued my curiosity was how Zowe leveraged web technologies to create a Desktop-like environment that seamlessly connects you to a remote Mainframe System. Isn’t that fascinating?
When I first embarked on this journey, just like any newcomer, I too was unfamiliar with the concept of Zowe. To put it simply, Zowe is an Open Source Software that simplifies interactions with conventional mainframe systems, making them more accessible for development and operations.
Now, you might be wondering, what exactly is a mainframe? Well, it’s a robust, large-scale computer used primarily by large organizations for processing vast amounts of data. To make working with mainframes more efficient, numerous plugins and applications have been developed by Zowe and other providers. However, there has been one missing piece to this puzzle—there’s no centralized hub to install and manage these plugins.
This is where our project comes in… The objective of our project is to create an App Store that simplifies the installation of these diverse plugins through a single application. Without this, developers would need to search for each application individually, a process that’s both time-consuming and cumbersome.
The RollerCoaster Ride
From the moment the mentorship started till the end, the journey has never been less than a rollercoaster ride.
On June 2, 2023 the complete z/OS was a little unfamiliar to me, I was a C and Angular guy with experience in writing servers and all. The intial first week was just for understanding all about the project, Z/OS, Zowe, different plugins, Dataservices, Iframe, ZSS, ZLUX, AppServers, NodeServer, ZSS Servers and many more.
It might sound like a daunting list, and trust me, it was. I’m no wizard; I faced my fair share of struggles to grasp these new concepts. But I was fortunate to be surrounded by an incredible group who made the learning journey much smoother. Our mentor, Leanid, and my fellow mentee, Sidharth, were invaluable. Leanid provided us with unwavering motivation, and Sidharth was a crucial collaborator.
With a bit more clarity in our minds, we began designing the High Level Design of our project, carefully considering functional requirements. Armed with this high-level design, we were ready to work on the mainframe system.
The Missing Piece of the Puzzle
Initially, we tried testing with the trial version provided by IBM. However, renewing the trial every three days became quite cumbersome. Thanks to Leanid’s relentless efforts, we eventually secured access to a Mainframe System. A huge shoutout to Randal for making that possible, giving us the platform we needed to test and refine our project.
While Sidharth being a React wizard, played a major role in the frontend development, it was my turn to dive into the backend to figure out how to install these apps on the mainframe.
A Surprise Discovery: Server In C
As someone who leans more towards backend development, I was intrigued. What astonished me was discovering that the entire Zowe System Services (ZSS) Server was written in Metal C. In a world filled with frameworks that simplify server-side development, the ZSS server exposed me to the intricacies that happen behind the scenes.
Tasks that I used to accomplish in a single line of code now revealed the complexity hidden in the backend. Even sending a simple response required creating a JSON struct and writing functions to define how the operation would be performed.
While it was a challenging start, with some references and a week of dedicated learning, I managed to write the complete Dataservice in C using the Zowe-Common-C libraries. These libraries were invaluable and made the task manageable.
The Testing Phase
With the coding part completed, it was time for testing. However, there was a unique challenge. Since the code was written in Metal C and relied on Zowe-Common-C libraries, it couldn’t be compiled on our local systems.
We thought, no problem, we can compile it on Randal’s mainframe and check the output. But there was a hurdle—we needed XLClang libraries for compilation, and the system only had XLC. These are just compilers, but they mattered.
Unable to compile the code on our own, we reached out to the mainframe community for support. Big thanks to Randal, Frans, Ross and the community who helped us debug the issue. Finally, I drafted a PR for the dataservice, and they conducted thorough testing, providing feedback to help refine the code. It turned out to be a great learning experience while blind coding and manual testing.
Some Final Words 🙂
Looking back, I can’t help but feel grateful for the opportunity to work on such a complex project with amazing people in the Open Mainframe community. We started with uncertainty, but now we’re thinking about how to further improve our project and take it to new heights.
As I conclude this chapter of my journey, I want to thank Leanid and Sidharth for making it so much fun and rewarding. The best things in life often happen unexpectedly, and this mentorship experience has been one of the best things that happened to me. I look forward to continuing my open-source journey and exploring new opportunities that come my way.
Remember, sometimes “The Best Things happens Unexpectedly…”