Think Better

I suspect many of you will remember Apple’s adverts a few years back, with the tagline Think Different.

Think Different

Think Different

Not think better.  Not think world-changing.  Think different.

What does “different” mean from the point of view of a user or developer?  Different file formats.  Different systems.  Things that don’t interact.  A hundred different bugs in every application.  Just ask a web developer what they think about different browser implementations.

Developers get faced with choices between different systems all the time.  Why should I use system A instead of system B?  Does system A do something that system B doesn’t do, and do I care about that something?  If so, then this is an excellent reason to use system A.  Perhaps system A does the same thing as system B in every regard that matters to me, but does it better.  This is still a good reason to use system A, providing I haven’t already invested heavily in system B.

But “different” isn’t better automatically.  From the point of view of a commercial entity, “different” is generally worse by default.  “Different” costs money.  Is it worth it?  You have to justify that, justify why different is better in this case.

In light of this, I have a question for you, the contributing community of KDE.  What makes KDE better?  What makes it world-changing?

Doing something revolutionary

Let’s make this a bit more specific.  Most immediately I’m interested in what KDE has to offer the software industry at large.  What is KDE pioneering that would make a company that has historically based it’s business model on web applications built on Microsoft technology, but is now branching into open source because it’s not afraid to follow interesting trends, sit up and pay attention?  Consider a target audience of someone who thinks the time of the WIMP interface is over, but that the iPhone is a testament to the ingenuity of graphical designers and not software engineers (and software engineering is what we’re interested in here).  Consider the trend towards service-based computing.  Consider Google’s dominance.

Think about seamless integration of mobile devices, of reading something at your computer, then having to rush off and getting it onto your iPhone/eeePC/PDA/portable toaster with almost no interaction required.  Think of the problem of sifting through the cruft of the intarwebs (cat captions and all) to find that useful nugget of information.  Think of how your life revolves around trust networks (who do you ask for advice?), but how poor computers are at duplicating that.  In short, think of the unsolved problems in computing.

Is the semantic desktop (cf Nepomuk) a bold leap into the future of computing?  If so, how?

Is JOLIE integration into the desktop layer where it’s at?  Why?

Will Plasma revolutionise the way we interact with small form-factor devices?

What problems are KDE solving that haven’t been solved before?

Remember, we’re thinking here about why people who’ve never heard of KDE and see Linux as a server OS should be interested in what we’re doing.  We’re thinking about why budding young developers who don’t care about the GNU software libre philosophy but just want to work on an exciting, intellectually challenging and world-changing project might jump at the chance to get involved with KDE.

Doing something better

Secondly, why should people (again, who don’t care about the KDE desktop) use our development framework?  What makes us better?

Perhaps Eigen is the matrix library to end all matrix libraries?

What can Akonadi offer the world beyond the kdepim module?

How will Plasma make the hoards adore your application?

In what way are KComponents the light side to COM and CORBA’s dark side?

Why should you embed Marble into your application?

How is KDE solving the problems that developers care about in a better way than they have been solved before?

Final words

I’m fully convinced that KDE is awesome.  I care about software freedoms, and KDE is free.  I care about frameworks and APIs, and Qt/KDE beats the competition easily in that regard.  But I want to be able to evangelise KDE to other developers who don’t care about these things, and I don’t have the knowledge to do so.

Post your responses in the comments, or put them straight down on my Techbase page.  I will try to collate everything there.

About these ads

