The other week I was discussing some Internet of Things (IoT) related topics with my colleagues. Part of the discussion was on how to name the elements that make up an IoT solution. Not the specifics on functionality of the elements but how to name the set. Platform is something that comes by a lot, but mainly as one of the elements (for example a data storage platform). Stack is the other word we used to describe the set of elements: the IoT stack.
A lot of people in the discussion including me were in favour of the word “stack”. Reading articles here and there we find “stack” and “platform” being used in all kinds of contexts. Sometimes even in the same sentence: “Microsoft Azure Stack is a new hybrid cloud platform product” or we find questions as “What is a good/scalable tech stack to use for cross platform messaging service?”. In the Business Intelligence world we see the Hadoop stack from Sprak on a IBM Big Data and Analytics platform. So we see stacks running on platforms but also the term “cross-platform” makes an appearance. Apparently we can use a stack on different platforms. This brief research gives the impression that a stack is not a platform.
Let’s take a look at definitions before we proceed:
Originates from the data stack this term is used to describe a Last In First Out (LIFO) data storage principle. In this context we must actually refer to “solution stack” or “software stack”. According to the wikipedia definition the stack is a set of software subsystems or components needed to create a complete platform such that no additional software is needed to support applications. Applications are said to “run on” or “run on top of” the resulting platform. Some definitions of a platform overlap with what is known as system software.
A computing platform is, in the most general sense, whatever a pre-existing piece of computer software or code object is designed to run within, obeying its constraints, and making use of its facilities.
The term computing platform can refer to different abstraction levels, including a certain hardware architecture, an operating system (OS), and runtime libraries. In total it can be said to be the stage on which computer programs can run.
Since an application should be able to run on a software stack and the platform being the stage this application can run on, the terms “stack” and “platform” seem interchangeable. After looking at the definitions it is safe to say that stacks are needed to build your platform. Maybe we can restate the definition to a stack being the term for a platform under development (if there is such a thing as finished platform?!).
Coming back to the initial discussion on IoT stack or IoT platform I think we now must go with IoT stack, it being a nice generic term and only when choosing a specific implementation (i.e. Microsoft IoT, Oracle IoT, IBM Bluemix) we refer to it as the IoT platform we work with.
For now “Stack” is not the new “Platform” but it is preceding platform until it becomes one.