22 Mar 2003 freetype   » (Master)

Life

I'm glad to announce that Mounira and I are the happy parents of a little angel called Lucie, since February the 26nd 2003 :-) She suffers from a small medical condition that prevented here from correctly breathing when she came; she was thus transfered in emergency to another hospital about 20 minutes following her birth, which was quite a shock to us. She's still in intensive care as I write now, but going much better now, and we're confident that we'll get her home at the end of next week.

Her breathing is now completely normal, in all positions, and we've been confirmed that she didn't lack oxygen at birth. Lucie cannot eat normally though, her tongue being a bit too small/backwards, so she only drinks about half of its milk bottles, the rest is given through a gastric tube and a pump. That was impressive the first time, but we're getting used to the idea right now. And we're still experimenting with custom feeders (pluckers ?). Very hopefully, her syndrome will completely disappear when shell' be one or two years old; she'll then be a perfectly normal baby, though will require a lot of extra care from us until then.

While this latest month has been very hard for us, we had the opportunity to reconsider a lot of our life choices, like the place/city we live in, our work and our hobbies. I still don't know if I'll have much time for open-source in the coming years...

FreeType

I have already announced to the FreeType mailing lists that it may be a good idea to find a new commited guru for the project, since "retirement" is a serious option for me right now. In the meantime, I'm trying to get 2.1.4 released as soon as possible, but small annoying bugs kept appearing lately :-). Hopefully, it's now a matter of days, if not hours. Should be a nice release in terms of features and rendering quality too.

X11/XFree86

I hadn't seen it coming, which isn't very surprising since I don't follow development of XFree86/Gnome/KDE very closely anyway. I really don't know what will come out of this, but here are a few random comments on the X11 and XFree86 situation:

  • Is X11 slow ?

    When it comes to bare rendering performance, that's certainly not true. However, my opinion is that when most users say that they feel that X11 apps are "slow", they really mean that the apps are a little bit too unresponsive for their taste, i.e. that they take too long to react to a single button click, or drag a window. We're speaking of latencies in the order of 1/10th of a second. That may seem short, but users are very sensitive to this, ask any Mac developper :-) I have no definitive answer on the subject, but I get the feeling that some of the design of X11 is here to blame: specifically, the fact that the window manager runs as an independent process makes several trivial operations a lot longer than necessary. For more details, I recommend reading Why X Is Not Our Ideal Window System. Notice that this document is 13 years old, but that few problems seem to have been even touched !.

  • Is X11 too old ?

    Maybe, maybe not, it really depends on what you want to do. As a matter of fact, all recent development on Gnome and KDE seem to focus on non-standard features of XFree86 that are not part of X11 itself, i.e. fontconfig, Xft1/2, Xr, RandR, etc... Apart from that X11's rendering model is very dated (logical operations like AND/XOR/OR on pixel values aren't exactly useful today, the client must handle many or all possible visuals which is just a royal pain in the ass), the font model is one of the most stupid engineering thing I've seen in my programming life (and I'm not even thinking about XLFD :-) I guess that if all you need is Xterm and Emacs, it doesn't sound so bad...

  • Is X11 bloated ?

    The core X11 protocol is relatively lean and mean, but a lot of things have been implemented either as extensions, or on top of it like ICCC (the specification that states how applications should interact with each other, like clipboard management).

    Optional extensions are a pain for developers, they require you to double some of your code, which requires double testing, double code paths, and double potential sources of subtle bugs in an asynchronous environment; this is however not the rule, since some extension writers have been intelligent enough to provide client-side libraries that perform this automatically in an intelligent way (think Xft2 which works with or without the RENDER extension on the server, which allows you to run your apps with anti-aliased text on stock Sun machines, even if slowly). I would thus not directly blame X11 for these "problems". However, a lot of these extensions should go and have nothing to do on a typical build of XFree86 on my Linux machine.

    The ICCC is a mess, but very fortunately most of it can be ignored by applications, or simply abstracted. I wouldn't be surprised if advances performed by Free Desktop would make it irrelevant in a relatively near future.

  • Can DirectFB/Snap/Whatever replace X11 ?

    They're different things. DirectFB, Snap, GGI and many other things are really APIs to access the graphics hardware on a given machine through a unified API that is rich enough to enable advanced features like alpha composition, or video overlay; some of them even support hardware double and triplle buffering, as well as VSYNC synchronisation !. You can perfectly build a conformant (i.e. network-enabled) X11 server on top of them (e.g. XDirectFB), just like you can build a X11 server on top of the Win32 GDI or many other graphics APIs. Even extensions like RENDER and RandR can be implemented as long as the protocol is sufficiently clear.

    What's at stake here is to determine who controls the graphics hardware on a Unix workstation. The current state of the art for Linux and FreeBSD is that XFree86 controls anything, all other projects be damned. That has been understandable for some time, since X11 was the only "real" graphics interface for Unix for a long time. However, many people are seeing its limitations and can't stand them anymore, they're thus willing to experiment with different schemes to get the best possible performance for the kind of uses they envision.

    One good, but too unheard, example would be the still unfinished E17 whose Canvas can speak directly to OpenGL, literally smoking X11 in all tests while providing smooth alpha blending at all levels.

    There are very little reasons why XFree86 couldn't run well on top of a good accelerated graphics API which would allow to share the hardware with other applications and graphics system. Apple just did it with their own blend of XFree86 that runs on top of Quartz, this even allows you to "genie" X11 windows, since everything is stored in an OpenGL surface anyway. And why can't I run games in full-screen on most Linux installations I've tried ?

    Of course, this would go against the control-freak nature of the XFree86 core team which seems to believe that you must control the hardware to make a good X11 server.

I really wonder who's gonna control the hardware on my machines in the coming years. How well, this is long, maybe I should have started an article :-)

Latest blog entries     Older blog entries

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!