A couple of weeks ago, a discussion started on a LinkedIn group: Is IBM i an “operating system” or an “operating environment?” In the course of that discussion, people pointed to IBM sites which use both terms when describing IBM i. I posted a lengthy reply, but since LinkedIn is not followed by everyone who reads this blog, I thought I would get some reuse out of the opinion I posted there. So, in slightly edited form, here is “Steve’s Reply” to the question:
Q: “Is IBM i an ‘Operating System’ or an ‘Operating Environment?’”
A: IBM i is both.
The name of the thing we’re talking about is “IBM i Operating System” and it is called “IBM i” for short. So, if we’re going to talk about what something “is” then we certainly have to admit that it’s an “operating system” because that’s what its name is. (By the way, the “OS” in OS/400 and i5/OS both stood for “operating system.”)
Now, let’s get to the meat of the issue. Is there a difference? What’s the difference? And what is IBM i? (Please realize that there are seldom firm definitions when it comes to technical “jargon,” so I am stating my own versions of definitions, based on years of experience and a certain level of expertise in the field. Take it for what it is.)
Operating System: This term is generally intended to mean a piece of “software + firmware” which has intimate knowledge of, and control over, the hardware beneath it. The “operating system” implements certain primitives, which it exposes to software above it (typically called middleware and applications.) In my experience, as operating systems grew up, they all tended toward a similar minimal set of functions, which they would provide over the top of the hardware. The function might merely be a layer between the “application” and the hardware, or it may virtualize that hardware, or both.
That common set includes things like:
- managing output
- inter-process messaging
- a runtime environment to provide primitives to other software, and into which a compiler could place software
- a file system
- and so on
An operating system has more attributes than this (an architecture, an inherent security model, etc.) but for this discussion, I think we have what we need.
By this definition, IBM i is clearly an operating system. So is Windows. So is any UNIX. But WebSphere Application Server is not.
Operating Environment: This term typically describes the combination of an architectural framework for running applications with a set of “middleware” functions, which are a step or two more generalized than “mere” hardware implementation and/or virtualization. An operating environment provides – for example – a specific set of interfaces into a database, a Web environment, etc. – which are clearly not merely abstractions of hardware, but are software constructs that require a system beneath them, but don’t have direct hardware implementations.
WebSphere Application Server and the associated Java Virtual Machine, then, can be considered an Operating Environment.
But so can IBM i. Since IBM i provides so much “middleware” as part of itself, and since the existence of that middleware often affects the way in which software in the environment is written – or at the very least how it behaves – it is more than merely an operating system. It is also an operating environment.
A typical pure UNIX is not. This is not a criticism. UNIX was not meant to be this. UNIX even allows users to get closer to the hardware than IBM i does, so in some sense it is a “thinner” operating system. You can even replace pieces of UNIX with software written outside the operating system (device drivers, for example), which IBM i does not allow you to do. But UNIX does not provide a standard environment such as the DB2 and Web server and certificate management and directory server and so on, which are in IBM i.
One conclusion here is this: XXX can be an operating system without being an operating environment (as I define it) and YYY can be an operating environment without being an operating system. I claim IBM i is both.
Personally, when I write about IBM i, I tend to use the phrase that best suits the point I am trying to make. In fact, I have heard Ian Jarman say that, “IBM i is not an operating system. It’s a database.” Now, that is not how I would always characterize IBM i, but sometimes you need to make a point to people who are comparing it to something that is “just” an operating system. And the architecturally integrated database is certainly a differentiator.
So feel free to use both terms when you describe IBM i. When IBMers write about IBM i, they might be using the phrase that best suits the point they want to make, or they might just be trying to keep things interesting. As long as you know what gives your IBM i operating system much more value than others, you know what you need to know.
Twitter: #ibmi, @Steve_Will_IBMi