Defining an app
Everybody has heard, and likely uses, the term "app". In case you are not aware, app is short for application. A decade ago, prior to the release of the iOS App Store, an app was something that ran on a Mac or PC. With the ability for third-parties to create applications, the term "app" became part of the lexicon.
With everyone using the term "app", the question becomes, how do you define an application? Having used technology for the last 25+ years, the term "app", and all it encompasses and represents, has become instinctive and intuitive. Additionally, it is not often something I think about.
However, after listening to episode 259 of the Accidental Tech Podcast, I began contemplating the term. What prompted this is something discussed in the episode. Casey Liss said that he created a Mac app. John Siracusa argued that it was not a Mac app, because it was a command-line based.
This got me to thinking, "How do you define what is an application?". I generally agree with John, on many things, but in this case I must disagree.
After some thinking, I think I have a way to define an "app. My definition is: "Any set of compiled, or interpreted, code, along with its supporting assets, that is run on a specific platform." I think this succinctly sums up what an application is.
Some people would likely define an app as something that you interact with and has a graphical interface. Yes, a vast majority of today's operating systems are graphical in nature, and it was a natural progression to make. However, anyone who requires an app to have a graphical user interface is doing a disservice, not only to themselves, but they are also ignoring a significant portion of today's computing resources. The disservice is not only to non-graphical applications, but also to all non-graphical operating systems. Some of these operating systems range from most Unix systems, to the more mainstream ones like MS-DOS, BeOS, OS/2, and even Apple DOS.
With this definition, the interaction method does not make a difference. For instance, if you have a Mac app that is a command-line based application, to me, it is still a Mac app, because it runs on the Mac. It may also run on a Linux box but it is still a Mac app. Similarly, if an app runs on iOS it is considered an iOS app.
It may be seem like a small thing, and the grand scheme it is, but it did get me to thinking. Even though you may initially dismiss any command-line interface, you may also fail to recognize that a significant portion of things that you use on the internet every day runs using the command-line. Just some food for thought.