espenr
Qt
Posted by espenr
 in Qt
 on Monday, August 29, 2005 @ 14:16

With Qt 4.0.0 and 4.0.1 out it’s time to turn our attention back to the Qt 3.3.x series. We still support it you know :) (for another two years) which basically mean we will continue putting out patch releases about every half a year or so.

The past week we’ve focused only on 3.3.5 and been able to kill over 200 first and second priority tasks. Thats pretty good if you ask me :) So now we are focusing on testing the packages and making sure they’re all good - so it shouldn’t be too long now.

And if anyone wonders, all the fixes we do for the Qt 3.3.x branch is also fixed for Qt3Support for Qt 4 - so as much as possible Qt 3.3.x and Qt3Support will behave in the exact same way.

eskil
Qt
QSA
Posted by eskil
 in Qt, QSA
 on Wednesday, August 24, 2005 @ 08:57

QSA 1.2.0 and 1.1.3 were both released on friday, so I sat down and did some informal benchmarking (note the word informal, which basically indicates that the computer was playing music in the background while the tests were running.)

The benchmarks consisted of a set of generated scripts, designed to test parsing speed, as well as the execution speed, of certain basic language features (such as function calls, loops, dynamically declaring properties, comparisons, conditional blocks, dynamic type conversion and some arithmetic operations.) Since the generated scripts did nothing useful, I also threw in a small sqrt script to verify the speed of non-pointless code as well.

The timing is based on the high resolution performance counter in my work station, and I’ve arranged the results from longest execution time to shortest.

  • Parsing and executing a huge script: QSA 1.2.0 finished in 0.12 the time it took QSA 1.1.3 to finish.
  • Parsing and executing a big script (big := huge / 2): QSA 1.2.0 finished in 0.19 the time it took QSA 1.1.3
  • Just parsing the same big script: QSA 1.2.0 finished in 0.52 the time it took QSA 1.1.3 to finish.
  • Finding the square root of a big number: QSA 1.2.0 finished in 0.6 the time of QSA 1.1.3
  • The conclusion is: QSA 1.2.0 is faster.

    Also, the parts of the engine that were tested are essentially identical in the two versions of QSA, except that the 1.2.0 uses the Qt 4 API rather than the Qt 3 API.

    Hence, Qt 4 is faster; a port of QSA from Qt 3 to Qt 4 gave us a potential performance benefit of up to eighy-eight percent and probably more, and we didn’t have to alter almost any of the logic. Everybody needs to do that dance now.

    harald
    KDE
    Posted by harald
     in KDE
     on Wednesday, August 17, 2005 @ 14:12

    We finally comitted the results of the first KDevelop Conference to the kde svn (branches/work/kdevelop4-merge). This is a port of the core modules to Qt 4 including some major cleanups. Highlights are the composite item model and the filter model. They allow us to manage all kinds of data (classes, files, etc) and to perform actions like filtering or sorting without much hassle. More changes to appear at the aKademy meeting this year.

    lars
    Uncategorized
    KDE
    Posted by lars
     in Uncategorized, KDE
     on Friday, August 12, 2005 @ 12:32

    I’m currently enjoying a three week vacation for the most wonderful of reasons. My wife gave birth to our daughter, Sarah, the 1st of August. After sleeping most of the time for the first 1 1/2 weeks she is now starting to be more awake every day. After some tiring first days our life is now slowly settling in again, and both Isabel and myself now can’t imagine a life without her anymore.

    Sarah, 1 day old

    The last few days I have started to find a little bit of time again and wanted to start working on some fun stuff (no Qt work, I’m on vacations… ;-). Unfortunately the first thing that happened was that the hard disk of my laptop broke and I spend the last two days reinstalling everything :/

    At least the laptop is working again now, and I’ll probably have a look into some X11 stuff during the next week.

    I don’t want to leave Isabel alone with Sarah just yet. So I won’t be able to make it to Malaga this year. It’s the first time in 5 or 6 years that I will miss a KDE meeting. But I promise to be back next time ;-)

    ettrich
    KDE
    Posted by ettrich
     in KDE
     on Wednesday, August 10, 2005 @ 23:10

    Lately I got involved in a longish discussion on IRC around application names and how to present them. A prominent spot is of course the K-Menu, but there are others: the title and task bar, the documentation, the about box, and various context menus (as in “Open with ….”).

    At some point in time, KDE used to only show application names, and some generic names for operations like “Find Files”, “Run Command”, etc. When we got more and more applications, those menus became very cryptic. This has to do with the way we picked application names. Essentially we created executable names by abbreviating what the program was supposed to do, and then added the k prefix. Then we took the executable name, upper-cased the first letter of every part, and so deducted the application name. A typical but not uncommon example is “KRegExpEditor”.

    Since users were not too comfortable with names that looked like C++ classes, we added the concept of a generic name, in our UI referred to as description. For the K-Menu today, we offer the user three choices: “Name”, “Name (Description)”, and “Description (Name)”.

    To pick a real example, you can choose between “KWifiManager”, “KWifiManager (Wireless Lan Manager)”, or “Wireless Lan Manager (KWifiManager)”.

    SuSE goes further. They have a menu system that shows only the description as long as only one application of its kind is installed. The moment you install a second application, this description turns into a submenu which contains the “Name (Description)” entry shown before.

    Example: normally you have an entry “Chat” under “Internet”. If you click on it, it will run kopete. If you don’t like kopete as IRC client, you install ksirc as well. This turns “Chat” into a submenu with two entries “IRC client (KSirc)” and “Instant Messenger (Kopete)”.

    So what’s the problem?

    I see two problems with our current approach. First, the menus are not very readable. Second, the generic names prevent us from picking really good descriptive names. Have a look at the following two screenshots to see what I mean:


    http://shots.osdir.com/slideshows/slideshow.php?release=234&slide=5

    http://shots.osdir.com/slideshows/slideshow.php?release=286&slide=29

    Generic names are not a solution, they are are a hack around bad application names. Ironically they also make good looking, descriptive names look bad, because those are likely to duplicate elements of the generic name, thus when presented together with the generic name, the menu item looks even worse. And when you launch an application with the generic name only, how do you recognize the window in the taskbar (it shows the name), or talk about the application, or look it up in the documentation? And when you install a different set of applications (e.g. because you want to try out the other desktop), you have several applications with the same name. Under Multimedia/CD/DVD Burning you will get two applications that claim to do the job, none of which is marked to be the KDE application. The only hint is the “(k3b)” suffix.

    For those interested in further reading, here’s a discussion on the the use of generic names from last year

    http://www.gnome.org/~clarkbw/blog/GNOME/Fear_and_Loathing_in__desktop

    and an interesting response dubbed “Generic Names Considered Harmful”

    http://blogs.gnome.org/view/shaunm/2004/7

    So what’s the solution?

    The initial problem was bad names. We tried to solve it by introducing generic names that potentially apply to many applications. What if we fix the root of the evil instead and give our applications good descriptive names? This is something all application maintainers have to contribute to, we can’t just have someone going through the repository and renaming things.

    What’s a good descriptive name? A combination of the name and the function of an application. Why is this supposed to be better than “Description (Name)”? Because it will be shown and used everywhere where the application is referred to, it’s better readable (no parentheses), and it avoids the duplication between description and name that we see so often nowadays.

    Here are some examples, they might not be perfect, but they can give you an idea:

    Web Browser (Konqueror) => Konqueror Web Browser
    PalmPilot Tool (KPilot) => KDE Palm Pilot Tool
    Popup Notes (KNotes) => KDE Popup Notes
    HTML Image Map Editor (KImageMapEditor) => KDE Image Map Editor
    IRC Client (KSirc) => KDE IRC Client
    Instant Messenger (Kopete) => Kopete Instant Messenger
    KDevelop => KDevelop IDE
    CVS Fontend (Cervisia) => Cervisia CVS Frontend
    Personal Information Manager (Kontact) => Kontact Personal Information Suite
    CD/DVD Burning (K3b) => K3B CD/DVD Burning
    Sound Mixer (KMix) => KDE Sound Mixer

    and so on.

    We would end up with many KDE-prefixed names, and that’s OK. If you show those applications inside Gnome or XFCE, you probably want to see what is a KDE application and what is not. In KDE itself, we don’t have to show the KDE prefix, we could just drop it, or indicate it with an icon or the kind of icon that the application gets. If we happen to have more than one application that fights for the same “KDE Foo” name, we will have means to solve that conflict, like we solve other conflicts in the KDE community. Judging from going briefly through the list of applications we have today, there won’t be too many conflicts.

    Summary

    Please, let us get rid of parentheses in menus, and please give your KDE applications descriptive names.

    Andreas
    Qt
    Posted by Andreas
     in Qt
     on Wednesday, August 10, 2005 @ 13:49

    As some of you might have noticed, XEmbed is merged into Qt 4 with the classes QX11EmbedContainer and QX11EmbedWidget. :-) The Qt 3 classes are still part of Qt Solutions (QtXEmbed), but they are free for download (GPL).

    Bradley Hughes and I put in some effort to beef up the implementation a bit, and besides a couple of quirks we’re still working on, the XEmbed classes mostly implement a complete window manager now. That means that we properly handle both XEmbed and non-XEmbed widgets with respect to focus and keyboard input, size hints etc.. Pretty cool! We still have some work to do on accelerator support and a couple of bugs, though.. I put together a test app for doing basic focus testing, and ended up with this stuff:

    XEmbed embedding xemacs and mplayer
    Click here for a 1:1 screen shot.

    That’s emacs with my cheezy wheat-colored background, and mplayer’s embedded in the window below (Jean Claude!). The cool thing is that although neither emacs nor mplayer support XEmbed, keyboard focus works fine (need to click-to-focus to get focus into mplayer, though). Shortcuts are forwarded straight to emacs so it’s quite usable. And you can skip frames in the mplayer window.

    Get the sources for the app here (works fine with 4.0.0, but the latest fixes are in the soon-to-be-released 4.0.1). And btw, all fixes in the Qt 4 classes are backported to the Qt 3 classes, so they’ll be made available in the next Solutions release.

    lorn
    Uncategorized
    Posted by lorn
     in Uncategorized
     on Wednesday, August 10, 2005 @ 06:44

    Won’t be long now till the worlds next american/australian minitroll emerges out of it’s space capsule.

    waiting… waiting… waiting…

    Comments Off
    lorn
    Qt
    KDE
    Posted by lorn
     in Qt, KDE
     on Saturday, August 06, 2005 @ 19:52

    Eric Laffoon of Kdewebdev fame responds to Timothy R. Butler’s piece about KDE needing to move beyond Qt. I just had to post about this.
    Thank you, Eric, for expressing this so well.
    Qt, the GPL, Business and Freedom

    Some of his better comments:

    “I have a problem with attempts to depreciate the value of the GPL or arguments that there is a problem with Qt because businesses cannot write closed source software with it for free. Is commercial closed source software essential for Linux success? Is that what we’re about now? ”

    “There used to be an argument against Qt for not being GPL, then for not offering unrestricted free software development on Windows. As of Qt 4 the GPL license applies to Linux, Mac and Windows. The only thing left to attack Qt on is that it’s not free for commercial use… Never mind that it’s a poor argument and that the objective of FOSS has never been to support corporate welfare for commercial projects.”

    “Why are open source supporters against a company like Trolltech which has GPL’d their key product? One can hope reason will prevail. Sadly, for some, zealotry will trump any reasoning.”

    ettrich
    KDE
    Posted by ettrich
     in KDE
     on Wednesday, August 03, 2005 @ 22:20

    There has been a lot of focus on the desktop lately, and how the desktop should evolve. Rephrasing the questions: what can/should/might KDE 4 become? There are many good ideas out there, some of which I hope will get implemented. But there’s also things I miss in the current debate, things that deal with the fundamentals of desktop computing. What a splendid opportunity to write my first blog entry, I thought, and so I did.

    Some background for this article: I had the opportunity to observe an untrained desktop computer user doing real work using KDE 3.4 and Open Office. I also had the possibility to make suggestions to the workflow. The task was straight forward: Someone was sending dozens of doc files as e-mail attachment, and expected translations back. As easy the task sounds, I was surprised about the challenges that desktop computer users do face. I believe I learned valuable lessons from combining that experience with prior observations, and I would like to share my thoughts with you. In case you are a KDE developer who hasn’t yet had a chance to spend some time watching non-techie users using computers, please try to. It’s worth it, and it’s fun, no matter what desktop system they are using, KDE, Windows or Mac OS X. Watching real users doing real work on real computers is likely the best way to gain the experience necessary to create the next generation desktop system. I don’t want to read a manual before using a mobile phone, or operating a DVD player, and I don’t have to. Sending an email, receiving some files, translating them and sending them back is in the same league of complexity, and it shouldn’t require extensive training, or the need to understand how the system works under the hood.

    Window management

    Nobody likes to do window management. Wirth was right, although few people believed him when he designed Oberon. Users seem to go a long way to avoid having to adjust a windows position or size manually. This isn’t just untrained users, this is everybody. You can observe the same patterns on hackers everywhere. They sit in front of 20″ screens staring at a 1600×1200 background image and then typing commands in an 80×25 text window with a tiny font, having to scroll up and down all the time to read the output. It takes significant pain before someone actually uses the mouse to maximize the window vertically, or puts it to a more central spot on the screen. The same happens with other users. They go a long way scrolling around in a tiny file manager window before they might decide to make the window larger.

    Lesson learned: the ideal window manager is the one that you don’t use at all. This needs support from the applications. Applications don’t normally start up with a sane size. Maximizing isn’t always the solution, especially because the most often used applications don’t work very well when being maximized, among them web browsers, consoles, plain text editors (think an email composer). Every application that does line breaks based on the window width has this problem.

    Another problem with window management today are secondary windows, also called dialogs. In KDE, we try hard to bind those closer to the application main window. For example, a dialog doesn’t have its own entry in the taskbar; when you raise a task, its dialogs are kept above the application main window; when you minimize a task, you also minimize its dialogs. But the connection isn’t perfect. While dialogs are placed in the middle of their main windows, they don’t adjust position and size when you resize or move the main window. And when you try to activate a modally shadowed main window, the only visual clue you get is that nothing happens. Ideally, dialogs and other stand-alone secondary toplevel windows should go away for standard end-user applications. Having things like Apple’s sheets and drawers that naturally extend and modify the main window itself feels more natural, more elegant and avoids confusion.

    Configurability

    What I said about window management also applies to configuration. Nobody likes to configure anything. Sometimes people like to customize something, but that’s different. Customization means giving the computer a personal touch, with colors, images, or sounds. Changing the computer’s behaviour is entirely different. Configurability is costly, because it’s code that must be maintained, and it’s getting harder and harder to test all combinations. Even KDE’s own file dialog doesn’t work properly with all the 6 different completion modes that KDE offers for combo boxes. In DropDownList mode, you can no longer navigate with the keyboard to sub directories. Likely an easy bug to fix, but that’s not the point. The point is that with all that configurability, even a community that diverse and large as KDE’s cannot ensure basic functionality working in all modes. KDE 4 is our chance to get rid of all that clutter, I hope we make use of it. “Those who write the code, decide” is a good rule, but it only works if there is a strong maintainer or group of maintainers with a clear and aligned vision. Many parts of the KDE had this, others didn’t. And that’s where we see the issues today.

    File manager

    Konqueror today is a swiss army knife. That’s cool, people like swiss army knifes. I used to have one, too, and I loved the engineering behind it. Putting so much functionality in one single device is admirable. But I never used it unless I absolutely had to. At the campfire I had to, and I was happy to have it. At home or in my kitchen, I don’t have to. Instead I use whatever knife, screwdriver, or other tool that fits best for the job.

    A document manager is not a webbrowser is not a text editor is not an image viewer is not a console is not a trash bin. Profiles are a way around it, but not the solution. Profiles are just like opened swiss army knifes. It’s like buying 4 swiss army knifes and having one lying around as a knife, one as a saw, one as a screwdriver, and one as scissors. Whatever you do to them, they are still swiss army knifes. They can magically convert into something else, and they will if you do something to them.

    I get the feeling we do embedding and morphing not because its useful, but because we can. And we are ignoring its downsides. And the biggest downside in my opinion is that it takes mindshare away from dedicated applications which would do the job better.

    A little example: you have a browser window that covers 40% of your screen, it contains pictures that you have taken over the weekend. You want to show them to someone else. In KDE today you would probably find an empty spot on the icon view, and then select Preview_In/Photobook. Or you are one of the few chosen ones that know the icon on the toolbar. What you then get is a fairly good embedded image viewer, but it’s still only an embedded image viewer. And it’s only using 40% of your screen. You can then maximize the window, or - if you are an expert power user - select Settings/Full_Screen_Mode. I found it after looking under “Window” and “View” first, by accident. But even then you don’t see any image in full size, you see Konqueror in full size. You still see the side bar, the navigation bar, and a tool bar. Here’s how it should be (and surprisingly this is also how Windows Vista works): Having images in folder results in little button that says “View slideshow”. You click it, you get a full screen viewer that shows your images. Simply, intuitive, what you want, what you expect, and no window management action required.

    Konqueror’s future is being a dedicated web browser. What KDE needs in addition is a dedicated document manager. Great preview capabilities, yes, embedding, no. Konqueror is not a document manager, it’s a generic tree structure browser. And if all you have is a tree structure, everything looks like a kio-slave. Our trash bin in KDE 3.4 is a nice example for that rule: it’s a full blown browser window that uses the trash:// protocol. And the one main operation that you want to do with a trash bin (emptying it) is only available in the context menu of the icon, or the free space in between the items. Who is supposed to find that?!

    I’ve been discussing design ideas with Zack and Simon, and hopefully we are able to present a prototype of how a modern file manager for KDE 4 could look like. And if that’s done properly, the desktop itself should probably be such a view. Today the desktop is a set of links that show huge tooltips with interesting contents like “myComputer.desktop is a Desktop Config File that is 170B large, owned by ettrich - users with -rw-r-r– and points to media://”. Thanks for letting me know…

    A nifty feature I’d like to see in a file manager is that it shows me when I’m visiting a document currently. And while being at it, single click for opening documents is wrong. Initially I thought it was a good idea, too, but after having tried to use it for a while, I changed my mind. Unless I’m the only one who constantly starts applications by accident when I want to move files around, or delete them.

    I’m looking forward to aKademy, to heated discussions, and even hotter coding sessions!