DirectFB: A New Linux Graphics Standard? 437
Spy Hunter writes: "Some people really dislike the X Window System. DirectFB seems to be the answer to their prayers. Building on the framebuffer support available in recent Linux kernels, DirectFB adds hardware acceleration, input devices, and window management. It has been made (and LGPL'd) by Digital Convergence as a Linux video/television solution, but it is much more than that. It has the potential to replace X for Linux desktops. You want a transparent terminal? How about a transparent video player? Development is proceeding rapidly, with a GTK port and even an X server for legacy apps in progress. Could this be the future of the Linux desktop?"
AHHH (Score:2, Interesting)
I wonder if the Texas guys with the colon in their name are gonna try to sue..
Re:AHHH (Score:2, Informative)
So there's no risk that they sue us...
Re:AHHH (Score:2, Funny)
RE:So there's no risk that they sue us...
Man, you really don't know Americans do you?
Suing requires lawyers... (Score:2)
Supported in ClanLib IIRC (Score:2, Interesting)
They're nothing like each other! (Score:5, Informative)
(b) The X window system is a network-transparent graphical desktop environment based around the client-server paradigm. Sure, that could be useful.
You can't really have it both ways. It would probably be true to say, though, that the need for (b) is dying out, and the need for (a) is growing. But that's not what the headline was saying.
Re:They're nothing like each other! (Score:5, Insightful)
All X is really about is adding network transparency to GUI apps. To accomplish this, the protocol has a notion of windows, window managers, decorations, etc. There's nothing about X, however, that really has anything to do with hardware. X has no provisions for hardware acceleration or transparent windows, for example.
You're confusing X the protocol with 90% of all implementations of X, which themselves include a framebuffer, hardware acceleration, etc. For example, XFree86 is really just a GUI system that happens to implement the X protocol.
The main reason that implementations tend to be both a hardware driver and an X server is that the protocol can be a bit hairy to try and "map" into an alien GUI system. (And more than that, Unix systems typically don't even have anything else to map to, anyway, so if the X server isn't providing the hardware driver, there's nothing there.)
Anyway, the core issue is that there isn't (theoretically) anything that says that an X server has to be a hardware driver. Just look at Hummingbird's Exceed program, which implements an X server on Windows. Writing an X server that would run on a "native" framebuffer isn't such an exotic idea; Exceed actually works extremely well.
Granted, you can almost always tell that a particular program is an X program, because in practice X does dictate a certain look and feel (since a legacy X app would be running with a widget set that might or might not look like the native set.) But that's why they're porting GTK, and why the X server is for legacy apps.
Re:They're nothing like each other! (Score:2)
Can these be used as a "screen" for X (a-la the FSF text mode program of the same name)? I want that
Re:They're nothing like each other! (Score:2)
Actually, I thought "screen" was like VNC for the commandline.
Re:They're nothing like each other! (Score:4, Insightful)
(b) The X window system is a network-transparent graphical desktop environment based around the client-server paradigm. Sure, that could be useful.
You can't really have it both ways. It would probably be true to say, though, that the need for (b) is dying out,
My need for (b) is most definitely not dying out! I would find it sad if support for X under Linux started to seriously wane as people put all of their emphasis in having everything work blindingly fast when rendering directly to the hardware on which the application is running. I do play games occasionally, but most of the time I'm using my Linux boxen to do work. Remote shell sessions are the most common, but it's not infrequent for me to use a number of other remote X sessions, which are made possible, easy, and transparent by the client/server architecture of X. I do not forsee any time in the near future where I could hope to run the things I need to run entirely on whichever machine I happen to be working locally on.
Hopefully, there are enough other people out there like me to keep XFree86 going, so that even if "most people" start using something like DirectFB, X will still be an option. (Much as Gnome will still be an option if everybody starts using KDE, or vice versa; this is the beauty of free software.)
-Rob
Re:They're nothing like each other! (Score:2)
Certainly, the X model can be improved upon. The main problem with using X over the Net is that it is very sensitive to latency. It doesn't matter if you have a Gigabit connection -- if you have significant lag (like the ~250ms in satellite connections), X will run like a dog.
Fortunately, someone came up with mlview-dxpc.. I just hope it can be integrated into XFree86, ssh, or both.
Re:They're nothing like each other! (Score:2)
Certainly, the X model can be improved upon. The main problem with using X over the Net is that it is very sensitive to latency. It doesn't matter if you have a Gigabit connection -- if you have significant lag (like the ~250ms in satellite connections), X will run like a dog.
Tell me about it. Especially for those of us who use terminal sessions-- latency is a killer when there's a 1/4-1/2 second delay between typing and seeing what you type.
I would love to see an "X Replacement," but if it driven by what games need, it probably won't really do what we need X to do very well...
-Rob
Re:They're nothing like each other! (Score:2, Informative)
Now, for my spiel on Transparant terminals....I never liked em. I like to run color Xterms and transparant terminals don't do much for me there. No matter what kind of background you use, the colors of the background always kind of blend with the text making it much harder to read. I would not mind things like transparant, attatched dialog boxes ala OSX, but so far as transparant Xterms, I have no use for them. I also don't think a transparant video player would be very useful either. Yeah, it looks cool, but usually when I am playing video, I want to WATCH it not work through or on top of it.
Personally, I think everyone's major beef about X has been is is being resolved. That would be crappy looking fonts. Anti-aliasing is fixing this gradually. You can now have an anti aliased KDE or Gnome desktop. That's nice. The only other complaint I can see is not so much as a complaint about Xwindows as it is about video card manufacturers. No matter what they do, they have to make money. If that means they withhold source or their spec so we can make good drivers, then, well, it doesn't matter whether you use X or DirectFB. You still have the same problem. X is a good thing. Network transparant applications is a good thing when it's security is implemented well (and we KNOW X has problems there). Let's fix X windows. I know, it's code is arcane and boring, but I can't help but feel that DirectFB feels more like the way Windows does things then Linux and we all know how well THAT works!
LBX = Low Bandwidth X (possibly off topic) (Score:4, Informative)
There's a standard X extension (?) called LBX that comes with XFree86 and others. Check out the LBX Mini-HOWTO [paulandlesley.org] if you are interested.
Cheers //Johan
Re:They're nothing like each other! (Score:3, Insightful)
It isn't X that's chatty - it's the apps that use it. Some years ago I developed a couple of simple applications to display some statistics graphically in (pseudo) real-time. Over a SLIP connection on a 14400 modem, one of them worked but the other one didn't. The one that didn't had a little bug that I'd never noticed on a local machine or even over ethernet. The bug was that it redrew the graph elements even when it didn't need to.
So don't go blaming X for things over which it has no control. OK, so maybe its network model isn't suitable for video players or arcade games - but don't write it off because of that.
Low Bandwidth X (Score:2, Informative)
I think systems like directFB are a step backwards. XFree86 already has shared memory and direct draw extentions (see vmware), designed for high speed local graphics. When running remotely, the X library falls back to it's normal protocol, and the apps slow way down, but still operate. The network transparency of X is far, far too usful to encourage a crop of apps that can't use it.
Re:They're nothing like each other! (Score:2, Interesting)
The network transparency of X is immensely useful (and brilliant). I'd rather take the superior, albeit slower, architecture of X over any super-fast, yet functionally neutered, architecture.
Sometimes I wish all of those "web standards" were thrown out in favor of a newer better version of X. Imagine: web applications could be the real thing, and all that (MS)HTML/(MS)XHTML/(MS)XML/(MS)JavaScript cacaphony could be tossed.
No, they're not... (Score:2)
It's not just "a" or "b" it can be "a" and "b"- and for many things, that IS what you want.
When you're talking about things like tuner cards, strictly speaking, you're never realistically going to be able to do a video push to a remote window- you're going to go to DGA (Uh, that's a hack in XFree86 that allows you to do the DirectFB thing in the context of X...) or you're going to encode it realtime to some compressed format and push the lowered bandwidth data stream to a player on the other machine to be decoded. Otherwise, you're going to need gigabit speeds to do this well for more than one machine. The same goes for videogames, etc.
Nope (Score:2)
(Unless they are claiming that X-on-DirectFB will be faster than XFree86.)
Re:Nope (Score:2)
hardware acceleration (Score:2, Interesting)
New Standard Maybe but not for now (Score:2)
Goodbye Platform Interoperability... (Score:3, Insightful)
Re:Goodbye Platform Interoperability... (Score:3, Interesting)
The current XDirectFB uses DirectFB in fullscreen mode, it does its own window management. Just think of a rootless X on DirectFB, like on MacOS X. You could have X applications going through the server and DirectFB applications or games running directly at full speed. When the X server has been enhanced to use DirectFB's window management it would be easily possible to set the window opacity (ranging from 0-255) of any legacy application.
X is a great technology and I think DirectFB is rather a good base than a replacement of this technology.
Re:Goodbye Platform Interoperability... (Score:2)
Which completely misses the point. Yes, it means that you can display remote applications on your directfb machine. But you can't do the reverse -- display your directfb application on a remote machine. At least, not without kludging multiple display targets into gtk, something akin to what the libggi folks did long ago.
Re:Goodbye Platform Interoperability... (Score:4, Insightful)
This is more like DirectX than anything; a way to bypass the high-level windowing system to write directly to hardware. As people have said, it doesn't replace X completely. But I would rather have a X server layer on top of a direct-hardware layer, than a direct hardware piece hacked into an old X server.
Re:Goodbye Platform Interoperability... (Score:2, Insightful)
So why don't we put the hooks in X so that full speed/direct to hardware access is possible? O whait? That's DRI...! XFree86 has bugs, sure, but it isn't the monster people think it is. Most of the memory the server uses are apps storing images and stuff server side.
Re:Goodbye Platform Interoperability... (Score:3, Interesting)
On Linux I would benefit from an efficient Qt or GTK implementation on DirectFB without running any X. I wouldn't ever have to see any ugly primitive X applications either.
On non-Linux platforms, Qt and/or GTK can be implemented in the traditional X fashion, or in any other fashion if that platform also has something more efficient.
Modern apps will still compile and run.
And if you like X apps (i.e. non-GTK and non-Qt), there is nothing here saying that you can no longer use X. X isn't going to disappear. Individual apps that use GTK or Qt can still use a Qt or GTK lib that supports X to draw on a remote display.
On Linux, on the X server end of things, you could use only one single X server. Yea! No more xf86config and all that crap. You could still see traditional ugly X applications or you could see remote GTK or Qt applications. Local GTK/Qt apps could be more efficient, going to DirectFB. The local X server could be iimplemented in a manner much like on some other platforms, where the X windows are integrated into a local window system -- or could use a traditional X root window.
Anyway, just my opinion. But since it makes things simpler and cleaner, I'm sure many old school people will be against it. Just my opinion, but I think this is a step forward. I'm sure it will encounter lots of resistance.
Re:Goodbye Platform Interoperability... (Score:2)
m.
Re:Goodbye Platform Interoperability... (Score:2)
I switched to 100mbit recently and it is better but not exactly what I would call some sort of godsend that would make me say that X is worth using just for network application.
X is a standard across many platforms and I believe that is to singling Linux out a little more on its own but I do think it is a good option for those that want to use it.
Hope it all works out for ya
Re:Goodbye Platform Interoperability... (Score:2)
The only time I had speed problems with X was when I visited a friend in New York and ran my KDE desktop from my computer at home (in Phoenix, AZ). Probably because my DSL upstream rate was only 128kbps.
I've used email and news applications across my 100Mbps network and couldn't even tell they were remote.
A way to reduce software costs .... (Score:4, Interesting)
BTE, whatever has happened to embedding X into the web browser (X11R7? Broadway?) How come that's not being used to port some of the older X utilities across to work over the internet?
LL
Oh yes. (Score:2)
Just think of it. Those awesome SunRay terminals, without the need for a rediculously expensive Sun server.
Kudos to the LinuxTV.org guys (Score:3, Informative)
I believe the DirectFB package was originally designed to do onscreen graphics for a TV link up so you could have alpha channels overlaying the MPEG stream.
Very clever guys... my hat goes off to them!
I wonder... (Score:4, Funny)
Does it come with an open sourced barcode reader driver?
Well, I think.... (Score:2)
Re:X compatibility (Score:2)
would that not be sufficient? if you had and X-server on your system to render the remote applications, could DFB not create a terminal to house the rendering? I would think that would work quite well.
Re:X compatibility (Score:2)
Pure /dev/fd0 access vs directfb (Score:2)
If you're doing all your graphics in OpenGL there's no reason to abstract
Since no-one's writing desktop software anymore the framebuffer device is ideal for the new one-device one-purpose market.
Innovation outside the USA (Score:2, Insightful)
Why is it that it is European governments [kbst.bund.de] that are considering moving to Open Source, [newsforge.com] and not USA governments?
Why is it that it is big companies in the UK that are grouping together [tif.co.uk] to fight Microsoft's restrictive licensing, and not the USA?
Is the USA in danger of losing its lead in the technology sector?
Re:Innovation outside the USA (Score:2)
Is the USA in danger of losing its lead in the technology sector?
Yes. A combination of a monopoly in part of that sector, which incidentally uses its huge financial power to great effect on the government, and the stranglehold of the huge powerful USA entertainment industry on our (eminently purchasable) government, threatens to choke of technical innovation altogether (while meanwhile outlawing open source and free software). It hasn't happened yet, and it doesn't have to happen, but if you deny that there are serious threats that it's happening, you're either a not-paying-attention optimist, or an apologist.
-Rob
Re:Innovation outside the USA - Not flamebait (Score:2)
Why has this been modded as flamebait? It is a serious question.
Just because you don't agree with it or don't like what it says, doesn't mean it is flamebait.
Re:Innovation outside the USA (Score:2)
Moderation Totals: Offtopic=1, Flamebait=1, Troll=1, Insightful=1, Underrated=1, Total=5.
Do I win a prize?
Re:because (Score:2)
Wow, I've just looked at your web site. What fun!I love the section about gun education for children! Brasco (TM) The Liberty Bear Coloring/Story Book sounds great!
Am I glad I live in Europe.
To the Naysayers (Score:3, Insightful)
While main of you correctly point out the lack of network support in this, let's be honest here, the majority of users want a fast, pretty desktop. This would be the way to do it.
Applications are not a problem; both GTK and QT have abstracted the window drawing from the widget set (GDK for GTK) so someone could potentially relink (not necessarily rebuild, if the symbol tables stay the same) their apps and have a wealth of stuff to choose from.
I like the network transparancy in X, but what is to keep you from running X for remote applications, and using DirectFB for your desktop? X is nice, but it's filled with lowest-common denominator decisions, and the majority of people polled (cough) want to run with things like alpha blending, anti-aliasing, and windowed 3D. X supports them, but not without a lot of pain.
So, if you want to use X, you could potentially keep it; if you want DirectFB, you can use all your GTK/QT apps (theoretically) Why rain on someones parade when both crowds could potentially win here?
Re:To the Naysayers (Score:2)
Re:To the Naysayers (Score:4, Insightful)
Yes, X supports these things. And, heck, OpenGL/GLX is even a network transparent protocol that too, so you can even run your hardware accelerated remote-displayed 3d programs over the net. And networks get faster all the time. So, please, concentrate on making these things less painful in X.
Any attempt to replace X will only end up going back in time half a decade, reimlementing X and eventually being back where we started.
DirectFB sounds great. For what it's used for. But X will never be replaced as the basic GUI layer for Linux/UNIX operating systems. No such attempt has ever caught on (and there have been a number of them), and none ever will simply because the only reason to is when you have absolutely no use for network transparency and you have far too little resources to support X. Today that means calculators and lowpower PDA's, and the occasional non-networkable consumer product, and with the way things are going, within a decade or two those cases will probably involve the device in question being a museum exhibit.
Re:To the Naysayers (Score:2)
That's a pretty narrow and short sighted statement if you ask me. As if X were the only networking protocol out there. Not to mention, there is already an X server running on top of this thing.
My only worry about DirectFB is that it runs on Linux only. I've played with it on Linux before and I thought it was pretty cool, although quite immature yet, but I normally run FreeBSD. If this can't be ported to FreeBSD and other non-Linux platforms such as Solaris, then it may not stand much chance of being widely used.
Re:To the Naysayers (Score:2)
Re:To the Naysayers (Score:2)
Hardware Acceleration! (Score:2)
I think it fills a needed niche nicely (Score:2, Interesting)
Now, I use my Linux box as my development platform, web server, mail server, etc, but I've got to keep Windows around for gaming.
i'll stay with X. (Score:5, Insightful)
however being able to ssh into any box and typing export DISPLAY=my_local_box:0.0 and then being able to run all the the remote Xapps on my box is is one of the greatest features on the planet.
if you want to increase the speed of your X its not replacing X, its replacing your KDE and gnome with fvwm2 (which is what i use) or even blackbox.
i see all these comments about enlightenment and KDE and gnome ( although i use GTK, not gnomelibs, _GTK_ for my devel and most usable apps) i shudder, because they are so slow, and then the same ppl complain about X, thats just wrong. if you want a fast system, a recommend the following:
granted transparent video will have some important uses in editing, however what has to ask how is it done in irix platforms now, is there a hardware solution that we can not compete against because its just so great?
i want X, maybe they can merged, kinda like now ppl have -nolisten tcp
-rev
Go check the site sometime... (Score:2)
The reason to drop X? (Score:2)
FYI, framerates in OpenGL games aren't the issue since with DRI/DRM/the NVIDIA driver they pretty much just bypass X anyway. I'm talking about blit speed for windowed or fullscreen 2D games, which DirectFB sounds like a terrific solution for.
Re:i'll stay with X. (Score:2)
You forgot xfce [slashdot.org].
Massive security hole buddy (Score:4, Informative)
however being able to ssh into any box and typing export DISPLAY=my_local_box:0.0 and then being able to run all the the remote Xapps on my box is is one of the greatest features on the planet.
Ouch- allthough your command to start the X proggie will be secure, the windowed program itself will be going over an unsecure channel if you use that method. (all your click are belong to them)
You should really look into X-forwarding (read man ssh).
Regardless- I too like the network transparency that is offered from X. If the damn X protocol would support SSL or something like it natively, then it would seriously speed up secure remote graphical logins. (search google for tcp over tcp to see why)
My God man... (Score:2)
What you are suggesting is not secure at all.
This person is giving bad advice! MOD HIM DOWN (Score:2)
2) Component programs like Gnumeric are cute, but with Gnome it's kind of all-or-nothing for the novice user. This is an issue since X performance is not up to par with Windows in many respects. Believe me, I've set users up with both Gnome and other WM's (fvwm, Windowmaker, etc.) and they all prefer Gnome. Even though it sucks
3) Ok, maybe the Mutt comment bears the Insightful label
Bottom line is that most X apps run well on a local workstation, and if you're not tunneling X from, say, an SGI Onyx in New York to a demonstration on a workstation in DC, you may not really want the overhead of being able to do so. Don't get me wrong, X is magically delicious for a handful of users, but most admins (myself included) can control things very well with a terminal or VNC, and most users are never going to use the most powerful features of X, rendering it needless bloat for them. DirectFB solutions would make Linux far more attractive for these sorts of users are their managers.
Re:i'll stay with X. (Score:2)
It's not necessarily slow, I just think it's backwards to be adding "direct" support to X. It should be the other way around. Look at it this way, how often do people take advantage of X's remote ability? Less than 1% of the time, I assure you. With DirectFB, you wouldn't lose your ability to work remotely, it would just be an extension (the reverse of X basically, where it's _directness_ that is an extension). X is optimized for running over the network. DirectFB would be a desktop that's optimized for running locally, ie 99% of what most people are doing.
Now, about games. I read a quote on directfb.org someplace about a guy not satisfied with the current DirectFB X layer (for running X programs). Since it doesn't (or didn't at the time) support DRI/DGA, he couldn't play his games on DirectFB. So he said something like this, and I swear I'm not lying when I type this, "I guess I'll use DirectFB for my normal apps, and X for games." Tell me that isn't backwards!
There is an obvious problem here.
Re:i'll stay with X. (Score:4, Insightful)
I agree. X is powerful, flexible and proven. It's like a 4x4 truck. What can you do with a 4x4 truck? Haul heavy loads, go offroad, pick up your date for dinner. But there's a lot of people who want to drive a sports car instead. What can you do with a sports car? Pick up your date for dinner. Period. Personally, if a date doesn't want to ride in a truck, I'll find someone who isn't so shallow.
If you can make DirectFB *identical* to XFree86 in functionality, then fine, I'll use it. But otherwise keep it away from me. Frankly, making gaming the primary goal of Linux is an incredible step backwards.
Hmm, Sounds Like Mac OS X (Score:2)
Yea I do! Its call "Default Install" on Mac OS X 10.1. The best part, I have it today. I won't be waiting for it.
X isn't so bad... (Score:5, Informative)
First off, the complaints are generally levelled against what they see in a particular implementation of the X protocol, not the protocol itself. There seems to be no acknowledgement that while X servers of the past may have had implementation problems, that we have moved on and produced much more efficient and well-featured implemntations, particularly XFree. Through X extensions, XFree has become an X server that keeps the good of X, and improves on the bad aspects of older X servers.
The main gripe I see is "X is slow!!". Well, with XAA, X gets the same sort of acceleration as Windows display drivers for ordinary stuff. This requires that good drivers exist for your chipset, which is a good bet nowadays, but not as likely as Windows. Not XFree's fault, and it's clear that any FB based solution won't help matters in this regard (driver support)
People also have complained about 3D performance. XFree4 has DRI which really works well to address the issue. For Video playback, there is XVideo which provides good access to hardware scalars and filters. There is work being done on an XMovie extension that could provide access to hardware video decoders, such as the MPEG-2 decoder on All-in-Wonder cards (though I haven't heard much about it lately). Another complaint I hear is that it is ugly, that it lacks the bells and whistles of 'modern' systems. Well, there is now the XRender extension which can be used to provide translucency (if anyone bothered to implement it) and in turn provide both anti-aliased text and sub-pixel sampled font rendering (ala Window XP's cleartext).
Those who complain about X and say it needs replacement need to be a bit more educated. If you look at the projects that have aimed to replace XFree in the past, you see a very interesting pattern. Berlin is a good example of this. They set out to provide things that at the time people said "X cannot accomodate these features", but by the time Berlin progresses to any usable state, XFree has most of these features in XFree4. Let's face it, XFree in particular is a good system that can continue for quite a long time, and has only improved with age, contrary to popular belief.
Re:X isn't so bad... (Score:3, Insightful)
Here's one. The whole X window system was designed from the get go with the idea of having a dumb terminal at the user end. As the design progressed, it became apparent that the X-terminal would require some higher intelligence. In the end X-terminals have a fully functional CPU that is being wasted by 90% of the function calls which were designed before the change of CPU demands.
Re:X isn't so bad... (Score:3, Informative)
Then, you still get the benefit of being ABLE to run an X server on a remote machine, and not being bound by its processor (whatever that may be). My personal gripe is the network bandwidth it requires for a good connection; I've never really been able to run an X session over the modem to my university account, which at times would be the whole point.
X is nice, but... (Score:3, Informative)
DirectFB was developed not for games, but for media convergence devices (Entertainment systems with Linux running as the core OS, etc.)- other people are latching onto it because of the above problems. DirectFB ditches the need for hacks like DGA (which is needed for things like tuner cards) and allows you to run things like video on demand systems, etc.
Oh, and next time, read up on the actual story, not the
Re:X is nice, but... (Score:2, Informative)
Rubbish. (a) X tends to locally use unix-domain sockets, which can sometimes be zero-copy on linux, and (b) there's a shared memory system that nearly everything uses anyway.
Re:X is nice, but... (Score:2, Informative)
Wrong. X does not require TCP/IP at all. If everything is running locally, Unix sockets and shared memory can be used. When running across a network, X can use another networking protocol lkie DECnet (though few would want to, AFAIK). TCP/IP is not necessarily part of the equation.
Give up $DISPLAY - Never! (Score:3, Interesting)
VNC is a cool and useful hack but X is a better solution.
Hmmmm..... (for al my regular readers ;-) (Score:3, Interesting)
I really think this is GREAT for the whole linux on the desktop venture, because as much as I love X (and I do) I know it is a very hard thing to do (loving it that is)
X is bloated, it is considerably slow, altough I must say that with Xfree86 4 a lot of things changed (for the better) the new "modules" system is brilliant!
But the biggest problem is that for geeks like me and you
Fact is that X is the defacto standard when it comes to remote displays, heck, even novell uses it in netware 4 trough 6
My idea: Port all the apps whatever to this new platform because what I've seen off off it, it is pretty darn nice for desktops, but we need to develop some kind of deamon which allows displays to be exported over a network when the display is NOT local.
Now it doesn't matter weither or not the display is on the localhost or not, clients always connect using the X protocol over loopback, this is a waste of resoures, why not only use it when it is absolutely neccecary?
I'd say make it POSSIBLE for programs to export their display not export them ALWAYS, I have no clue about how to do this, but if some people that know a bit more about X want to help me, we'll set up a project to implement just that, email me if interested, please flame here
X.. (Score:2, Interesting)
- it's fairly simple to implement
- it's a standard
- it works
- it's here now
A few notes in DirectFB's favour
- a modern, and hopefully clean, implementation
- good object-oriented principles
- as a result, fast and easy to program in
So the solution, as I see it, is a little different. I've looked at Berlin and all those other windowing environments. Look, if what you want is direct access to one video console, then go with DirectFB. But if you want a windowed system, stick with X. Just reimplement it yourself.
(Although I don't know what to say about Window Managers.. they still seems like a nasty hack to me..)
XFree86 is old, and is carrying a lot of baggage functionality. What should happen is that it be rewritten to abstract the windowing portions away from the hardware level. I figure that if this is done, it'll be a drastic improvement, stability and OO-wise, over the current arrangement.
This is the main gripe I've heard, time and again, and it's the one that annoys me, too. So I think someone should do something about it. Start removing this functionality from XFree86, and stuff as much of it as possible into kernel drivers. (These wouldn't have to be included with the standard kernel; it would be enough to have a set of loadable drivers you could download from somewhere else and load into the kernel.)
I doubt this'll happen, though, because it's too OO. The current linux kernel is monolithic as high hell, and the people behind it support that mind-set. Perhaps there's hope for the GNU/Hurd.
Choice is good; the more the merrier (Score:2)
Hopefully once of these we'll have an alternative to X. I was hoping for the Berlin project to provide this, but there doesn't seem to be much movement on their front (but then again, I don't follow it closely). Don't get me wrong, I have no major complaints about X (actually like it) but another system geared towards maximum perfromance (at the cost of sacrificing some flexibility) to choose from is good; especially in light of the fact that most modern apps (Gnome, KDE) should be pretty easy to port (./configure & make should suffice) once the base libraries have been ported.
What are the odds? (Score:2)
hardware lock (Score:2)
My experience with coding in X. (Score:2, Informative)
Ok, now the only good things about X windows is that.... umm... it's a "standard" which is a word a lot of people like. I think DirectFB will be successful as long as X windows is still around to run all the older Xwindows dependant applications.
Re:My experience with coding in X. (Score:2)
I'll probably get modded Troll for this but I'm serious about this question:
How is the above statement (if it is indeed fact) different than Windows and all the flack that it received for years about being overly backward-compatible through DOS?
Might a forking of XFree86 to drop much of this backward compatibility be warranted here?
Followup about the source. (Score:2)
Thank the gods... (Score:2)
Of course, what would really make this nice is if they can make it easy to set up. The number one newbie problem that I see with Linux is getting X to work. I have been running Linux for a few years now, and configuring X is still a huge pain. Apologies to Frank Herbert, "Who controls the easy setup tool, controls the Linux desktop!"
GGI Perspective: clean code is good code. (Score:2, Interesting)
It is a about damn time!!! (Score:3, Insightful)
Seriously! I've been pushing for the death of X for a long time now. DirectFB is a very promising replacement from the sounds of it.
As for the network transparency layer, nothing says that you have to lose that. If done correctly, you won't even need to recompile your apps for each different use. Quite simply, assume that every app on a system uses DirectFB instead of X. Now you want to remotely use a gui on that system. DirectFB simply needs to present the ability to run in a detached hardware mode. A client system can attach it's DirectFB to a DirectFB layer on the server.
The rest would run a lot like X: the application writes it's video output to DirectFB, which saves it in a memory buffer. That memory buffer is output to the client system as quickly as possible, but moderate loss is acceptable. All hardware blits are performed in software instead (since you really aren't using the system's video card at that point).
Yes, it sounds a lot like X, but without a few major X problems. Video updates are not required. So your windows won't hang on slow networks. Bonus #2 is that a lost connection doesn't have to kill an app. Just reconnect to the server when you get a chance and pick up where you left off.
I hope I managed to get across the major difference. I have a feeling that I haven't. I have a better explanation in my journal for those who really want to understand my major bitch points for Unix these days. (Even though I'm still a huge Unix advocate these days.)
Not supposed to _replace_ X. (Score:2, Interesting)
No more DRI, et.al, just FB modules in the kernel, and DirectFB with some window manager.
As far as the annoying whining about how we can't replace X, it's a standard, we need remote display support, blah blah blah, it seems to me that developing an X server that runs through DirectFB is the obvious solution. D'uh?
Jim Gettys on X vs. GtkFB and QtE (Score:3, Interesting)
Jim: No, I believe very strongly that either GTK+fb or QtE are dead
ends. Our experience in the market (beyond the hacker community) is
that the major attraction is the ability to share with little or no
hassle applications written for the desktop: while the applications
may need reworking to deal with the screen size and touchscreen, there
are many applications not written for GNOME (or KDE).
Network transparency is worth a lot in PDA's such as an iPAQ: it is
really a full fledged networked computer in your hand, which can take
advantage of other displays, keyboards, etc. in the user's environment
when convenient. If I have a lot of text to enter, I don't want to use
a touch-screen unless I must, and I don't want to have to build two
applications, the way Palm or WinCE does. Others will experimentally
determine that frame buffer based environments are a waste of time,
but we won't...
At CRL (Cambridge Research Laboratory), we are working on the Mercury
project for pervasive computing. With the advent of high speed
(wireless) network connections and large (currently 1 gigabyte)
storage devices like the IBM microdrive, we foresee an environment in
which you will want to take advantage of the computing environment
around you, including keyboard, mice, projectors, and servers of all
sorts. Note that the ability of an application to interact with
desktops in your network environment is therefore vital, and sometimes
at levels beyond file and web sharing. Most of what you hear about X
being too big are from people who know little or nothing about the
topic. After all, we wrote X Version 11 on 2 megabyte VAX 11/750's:
iPAQs have 16 or 32 times that much RAM, and a CPU 200 times faster
(for integer operations).
Keith Packard, in his TinyX server using his new frame buffer code,
has reduced the X server to 500-700K bytes of code (depending on
whether you want his new render extension for anti-aliased text and
graphics). Most of the perception of bloat is caused by how Linux
reports memory. An X server maps the display card into its address
space, and on current graphics cards this can easily be 8, 16, 32 or
even 64 megabytes of address space (for the frame buffer and registers
of the display). Naive people look at "ps" or "top" and draw the wrong
conclusion. Clients may be asking the X server to preserve pixmaps on
their behalf (which should really be charged to the client, but it
shows up in the X server). So, for example the RSS size on my iPAQ is
2.2 megabytes when running Familiar, with backing store and save
unders still enabled (arguably, on a device like an iPAQ, I should
disable them, which would further reduce the RAM footprint).
I recently completed work to remove the dependency on Xt, Xaw, and Xmu
that many of the little X utilities had accretted over the years: this
saves 1.1 megabytes of code on a device like the iPAQ (presuming no
user application wants/needs Xt, which is easy to arrange). These
changes have just been checked into XFree86.
The remaining work is to put Xlib on a diet. There is about
megabytes of code and static data that has accumulated since Xlib left
my hands that few applications and toolkits use (the CMS and
Internationalization parts of Xlib). These are either never used
(CMS), or only used by Motif (which few Linux applications care
about). By making CMS and the I18N parts of Xlib dynamically loaded
libraries, we can avoid breaking binary compatibility, but allow PDA
users who don't need them (essentially everyone) to avoid the waste by
not loaded those libraries. John McClintock has patches for the CMS
changes which I hope to look at soon, and the I18N work is straight
forward.
Keith and I believe that a basic X environment will end up a bit over
one megabyte of code, when this is done, while preserving complete
compatibility (a full X implementation).The replacements for X don't
come free either (they also have to have frame buffer code, window
operations, etc.). The true cost of network transparency is well under
a megabyte, IMHO. At the current cost of RAM, it's not much cost, even
on low end PDA's... We could make things yet smaller, but we'd then
be sacrificing some compatibility, which, while reasonable, is less
desirable, as knowing your application should "just work" is worth a
lot. So I see either QtE or GTK+fb as dead-ends, interesting for a
short while on the smallest devices, but will be just a passing
footnote in history.
Re:Jim Gettys on X vs. GtkFB and QtE (Score:2, Interesting)
Of course this doesn't matter much for the desktop, but it does matter if you are developing for the embedded market where the costs for RAM and CPU decide if a product has a chance on the market.Another problem with X we faced is that certain features like true alpha channel and color keying are simply not available. These are absolutely needed when developing software for digital TV. DirectFB not only replaces X for us, it gives us a whole lot more X can not (yet) do. It was meant as a replacement for X on settop boxes, not primarily as a replacement for X on your desktop.
Don't know if this is it, though it sounds good... (Score:3, Interesting)
Maybe it's not all due to X, who knows. But dragging around baggage beneficial to only a portion of users (that seems to be getting smaller with a growing Linux user base) almost seems unfair. If I spend most of the day in front of the framebuffer, with only occasional remoting of the display, I'd prefer to have the fastest possible performance during that majority of time, and would in exchange accept worse performance during remoting. That's essentially what happens with VNC on Windows right now. And I know we can do better than that, because Windows has notoriously few graphic hooks, and any new display system could easily improve on that without giving up performance in spades like X.
Re:Don't know if this is it, though it sounds good (Score:2)
Ah, the tyranny of the majority rears its ugly head, even here in the land of the free. We are more numerous so let's vote on everything. That way we get to rule while pretending to be fair. Let's dump all those old bearded Unix types who made Linux into the premier server and workstation platform. We don't want workstations or servers, we want gaming platforms. We don't want Linux to replace Win2K, we want it to replace the X Box.
Re:Don't know if this is it, though it sounds good (Score:2)
Re:Don't know if this is it, though it sounds good (Score:2)
While I'm not particularly a Windows whore, this statement is hard to swallow. Explain.
> but is also quite a bit heavier, and slower...that is what is using up your memory.
Memory? Who's talking about lack of memory? I've got gobs of memory. I'm talking about moving framebuffer memory around, and rendering graphics primitives. A 32-bit display takes the same time to render regardless of how much memory your app uses. I've tried those other WMs, and I'm not impressed. Sure you can get faster if you lower the resolution and color depth, but that's hardly a fair comparison.
> The implementation of X is what needs to be more hardware accelerated, perhaps
I can't say how optimized the various servers are (e.g. my TNT2), but the real culprit is not the failure of sequeezing out a couple more nanoseconds out of Bresenheim et al, but the big overhead of marshalling graphics primitives to a network protocol, or even just reducing this to shared memory operations. Add to this the many generations of code(rs) in the X code base, and I can't see how it could approach any level of efficiency.
Drivers for FB - Do they exist? (Score:2, Interesting)
DirectFB adoption (Score:2)
The UNIX-haters link was funny. For those of you who might have taken it seriously, just don't bother. It's a skewed version of history mixed with a lot of personal bile. I'm particularly amused that he chose to call it "X-Windows", and insisted the publisher use that form because it would "piss off" the X folks. The reason he says this is because the X Consortium goes out of its way to point out that "X-Windows" is an encumbered term, so folks are supposed to say "X" or "The X Window System". Nutball. Nuff said.
This would be great but... (Score:2, Insightful)
If Linux is ever to be a player on the desktop, we will have to abandon X. X and DirectFB are not mutually exclusive and there should be a relatively painless transition. X just doesn't make sense anymore for a PC dominated world. When was the last time any of you used a dumb terminal? I've never used X on anything other than PCs and I'm sure that most of my generation can say the same.
In short we need a new king for a new generation.
Do I want a transparent video player? (Score:2, Insightful)
I mean, really. The screenshot linked to is just awful! Which window's on top? Can I click on "Expand All?" Boo!
But the software itself looks keen . . .
The problems with X (Score:3, Insightful)
2) Its core protocol is missing a ton of features that program want. For example, nobody on the team knew how to do splines, so they left them out. Splines still aren't really supported, and won't be supported any time soon in the core protocol.
3) It's too extensive. It is generally implemented as a set of drivers, library, network server, resource manager, plus windowing system. Some of those features ought to be separate. In particular, splitting off the drivers (as well as implementations of operations the actual card doesn't support) from the windowing system would save a lot of hassles.
I think a layer for doing graphics under the level of the X server would be better. The main problem is that XFree86 has really good free drivers, which would be a shame to reimplement, but they are all for the X API.
There are some cases where you don't actually want the main features of X, so it would be good to provide a more fundamental graphics layer to programs that want it.
Re:How about client/server? (Score:2)
Re:How about client/server? (Score:2, Interesting)
X is a messaging and event handling system. There's nothing about it that says you ever have to open a window. You can use it for all sorts of local and remote event handling and messaging. The graphical aspect of it is what it's most used for. When you're writing a native X application, your last step is to start a loop that waits for events. Those events can be local or remote, and it's that capability that X should have been adapted. That it's had a great windowing system, X-Windows, built around it is perhaps even unfortunate. X is a marvelous technology that has never seen its full potential.
Re:How about client/server? (Score:3, Informative)
It does *not* use up "tons of RAM", as some people who don't understand the X architecture like to claim. If you see the X server using lots of RAM in top or the like, there are two very good reasons. (a) device mappings. Top counts this towards the total, but it isn't "real" physical memory being eaten. Have a 32MB video card? Guess why X looks 32MB bigger than it should?
(b) X stores pixmaps locally. This is why X *client* programs use less RAM than their Windows counterparts. One of the two (client or server) *has* to store any pixmap that's going on the screen. For speed over a network, it's much more intelligent for the X server to do so, since the pixmap will probably be drawn many times. So the client doesn't have to store its own copy...but it makes X look "bloated" because it's using some RAM itself to take load off the client programs. The overwhelming majority of RAM that X uses goes to this. If you're using Enlightenment with a pixmap GTK theme, the reason X is taking up more memory is because the client programs *aren't*.
The only real issue people have with X performance is that between the time an application wants to draw to the screen and the time the drawing happens, a context switch needs to occur. This is why the XFree folks came up with DGA, which avoids exactly this -- if you're just playing a game on the local computer, X imposes no overhead.
X does some damn cool things that Windows and friends will never do. Obviously, you can run programs over a network (without incredibly inefficient hacks like vnc). However, on a copy of XFree, hitting control-meta-kp or control-meta-kp- will let you switch resolutions, zooming in on something and letting you show stuff to people across the room (I use this a lot in my dorm room)
There are a few things that I don't like about X. X has a very sophisticated color management scheme, allowing you to output to just about any type of X server, but which can get complicated if you just want to draw something to the screen on your x86 box on XFree. That's why almost no one uses raw Xlib (X's own interface) and uses stuff like SDL or GTK, which handles the nasty details for you, and just lets you do your work.
XFree supports multiple monitors, desktops larger than your monitor, hardware alpha blending, shaped windows...
It's true that existing GUI "E-Z X configuration tools" haven't impressed me much, so you do have to maybe do a bit of poking to tweak out your configuration exactly the way you want it...but that's also true with most operating systems.
Oh, and Xlib doesn't natively support detatching windows from one X server and reattaching to another. I suppose this could be an issue, but since proposed replacements to X mostly don't do this *either* and since toolkits built on top of Xlib *can* do this...
Of course, you don't *have* to run an X server if you just want a console box...this [cmu.edu] guy doesn't run X.
For GUI systems, though, X is where it's at.
It will... (Score:3, Informative)
Having said this, they're not quite there yet, but it's coming along nicely and is quite promising.
X is nothing but a protocol... (Score:3, Interesting)
You've got a server machine with all those shared libs, right? Does an X terminal need those shared libs locally on itself to operate or can you get things like KDE to run on the X terminal session? No? If it's a "no", those shared libs are an application interface to X to make it easier to use its protocol accordingly.
Another experiment for you...
Take those shared libs and the apps that use them. Rip out the XFree86 server and replace it with a GGI or the XDirectFB server. So long as your apps don't use DGA or SHM (and maybe even then...) your apps will still work largely the same- why? Because, X, at its heart, is a protocol not shared libraries, etc. It has to be for it to all work transparently over a network with so many differing GUI rendering targets.
Re:Changing video mode (Score:2)
As for the network transparency, useful as it seems to be to many people, does it need to be tied to the video functions?
It is not tied to video functions.
Sorry i was Lying about the SDL thing.. (Score:2, Informative)
A:
X needs to be able to switch to the desired resolution. For this to work, you need to have the resolution listed in the 'Modes' line in your XFree86Config file (and your Monitor must support it). SDL does not currently support changing resolutions on X servers that do not support the XVidMode extension.
The following example is taken from my config for XFree86-4.0.1, but 3.3.x is similiar. Note that if your monitor isn't capable of using these video modes, the X server will drop these modes from the list of available video modes.
Example:
Section "Screen"
Identifier "Screen 1"
Device "3dfx"
Monitor "Samsung LCD"
DefaultDepth 16
Subsection "Display"
Depth 8
Modes "1280x1024" "1024x768" "800x600" "640x480" "320x240"
ViewPort 0 0
EndSubsection
Subsection "Display"
Depth 16
Modes "1280x1024" "1024x768" "800x600" "640x480"
ViewPort 0 0
EndSubsection
EndSection
Note the different entries for 8 & 16 bit screendepth. I.e. the 320x240 resolution is *not* available when X is started with 16bit depth (the default).
To test these entries, restart X after you modified XF86Config and press ctrl-alt-plus and ctrl-alt-minus to cycle through the resolutions.
Re: (Score:2)