How to write a KDE application and a GNOME application


In revenge for the technical difficulties and lack of collaboration that led to the interruption of the episode of "The MicroKernel" last Saturday, and with the challenge of overcoming pandev's post as trolling, I am going to resort to the humor of the blog Linux Haters to make a few things clear.

How to write a KDE application.

  1. Look for some semi-successful open source app
  2. Convince yourself that writing in C ++ is the ultimate way to masturbate, and that learning Qt is better than spending time with your girlfriend, because it's so beautiful
  3. Remind yourself why MOC (Music On Console) is not bad.
  4. Take the name of the application, sed s / [cg] / k /, verify that you do not end up with three kas in line. If there are no kas, add one at the beginning.
  5. Think of any user-facing function that your application can provide
  6. Foreach function: create an abstraction layer that poorly supports at least 3 other backends
  7. Foreach function: create button on toolbar
  8. Foreach function: create menu item
  9. Make sure it can split windows, create tabs and support KParts. If you can't think of a UI, mimic a Windows one.
  10. Make sure it uses Phonon, and KAddressBook. And a dockable Terminal.
  11. NEVER use a library whose name has a g. NEVER.
  12. Post it on
  13. Promise everyone that you will port it to Windows, but don't
  14. Once every few years, use the toolkit revision as an excuse to start over from scratch.

How to write a GNOME application.

  1. Look for a reasonable application from some other platform (Windows, Mac, KDE, whatever, preferably Mac). Extra points if there are already 3 other alternatives based on gtk that do not want to integrate into Gnome.
  2. The name MUST have a g. Extra points if it can be a "gn". If you can use "gnu" or "gno" or "gna" you are gegnial, and your application will be worth using. Make sure the name of your app doesn't have much to do with what it actually does. Also, NEVER document if the g is pronounced strong.
  3. The O in Gnome means object. It uses the D-Bus object framework. If you also use Bonobo, the better. Make sure that at least one platform works on the network, but also make sure that your application never uses it on the network.
  4. Remember that Object Oriented in C is not that bad. assert (gtk_not_in_serious_not_so_ bad). Also, remember that GTK + is much better than Qt because you don't have a commercial company writing code for it. So, you know, it's freer or something, and it has a + in the name.
  5. Generate wrappers for every conceivable language, but make sure none of them work exactly the way you want. You required that your floppy package each wrapper in a separate package.
  6. Explain to at least three other programmers how glib doesn't have much to do with gnome. Because they care.
  7. Don't forget the Tango icons!
  8. Make sure your application compiles on windows, but looks like SHIT.
  9. List all the features you want your application to have.
  10. Discard 90% of them. Because they are difficult to do. But tell everyone that they really don't need them.
  11. Implement 2% of them. Hide the other 8% in gconf. Hide them well.
  12. Your interface should not have more than 4 buttons.
  13. Make sure your application depends on at least 4 other libraries that have a g in the name. It makes her more gnomera.
  14. Don't use Mono, because you will spread your STD to everyone. No wait, use Mono, because it will make you much more productive. Wait, no, don't use Mono, because if you do, some delayed distro that nobody uses will not distribute your application.
  15. Relies on a module that is "heading toward planned obsolescence"
  16. Rest assured that even though your app sucks, at least it follows the human interface guides.

The content of the article adheres to our principles of editorial ethics. To report an error click here!.

33 comments, leave yours

Leave a Comment

