On how GUI toolkits need more than a good language to be great

A few days ago I was pointed to this very interesting post from an Apple engineer who had jumped off the Java bandwagon after getting a peek of Cocoa.

One could think that Java being more advanced that Objective C (though perhaps not in all areas), such a move would be foolish, but I’m pretty sure there were more than a few nods among his readers on this one.

Building a good GUI toolkit is a craft of its own, and requires much more than just a good language. I like Java (even though I find it somewhat boring), but it’s a shame that Swing would be such clumsy a tool to build apps with. The toolkit I know the most is Qt, and even though it’s based on probably the most intricate language in common use today (C++), I still think that it kicks Swing’s butt in term productivity.

I suppose anyone who has used Swing long enough has his own list of its biggest annoyances. Mine is limited to layouts and the pervasive use of listeners (or more precisely the need to implement an interface or derive a class just to handle a frickin’ UI event). I guess this is because Qt is particularly more convenient than Swing in these specific areas. Layouts are hard to do, that’s understood. The ones offered with Swing have the fundamental problem that none of them is really that good out of the box, and always requires extensive tweaking. The obvious use is never the right one. Listeners, however, stem from another design mistake : preferring a “clean” API over a convenient one, or more generally, enforcing a principle to the point that it becomes a dogma and is no longer connected to reality. I can’t think of a better way to turn a something that’s meant to help into just the opposite.

Swing declares that everything should fit some OO design. Qt recognizes that listeners are a feature in itself, and implements it at the language level instead (at the price of a meta compiler). Note that Qt also has event handling based on overriding virtual methods, like in Swing. However this is limited to events generated by the graphic system (widget hide/expose, mouse button or key press), because these need to be processed quickly. But user interactions on widgets (a checkbox has been toggled, an item in a list has been selected, etc…) go through Qt’s signal/slot mechanism, which is much more practical. It has two big advantages : requiring much less code and making loose-coupling between the event emitted and the object processing it much easier. It somehow lets C++ make a tiny step into the realm of weak-typed languages like Python or Ruby. When you write

connect(myButton, SIGNAL(clicked()), thehandler, SLOT(wasClicked()))

no check is made at compile time that ‘thehandler’ actually has a ‘wasClicked()’ method. This might sound strange, but it’s actually quite convenient on several ways. For one, it opens a whole realm of runtime fiddlings. It also means that at this stage, ‘thehandler’ needs only to be defined as a QObject. No need to #include its whole class declaration, thus less dependencies.

So there you have it : a toolkit committing a cardinal sin against the language it’s based on, adding something which OO designers would probably frown upon, all for the sake of convenience. And it works.

On the contrary, by enforcing an API to follow a design paradigm consistently all throughout, disregarding the practical problems it inevitably raises, you turn it into something which will be more easily read (or written) by the machine than by the programmer.

e-paper is coming ? (really ?)

After dozens of “real soon now” false alarms, may be e-paper is finally coming around. One of the consequences should be that book editors will join the MPAA and RIAA (and their siblings from other countries) in the Great Big Fight Against Piracy, as ebook readers become a common product.

Contrary to music and movies, where what broke the scarcity wall was the advent of Net connections and machines with the capacity to handle such large files, thus enabling people to distribute them easily, ebooks are waiting for a device to display them. Distributing them is a long-solved problem, given how small the files are, but people still rarely do it. What they need is something which is as practical to handle as a bunch of paper sheets, and with a reasonably good DPI resolution so it’s comfortable enough to read for long periods of time.

Of course, one could argue that the other main reason for people not being more interested in ebooks is that people read less than they listen to music, watch movies or play videogames. Who knows, may be ebooks will spur a return of reading as a leisure :-).

social networking galore

Yesterday, at the suggestion of a former colleague, I’ve opened an account on linkedin. I used to have one on Orkut, but I closed it a while ago (after months of not using it at all) just so that it would stop bothering me with mail alerts telling me someone had sent me an invitation/message/note/whatever, especially since all of these were in portugese or spanish, neither of which I speak. Anyway, linkedin’s business orientation could prove useful these days where I’m looking for a job, but also it’s rather well done (unlike Orkut, which Google probably bought on an impulse because it was hanging next to the cashier’s desk at the Startuporama supermarket – “social network ? oooh, gotta have one of these”) and quite populated. Given that this is yet another “winner-takes-all” kind of market, I think they could get the lead in this section (the non-business-oriented one going to myspace, of course).

It would be a good thing if some of all these sites could merge and turn down the redundancy, but before that happens, this blog entry from Guy Kawasaki got me thinking : do I even have the time (ok, the will) do take such extensive care of my linkedin profile ? Clearly no, and most probably so do a lot of people. Hence I’m going to risk myself at predicting the future (something I’m always very wary of) : before long, all these fun little companies which you can pay to get them build your website and generally make yourself web-visible will also offer services to create you a spiffy profile on any of those social networks. Said networks are, after all, little self-contained versions of the WWW, profiles being homepages and connections being the equivalent of hyperlinks.


So DRMs are dying. Gee, how surprising.

More and more music vendors are giving them up or at least seriously considering the possibility (EMI, VirginMusic, Yahoo, the FNAC here in France). All those years to realize a basic principle of marketing : convenience of service sells. DRMs are the digital equivalent to a public swimming pool owner laying shards of broken glass all around it and forcing the customers to purchase special protecting shoes to access the pool in order to limit fradulent bathing.

Actually they are also the only way the market can “create” scarcity where there is inherently none, because the market as we know it doesn’t work well on abundance yet, but that’s a whole other subject.

