WHY KDE RULES


(Spanish version here / versión española aquí. Si hablas español, te recomiendo que leas esta versión)

(PD: If you've suggestions, send them to me with/without screenshots to diegocg@gmail.com. You're allowed to copy,distribute and modify this document as long as you keep the images where the name of the singer "Joaquín Sabina" appears. I'm serious. Also, if you're using IE you must know that it's IE's failure that the page doesn't render correctly and why PNG transparency isn't handled as it should. Use firefox, at least until IE 7 is released.)


This document was created to show non-KDE people what they're missing - and if you haven't used KDE a lot, you're missing a lot of things and you may interested in reading this page to learn how many wonderful things you may have been missing, I promise. I was a Gnome user for a long time, one of those users who loved Gnome UI, and I didn't know how much things I was missing with KDE until I tried it - which doesn't means Gnome is crap, Gnome has its strenghts and without it linux wouldn't have the same success. I think this is one of the major failures of KDE: They have "failed" to market and show non-KDE users their awesome technology (aka: features), because I really think the stuff in KDE is better than the alternatives if you balance all sides. This document is for those non-KDE users who, like me in the past, don't run KDE except for saying "how ugly it is" without realizing how much power there's behind KDE. I hope this docs help them to know what they're missing, so they can change if they want: I just want to keep people well informed about what KDE has, not flaming others. There're a couple of opinions of my own and I warn in the text when there's one. If you think I wrote this doc to flame other people, you're wrong. A "why gnome rules" would be welcome.

To see the full-size images of this page you need a Javascript-capable browser, and click on the images. Yes, Javascript sucks badly. So does posix, HTTP (why oh why), html and many other things. The Unix guys at Bell labs fixed Unix by creating Plan 9 and nobody cares about them, so to keep the tradition I'm not going to care about people who thinks that (x)html is the one way of creating web pages or think that all web pages must work with lynx because 80x25 consoles designed for dumb terminals are the One User Interface Possible (tm) for smart machines with 3D-capable graphics. (I love consoles too, I just think there're better ways of keeping the good ideas of the past without killing progress, and I don't think preserving the VT100 semantics forever is one of those ways)

In case you're one of those users, you can see a page with all the full-size images. You can also maximize all the images, or minimize them again. (except if you use Safari, it will crash your browser I've been told)




Small FAQ: No good Linux desktop analysis is complete without all those frequently asked questions that everybody already knows but that everybody love to re-explain again and again in slashdot to get +5 Insightful moderation points.
amaroK: THE audio player. "Why start with amaroK and not the KDE desktop?". Because amaroK was the app that introduced me to the KDE world, and I think it can do the same for others (it's not the default player in KDE though, there's juk). It combines some of the greatest KDE features (smart usage of khtml's kpart) and few of its main defects (it is quite usable): It's extremely powerful and easy to use at the same time, it's one of the best music players out there (it's indeed the best on the Linux field IMO). It eats *lots* of RAM, but when you look at the alternatives you realize that they eat 50% of the resources amaroK uses to implement less than 25% of the equivalent functionality: And notice thatn I'm not showing LOTS of amaroK features here, like the "burn this album" contextual menu or the wonderful system for editing IDTags. By the way, if after reading this document you plan to try KDE, I recommend you two things: First, wait for KDE 3.5.1 (.0 versions are never good no matter what software it is) which will be released in 20 January 2006 and second, don't "switch": Install and try first some powerful KDE apps like amaroK and K3b and use it for a while (try it while kde 3.5.1 is released for example). Transitions are never easy, radical switchs can be dissapointing no matter what software it is.




amaroK first Wizard

This is the First-time-wizard, which ask you where to find your music. As you see, it can watch the directories for changes, so when you rip your CDs they can get automatically added to your collection.





amaroK main window

This is the main window. Alternatively, you can make this dissapear and have a xmms-like window (not showed here but available). You may think that it's "too complex" (aka: "unusable"), but I don't think you will think the same if you take a bit of time to look all the screenshots. As you see, you have a "search" field to grep in your play list. The engine which manages your song information is database-based (you can, in fact, choose between a mysql, postgresql or SQLite backend) and as you see it supports boolean operators like AND/OR. amaroK also gives songs a "punctuation" based in how much you listen a song, if you switch to another song, etc. Also, it shows all the albums from the same artist you're listening.







amaroK cover

No, I didn't have to download those covers myself - amaroK can download them automatically from Amazon (of course you can set yourself manually in case Amazon doesn't has it). In fact, if you doubleclick the cover, it'll open a browser in the amazon's album page if case you want to buy it.








amaroK cover manager

In fact, amaroK has a "cover manager". Notice the Spotlight-esque search field again: KDE is full of those search fields now.









amaroK lyrics

amaroK can fetch lyrics from the Net. It gets them from lyrics.com.ar - and it caches them so it doesn't need to re-download it again -, I think. See the "+" button? You can add lyrics if they don't exist. Again, OR operators








amaroK and wikipedia

...and if it fetchs lyrics, why wouldn't it fetch information from an artist from the Wikipedia? The album you see in that screenshot is "special": It's the album it gave the name to amaroK. This is where you can feel the power of Kparts - that information is rendered via khtml, the konqueror HTML engine. You can in fact click the links and browse inside amaroK in case you want it, use the "->" "<-" arrows, get info about the album, open the URL in a external browser.

This Wikipedia integration is part of a collaboration between KDE and the Wikipedia foundation. And not only amaroK uses/will use it. A KDE's chemistry applications, a educational map browser, the clock ("This day in history"), an application which prints Wikipedia articles...everywhere were an app can benefit from using wikipedia's knowledge you'll be able to get it. I think that KDE 4 will have an API or something to make this much easier for developers.








amaroK engine preference

amaroK also can use several output engines. You can use the gstreamer alsa output or the xine alsa output, for example (useful, due to the anarchy of sound subsystems in Linux, sometimes alsa has bugs, sometimes arts will do nasty things). And chang between those at runtime, of course. No restart needed.







amaroK and Brainz

amaroK also features MusicBrainz integration. MusicBrainz is a community music database: They generate a "identifier" (think of a MD5, but instead of identifying data they identify sounds). So you can rip a song from your CD, and ask MusicBrainz to get the information, and the IDtags will be filled with that info.







amaroK Ipod integration

And more integration.






amaroK last.fm integration

