MPB

Mainframe Package Bureau

In 1975, a man named Arnold Casinghino started mailing magnetic tapes to mainframe programmers who needed software. He would collect assembler macros, ISPF dialogs, COBOL copybooks, REXX execs, and whatever else people had written that might be useful to someone else, and he would copy them onto 9-track tapes and send them through the postal service to whoever asked. This was before GitHub. Before SourceForge. Before the phrase "open source" existed. The mainframe community was distributing software communally when the rest of the industry was still figuring out whether sharing code was legal.

That collection became the CBT Tape, and it is still maintained today, nearly fifty years later. The tradition Arnold started is the tradition MPB stands on. The postage is free now and the tapes are git repositories, but the idea is the same: useful code, arriving where it is needed, shared by people who care about the craft.


What It Is

MPB is a package manager for mainframe languages. COBOL, HLASM, REXX, PL/I, JCL, Fortran, and for the Unisys crowd who thought nobody remembered them, ALGOL, NEWP, and WFL as well. You type mpb install and it fetches the code from wherever the author keeps it. That is the entire concept. No accounts, no cloud dashboards, no ceremony. The registry is an index, not a warehouse. Your code stays in your repository, under your control, with your licence. MPB just tells people where to find it.

It checks licences before installing, because introducing a GPL dependency into a proprietary COBOL codebase is the sort of thing that goes better when it involves a conversation with someone in legal rather than a surprise six months later. Permissive licences install with a note. Copyleft licences pause and ask. This is not legal advice and never will be. It is a friendly tap on the shoulder before you do something that might require a less friendly conversation afterward.


Why It Exists

Every other programming community has a package manager. JavaScript has npm. Python has pip. Rust has cargo. Ruby has gems. The mainframe has had people emailing each other zip files and pointing at FTP servers that went offline in 2003. The CBT Tape is wonderful and indispensable but it is a curated archive, not a dependency tool. If you want to use someone's COBOL date arithmetic library in your project, you should be able to type a command and have it arrive, not navigate a website from the late 1990s and manually copy files into your source tree.

The mainframe world runs a staggering amount of the global economy and it deserves the same basic developer tooling that every other ecosystem takes for granted. That is not a grand statement of principle, it is just plumbing. Good plumbing matters.


The People Behind the Packages

Lionel Dyck has spent decades writing ISPF dialogs and REXX tooling that quietly made life better for mainframe developers everywhere. His tools are in the registry: ZIGI, CBTView, RACFADM, PDSEGEN, XMITIP, and more. If you have used a z/OS system in the last twenty years, there is a reasonable chance something Lionel wrote made your day slightly less frustrating, and you never knew his name.

Don Higgins created z390 and proved that a portable mainframe assembler and emulator could exist outside of IBM hardware. Abe Kornelis has kept z390 alive and thriving as a community project with tireless dedication. Their work is what taught me how mainframe software is actually built, not from a textbook but from reading code written by people who cared enough to share it.

If you are one of the people who has been quietly maintaining REXX execs and COBOL copybooks and HLASM macros for years without much recognition, thank you. MPB exists because of the work you have already done. If you have something useful sitting on your system that other people might benefit from, we would genuinely love to hear from you.


How It Works

The registry lives in its own repository at mpb-registry on GitHub. Each package is a small JSON file that points to the author's own repository. Publishing a package means forking the registry, adding your JSON file, and submitting a pull request. Same model as Homebrew. If pull requests are not your thing, open an issue with a link to your repository and we will sort it out.

MPB itself is a single compiled binary. It needs curl and git on your system and nothing else. Download it from the releases page, put it somewhere in your PATH, and you are done. Or build it from source with make, if that is more your style.


The Registry Today

Three languages, two contributors, eleven packages, and growing. It is early days. The architecture supports adding new languages with a single line of configuration, and the contributor base is exactly as large as the number of people who have decided to share something. That number has only ever gone up.

The source is on GitHub. Apache 2.0.


Get in Touch

zanehambly@gmail.com

GitHub