A program, or application (‘app’ hereinafter) needs a computer, or more properly a platform. Historically apps needed to share a platform because computers and platforms were expensive. That is still often true.
Today apps need to share because I need 20 to 50 apps in my pocket and I don’t have room in my pocket for that many computers each with a screen. Furthermore some of these apps need to talk to each other. Even a single app may be complex enough that it benefits from decomposition into parts that are protected from each other. When I write even a modest size program I build it in parts that protect them selves from other parts. That is because I can not understand all of my code at once. People modularize complexity in order to understand it. (Does biology?)
Apps need to talk with each other but often the user must know which apps are talking to whom. Many users must modularize their life. They may consult with two companies that compete and the notion of ‘contacts list’ must be replaced with categories of contacts. It is really bad to send mail to one company using the internal SMTP server of the other. Many business plans are being invented today in which some app in the computer in my pocket supports the interests of some enterprise. That may be OK with me but there are limits I want to place on the information flow within my pocket. Some argue that this is too complex for the typical user to understand. Perhaps a reputation based system will emerge that manages these interactions in the interest of the platform owner. We are truly entering the new age of “information rules”. Today’s platforms are under no one’s permanent control and sporadically under the control of miscreants. That need not be!
There are many new institutions devoted to organizing people and their contacts. In short I want to organize my computer, instead of it organizing me.