Run Git on a mainframe

The zigi application helps translate files to datasets and a command-line interface to ISPF.
1 reader likes this.
Puzzle pieces coming together to form a computer screen

Opensource.com

One of the fascinating things I keep encountering in my journey to learn everything I can about the mainframe world is how my expertise in Linux distributed systems and open source tooling carries over into this realm. I recently discovered zigi, an independently developed open source (GPLv3+) Git interface for IBM z/OS ISPF (Interactive System Productivity Facility).

I had been aware of zigi for some time, but it wasn't until I joined a recent z/OS Open Tools guild call that I could soak in the demo that zigi contributor Lionel B. Dyck gave. That led me to a call with zigi founder Henri Kuiper, who explained that zigi was an answer to a specific pain point of his. That sounds familiar! I could definitely appreciate the story of an open source project born from frustration.

I need to explain ISPF for you to have a good understanding of what zigi provides.

ISPF

Since the 1980s, ISPF has been a common interface for interacting with IBM mainframes. Mainframe professionals still use it today with the modern versions of IBM z/OS and z/VM. The text-based interface, accessed with a 3270 terminal, features a series of menus, panels, and even an editor, that those proficient in the interface are incredibly fast with.

The ISPF interface.

(Elizabeth K. Joseph, CC BY-SA 4.0)

Users like Henri discovered while using ISPF that their organizations were rapidly adopting technologies familiar to the new generation of technologists. These tools, like Git, were sometimes difficult to integrate into the ISPF interface.

Enter zigi.

How zigi helps

The integration of zigi allows for Git commands to be built into the ISPF interface. That means Git command navigation is natural for ISPF users, who can simplify their working tech stack without adding on yet another tool with yet another interface to learn.

Also, note that z/OS works a bit differently than Linux or Windows-focused administrators and developers are used to. Instead of having a filesystem (such as EXT4, XFS, FAT, and so on) with a file and directory hierarchy, z/OS uses the concept of datasets. Git only understands files, so zigi must do some work here. It creates a sort of translation so that the remote Git repositories you may ultimately write to are still files, but they're a series of datasets when used inside the z/OS environment. Zigi handles this seamlessly for the user—an important distinction and a key part of what zigi does.

I'm excited about what this means for developers working with ISPF, but it's also great for systems folks in the organization looking to integrate with their mainframe counterparts. With today's tooling, you can bring mainframe development into your CI system. That all starts with making sure you have access to the revision control system your mainframe developers work with. So hold on tight, and get ready for some green screens.

(I'm joking, it's not all green, and the zigi home screen is quite delightful!)

The zigi screen running on a mainframe.

(Elizabeth K. Joseph, CC BY-SA 4.0)

Use zigi

Software or the z/OS Open Tools team. Then pull in the zginstall.rex installation file from the zigi Git repository. That's it!

For more detail, visit the official zigi documentation.

Next, create a repository or add a remote repository that's already managed by zigi from somewhere like GitLab or GitHub. These actions begin with the create and remote commands, respectively. The linked zigi documentation walks you through the rest.

If you're not sure whether a repository is zigi-managed, look for a populated .zigi folder at the top level. Being a zigi-managed repository is important because of how zigi works internally to manage the translation between the files, folders, and datasets.

A loaded repository looks similar to this screenshot of zigi's own repository loaded up in zigi (how's that for inception?):

Viewing a Git repository in zigi.

(Elizabeth K. Joseph, CC BY-SA 4.0)

Want to start exploring the repository? No problem. Say you want to see what's under ZIGI.EXEC in this repository. Use the interface to navigate to and select the desired partitioned dataset. In the screenshot above, that is IBMUSER.ZIGI317.ZIGI.EXEC. You're taken to a screen that looks similar to this:

A file listing in zigi.

(Elizabeth K. Joseph, CC BY-SA 4.0)

Now you can get to work. It's valuable to look at what actions zigi supports on your repository from within the interface. Here is a command list:

Git commands in zigi.

(Elizabeth K. Joseph, CC BY-SA 4.0)

For anyone who has used Git before, a lot of this should look very familiar, even if the UI differs from what you expect.

To seasoned ISPF users, this screen is familiar from the other direction. You may be learning Git, but at least you're used to the options are presented in the UI.

Wrap up

As you can see, zigi already implements many of the basic, and not so basic, commands you need to work on your repository. And with zigi being an actively maintained project with several contributors, that support is growing.

What I ultimately love most about zigi is how it shows the ubiquity of Git these days. In the realm of mainframes, I still encounter many proprietary revision control systems, but that pool is shrinking. As organizations move to consolidate their codebases and even bring different operating systems into their CI pool, tools like zigi help teams make that transition and support a streamlined development process for everyone.

The zigi project is always looking for new contributors, including those who can bring unique insight and talent to the effort, so be sure to check out zigi.rocks to learn more.

Tags
User profile image.
After spending a decade doing Linux systems administration, today Elizabeth K. Joseph works as a developer advocate at IBM focused on IBM Z.

Comments are closed.

Creative Commons LicenseThis work is licensed under a Creative Commons Attribution-Share Alike 4.0 International License.