8 Responses to “Think Better”

  1. iampiti Says:

    To the possible developers: KDE is better because they don’t have to slave to backwards compatibility, because KDE 4 was designed from the ground up the best way people could think.
    KDE is great because is built with modularity in mind, build upon frameworks that abstract the details and let you create great software without worrying about the low level details. Software that works on unix,Mac OS X, Windows, portable devices…
    IMO all of this is a big deal…because I work as a developer for a living and in very few (if any) paid jobs you can develop such great software and do the things the right way without worrying about deadlines, budgets and so on. I can’t do much beyond hello world in C++ today but I’m contemplating getting serious about it just to be able to develop for KDE.
    Thanks

  2. dontpanic Says:

    A thoughtful post, and I enjoyed the stimulation that it brought up.

    What I look for are the agendas behind companys, such as Apple’s & Microsoft. Every OS evolves from a belief system, which in their case is ultimately self-serving to their own bottom line.

    What I appreciate about KDE is that it appears to be community-serving first. There are no hidden agendas that creep up on me in the form of a distasteful EULA in a SDK, such as from Apple, Microsoft, although the iPhone SDK EULA is particularly odious.

    In my mind, the community-first aspect makes KDE better. Openness always is better.

  3. user Says:

    from a non-programming but free software enthusiast and user standpoint, i can say “better” for me is 1) freedom and 2) configurability/flexibility/power

    I want my software to be free because i want it to be able to be improved and worked on my people who care about it, and not follow a particular agenda set forth by a money-making mindless corporate entity. But Gnome is free, too, so why don’t I use that? Well….KDE is configurable; I can make it do whatever I want it to do. It is attractive and when I’m showing a friend something on my comptuer and they ask “so this is linux, huh?” then I can proudly say, “Yes, this is Linux with KDE 4…and look at all these cool things it can do!”.

    And along with configurability comes its flexibility (I can’t wait to get KDE on my n810!) and power. I am so much more efficient on KDE (3 and 4) than I have ever been on any other desktop.

  4. The Gains of Replay Gain « return -EWTF; Says:

    [...] return -EWTF; Just press reset « Think Better [...]

  5. TheBlackCat Says:

    What I think will be a key revolution KDE will bring about is the trask-oriented desktop. Plasma, Akondi, Nepmuk, these are all parts of that. It will make computers smarter. Up until now computers did not care what you are doing, they cared about what you were using to do it. They organized themselves around what program you are using, not what you are doing with that program.

    But people have different programs to accomplish the same task, and tasks often involve multiple programs. A computer that knows what you are doing and reorganizes itself to make that task easier is a huge leap forward in the way we work with computers. The Office 2007 ribbon interface is another example of that, but it is still embedded in the application-oriented desktop paradigm we have had up until now. What is more, if this computer can learn how you like to do certain tasks and organize itself appropriately. For instance a computer that says “when you are chatting with your IT guy you generally pull up these configuration programs, send him an email with an attachment, and check these system monitoring applets. Let me get that all ready for your and stick them on a virtual desktop so you can get to it easily.” A computer that adapts itself to your work flow instead of you having to adapt yourself to its work flow. Imagine the benefit to businesses if you don’t have to train users to use the system, the system will train itself to work with the users.

    This requires four parts, I feel. One is a flexible and easily adaptable desktop. Plasma provides that. Next, it needs something to track the relationships between data. Nepomuk and akondi provide that. And finally it needs programs that are able to understand how you perceive their relationship with the data and with each other.

    Finally it needs to understand how you interact with the computer in terms of hardware. This, I feel, is still where KDE has serious limitations, and I think it is holding back the flexibility found in the rest of the desktop. The ability to configure the UI is amazing, but the ability to configure how a physical human interacts with the computer is very limited. Essentially we have keyboard shortcuts, that is it.

    The way we interact using the mouse is not flexible at all, we have three buttons and a scroll wheel. The ability to dictate how the mouse interacts with the computer is pretty much limited to touching screen edges to activate a couple of effects and dragging windows across virtual desktops. Shortcuts involving mouse buttons are essentially unsupported. The ability to dictate how certain modes of interaction using the mouse effect the desktop is limited. Windows 7 has some interesting ideas, like the shaking windows and dragging windows to screen edges to maximize them across half the screen. Now certain people may not like these specific interactions, but the ability to dictate what effect a certain interaction with a window or with a desktop using the mouse will have is practically non-existent if you compare it to the extreme flexibility of the rest of the KDE 4 experience. So I think it important to be able to tell the system “shaking a window will have this effect, moving it to a screen edge will have this effect, vertical wheel scrolling on the desktop will have this effect, meta+mouse button 5 on an applet will have this effect”.

    This is even more limited when it comes to other types of devices. For instance there is no integrated way at all to dictate what interaction with a joystick or with bluetooth devices. They are simply not integrated into the KDE desktop interaction framework at all.

    Another biggie that KDE, and Linux in general, essentially does not have at all is voice interaction. But I think this is an extremely natural way for people to interact, giving vocal commands is something people learn from a very early age. It is something that Microsoft has been working hard on supporting, and even most modern cell phones have it, but Linux in general and KDE in particular does not.

    The output side of things is important as well. An example is having the computer know which printer you like to use when doing certain tasks (for instance a black and white office copier when printing PDFs, a color inkjet printer when printing photos). Or knowing that when you set full screen with a photo you want it to go full screen in your monitor, while if you set full screen with a video you want it to go full screen on your TV.

    Once you have the framework for being able to have a flexible method of interaction between input devices, output devices, programs, the desktop, and windows, it should become much easier for the computer to learn how you like to interact with it and adapt appropriately. For instance it could learn that when you are working with a text document and push the “play” button on your lirc remote you want amarok to open and start playing music, but if you stick a DVD in the drive and immediately after push the same button you want to open Dragon Player and play the DVD. It is extending the task-oriented desktop to the hardware side of things, to learn not only what you do and the process you use to do it but also what devices you use in that process and how you use them.

  6. randomguy3 Says:

    @TheBlackCat: do you mind if I re-post your comment as a blog post? I’ll credit you, of course (either as “TheBlackCat” or a more descriptive moniker if you give me one).

  7. TheBlackCat Says:

    That would be great. I didn’t expect it so the previous version was a little sloppy, I made some revisions. Please use the version below. Calling me TheBlackCat is fine, but please do not post my email address. I appreciate that you think the comment is worthwhile enough to post. Thank you.

    —————————————————

    What I think will be a key revolution KDE will bring about is the task-oriented desktop. Plasma, Akondi, Nepmuk, these are all parts of that. It will make computers smarter. Up until now computers did not care what you are doing, they cared about what you were using to do it. They organized themselves around what program you are using, not what you are doing with that program.

    But people have different programs to accomplish the same task, and tasks often involve multiple programs. A computer that knows what you are doing and reorganizes itself to make that task easier is a huge leap forward in the way we work with computers. The Office 2007 ribbon interface is another example of that, but it is still embedded in the application-oriented desktop paradigm we have had up until now. It can even be taken a step further, allowing a computer to learn how you like to do certain tasks and organize itself appropriately. For instance such a computer could realize when you are chatting with your IT guy for a certain amount of time you generally pull up certain configuration programs, send him an email with an attachment, and check certain system monitoring applets. Let me get that all ready for your and stick them on a virtual desktop so you can get to it easily. KDE 4 provides the potential for a computer that automatically adapts itself to your work flow instead of you having to adapt yourself to its work flow. Imagine the benefit to businesses if you don’t have to train users to work with the system, the system will train itself to work with the users.

    Everybody has different ways they like to do different things, but up until now the best they could do is try go set up their their desktop as best they can to make their most common tasks as easy as possible within the limits imposed by the system. Most people do not even bother to take advantage of the limited abilities their system provides, they simply use the default configuration. They never learn how they can modify and improve their computer experience, their efficiency, and their enjoyment. But a system that knows what users are trying to do, how they like to do it, and knows how take advantage of its own abilities to make those tasks easier would not need to rely on users spending the time and effort to learn the intricacies of the system, it would simply provide what they need when they need it.

    Such a system requires four parts, I feel. First it needs a flexible and easily adaptable desktop. Plasma provides that. Second it needs something to track the relationships between data. Nepomuk and akondi provide that, or will soon. Third it needs programs that are able to understand how you perceive their relationship with the data and with each other. As I understand it is this is a major goal of KDE 4 over the long run.

    Finally it needs to understand how you like to physically interact with the computer’s hardware. This, I feel, is still where KDE has serious limitations, and I think it is holding back the flexibility found in the rest of the desktop. The ability to configure the UI is amazing, but the ability to configure how the computer’s hardware interacts with and impacts the UI is very limited. Essentially we have keyboard shortcuts, that is it. Little else can be configured by the user.

    The way we interact using the mouse is not flexible at all, we have three buttons and a scroll wheel. Modern mice generally have at least 5 buttons and a tilt wheel. The ability to dictate how the mouse interacts with the computer is pretty much limited to touching screen edges to activate a couple of effects, dragging windows across virtual desktops, and a few button presses on windows titles. Shortcuts involving mouse buttons are essentially unsupported. The ability to dictate how certain modes of interaction using the mouse effect the desktop environment is limited, in the relatively few cases where mouse interaction is configurable at all it has at most a couple of options.

    Compiz has fairly extensive mouse interaction configuration, allowing pretty much any mouse button to be combined with a modifier key to control most aspects of the window manager. Windows 7 has some interesting ideas about moving windows, like the shaking windows to minimize others and dragging windows to screen edges to maximize them across half the screen. Of course certain people may not like these specific interactions, and in Windows 7 they do not appear very flexible, even compiz does not really support combining keyboard and mouse button presses beyond the use of modifier keys. But in KDE 4 the ability to dictate what effect a certain mouse interaction with a window or with a desktop will have is practically non-existent if you compare it to those examples, and is even more striking next to the extreme flexibility of the rest of the KDE 4 experience. So I think it important to be able to tell the system things like “shaking a window will have this effect”, “moving it to a screen edge will have this effect”, “tilting the scroll wheel left on the desktop will have this effect”, “meta+C+mouse button 5 on an applet will have this effect”.

    This is even more limited when it comes to other types of devices. For instance there is no way at all to dictate what pushing a button on a joystick or a bluetooth device will do. They are simply not integrated into the KDE desktop interaction framework at all.

    Another biggie that KDE, and Linux in general, essentially does not have at all is voice interaction. But I think this is an extremely natural way for people to interact, giving vocal commands is something people learn from a very early age. It is something that Microsoft has been working hard on supporting, and even most modern cell phones have it, but Linux in general and KDE in particular does not. Things like launching programs, switching desktops, and organizing windows seem particularly suited to voice commands since they are fairly simple and generally do not do anything terrible if there is a mistake.

    The output side of hardware interaction is important as well. An example is having the computer know which printer you like to use when doing certain tasks (for instance a black and white office copier when printing PDFs, a color inkjet printer when printing photos). Or knowing that when you go into full screen when viewing a photo you want it to go full screen on your monitor, while if you set go into full screen mode with a video you want it to go full screen on your TV. Phonon and Solid seems to be trying to provide this to the Audio side of things, but it has applications for just about any output device.

    Once you have the framework for being able to have a flexible method of interaction between input devices, output devices, programs, the desktop, and windows, it should become much easier for the computer to learn how you like to interact with it and adapt appropriately. For instance it could learn that when you are working with a text document and push the “play” button on your lirc remote you want amarok to open and start playing music, but if you stick a DVD in the drive and immediately after push the same button you want to open Dragon Player and play the DVD. It is extending the task-oriented desktop to the hardware side of things, to learn not only what you do and the process you use to do it but also what devices you use in that process and how you use them.

  8. The Task-Oriented Revolution « return -EWTF; Says:

    [...] Task-Oriented Revolution By randomguy3 TheBlackCat posted this on an earlier post on this blog, and I thought it was worth sharing more prominently: What I think will be a key revolution KDE [...]

Leave a Reply

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

WordPress.com Logo

You are commenting using your WordPress.com 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


Follow

Get every new post delivered to your Inbox.

%d bloggers like this: