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
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.
. 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
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)
. You can also
. (except if you use Safari, it will crash your browser I've been told)
: 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.
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.
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.
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.
In fact, amaroK has a "cover manager". Notice the
Spotlight-esque search field again: KDE is full of those
search fields now.
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
...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 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 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.
And more integration.
And more (yes, there're last.fm plugins for other players)
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
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
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)
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.
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.
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.
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)
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.
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.
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.
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..)
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).
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.
...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.
This may not look very interesting: Yet another system
monitor, right?
...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.
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.
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.
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).
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.
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>
(and
some
tidy love)