Also, regarding the fact that Apple would be the main proponent of DRMs, this isn’t the case. ITunes has DRMs only because it was the only way music majors would grant it access to their catalogue, but Jobs is quite aware of the futility of the whole thing. Quoted from this interview in Rolling Stone magazine :

When we first went to talk to these record companies — you know, it was a while ago. It took us 18 months. And at first we said: None of this technology that you’re talking about’s gonna work. We have Ph.D.’s here, that know the stuff cold, and we don’t believe it’s possible to protect digital content

So itunes DRMs scheme is basically Jobs saying to the majors “yeah yeah, we’re protecting these songs”, in the same way a developer tells his PHB “yeah yeah, we’re <buzzword>-compliant” (which really means “I’m giving you this biscuit so you stop nagging me about things you don’t understand, now go away”). But notice that Apple pretty much never raised a finger against the DRM-unlocking programs which are circulating for itunes, and it’s always been pretty trivial to work around (just burn the song to an audio CD and rip it). I wouldn’t be surprised that itunes will drop DRMs as soon as the music majors stop imposing them.

[add. jan. 23rd 2007 : the MIDEM is confirming the trend]

[add. feb. 7th 2007 : more in this other post]

3rd post : the iphone

‘kay, gotta talk about something a bit more current.

Beyond the huge buzz this baby has created, it’s been long since a device has generated this kind of geek lust. Pretty much everybody I know wants one. That doesn’t mean much, everybody I knew back then wanted a BeBox too. OK, I’m screwing around here, Be never had a chance from the start. If a large company had introduced the BeBox, that would have been another story.

Anyway, some random thoughts :

  • the price : doesn’t seem that excessive to me, that’s what I paid for my Treo 600 2 years ago
  • said Treo looked desperately outfashioned, obsolete, OLD, the minute I saw it featured along with the Blackberry and other smartphones against the iphone during the keynote. Seriously, never before have I seen a piece of hardware go from “a bit used, but still current” to “paperweight” in an instant, right in front of my eyes. Creepy.
  • the touchscreen. I’ll have to try it before I get an opinion on this one. The Treo keyboard is adequate, I don’t think I’ve ever used a touchscreen as a keyboard for any kind of prolonged use before. You might ask, do people really go into hour-long texting/mailing sessions often anyway ? It seems the answer is affirmative. I trust Apple to have given this one some careful thought, though.

One more thing… Enough with the ‘iphone shuffle’ jokes already :-).

First post, first rant :-p

(actually recycling a recent article of mine, but I guess blogs are the default channel for those nowadays, so here goes)

This blurb is meant as a quick answer to ERS’s World Domination 201. It’s christmas so I figure I can indulge myself a little.

So you really still expect Linux to take over the Desktop someday ?

Let’s make a quick check of some of ESR’s previous predictions : “I now think that Microsoft monopoly is going to collapse for other reasons in the near future.”, back in 2000. And “When the price of a PC falls below $350, Microsoft will no longer be viable,”, in 2002.

Anyway, in my opinion, here’s what it would take for it to happen :

  • convince the Gnome people that an alternative between “OO in C” and more or less complete wrappers over OO in C (which you’ll still be confronted to when debugging) aren’t that attractive as a development framework these days. Even though it might come as a shock to some. Pull the plug on Gnome, it’s served its purpose as a magnet for naive coders who actually thought that OO is just syntactic sugar back in the we’re-the-best-cause-we’re-free-software-hackers bubble days, while KDE went ahead and actually implemented Miguel’s vision of a consistent desktop made with reusable components. Except without the CORBA fluff.
  • convince the KDE people that, yes, you can live without dozens of customization options. More specifically, convince some KDE people that, yes, you can live without this particular customization which you were so adamant about.
  • get a large company (the only one I can think of is IBM) to hire about 100 of the most active KDE developpers, the Gnome usability team, and a bunch of tech writers. Put them in a Googleplex-like building (top-notch workstations, 24″ screens, comfortable chairs, free food, nap rooms), give them good project managers, and let them carry on. Start with polishing and documenting the KDE4 API, though, so 3rd party app writers will actually feel like that can do something with this environment. It won’t be as advanced as .NET or Cocoa, but it will do for now.
  • pour money in Mono, get them to ditch GTK for Qt, make them getting Winforms up to date to be their first priority. Make C# a first choice for KDE development (that will take a while).
  • ignore anyone who argues about how having multiple desktop environments is good because competition will sort the natural winner out (‘been years and counting… anyone still believes this ?), and who claims he really can’t be as productive under any environment other than his own little heavily customized pet environment which nobody but him can use. In fact, ignore anyone who’s never done serious work in building a real end-user linux application.

More seriously, we’re stuck for the forseeable future with divided, ego-driven efforts, because

  • the idea that everyone should fork or write his own project and let the users decide rather than trying to collaborate to an existing one is deemed a good thing, since choice is always good, and the users will decide what’s best, right ? Well, no, piling indulging everybody’s selfishness, ego-trip and itch-scratching does not result in common good. I very much believe that this part of the Open Source paradigm was more driven by ESR’s political opinions that by actual reason [1].
  • Open Source / Free Software works mostly as a distribution principle. But, as a community, we next to impossible to deliver a finished end-user product, not without the help of a corporate environment, i.e. paid people working full-time, preferably all in the same building, and some sort of management, even if minimal.

1 : which brings a funny paradox, in that OSS is often seen as being anti-capitalistic as opposed to the software industry, more specifically Microsoft, but at the project level, MS is the rigid communist one while OSS is the free-market contender – it’s easy to see that, in all cases, any paradigm fails when erected as a dogma in spite of reality)