Developer resources for building your open source app for Linux on IBM Z and LinuxONE
Get an in-depth overview of the technical resources available for developers
The availability of source code and collaborative development runs deep in the IBM Z community and is woven throughout its history. Twenty years ago, the release of Linux on IBM Z was another step along the way to truly bringing open source software to the enterprise.
As a developer of an open source software project, what does that mean for you? This post provides an in-depth overview of the technical resources available for developers on IBM Z and LinuxONE.
The processor in an IBM Z or LinuxONE is a big-endian computer architecture, and at the hardware level is not compatible with what you may be familiar with if you’ve only developed for x86. Also known as s390x or z/Architecture, the code needs to be specifically compiled for it. Fortunately, you’re in luck! Since support for Linux on Z arrived 20 years ago, dozens of languages and frameworks, and hundreds of major open source applications have been ported. A small sampling of them can be found in IBM’s validated open source software list, with dozens of updates being made each month — and the sea of applications continues to grow. With collaboration in place with SUSE, Red Hat, and Canonical, their respective Linux distributions also release with IBM Z support. Today you can run everything from a simple web server to your latest Go or Node.js application to Kubernetes on IBM Z by simply running the build commands you’re already familiar with.
Now you may pause to ask Why? Do people really want to run my software on IBM Z? They do! Adoption of Linux on IBM Z is rapidly growing, with major open source projects and products now building support for it, this growth will continue.
So Linux on IBM Z is here to stay, but by supporting it you also bring technical advantages to your project. Depending on the language your project is written in, you may find that your application builds flawlessly on your first attempt! Even when it doesn’t, diversifying the architectures you provide support for can also allow you to become more familiar with your codebase, and help you understand how much you’re relying upon architecture-specific features. You can then make informed decisions about how important these are to your project and become a better developer as a result. Even beyond IBM Z, as non-x86 hardware architectures like ARM and POWER become more popular, you will ultimately find considerable value in making your project easy to build everywhere.
You may also want to know about availability of infrastructure. After all, IBM Z machines are pretty big! We have good news for you there, too. A number of resources have been made available so that developers have native access to running Linux on Z specifically for development.
LinuxONE Community Cloud
The most flexible option available for open source developers looking to get started with porting their applications is a full virtual machine on the LinuxONE Community Cloud. The account gives you root access to a VM, and you have the option of using SUSE Enterprise Linux or Red Hat Enterprise Linux. The initial trial lasts 120 days, but if you reach out to the team (starting with Elizabeth K. Joseph) you can submit a request to get a longer-lived VM for continued development, use in your CI system, or whatever else you need. Additionally, you can join the new IBM LinuxONE Community Cloud topic group to post to the forums, get the latest news and tutorials, and more.
Learn more and sign up at https://developer.ibm.com/components/ibm-linuxone/gettingstarted/.
Oregon State University Open Source Lab IBM Z Continuous Integration
Are you using Jenkins for your project CI? The Oregon State University Open Source Lab (OSU OSL) manages a Jenkins service. Projects may apply for access and then configure their tests, all of which are run on an IBM Z back end.
Learn more and sign up at https://osuosl.org/services/ibm-z/.
openSUSE Build Service
Getting into software packaging and release, the openSUSE team has built multi-architecture support into their openSUSE Build Service (OBS).
This service requires familiarity with building packages, like RPMs or DEBs, but it handles the actual building of the packages across multiple hardware architectures, including IBM Z and Linux distributions. OBS can be your one-stop shop for building and distributing packages.
Learn more, including how to sign up, at https://en.opensuse.org/Portal:Build_Service.
Launchpad Personal Package Archives
Launchpad is a service that’s used for a variety of things, but it includes a Personal Package Archives component for packaging and releasing software. It is managed by Canonical and supports Ubuntu and DEB packages. You need to understand how to build DEB packages, but once you have your package source files ready, you can then upload them, specify that you want to build for IBM Z, and watch Launchpad do the rest — including providing the address for an apt repository for your users.
Learn more at https://help.launchpad.net/Packaging/PPA.
Travis CI build service for IBM Z
Travis CI started alpha support for IBM Z builds specifically for open source projects in November 2019. For projects that already use Travis CI, they have made adding additional architectures to your CI builds quite simple. They also created a support forum so users can give feedback on the environment, collaborate with other users, and express interest in the future of this service beyond the alpha offering.
Learn more about how to configure your project to take advantage of this feature at https://docs.travis-ci.com/user/multi-cpu-architectures/.
Open Mainframe Project
Last, but certainly not least, the Open Mainframe Project is a Linux Foundation project that offers support and hosting space for open source projects related to the mainframe. If your project is already mainframe focused, but you’re looking for a community-driven place to collaborate, they offer infrastructure support (such as GitHub and CI/CD) as well as project collaboration tools like mailing lists and Slack. Projects there support all mainframe operating systems, and the Technical Advisory Council (TAC) meets monthly to review and approve new projects for incubation. Additionally, some resources are made available for existing open source projects through their Supported Projects program.
To learn more about hosting your project visit https://www.openmainframeproject.org/projects/host, and to learn more about supported projects check out https://www.openmainframeproject.org/projects/supported-projects.
Finally, a word about programming languages themselves. As I mentioned in the beginning, various language compilers and interpreters have now been ported to IBM Z, so generally the choice of language for your application will not be a problem. I’ve compiled plenty of applications written in C for IBM Z! However, you may find that “high-level” interpreted languages like Python are more likely to run flawlessly without modification. That’s because the higher you go, the more abstraction there is between you and the hardware. When it comes to architectures, this matters.
My suggestion to you is, regardless of what language your application is written in, give it a go!
If you’re looking to collaborate or have more questions about open source software on IBM Z, join the Open Source Software Development user group in the IBM Z and LinuxONE section of the IBM Community.
You can also join me at IBM Z Day coming up on September 15. I’ll be giving a presentation on “Tips and tools for porting your open source application to IBM LinuxONE” in the Open Z track, and answering questions live. Register here to attend the live event, or watch session playbacks at your convenience.