X at OLS
Keith Packard's talk had to do with separating the X server from the
hardware. X currently does all kinds of interesting things, from direct
programming of video modes through to remapping the PCI bus (to get around
interesting BIOS behavior), scary DMA operations from user mode, direct
interpretation of mouse events, and no end of user-space busy-waiting.
There are all kinds of unfortunate side effects from this behavior;
remapping the PCI bus and attempting DMA from user mode can bring down the
whole system without much trouble. X's busy-waiting behavior leads, among
other things, to poor interaction with the scheduler, which sees X as a CPU
hog process whose priority should be lowered. Things would improve greatly
if X did not get its hands quite so dirty with the hardware.
Interestingly, Keith blames himself for much of the current situation. Very early X11 implementations dealt with the operating system for their frame buffer access. Then Sun came out with a closed video adaptor which required some user-space tweaking; Keith duly hacked this up. More closed hardware came out, making the problem worse. Things led to the current situation, where X knows all about the hardware, deals with it at a very low level, and occasionally lets things go wrong in spectacular ways.
Things are, says Keith, starting to get better. The direct rendering infrastructure (DRI) is "a glimmer of sanity"; it returns DMA and interrupt handling to the kernel. The kernel frame buffer subsystem has helped to move hardware detection and mode selection back into the kernel. And /dev/input has gotten X out of the business of directly interpreting mouse sequences and trying to figure out which protocol is in use; the input subsystem also allows marking input events with proper, accurate timestamps, which is important to many applications. The input subsystem is still not perfect, however, especially on multi-head systems: there is no easy way to associate input devices with specific displays.
The process of separating X from the hardware needs to continue, however. X is still often in the business of configuring video modes, which is a complex and unforgiving task. "Everybody just hopes that X gets it right." This task should be moved out of X, and into some appropriate combination of kernel and user-space code. Keith's vision goes beyond mode selection, though; he would eventually like to see the X server using GL to speak with the hardware. Turning X into a GL client would make proper 3D support easier, would further separate X from the hardware, and would give hardware vendors a single set of drivers to write.
A huge remaining issue with the hardware side of X is hotplug monitors. The assumption that the available screens will never change is wired very deeply into the X server, and will not be easy to root out. But this work must be done; people are increasingly wanting to, for example, plug their laptop into different projectors from one day to the next, and it would be nice if it actually worked.
Jim Gettys's talk covered just about every aspect of the window system - and most of those are currently in flux. The fork in X development, which saw almost all of the XFree86 developers moving over to X.org, has revitalized development in a number of ways. Many longstanding problems are being addressed, and lots of new ideas are being kicked around.
Jim started with a list of current issues with X:
- The X font architecture, as originally designed, was terminally
broken.
- The internal 2D graphics engine was poor; the plan from the beginning
had been to replace it quickly. Once again, we see how "temporary"
code can stay with us for decades.
- For various reasons, screen magnifiers and other accessibility aids
are very hard to implement.
- X needs better "eye candy" support: translucent graphics, drop
shadows, etc. Competing window systems (OS X, Longhorn) are
raising the bar in this area, and X needs to stay up with them - if
not ahead.
- Three-dimensional graphics are increasingly commonplace, and must be
properly supported.
- Shared use of X (shared projector walls were an example that came up repeatedly) is poorly supported currently.
Anybody who has worked with X in any depth knows that its font mechanism has not aged well. What is happening now is that fonts are, increasingly, the responsibility of the client; the centralized font engine model has failed. This is, says Jim, the biggest single architectural change happening with X. Putting font support in the clients allows quicker distribution of new technologies; Jim notes that there have been five generations of font formats so far during the lifetime of X, and there is no reason to expect things to slow down. Any change which requires X server support cannot expect to see widespread deployment for at least two years; client-side changes can propagate much more quickly.
One of the reasons for putting font support in the X server initially was to keep bandwidth usage down. As it turns out, moving font support into the clients has left bandwidth usage almost unchanged, but has eliminated about 1/4 of the round trips to the server during application startup. Anybody who has ever run an X application over a high-latency link knows that those round trips hurt; eliminating them can only be a good thing.
Jim noted some lessons which come from the font experience. One is that downward compatibility is absolutely necessary. New technologies (such as newer font schemes) only became accepted when libraries were provided to make them work with older servers. No developer is interested in adopting technologies which restrict the distribution of their applications. It is also necessary to solve the full problem; in the case of fonts, that means solving the problem for printing as well. With that in place, "even OpenOffice" is moving over to the new font code.
Next point: eye candy is important. To a great extent, "eye candy" means translucent windows in one form or another. The real use for translucence is likely to be in window managers; once the new capabilities become available, Jim expects yet another round of window manager experimentation. "Another thousand flowers will bloom; many of them will stink." But what survives will enrich the graphical experience for all of us.
Keith took the stage for one of his famous demonstrations. His desktop is looking better all the time, with menus fading in and out and extensive (some might say excessive) use of translucence everywhere. He pointed out that translucence is a pixel-by-pixel property. He runs an xterm with a translucent background, but the text is opaque, and casts solid shadows. High bandwidth applications, such as full-motion video, run in a translucent mode with no apparent performance problems - on a fast laptop, anyway.
"Eye candy" also means tools like screen magnifiers (which keep up in real time) for people who have a hard time reading the screen's contents. "Thumbnailers" (such as those often used for virtual desktops) will also benefit from this work. Animation needs better support, and X needs better integration into three-dimensional environments. "We live in a 3D world, perhaps our work environments should be 3D as well." Eliminating "flashing" (making desktop updates look nice) is also an important goal.
All of this is happening, in classic computer science manner, through the addition of another level of indirection. X applications have typically rendered their graphics directly into the frame buffer, unless they made explicit use of off-screen pixmaps. In the new world, all rendering will happen into off-screen memory. A new "compositing manager," which typically works in conjunction with the window manager, renders the off-screen windows onto the display, perhaps transforming them along the way. It is this process which, for example, causes a newly maximized window to fade, fully rendered, onto the screen, rather than just flashing up blank and being redrawn in place. The policy for when and how such effects should be used lives entirely within the compositing manager.
To accomplish all of this, four new extensions have been added to the X protocol. "XFixes" is a sort of repository for minor repairs for things that were done wrong in the original protocol. Among other things, XFixes promotes Regions to a first-class X protocol object. The "Damage" extension allows X clients to be notified when the contents of windows changes; it can be used by the compositing manager, screen magnifiers, thumbnailers, and any other process which needs to know when things happen. Interestingly, the Damage extension actually shrinks the size of the X server; a sign, according to Jim, of something that should have been done that way from the beginning. The "Composite" extension handles the off-screen rendering of windows and the interactions with the compositing manager. And "Xevie" allows the interception of input events; it is used both for compositing (where event locations may have to be transformed on their way to the client) and for accessibility functions.
The latency issue is on the X developers' minds. X client startup can be slow, especially on high-latency links. This slowness is caused by the large number of round trips required between the client and the server during initialization. Client-side fonts eliminated 25% of those, but, for a typical client, some 130 round trips still need to happen before any actual work can get done. Jim believes that 90% of those can be eliminated; some will be harder than others. One of the biggest remaining offenders, it turns out, is X extensions; apparently an "Extension extension" may be required to batch together extension information.
In the 2D world, the Cairo library, by Carl Worth and Keith Packard, is starting to come into use. This engine, says Jim, brings "world-class, two-dimensional, anti-aliased graphics" to the free software world; it is second to none. Along with top-quality graphics, Cairo turns printing into a first-class citizen; the audience reacted to this statement with loud applause. There is work left to be done with Cairo, including the addition of more backends and, inevitably, optimization.
Security is another issue. Currently, the only rational way to use X remotely is through an ssh tunnel, but that has its costs: extra processes in the loop, more latency, etc. X clients need to be able to talk directly with the server in a secure manner. Jim notes that X terminals are coming back. Maintenance of desktop clients is costly, and the deployment of simple X terminals can reduce those costs. But it has to be possible to use them in a secure manner.
The other interesting security issue is access to shared resources. It would be nice to be able to walk up to a projector wall with a laptop and start making use of it. Handling of input devices also figures into this equation; how does one connect a mouse to a wall screen? If this problem could be solved, there is the potential to "explode the PC into its component pieces" and create an interesting, dynamic world. There are no security policy options in X for this kind of shared use, however. Jim briefly mentioned some ideas involving integration with SELinux as a way of addressing this area.
A related topic is mobility. Wouldn't it be nice, asks Jim, if you could leave the office, go home, and pick up with your applications on your home system? This is a hard problem, but it is being addressed; there is prototype migration code in GTK now. There are security issues to deal with, of course, along with little things like teaching Xlib to deal gracefully with connection loss.
Other issues mentioned in passing include proper network audio support ("all of the current audio servers are lame; we need one good one"), better color management (for things like printers too), and proper support for compression in the X protocol. It seems that the bulk of X traffic, anymore, is image data, and much of that data compresses very well.
Finally, there are the packaging and development issues. Work to split the X distribution into its component pieces (server, libraries, applications, fonts) continues; there will eventually be no "tarball from hell" to deal with. Modern building tools are being adopted; imake is on its way out. Much of this work is done, but some pieces remain.
On the community side, Jim notes that X.org is a very different place from what it was a year ago. Most of the XFree86 developers have come over, and it is clearly the focal point for X development.
Perhaps the most important part of Jim's talk was repeated several times:
the X developers have ambitious aims and a great deal of work that needs to
be done; they are actively looking for developers to take on pieces of it.
For anybody out there who is looking for a project to support, X.org
represents a major opportunity. X is the core, the kernel, as it were, of
the Linux graphical environment. The development effort is healthy again,
and it has no end of interesting and challenging tasks to address. It is
hard to imagine a better, more interesting, more visible, or more important
project to work with. If you are looking to do some hacking, X would be an
ideal place to do it.
| Index entries for this article | |
|---|---|
| Conference | Linux Symposium/2004 |
Posted Jul 23, 2004 1:50 UTC (Fri)
by allesfresser (guest, #216)
[Link]
One other comment, on the demise of imake: YYYESSSS! THANK GOD! Sorry, just had to get that out. :-) cheers!
Posted Jul 23, 2004 3:21 UTC (Fri)
by iabervon (subscriber, #722)
[Link] (6 responses)
Posted Jul 23, 2004 11:59 UTC (Fri)
by MathFox (guest, #6104)
[Link] (5 responses)
Posted Jul 23, 2004 13:25 UTC (Fri)
by elanthis (guest, #6227)
[Link] (3 responses)
Posted Jul 23, 2004 15:39 UTC (Fri)
by MathFox (guest, #6104)
[Link] (1 responses)
Posted Jul 23, 2004 17:19 UTC (Fri)
by bradfitz (subscriber, #4378)
[Link]
Why do we want today's cutting edge (tomorrow's crap) "in the core"?
Posted Jul 23, 2004 20:31 UTC (Fri)
by iabervon (subscriber, #722)
[Link]
It might also be worth making the core X11 stuff an extension for uniformity, and to have a set of standard extensions that you'd be informed of simply by the server telling you what release it is. It might also be necessary to change the lowest-level protocol for some of the virtualization and security stuff.
Posted Aug 5, 2004 16:15 UTC (Thu)
by AJWM (guest, #15888)
[Link]
I'm not saying we won't (eventually) need an X12, but that implies major changes to the API. (It could use it -- and I wouldn't mind seeing some high level implementations (C++, etc) that go directly to the protocol rather than through Xlib's semi object-oriented C API.) But there's too much legacy code and legacy hardware out there to completely drop support for it anytime soon. I like that I can use an ancient Sun IPC, an old 486 with a cheapo 2MB SVGA card, or dirt cheap used Pentium laptops as X terminals.
I've got no objection to eye candy per se, I do object to needing a graphic card designed for high-end games just so I can open a few xterm windows and a browser ;-)
Posted Jul 23, 2004 6:07 UTC (Fri)
by Ross (guest, #4065)
[Link] (4 responses)
For example I think it would be nice if there were a way to clear a window Similarly, why can't the X headers be taught that the generic pointer is Why isn't there a decent way to simulate mouse clicks from a client (hint: Why is mouse accelleration a step function with only two steps? An Sub-pixel pointer tracking would be really nice as would the ability to More than two-color cursors exist now but are incredibly poorly documented. Where are discussions like this taking place? Are they open to users?
Posted Jul 23, 2004 10:21 UTC (Fri)
by ctg (guest, #3459)
[Link] (1 responses)
The development side of xorg is hosted at http://freedesktop.org/xorg/ You can find a link from here through the mailman pages. You can look at the archives and subscribe etc.
Posted Jul 23, 2004 14:21 UTC (Fri)
by rjw (guest, #10415)
[Link]
Way to reduce your audience, guys!
Posted Jul 23, 2004 22:27 UTC (Fri)
by Tcler (guest, #5919)
[Link]
Wouldn't it be nice to have timeouts or a "revoke" key binding to
cancel server grabs so applications can't lock up the server?
The "revoke" key binding has been in XFree86 since 4.2 (see the
AllowDeactivateGrabs and AllowClosedownGrabs options in the XF86Config
man page). Starting with XFree86 4.4 (and I believe X.Org too), you
can change which keys those functions (and others such as the KillServer
function usually bound to Ctrl-Alt-Bkspc) are bound to.
More than two-color cursors exist now but are incredibly poorly documented.
Complain to Keith about that one.
Posted Jul 30, 2004 15:28 UTC (Fri)
by Baylink (guest, #755)
[Link]
Posted Jul 23, 2004 8:57 UTC (Fri)
by pointwood (guest, #2814)
[Link]
I hope more people will join the dev team to speed up the proces, maybe some of the distributors could support/hire some developers to work on it? Especially those focusing on the desktop should be very interested.
Posted Jul 23, 2004 9:07 UTC (Fri)
by emlix (guest, #14784)
[Link] (3 responses)
1. Why there are still BDF font files around. The X11 server has freetype2 2. Why isn't it possible to change any configuration parameters dynamically? 3. Why do I still always have to kill the server on logout? 4. The new font extensions are still done by people not proficient in other languages then english. They still think it is a good idea to differentiate He is apparently hiling DRI. That's naive. The kernel side of it doesn't X11 is doomed. However it will survive, since CPUs are getting faster and
Posted Jul 23, 2004 14:29 UTC (Fri)
by rjw (guest, #10415)
[Link]
However: 1. BDF files are being converted to TTF bitmap files.
Posted Jul 29, 2004 7:28 UTC (Thu)
by dmantione (guest, #4640)
[Link]
Posted Jul 29, 2004 9:14 UTC (Thu)
by branden (guest, #7029)
[Link]
Posted Jul 23, 2004 11:29 UTC (Fri)
by niallm (guest, #3923)
[Link] (16 responses)
I can't parse this sentence: "It seems that the bulk of X traffic, anymore, is image data, and much of that data compresses very well.". 1. I don't understand what 'anymore' means in this context. Could it not simply be removed? NRM
Posted Jul 23, 2004 11:46 UTC (Fri)
by corbet (editor, #1)
[Link] (5 responses)
"Anymore" because things have really changed; back when X11 was first designed and implemented, there was nowhere near as much image data in the stream.
As far as compression: one does not communicate images to the server in a format like JPEG; at that level in the protocol, you're dealing with basic raster line data. More to the point, though: much of this image data is created by the client; glyphs and such. Jim said you can get up to 1:300 compression on some of that stuff.
Posted Jul 23, 2004 12:49 UTC (Fri)
by niallm (guest, #3923)
[Link] (4 responses)
It occurs to me that there's something just a little bit suboptimal in the scenario where a JPEG is retrieved by a web browser from a remote site, which is then rasterised and transferred to an X server at a couple of hundred times the bandwidth and CPU usage! Hopefully Jim will be able to apply some clever ideas to this.
Posted Jul 23, 2004 19:19 UTC (Fri)
by oak (guest, #2786)
[Link] (3 responses)
Posted Jul 29, 2004 7:02 UTC (Thu)
by chepelov (guest, #23542)
[Link] (2 responses)
In that case, you have to get the (http)client (the browser, again) to download the JPEG, decompress it into the client machine's memory, just to send it back to the X server over the network. This is what the parent is complaining about. IIRC, there's a JPEG extension around (I think I saw that close to freedesktop.org). The idea being that the browser would use the extension to keep the image compressed all the way to the X server. If the server and client live on the same machine, the same CPU will decompress it anyway, so there should be no penalty. If server != client, then you win. Really, using Mozilla over a 10Mbit/s LAN is no fun nowadays...
Posted Aug 3, 2004 14:12 UTC (Tue)
by kzin (guest, #841)
[Link] (1 responses)
Posted Aug 5, 2004 9:07 UTC (Thu)
by renox (guest, #23785)
[Link]
Of course in case of decompression error, there is a loss of performance due to the unneeded transfer of the JPEG, but errors should be very rare..
Posted Jul 23, 2004 12:01 UTC (Fri)
by ncm (guest, #165)
[Link] (9 responses)
Posted Jul 23, 2004 20:42 UTC (Fri)
by riddochc (guest, #43)
[Link] (8 responses)
more, a. (n.) and adv. [...] 4. [...] The phrase any more (freq. written as anymore) (see B. 4a), in which more is the absolute adj., is used advb. in the same sense, and has superseded the simple adv. except in rhetorical or poetic use; also dial. (chiefly U.S.) used in affirmative as well as negative contexts in the sense now, now-a-days, at the present time; from now on. See also NO MORE adv.
I use this sense of "anymore" a lot - both positive and negative. It may be regional, but that region is apparently large enough that the OED considers the U.S. to be that region.
And speaking as a linguist, I find it annoying when people say things like "Correctly used," because the "correct" forms more often match up with archaic forms, and very often with a couple-centuries-old idea that English would be better off if it were more like Latin, leading to rules about how "This is a sentence construction up with which we should not put," which nobody, 200 years ago or now, really thinks is a reasonable way to express oneself as a native English speaker.
So nyeh.
Posted Jul 25, 2004 14:45 UTC (Sun)
by ncm (guest, #165)
[Link] (6 responses)
The restriction to qualifying negative clauses doesn't come from some arbitrary Latin rule. It comes directly from the meanings of the words "any" and "more", which a moment's thought will elucidate. "Correct usage" does have, at base, an objective meaning: it means "expected to be understood by most readers". The usage in question manifestly confused enough readers that one posted his distress.
Peculiar latinate constructions, by contrast, have never been a part of spoken English.
Posted Jul 29, 2004 4:20 UTC (Thu)
by Duncan (guest, #6647)
[Link] (2 responses)
Posted Jul 30, 2004 22:28 UTC (Fri)
by cdurst (guest, #2953)
[Link]
Upline family?
Yech, MLM terms are seeping into English!
Kill me now.
Posted Aug 5, 2004 15:15 UTC (Thu)
by fache (guest, #23795)
[Link]
Posted Jul 30, 2004 16:15 UTC (Fri)
by giraffedata (guest, #1954)
[Link] (1 responses)
"Correct usage" does have, at base, an objective meaning: it means "expected to be understood by most readers".
That's just the opposite of how I understand "correct usage."
The term is used to distinguish two sentences that both can easily be understood. The "correct" one additionally follows certain rules so as not to offend language purists. I personally find the correct form less ambiguous in many cases, but unless you know the grammar well, as most native speakers do not, you don't.
Example: "to send someone an email, click on their address." Easily understood, but incorrect because "their" is plural and "someone" is singular.
A sentence that can't be understood -- which is just jibberish -- usually goes by some description other than "incorrect usage."
Posted Aug 5, 2004 6:37 UTC (Thu)
by xoddam (subscriber, #2322)
[Link]
Posted Aug 5, 2004 6:36 UTC (Thu)
by xoddam (subscriber, #2322)
[Link]
Posted Jul 30, 2004 16:01 UTC (Fri)
by giraffedata (guest, #1954)
[Link]
As the language changes, there are varying opinions at any moment as to what is archaic. Someone says some usage is "correct" when he believes that it has not yet become archaic, but others often find that it is (because they learned some newer way first). Even the most pedantic proponent of correct English today would not say that "thou" is correct in any sentence, but he might believe the rule against dangling a preposition is still current.
>"This is a sentence construction up with which we should not put," which nobody, 200 years ago or now, really thinks is a reasonable way to express oneself as a native English speaker.
More to the point, nobody ever thought it was correct, which makes it irrelevant to this point. "up" in this sentence is a verb particle, not a preposition, and that means the correct sentence is, "this is a sentence construction with which we should not put up."
Even that sounds awkward to many current speakers, particularly uneducated ones, who prefer "... which we should not put up with." But it's still a respected enough construction to call "correct usage," and therefore to consider using if you want people to think you're smart and to avoid offending sensitive ears.
Posted Jul 23, 2004 12:41 UTC (Fri)
by ncm (guest, #165)
[Link] (1 responses)
Posted Jul 23, 2004 17:13 UTC (Fri)
by smoogen (subscriber, #97)
[Link]
Posted Jul 23, 2004 14:05 UTC (Fri)
by marduk (subscriber, #3831)
[Link]
Posted Jul 23, 2004 15:19 UTC (Fri)
by svetljo (guest, #23372)
[Link]
i thought this was supposed to be discused
Posted Jul 23, 2004 15:26 UTC (Fri)
by elanthis (guest, #6227)
[Link] (4 responses)
Posted Jul 23, 2004 15:56 UTC (Fri)
by svetljo (guest, #23372)
[Link] (3 responses)
Posted Jul 23, 2004 17:56 UTC (Fri)
by haraldt (guest, #961)
[Link] (2 responses)
I think that means «Fine, but who are going to code it? We're more than busy with our own ideas here, let alone pick up someone else's.»
Posted Jul 23, 2004 18:18 UTC (Fri)
by svetljo (guest, #23372)
[Link] (1 responses)
Posted Jul 24, 2004 5:38 UTC (Sat)
by daniels (subscriber, #16193)
[Link]
Posted Jul 26, 2004 12:23 UTC (Mon)
by ortalo (guest, #4654)
[Link]
Posted Jul 27, 2004 13:15 UTC (Tue)
by timtas (guest, #2815)
[Link] (2 responses)
Posted Jul 28, 2004 8:40 UTC (Wed)
by pm101 (guest, #3011)
[Link] (5 responses)
What I'm saying is that with very few exceptions, everything ought to be scalable. When things are scalable, if you're in a 3d rendering environment, it doesn't make sense to render to bitmap, then scale/stretch/skew/rotate that bitmap. It's stopping to make sense to have little 32x32, 64x64, and 128x128 icons, and pick the best one. In most cases, and artist will draw an icon at something around 1024x1024, scale down to those resolutions, and then have [X/the window manager/etc.] scale back to some arbitrary resolution. Fonts, in Looking Glass (the new Sun 3dUI) get rendered to an arbitrary resolution, and then scaled again when rendered in 3d, giving ugly artifacts. You can get much better quality output if you just start with the original vector (or high-res bitmap) images, and scale directly to whatever size, skew, and orientation you need them in. Done in hardware, this can be very, very fast, but we're almost (if not already) at the point where this can be done more-or-less in software. A normal app should not know or worry about pixels. I'm not saying this is a feasible approach with today's apps and hardware. But it will be shortly, and it should be built into the X architecture if we're redoing it. No reason to design for obsolence straight off the bat. Apps should be written to pure vector display, and in the short term, we can just prerender to bitmaps for 3d, scale icons only once to some fixed resolutions, and cache the low-res ones, and so on. Once we can scale in realtime, we can have a neato SGI-like zoom roller in our file manager, beautiful 3d windows, animated resizing icons, and so on.
Posted Jul 30, 2004 1:05 UTC (Fri)
by AnswerGuy (guest, #1256)
[Link] (2 responses)
JimD
Posted Jul 30, 2004 8:03 UTC (Fri)
by pm101 (guest, #3011)
[Link] (1 responses)
It'd be nice if the input to the compositor could be vector, so that fonts and so on would come out nicely.
Posted Jul 30, 2004 1:23 UTC (Fri)
by daenzer (subscriber, #7050)
[Link]
Posted Jul 30, 2004 22:53 UTC (Fri)
by cdurst (guest, #2953)
[Link]
Let's build an X
server on top of a programmable vector
graphics layer... like, say PostScript!
:-)
Posted Jul 29, 2004 10:26 UTC (Thu)
by gyles (guest, #1600)
[Link]
http://www.karlrunge.com/x11vnc/
Posted Jul 31, 2004 20:58 UTC (Sat)
by sbergman27 (guest, #10767)
[Link]
And what wonderful news! Finally, X development is exciting again.
Every single shortcoming of X11 which has ever bothered me was covered in this article. Even X11's problem with high latency connections. It's amazing how many people think that X's problems over broadband stem its being a bandwidth hog, when in fact, it is not. But insert a little latency, say 50ms, and many applications become quite unusable.
The xorg fork is something that should have happened a long time ago, except that many of us did not realize it.
A big "thanks for everything" to the current xorg developers. And a big "thanks for nothing" to David Dawes. A perfect example of how sometimes a persons "contributions" can really screw up a project.
I predict that a year or two from now, we will not be seeing all the "X11 Sucks!/No it doesn't!" flamewars that are so common today. It'll certainly be nice too see X as an open source crown jewel and not as an embarrassment. I can hardly wait! ;-) The fun starts on Aug 25th, folks!
Thanks for the great summary, Jon. It pulls together a lot of stuff that doesn't quite make sense separately. :-)X at OLS
It's very interesting to see an explanation of how modern windowing X at OLS
system needs and capabilities fit into the X design. In a world where
people expect to stream full motion video from across the country, it
makes little sense to think you can't use your web browser from across
the room. There are a lot of things that X should do right for the
traditional windowing system devices that it might as well handle for
other devices.
I still feel that it would be beneficial to do an R7 or an X12 which
relegates a lot of old features to separate emulation (e.g., indexed
color, weird XImage formats, etc) and drops them from the new library.
I'ld suggest to go to an X12 protocol (with only the modern features) and not aim for compatibility with the current X11 implementation. I think that an X11 emulation for X12 servers wouldn't be very difficult; X12 emulation for X11 servers could be, especially if X12 starts using an rgba color model.
X at OLS
Why? After reading this write-up, it should be pretty clear even to someone not familiar with X11 at all that there is *NO* reason to break compatibility. Seriously, what would X12 have different from X11? All you'd do is have a slightly different set of default commands (extensions), and that's absolutely pointless, because you can just do that in X11. The low-level actual protocol of X11 is perfectly fine and doesn't need any changes in order to operate appropriately for modern needs.
X at OLS
Do we need suport for fixed size bitmapped fonts (only?) 256 colour palettes? The whole set of pixel or/and/not operations?X12 (was: X at OLS)
With a modern graphics card you'ld want antialiassed scalable fonts, an RGBalpha colour model, colour blending, etc. Some of these are in current X11 expensions and should be moved to the X12 core. Some of the current X11 core stuff should be dropped and moved to a compatability library. Keith has some ideas that require deep modifications of the protocol.
There's no advantage to having something "in the core". The reason X11 hasn't become X12 is because X11 adapts wonderfully to new extensions as they come and go. You make fun of the bitwise and/or/not operations now, but we'll be making fun of the current state of graphics in another decade.X12 (was: X at OLS)
I think the main change that should be made is really in Xlib rather than the protocol. A huge portion of the library is stuff that you shouldn't use these days. Another chunk deals with stuff you shouldn't have to worry about. It would greatly simplify X programming if the library insisted on a TrueColor visual and simulated 24bpp on other depths. Of course, cleaning all of this up would require changing header files, so the new version would have to be somewhere other than <X11/...>, suggesting that it would be X12.X at OLS
As somebody who lived through the X10 --> X11 transition, let me voice my support of an R7 rather than an X12. There is still some X10 compatibility code around (see X10.h) and programs that use it -- although many more X10 programs just broke so badly they were completely rewritten. (The original "xtrek" comes to mind as one open example.)
Please, X11R7, not X12
Finally -- it's like X is being taken out of the freezer and development isProgress
being resumed. I especially like that imake is going away. One thing I
miss from the "old days" is user discussion of low-level details.
without clipping by children. Yet XClearArea and XClearWindow can't do it.
And those are the only way to clear a window. Combine that with the
problem that window borders can't be redrawn (there is no way to do it) and
you have a problem.
void * in C (not caddr_t, XPointer, char *, etc.)? Why not make a nicer
interface for Properties since C now does type-based aliasing (hint:
unsigned char is assumed to not alias other types except char... too bad
they didn't use plain "char" which is assumed to alias all other types or a
void * and perform a copy). Why don't they use const on strings they don't
modify?
you can't predict the correct time value to fill into the struct)? Why
can't more than one application receive keypress and mouse click events?
Why isn't there a way to do passive grabs on all children regardless of
focus. Wouldn't it be nice to have timeouts or a "revoke" key binding to
cancel server grabs so applications can't lock up the server?
extension with an ulimited number of steps or at least a large number
would be nice. The xset utility should be updated to handle it as well.
track movement of the mouse as a relative offset rather than in screen
coordinates (through a special grab mode or something).
I don't think xsetroot was ever updated to handle XPMs.
I believe it is on the x.org mailling list.Progress
And for some unknown reason, the xorg administrators have removed themselves from gmane, based on some insane bias against NNTP-Mail gateways. Progress
Progress
Are *those* the questions that explain why CE Software has never ported QuicKeys to X? Or *have* they? I don't know what the native OS/X display manager is...
Progress
Great article! X at OLS
Year by year Keith Packard is brabbing around about what-a-no has to beX at OLS
done for the X11 server. But down to reality he is still producing
nothing more than adding about 5 undocumented constantly changing X11 protocol extensions on top of a fundamentally broken system without
ever fixing anything else.
now?
between glyph and character. Boys we have unicode and it works.
trully look like a UNIX device driver at all. It's not documented and there
are neraly zero chances new drivers will be ever developed using this
interface since apparently the original authors left it orphaned. And indeed there is just a very modest amount of maintainance done on the
kernel side of things here.
it's after all still possible to use it as a very complicated frame buffer
substitute.
You are an idiot. X at OLS
2. Xorg is being Halified, and the idea is to make all configuration occur automatically via hotplugging, with the users settings only used for override.
3. What? This is the login manager ( xdm, gdm, kdm etc) or just you being stupid. I'll guess the latter.
4. There is no "new font extension". Text rendering has moved client side. So if you *really* want to write your own text rendering, you are welcome to. However, both Qt and Pango have very advanced multilingual rendering capabilities included - so use that. Xft2 is absolutely fine for rendering positioned glyphs - positioning them is the job of higher level libraries. But a convenience api is provided to allow writing Latin1 strings. What a crime!
> Boys we have unicode and it works. X at OLS
No it doesn't. Full unicode support (level 3) is a nightmare to implement. I'd
say almost impossible, it's definately at least as hard as writing a .tiff reader
that implements the entire tiff standard....
Thanks for joining the discussion, Mr. Dawes. ;-)
X at OLS
Folks,X at OLS
2. The bulk of image data (I would imagine) is JPEG or similar, and that would *not* compress very well.
Sorry, I was in a hurry.
X at OLS
Thanks Jon.X at OLS
In a local case this "transfer" is function telling X server to use a X at OLS
certain shared memory segment. I don't think it makes sense to compress
shared memory for the sake making it smaller, on blitting it needs to be
uncompressed anyway. :-)
unless your client (browser) is living on a different machine from the server (X).X at OLS
The browser would have to open and read the JPEG file anyway before sending it to the X server, for a variety of reasons, not the least of which being security.X at OLS
Can you elaborate?X at OLS
I'm not sure how decompressing a JPEG file may be a security problem, either it decompress correctly or it doesn't and the X Server should return an error to the browser, but how is this a security problem?
"Anymore", in the positive sense, is a regional usage, meant to mean "nowadays". Correctly used, it is always coupled with a negative: "The bulk of X traffic is not ordinary X events any more, but image data".
X at OLS
I can't resist this. From the Oxford English Dictionary online:
X at OLS
Apparently the OED doesn't distinguish among bits of the colonies. The American Heritage Dictionary identifies it as regional, restricted primarily to Tennessee, Kentucky, Indiana, Iowa, Oklahoma, and Northern Ireland.
X at OLS
Interesting. My upline family resides primarily in the US northwest, "anymore"
Oregon and Washington, altho I spent six years growing up in Kenya, East
Africa, as a missionary kid, and have lived in New Mexico, graduated high
school in Colorado, attended college in Nebraska, and am now (after
another stint in Oregon) residing in Arizona.
IOW, while I've had a generally broad geographic experience, none of it
has been in the area claimed to be the region the term is used. However,
it seemed an entirely ordinary term, to me. I wouldn't have been aware of
its "regional" usage, had I not read this thread. <shrug> Maybe one of
the other missionary families came from Tennessee, or something, and their
usage rubbed off on me. I don't know. I just know it sounds entirely
natural to me. <shrug>
Duncan
Interesting. My upline family resides primarily in the US northwest,
...
"upline family"
Just for the sake of discussion, in the six years I have been living in "anymore"
England, I have never heard nor read anymore used like so. I would thing
it's an americanism. Thanks for explaining anyway!
incorrect usage
That's "gibberish", to you :-) incorrect usage
> Apparently the OED doesn't distinguish among bits of the colonies. X at OLS
> The American Heritage Dictionary identifies it as regional,
> restricted primarily to Tennessee, Kentucky, Indiana, Iowa,
> Oklahoma, and Northern Ireland.
Interesting ... I first heard it in Glasgow, and supposed it was Scots.
But I may only have heard it once and the speaker may have been from
Ulster ... hmm.
>the "correct" forms more often match up with archaic forms,
correct usage
Nobody mentions ggi/kgi. Keith's goals seem to match that project's. Is its underlying approach fundamentally flawed?
Kgi?
I think its original proponents burnt a lot of bridges with kernel/X developers.. so even if they were ground-breaking on it, few mainstream people would look at it.
Kgi?
Finally! Hopefully X will move at the pace of code; not at the pace of committee.
X at OLS
any talks about local multi user support ?X at OLS
and maybe worked on for next release.
For everyone asking all these, "I thought this or that was supposed to be done," or wondering about how well the new development model is working, I'd like to note that X.org development happens all in the open on the mailing lists and IRC channel. Here is a link the web archives of the xorg mailing list, if you want to see recent discussions: http://freedesktop.org/pipermail/xorg/
Questions answered
regarding local multi-user support,Questions answered
i posted two times about trivial workaround
with sugested solution to the x.org mailing list
and i never got an answer
Questions answered
If you did the coding (or paid the bill for it), it'd probably be included. As a first implementation, at least.
well i didn't do the coding,Questions answered
but the proposed solution is
a trivial patch which is included in
Debian's and Mandrake's X packages
Not that there was ever any 'tarball from hell': there are seven. Heh.
X at OLS
Sometimes, all this bazaar hurts. What were we saying in 1998? Ah yes...:
KGI.
You think that project died... well sort of... (KGI4BSD).
X at OLS
Anyway, any new version of the protocol would have to be called X111, certainly not X12.
X at OLS
While we're on the topic of X, I'd like to point out one more change that will likely happen in the mainstream at some point (if not yet): The death of bitmaps. My notebook has a 1920x1200 15.4" display (about 150dpi, if I'm not mistaken). We have projectors and plasma displays with about 20dpi. I have near-perfect vision, but some of my older relatives are blind as a bat. We need different minimum sizes to see correctly. We're getting these wonderful 3d screen candy GUIs where window pixels no longer correspond to screen pixels. On Macs, I've seen hacks where when you move over an icon, it gets bigger. On Windows, I can resize fonts, but I can't resize icons. My mother always complains they're too small on my notebook display. There's no way to fix it. Long-term death of bitmaps
Sounds like that would just be a byproduct of rendering to the virtual frame buffer and allowing a compositer policy to manage the scaling to the real display.Long-term death of bitmaps: Compositer policy?
It really wouldn't -- the problem is double scaling. You lose quality. If you render a 24 pixel font, and scale it to 18 pixels, it looks worse than the original font rendered at 18 pixels. It looks even worse if you stretch it to 48. You could render at 400 pixels, and scale, but it would suck in terms of performance, memory, etc. Long-term death of bitmaps: Compositer policy?
Sounds pretty much like what Cairo, SVG and friends are about...
Long-term death of bitmaps
Hey! I know!
Long-term death of bitmaps
x11vnc
Sounds like the "Damage" extension could make VNC's life much easier:
What an excellent article, Jon!X at OLS
