The idea of a "device spectrum" is a bit easier of a topic compared to the "deployability" one I covered in the last blog entry. It's really more of a concept and a possible way of thinking about things than a set of concrete technological challenges/opportunities KDE faces.
Here's how I've been explaining it to people in person: one of the innovations the Linux kernel brought into the mainstream during its evolution was the idea of viewing the idea of "a computer" as a generic concept made up of a set of very different kinds of devices. On the one hand you have tiny little (by today's standards, anyways :) system-on-chip devices and on the extreme other hand you have high performance computing (both of the single system image and cluster variety). In between lies everything else: desktops, laptops, workstations, server appliances, business servers of various sizes. Instead of providing a different operating system for each of these targets, Linux aimed to provide one, reconfigurable collection of source code that would just as handily power your wrist watch is it would the world's most powerful super computers. Instead of building walls between kinds of systems and targeting each in a separate-silo type project, Linux took it all on. This opened my eyes (and I assume many others) to the idea of computing as a spectrum, from small to large, in which software can scale from one end to the other successfully.
Yes, there are niches at both extreme ends of the spectrum where specialized software is the best fit. You won't be getting the Linux kernel on an Arduino any time soon, right? :) Being able to cover 9x% of the computing spectrum is enough, however.
While systems software has been doing this like it was nothing special anymore for a while, we in user interface land haven't been. There have been some brave and visionary types out there, like the people behind Qt, who have realized that large portions of the GUI frameworks can travel from device to the largest of workstations. I still get all giddy thinking about how Qt apps run just swell on, say, a Symbian phone and that it's the same Qt that powers electronic design apps that do real time simulations of data sets so large that you have to run them on 64bit systems to have enough memory address space. Amazing!
The challenge here for KDE is: what do we have that can also be spread out across the spectrum?
Not everything will move very much. I don't see Digikam making the leap to smart phones, for instance, nor should it try to in my opinion. That's not the point of Digikam, and trying to do so would probably ruin it.
Other applications will travel very well across parts of the spectrum. Take Gwenview for instance. (Hm... what's with my KDE Graphics obsession today? :) It has a user interface that scales down very nicely to netbooks/smartbooks and up very well to very large displays. Will it be an answer for image viewing on, say, smartphones? I don't know. (I haven't tried it, and haven't really given it much though, to be honest :) Perhaps it won't, and that's OK, of course. Knowing, however, that it's appropriate for that area of the device spectrum might be useful for its developers: perhaps they want to push the boundaries out further, or maybe they just want to preserve their current stance and ensure they don't shrink it accidentally by making it uncomfortable for use on netbook sized screens.
Some of our applications have been written from the ground up to fill as much of the device spectrum as possible. We can see this in how Plasma applications are running not just on desktops and laptops, but also netbooks (with a different primary UI, but the same special sauce under the hood) as well as phones (again, with a different primary UI).
Then there are our libraries: which work across the device spectrum? Which don't? Which could do better? Which library facilities are we missing that would be good to have to expand our device spectrum reach, in both directions?
I thought it was interesting when Akonadi people blogged about how Akonadi wasn't really designed for or necessarily ready for things like smartphones right now. That's important and useful information to have, both for those working on Akonadi as well as those who might use it in their own applications.
What I'm suggesting by all of this is that we may want to keep our eyes and minds open as we are developing our software. Instead of just assuming that we're working on "desktop software", consider that it lives in a larger world where there is a spectrum across which devices of various sizes and shapes and purposes live. Consciously placing our software, and our software's targets, on that spectrum will help us create a coherent set of solutions (and information about them) across the wide range of computers people have today in their pockets, backpacks, briefcases, server rooms and on their desks. And that can't hurt. :)