And more (yes, there're last.fm plugins for other players)





amaroK Playlists

Did I mention Pod cast support? Also, the screen shot shows the "dynamic mode" - a way to let amaroK modify your play list. One thing you've to understand about amaroK is that you've a collection of songs and then there's a play list - with tons of choices.






DCOP: Enought. Now it's time for the KDE Desktop. The KDE internal architecture is awesome, you already saw the power of Kparts when embedding Khtml in amaroK, now it's time to show the power of DCOP



Dcop example

The first command counts how many songs you have in your amaroK collection. The second, how many albums. I already told you that amaroK handles all that info with a database

The third line tells me what song I'm listening to right now. The fourth, the path to the cover. Fifth, the cached lyrics of the song - this is Mike Oldfield, so there're no lyrics for this song.

The sixth command switchs to my second virtual desktop. The last command sends the output of "ls -l" to a contact via kopete (of course I don't have a foobar@msn.com contact so it fails), a IM program. As you see, DCOP, just like God, is everywhere, and the amount of things you can do is amazing - these were just some interesting examples. But wait, there's more





Kword and DCOP

That's right, that Kword window and that text have appeared automatically after running those commands, no other interactions required, and you can manipulate that text and tons of things with DCOP in Kword. Kword is also a amazing app, by the way (and before some people speaks, I'll remember everyone that Kword was there before openoffice or others, just like Khtml has been there for a long time or DCOP vs DBUS, so please think twice if you're going to try to flame KDE for "duplicating efforts")

The power of DCOP is amazing and has been there for years. It started around 1999 with KDE 2.0, after some failed attempts of use CORBA. Right now, there's DBUS - similar concept, different implementation and design - which is a freedesktop.org project, and it's the project gnome is going to use in the future. Fortunately the KDE guys are nice guys and apparently KDE 4 will use DBUS and drop DCOP - the sun will shine really hard that day, so you'd better buy some Rayban stock now.



Kparts: I think it would be fair to say that what we're seeing today with Kparts and DCOP-like technologies is just the tip of the iceberg. Kparts feels to me like the equivalent of unix shell comands when applying its same design principle "separate mechanism and policy": Build "small" pieces of GUI-oriented software and then allow programs to use their functionality as needed. Part of the success of firefox is due to this design principle: Implement mechanism in the browser (extension APIs) and let extensions combine and use those "mechanisms" as needed. Perfect mechanism/policy separation has been one of the most important design principles of the Unix world, and regarless what other OSes say, it's good. The DBUS KDE/Gnome "unification" will be also something interesting to follow. Today we have lots of apps which do amazing things, but the collaboration between those is very poor, and making easier for one app to get information from another is AFAIK the final effect that every user (expert or newbie) desires (and it's the main objective of WinFS, even if most of Mac zealots are stupid enought to compare it with spotlight when the fact is that they're not even close to provide the same funcionality)




Kontact and kopete

As you see, you can integrate all your kontacts - sorry, contacts - with kaddressbook. The interface you see in the right side of the window is not kontact - it's the kaddressbook kpart. And kopete has a plugin which notifies via kaddressbook when a contact is online, which notifies kontact when that kontact is online. Well, no: Kaddressbook is "embbeded" as a kpart in Kontact so it doesn't to notify kontact, I guess. And yes, if I press the "chat with" menu option, a kopete chat window will appear on the screen.





Kontact and akregator

And this is a great example of the Kparts Powah (tm). The interface may seem a bit clunky but I can't host unlimited screenshots so I needed to make the window small - 50% of the population doesn't care anyway because 50% of the population are girls and size doesn't matter for them, right? Here you can see kontact hosting a akregator kpart, while at the same time I open a link from a slashdot RSS entry in a khtml kpart, and I post a typical slashdot commentary (proof of concept, eat my karma!). Yes, that's right: A kpart inside another kpart. Notice the backward/forward buttons, and the spell checker. The spell checker works everywhere inside KDE BTW. Maybe you would argue that such combination of kparts is crazy and that it renders the interface to an "unusable" state. But what I want to show here is how powerful kparts are, not anything else, and now we'll start with KIOslaves.




KIOSlaves: KIOslaves are a way to abstract things and show them to the user with a "common I/O interface" (I know, a bad definition). Thins like your mail in a pop3 mail server, man pages, or other things: you access them writing things like pop3:/, man:/ or audiocd:/ in konqueror (or using menus, of course). Screenshots are more intuitive than my explanations.



audiocd KIOslave

This is probably the best example of how powerful KIOslaves can be. This is audiocd:/, a KIOslave for audio CDs. I didn't do anything to get all those things that you see in the screen. I inserted the CD, and the KIOslave automatically connected to the CDDB database to get the album's information and name the files.

Yes, the "CDA", "FLAC", "MP3", "Ogg Vorbis" directories are what you think and contain the same songs but ending in .mp3 or whatever and no, they aren't real. KIOslaves shows you them (did you hear about "virtual folders" in vista? Let me laugh). In case you haven't realized, with KDE you don't need to "rip" CDs anymore or specialized programs: You insert your audio CD, go to the directory you want, you copy the files you want to have with your mouse, paste them, and the audiocd KIOslave automatically will  rips those tracks for you. The "full CD" directory contains files with the name of the album ending in .mp3/.ogg/etc, and "information" contains the CDDB info. It's as simple as that. No "rippers", no extra user interaction involved (can you speak "usability"?), no need to run extra programs, nothing, stop breaking your head: KDE does everything for you. I hope someone writes a girlfriend:/ KIOslave some day.






KDE wallpaper

This is a screenshot of the process which happens when you press the "get more wallpapers" in the wallpaper configuration: The app downloads a list of wallpapers from the internet (I agree that seeing the I/O dialogs is not very nice but it just takes a few seconds) and it shows you the following screen. (I had to remove the wallpaper to make the image smaller, stop bitching)




KDE Wallpaper

Yes, that's exactly what happens. The "get more wallpapers" button takes you to this screen, where you have a continually updated list of available wallpapers. As you see, you just need to select the wallpaper and click "Install" - no need to download anything by hand and then search it through your file manager.





kioslave in khtml

This is yet another example of Kioslaves. In many web pages you have a form which allow you to upload files for whatever purpose. Some times, what you want to upload is something that it's in another web page. So you have to download it first by hand, and then set the form field to a file in your hard disk. KIOslaves saves you time: In konqueror, you can put an URL in those forms. And when you click upload, KIOslaves will download that URL to a temporary storage (after you confirm it in the dialog you see in the screen) and automatically sets internally the correct file path and automatically uploads it.






man KIOslave

There's a KIOslave for man, too - as you see, it even features autocompletion. Forget about having to switch to a terminal or using special help apps.





ftp KIOslave

This is a example of the FTP KIO. I pressed Shift + Control + L (to "split" the screen, which may look "unusable" but it's very useful) and I wrote "ftp://ftp.teleline.es", and wrote my user name and password. This way, I have my local disk at left and my remote FTP site at right, allowing me to upload and syncronize this document. No need to use a "special app" for FTP. No need to go to the command line. Just drag and drop (notice that KDE is smart enought for not trying to render thumbnails from a remote site, although you certainly can enable it in the configuration). Another good example of network transparency is konserve, a backup program which can use network transparency to put the backups wherever you want (a FTP site, a SSH account..)





Camera KIOSlave

This is the camera configuration. Cameras supported by libgphoto are supported, and camera:/ will show the photos. Again, no special programs needed.

There is a big variety of KIOslaves and I'm not going to show them all here because it'd take a whole webpage for them alone. There're KIOslaves for compressed files (gzip:/, bzip2:/), for webdav, smtp, sftp, imap, telnet, rlogin, fish (ssh), nntp (news), NFS, mbox, mac (to read HFS+ partitions), ldap(s), info, finger. The cgi KIOslave allows you to run CGI programs. The data KIOslave allos you to do things like data:text/html,<title>Testcase</title><p>This is a testcase</p>. There's vnc:/, feed:/, aim:/, jabber:/, mms:/. pydoc:/, camera:/...KIOslaves unify tons of things under a common I/O interface, where http:/ is just a particular case, and there're lots of KIOslaves that still haven't been written. Imagine for example a amule:/ KIOslave where a directory like amule:/Joaquíín+Sabina/ would show all the files about Joaquín Sabina you can find in amule, and apps usign that KIOslave to get things from there (say, a media player like amaroK).




More Kparts:


konqueror overwrite

This is another Kparts example. This is what you get when you try to overwrite a file with a existing name, and the files are images.






konqueror overwrite music

...and obviously, this is what you get when you try to overwrite a song. Neat, isn't it? (I wonder when other theorically superior operative systems will start doing things like this). I've not been able to do the something for video, I don't know if it doesn't support it or there's some error in my configuration, but you get the idea: Thanks to kparts, adding it won't mean rewriting konqueror.






Ksysguard taskbar

This may not look very interesting: Yet another system monitor, right?

Ksysguard

...but the truth is that it's just another kpart. This is ksysguard, which allows you to monitor your system. And as you see, it can monitor lots of things. And every entry in that menu can be put in the taskbar. This means the previous screenshot was not Yet Another Monitor which only monitors the CPU and memory usage. The previous screenshot was measuring the number of interruptions per second, the number of context switches per second and the load average.





Kdevelop kparts

Yet another example of Kparts. This is kdevelop, a powerful IDE (many KDE users don't seem to like it, though - you know, the "vim vs emacs" disease). Anyway, this is a good example of how Kparts can help even to power users. Here you see a .c file, and a Konsole kpart running the epic4 IRC client in irc.freenode#kde-devel. At the same time, I search in the documentation for information related with the netlink linux kernel feature, but thanks to the khtml kpart I can do all this (and more) inside kdevelop without needing to switch tasks. Again, this screenshot makes kdevelop look crap because of the size, sorry.




Various:


Kword regexp

With the ocassion of the billionth second of the Unix time, Rob Pike - coauthor of the wonderful Plan 9 operative system - wrote a paper called "The good, the Bad and the Ugly: The Unix legacy" where he critized some Unix failures (some of those being design failures still not fixed by Linux/Solaris/*BSD, although it looks we're getting per-process name spaces in Linux and we already have the 9P protocol and FUSE), where he said: "Then think about regular expressions: One of Unix’s greatest contributions; unused outside. Almost no visibility beyond the Unix community! Does your web browser’s Find command use regexps? Why not?"

As you see, KDE is trying to fix some of those failures (KIOslaves are, after all, a way to recognize than Plan9 file-oriented network-transparent servers were a great idea). When you press the "edit" button, a graphical regexp editor will appear on your screen. And by the way, I took this screenshot in Kword, but the fact is that regexp search is available in kate or konqueror aswell. Being object-oriented (truly object oriented, not just an emulation), the feature can be used across all the apps that need it easily.

You may argue that a regexp search is against usability since normal users or even semi advanced users don't know regexps, and you'd be probably right. You may also argue that a firefox-like search is better than showing a window, and I'd agree. But I also could tell you that using regular expressions in a big document is a good thing, and you'd need to agree with me, unless you're an idiot or you have never used regular expressions.




Print dialog

By the way, did I tell that inside KDE you can print anything to a PDF file? (yes, cups can do it too) Also, take a look at this nice C++ code to see how Qt 4.x will make this much easier (yes, Cairo too).





kdesktop Icon Selector

This is the KDE's icon selector. May be this is just me but I find it much more usable than most of the alternatives in other OSes.





Kcontrol kompmgr

Have you heard about Composite and Damage? Recent X.org versions have implemented the neccesary technology to implement a "composited" desktop - part of what Mac OS X has - which allows X.org to draw transparencies, etc. Maybe you've tried xcompmgr in the past and it was slow. This has been improved in X.org 7.0 with EXA; a new acceleration architectures which replaces XAA. It's much faster, and drivesr which implement EXA feel "usable" now.

What you see in the screen shot is the Composite configuration. Kwin has already integrated some code from xcompmgr. Unlike what happens if you run xcompmgr alone, the integration done with kwin allows to kwin to take the "composite" decisions in reaction to window manager actions: For a time, for example, I used to set the unactive windows as transparents and the active windows as opaque, but you can configure many other things aswell.




Another example of integration is Kwallet: KWallet is a system which allows you to store all your passwords and other sensitive information. This can be used by other KDE apps to manage all those info in a centralize way, so konqueror will be able to enter you ssh account without asking you the password. K3B, the Kiosk framework, lots of apps... there's no room for everything. That's everything for now. I hope you liked it. I wrote this document to tell everybody why KDE is great, why it's worth of using (great funcionality), supporting (great development platform) and hacking (great design), why it's far from dead and why you can expect many other awesome features from KDE 4.

PD: Thanks to fromoze and Hugo for their suggestions ;)


Diego Calleja <diegocg@teleline.es>

Document made with Nvu (and some tidy love)