Apps, programs, services, …

Ever wondered why apps are called “apps”? Sure, because it’s a abreviation of “application”. But why the term application? Application of what?

Ancestry research for terms can sometimes help to understand things. So many describing terms lost their meaning and transformed in labels, carrying semantics of their own, usually quite blurry. I think “application” is one of those. And the authors of the wikipedia entry for Application_software seem to agree a little:

Application software is a loosely defined subclass of computer software that employs the capabilities of a computer directly to a task that the user wishes to perform.[…]

[…]The term application refers to both the application software and its implementation.[…]

[…]The exact delineation between the operating system and application software is not precise, however, and is occasionally subject to controversy.[…]

I would like to add to this controversy. By claiming that with KDE, GNOME, Windows and all other multitasking operating systems with a GUI the desktop (environment) is the application today. All the so-called apps are “programs” of another type (of whatever definition).

Take KMail. An application? Or just a rich plugin to the Qt/KDE framework/desktop? It sets up itself in a separate process, but passes over control to the framework (eventloop) and the environment (signals from operating system and other processes). It integrates, not uses.

I see this especially with the contacts framework I am working at. As a usage example I did a contact cards server which shows cards with details of a contact as windows. What type of software is it? It is running in it’s own process. But it cannot be started from the “application menu”, only by commandline (e.g. done on demand by services for the framework). The user can interact with the cards, issue commands, but new cards can be only opened from remote (DCOP), e.g. from a contact button on Kicker. Some commands, dependant on the installed service plugins, call programs like KAddressbook, Kopete or KMail to do something, “degrading” those to simple services. So is KMail an application, some program, a service, something else, or all together?

I think this aspect should have a stronger influence on the overall design and implementation. Perhaps it might make sense to have a deep look at CORBA, Openstep and other architectures for composed systems.

All apps would accept that they are just plugins/programs. And behave that way 🙂 Like registering as a service for others with a central server which starts and ends them on demand. Like out of process KParts. With DCOP/D-Bus the infrastructure is already present.

See on Planet Gnome Steve Frécinaux asking the question
What about speeding up opening documents using D-Bus?“. I very much welcome something along this idea, not only because I proposed something
similiar* some years ago. 🙂
* BeOS appserver is rather something like X, isn’t it?

I have not seen a lot of DCOP calls, but they usually first check for their target running, then calling it. Like this async call:

if( !kapp->dcopClient()->isApplicationRegistered("kaddressbook") )
KApplication::startServiceByDesktopName( "kaddressbook" );
DCOPRef( "kaddressbook", "KAddressBookIface" ).send( "showContactEditor(QString)", Contact.uid() );

Why does one need to ensure the recipient (server) running yourself? And need to know whether it is a unique application or not? Why doesn’t the bus do it? Like this:

if( kapp->dcopClient()->isApplicationRegistered("kaddressbook") )
DCOPRef( "kaddressbook", "KAddressBookIface" ).send( "showContactEditor(QString)", Contact.uid() );

Or simply (here with the contactcards server):

DCOPRef( "contactcards", "ContactCardsIf" ).send( "showCard(QString)", Contact.uid() );

Food for thoughts. Could someone please go to dinner? 🙂


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s