Your email address will not be published. Required fields are marked with *



  1. Responsible for the data: Miguel Ángel Gatón
  2. Purpose of the data: Control SPAM, comment management.
  3. Legitimation: Your consent
  4. Communication of the data: The data will not be communicated to third parties except by legal obligation.
  5. Data storage: Database hosted by Occentus Networks (EU)
  6. Rights: At any time you can limit, recover and delete your information.

  1.   F3niX said

    Hahaha now if the king wears a monkey, don't use it hahaha, this is good. Create three layers of abstraction hahaha

  2.   likewho said

    The correct thing would be to publish the KDE apps on, right? 😛

  3.   vicky said

    The funny thing is that the original article in English was written in 2008, but the vast majority of things are still true. Especially :

    List all the features you want your application to have.
    Discard 90% of them. Because they are difficult to do. But tell everyone that they really don't need them.

    1.    diazepan said

      I really changed things a bit considering today. In the original post there were 4 object frameworks (D-Bus, Bonobo, Corba and Orbit) and it said to use at least 2. Corba has already disappeared and Bonobo is obsolete. Today D-Bus is used

    2.    Windóusico said

      Well, I think it has lost its freshness. It's still funny because we still haven't forgotten the days of GNOME 2 and the beginnings of KDE 4 (funny that GNOME points 10, 11, and 12 still apply).

  4.   eVeR said

    hahaha, I died.
    It got off to a good start with KDE and "Foreach function: create an abstraction layer that poorly supports at least 3 other backends" (vlc, gstreamer and xine come to mind; none are right bien)
    It was necessary for the app to use Akonadi and Nepomuk, but those parts that do not work and nobody knows what they are for ... ah, and that when the window is resized the elements of it are horribly deformed ...

    But when I got to the Gnome part, there I did break down:
    "Generate wrappers for every conceivable language, but make sure none work exactly the way you want" and "Make sure your application compiles on windows, but looks like SHIT." They take all the palms, haha.

  5.   DanielC said

    What I liked the most is that even if there are no developers, just by looking at the number of steps for one and the other you realize that it is easier to program in Qt. 2 steps less are 2 steps less, as they put it. xD

    1.    eliotime3000 said

      Also, the QT adapts to (almost) any type of desktop interface.

      1.    DanielC said

        But that is not the merit of the Qt but of those who adapt them to your desktop.

        It is as if you told me that Gnome 3.6 gtks are adapted to Cinnamon 1.6., 1.7 and 1.8, when that is to the credit of those who develop Cinnamon, not those who develop Gnome or gtk's.

  6.   pandev92 said

    Sorry, when you get to 340 comments making the post the most commented on the entire blog, only behind that entry from the browsers,
    xD, you will have surpassed me ahaha

    1.    Juan Carlos said

      Is that you hired @elav to get more access to the blog ... hahaha.

      1.    pandev92 said

        hahahahaha LOL

    2.    diazepan said

      I said in a trolling capacity, not in comments. Yours is tacky.

    3.    eliotime3000 said

      To make users who use obsolete machines (as is my case) can view the flame without having to wait for the blessed comments to load, you would have put only an excerpt from your post and the complete flame would have been linked to the forum here, incidentally, you asked them to debate in the forum so as not to have to saturate the page to be viewed (unless they take the trouble to install Disqus, but like Disqus and other comment managers they cannot be customized like the ones included in WordPress, you understand why).

  7.   pandev92 said

    8-Make sure your application compiles on windows, but that it looks like SHIT.

    Well, in this case I can say that certain qt applications also look horrible, just try qbittorrent under windows 7 or 8, to see how ugly it looks.
    In windows like 90% of applications have an ugly appearance, since you must make it a theme yourself….

    1.    eliotime3000 said

      Obviously, because QT adapts to the theme used by the interface of each OS that is compiled (a very clear example is VLC, which looks great in KDE and Aqua, but in Windows it is completely boring).

  8.   elendilnarsil said

    Hey Diazepan, speaking of trolling, in the first line, the correct thing is "they drove" and they did not drive.

    1.    diazepan said


      1.    elendilnarsil said

        Thanks mate.

  9.   Giskard said

    "And with the challenge of overcoming pandev's post as trolling"
    HA HA HA HA HA HA. You set the bar very high !!! 😀

    1.    diazepan said

      I repeat what I said to pandev: "I said in a trolling capacity, not in comments."

  10.   Garbage_Killer said

    > Convince yourself that writing in C ++ is the ultimate way to masturbate, and that learning Qt is better than spending time with your girlfriend, because it is so beautiful.

    > is the ultimate way to masturbate
    > it's better than spending time with your girlfriend
    > manuela is everywhere


  11.   Hang1 said

    I thought it was the only one that used "libretardado" as a translation of Freetard haha.

    1.    diazepan said

      I also considered translating it as "libertarado" (freedom and moron)

      1.    GGGG1234 said

        I see him more as "retarded" than as "moron." Anyway, they are silly. Either way, they meet their goal ...

  12.   kikee said

    The post seems to me the same as always, those who use KDE crushing those of Gnome, I don't think one is better than the other, they are different, the maximum simplicity against being overloaded. And another thing, higher level programming languages ​​are easier to use but less optimal when executing applications made with that language, an assembler program works better than one in C, and one in C works better than one in C ++, to say that Qt is better than GTK + because it is in C ++ seems to me a fallacy, that's why Torvalds doesn't want a single line of C ++ in the kernel and there are parts programmed in assembler like the kernel boot.

    1.    x11tete11x said

      How do you explain that QT is the most used in mobiles? being that they are teams with limited resources…. What optimization do you base yourself on to say that? It all depends on the compiler, if it does some static scheduling handling that the other does not, obviously it will be more effective than the other ... on the other hand, you saw the list of developers out there for each project ?, for GTK there is only one full-time developer and lately each new version breaks the compatibility with the previous ones ... your comment seems rather against object-oriented programming ...
      On the other hand, what do you call overloaded? I am a KDE user and if overloaded we interpret it as RAM consumption, KDE, due to its modularity, can be configured sacrificing some comforts it offers so that it consumes much less than Gnome (which in Gnome I don't know can), if we talk about minimalism again, KDE due to its modularity can be "tuned" in thousands of ways to make it very "minimal" (not overloaded), if we interpret it as a number of applications that it brings, then I regret to tell you that One cannot speak of one heavier than the other because both KDE and Gnome can install their base versions, which only bring the essential apps.
      Finally with QT you can do things that you cannot with GTK

      1.    pandev92 said

        qt is more used on mobiles because it has a decent ide, because it is a more complete language at the gui level, etc.

      2.    kikee said

        - I quote verbatim a phrase by Linus Torvalds that defines very well the opinion of many:

        “C ++ is a horrible language. And it's even more horrible for the fact that a lot of second-level programmers use it, to the point that it's even easier and easier to generate useless garbage with it. In all fairness, even if the decision to have used C had * nothing * more to do with keeping C ++ programmers out of the project, that would have been a great reason to use C. "

        -With overloaded I mean the interfaces full of buttons and options where you can get lost and then half of them do nothing or something insignificant (I don't know if that means doing more things than GTK), the issue of memory consumption It is a separate issue, there is no need to talk about it

        - @ pandev92 has defined very well because QT is used a lot in mobile phones, but we have to tell the whole truth, because GTK is the one most used in desktop applications which for me is the important thing, which is what most use GTK2 which is better than GTK3, since as you say it changes radically in each version, but GTK2 still has support and possibly more than GTK3 due to the applications that make use of them, such as Firefox for example.

        1.    x11tete11x said

          I respect Torvalds' opinion very much, but as he says, he is referring to incompetent programmers, even if he does not like C ++, if you have a C programmer who is an animal, by using C he will not create good programs, they will To continue being garbage, I also saw C, and had colleagues who could control things with a while, they controlled them with a for with a break inside ¬¬, which I am going to from my point of view, C is a great language but if there is a chuck programming behind it is the same as nothing.

          Regarding the interface, it is quite subjective. 90% of KDE applications can configure which buttons you want to be visible in the window, if you consider that there are unnecessary things, simply remove them and that's it.

          Regarding mobiles, although it is true that it is a Framework, there are many more people behind QT than gtk .. and the improvements with respect to OpenGL are constant, in short I like imperative languages, but I recognize that there are things that are a egg pain to make them in this type of languages, since there is the concept of object

          1.    kikee said

            - It is not that there are good programmers or not, it is that all things being equal (good programmer, good compiler, etc ..) C is capable of getting more performance than C ++, because it is the ideal mix between low-end language level and high-level language, of course programming in C is more difficult when designing interfaces for example, but it is the same as programming in assembler, it is more difficult but you get a lot of performance, that's why the Linux kernel does not have Not a single line of C ++, C and assembler are used for things like kernel boot.

            - I don't really understand the KDE interfaces, I mean, I take a program like brazier (GTK) and then another like K3B (QT) and if the K3B seems to me that the interface is very overloaded, full of buttons and options that are not used, then I can make the buttons and menus disappear by magic?

        2.    x11tete11x said

          Sorry I still don't understand why you get more performance, what do you base yourself on to say that? I agree that it depends on the compiler, all those things depend on how much code scheduling you do, even up to the GCC you can activate it as an experimental feature

          As for the interfaces, here is a cap of the one you mention, the K3B totally gutted (I took the panels outside simply to show that they can be removed or repositioned at ease and pleasure, another thing, they look dark because I'm not focusing on them (It is an effect of kwin)) and the toolbar you can also configure which buttons you want to be available

  13.   Djngo said

    As a former KDE programmer, I tell you that MOC IS NOT music on console, in this case. Regards.

    I guess you saw my comment on very linux and went to source to copypaste and translate with guugle.