Hi, this is my first post here. I am more interested in “macro” UX (about operating systems rather than other things), and the concept of app has been tricky to me. Our current perception of it is deviated from its intended meaning. Let’s imagine Android or iOS, rather than the so-called apps on Microsoft Store or web apps.
For an app on Android or iOS, it was “a self-contained and isolated program that may interact outside with specialized APIs,” and in most cases, an app is intended for a specific task, hence the name. In the past decade, the alternative meaning of “a service client” was too successful — so successful that “web app” mostly means this way.
Before me, many other people have discussed this topic, and tried to find what exactly an app is. And now I invite you guys to discuss this heap of complex things, possibly sorting out several concepts that are actually separate.
This is a fun question. I’m not sure there is a concept of an app in my usage of the term “concept”. But you could define a concept that captures the essential behavior of every app. Its actions might be installing, updating, uninstalling, assigning permissions, and perhaps some generic actions for updating client and cloud states.
This may not be rich enough for what you have in mind, but it may be enough to capture one very serious security problem with apps. Suppose you install an app, and assign it some permissions on your phone. Now you update it, but the license to distribute the app has been sold to another company, and now your update contains malware. There was a notable attack a few years ago of exactly this form.
Yes, I did realize from the very beginning that your usage of “concept” does not apply well to my problem. It was an attempt to think about this system in your way. However, I can’t say it won’t help at all in the future.
I was actually suggesting that it might apply – at least by highlighting some of the ways in which answering this question would have some very concrete impacts!
I agree with @dnj - I think that an “application” concept is quite important.
Especially in web / mobile development, a lot of confusion has been introduced by the failure to distinguish between resources and applications. Many web applications conflate these concepts which often leads to a complex overloading such that the logic for rendering data is coupled (in the user’s mind) with the data itself, creating challenges for developers who may want to build competitive applications that render the same underling data.