Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×
Graphics Software

Trolltech Developing Qt That Doesn't Need X 240

Thrakkerzog writes: "Here is an article about Qt/Embedded, a version of Qt which is source-compatable with Qt/X11 and Qt/Windows. It doesn't use X11, and just uses the Linux framebuffer. This is very ideal for embedded systems. Check the link for more info."

According to Trolltech's release, "Qt/Embedded will also provide functionality not found in the X Window System, such as anti-aliased text rendering and alpha-blending of images. For increased performance, Qt/Embedded can utilize hardware graphics acceleration and it is well suited for multimedia and Web applications."

Flashy graphics without the overhead of X looks like a winner for all the companies providing embedded Linux devices and sofware.

This discussion has been archived. No new comments can be posted.

Trolltech Developing Qt That Doesn't Need X

Comments Filter:
  • by Anonymous Coward
    Oh for pity's sake. The shared memory stuff (MIT-SHM) has been in X for years. Everyone sane uses it. XFree86 doesn't convert everything local to UDP and back again, hasn't done for a long, long time.

    X is designed to be an extensible framework, like OpenGL. This is a GOOD THING, and is why both the OpenGL and X APIs remain clean, while Win32 and Direct3D are horrible kludges.

    X is actually relatively memory efficient comapred to citrix winframe or the like. A common problem is that people think that the X process memory size quoted in ps or top is correct - actually, since the whole video card is mapped into X's process space, the process size includes the entire gfx mem on the card, as well as it's control registers. This can be in excess of 16Mbyte - but this is not subtracted from the total main RAM in use on the system.
  • by Anonymous Coward
    So much for believing in nutritional needs.
  • by Anonymous Coward
    Linux might as well give up in the embedded market

    But Linux is an OS, not a company... how can it give it up? Seriously, though, BeOS is much more advanced & better designed in a number of areas... A program/game can write directly to the graphic buffer (full screen or in a window), a window's contents can change while the window is being moved, resized, etc. I don't want to say "innovation" (MS has given it a bad name, and it isn't an innovation), but someday people will recognize that it's a better solution

    BTW BeOS now runs on crusoe

    BeOS has run on crusoe since day 1 (of the announcement :-)

  • by Anonymous Coward
    Remember the old adage of "More choices is a good thing!"

    If this means KDE/Qt is more widespread, various open source OS's must be too. More uses for Linux/*BSD/open source is a Good Thing =)

    like grits? [unlimitedcontrol.com] who doesn't!
  • You know it--you love it--you can repeat it after 12 beers and a bong hit standing on your head ('cause you've heard it all your life...)
    Xwindows today, Xwindows tomorrow, Xwindows forever!
    After all, if it was good enough for Dad why change ?!?

    seriously people, when do you think maybe it might be time to move on? Are there any plans for that day or do we just wing it here?

  • Just to clarify:

    X11 runs in the userspace, so misconfiguration (or just switching your video card or screen) doesn't lock up the system

    X11 can crash the system just as bad as if it was kernel space, i.e. on NT. The actual X server, which controls the hardware, runs setuid root. Indeed, with the new Direct Rendering Architecture it is not possible to use the direct access modes without being root.

    If this was a microkernel and the X server used a kernel interface for controlling the hardware, it would be one thing - but XFree is directly banging on the hardware, and has the ability to bang anywhere in memory. A bad pointer can still lock the machine, as can a bad PCI setup.

    XFree 4.0 has many highend features which framebuffer-based GUIs will lack: multihead support, truetype support, modular drivers, 3D/OpenGL etc.etc.

    Windows CE has truetype font support, some have video output - and they are framebuffer devices.

    Some even have DirectX support

    X11 is GUI toolkit agnostic. You can run KDE, Gnome, GNUstep, Tk, Motif... apps under one X11 desktop, which you can't on a framebuffer-based desktop

    You can too! There is absolutely no reason why you wouldn't be able to do this - try it out with the X framebuffer server!

    The reason you would not be able to do this is because having the same application loaded in memory three times and using three different functionally equivelant library sets is dumb. The only reason this happens is because X is toolkit agnostic, and spent twenty years without ever having a decent toolkit. So you have a native X protocol version of biff, a xaw version, an xaw3d version, an openwindows enhanced version, a version packaged with enlightenment, gnomebiff, kbuff, etc etc.

  • Berlin attempts to replace the X server. GCI attempts to replace how graphical programs access the hardware. As I understand it, Embedded QT attempts to provide a widget set for the hardware.

    Berlin might be implimented in terms of Embedded QT, which might be implimented on top of GCI. Well, not really, but I hope that got the idea across.

  • Brent wrote:
    For set top boxes, and consumer Linux installations, windowing can be provided by KDE, or any other Window Manager that is ported to QT.
    That's a little harder than it seems. kwm (the KDE window manager) has communicate fairly tightly with the X server. You can't write a window manager purely in terms of the functionality QT provides, you have to speak Xlib.

    For there to be an Embedded QT window manager, QT would have to add a significant chunk of functionality beyond what would be required to draw widgets into a framebuffer.

  • One would also expect that someone that writes about the Qt license would actually have read it.

    There is no OS restriction in the Qt license.

    For example, I am doing a microwindows port. Microwindows runs just fine on DOS. You could use Qt on win32(with some effort) using it.
  • Jim Gettys is a name that should be familiar to all old-time X developers, as his name is on a whole lot of the code from way back when

    Anyone with some free moderation points might want to bump up his post.

  • Do you have any evidence for these assertions? I can believe that BeOS's deeply multithreaded kernel and display logic is more efficient than X, and I believe that MacOS X's Quartz API provides some fancy operations that would be expensive to emulate in X, but you're really making a lot of sweeping statements here.

    I happen to use X Windows over a network all the time, both at work on my X terminal to several machines in our computer center, and at home when I'm doing work there. If having X able to support those uses were a terribly heavy burden for the desktop, I could see moving away from it, but I don't believe that it is.

    I'd love to be educated as to the precise technical factors that you believe make an X desktop so painfully slow, but I haven't heard any yet.

  • Just thought I'd offer a tidbit on X performance from the XFree86 FAQ. They recommend that you run the X server on Linux at nice priority -10 so the X server gets first priority for interactive use.

    It would be interesting to see if doing this would make any impact on your feelings on X.

  • A) The whole X server over network paradigm isn't really needed for a local desktop (most of the time) by utilizing the framebuffer and hardware acceleration, this is provide an increadible peformance and memory usage boost. One reason I use BeOS that its GUI is so ridiculously responsive. Meanwhile KDE on a PII300 and TNT chugs along. Ever open up SysV init editor and resize the window? Talk 'bout major redraw. I really hope they put in support for writing directly to the framebuffer. That way OpenGL could be put on it and we'd be in desktop heaven.

    I don't think XFree86 really has any significant overhead due to the X server network support, anymore. As others have pointed out whenever this topic comes up, local clients talk to the server through UNIX domain sockets (i.e., no TCP/IP involved), pipes, and shared memory. XFree86 is about as efficient as you can get while still having a separate process responsible for actually managing the display.

    For embedded applications, it might make sense to have support for a system in which one process can serve as both application and as framebuffer driver, to reduce overhead, but in general this cost of the context switch is overwhelmingly outweighed by the convenience of having multiple applications able to put forth windows on the same screen, and by the convenience of not allowing everyone's code to have a chance at trashing registers on the video card, etc.

    As far as DirectX-style API's, isn't DRI on XFree86 4.0 working quite well?

    What I wish X had was an API for creating and switching between multiple video contexts, at different resolutions and color depths, the way Windows does. I'd love to be able to configure Wine to create an 8bit 640x400 video display context for playing StarCraft, rather than having to kill the X server, edit XFree86.conf and restart the whole thing in low-res/color mode.

    There's plenty that's wrong with X and could use fixing, but the basic decision to use a separate server that can be communicated with over a network is not one of them.

  • Note: I'm not a GTK+ hacker My understanding is that GTK sits above the Gdk layer, which does all the actual work, and porting Gdk means (pretty much) a port of GTK. This is why the Win32 port was (relatively) easy, and why you have both Gdk/X11 and Gdk/Imlib to choose from in X. So a port of Gdk to the framebuffer would do it.
  • I tend to disagree with the framebuffer comments. From my experience with it, it's a lot slower than the traditional text only console and using Shift-PgUp/PgDn to scroll back and forth doesn't work quite right (pieces of text from previously displayed pages remain on screen). Yeah, the Tux penguins on boot are a nice gimmick to show off to your friends, but that's all they're really good for.

    I only place I use the framebuffer support is on my laptop with its fixed pixel LCD. The text console looks terrible with uneven stretching of pixels to match the LCD resolution -- very annoying to read. With a frame buffer, I set the console to use a mode that matches the LCD resolution, making things more readable.
  • With QT you can use it in open source software with no charge.

    It's not as simple as that. You cannot use it for making open source windows software without shelling out big bucks (relatively speaking) for the professional version (unless you port the linux version to Windows yourself, if I read the license correctly.) This is what prevented me from using QT for an open source project I was considering - I wanted to have cross-platform capability. When I asked them about it, they used the "we have to eat somehow" line. So much for believing in open source.

  • I don't think the original poster was objecting to them eating, merely to their use of proprietory licensing.

    Then he should have stuck to that objection, instead of bringing food into it :-)

    I made the (apparently false) assumption that slashdot readers would know that the "we have to eat somehow" line is a false argument. As the post you replied to stated, whether or not Troll Tech developers are able to eat has nothing whatsoever to do with whether or not they allow QT to be used for free in open source windows applications.

    To be more explicit: in refusing to allow this, Troll Tech essentially states that they don't believe that the model they pay lip service to (free for open source, not free for closed source) is a viable one. If they did believe this, there would be no operating system restrictions on the QT license.

  • has the reliance on X to drive graphics hardware directly strangled the development of alternatives on Unix?

    YES!

    All the stuff going into XFree86 has killed development of fb or gdi or other simpler protocols. It does not matter how well they are designed, if you want your fancy card to run at full resolution, you have to use X, because all the hardware control is hidden in the X server.

    One plausible solution: could new replacements interface with the binary plug-in interface that the new XFree86 4.0 has? Then they could get all the hardware. I'm sure the interface will be painful because it will make X assumptions, but not impossible to program for. Once an acceptable replacement for X has been made, a new low-level interface can be designed, and instructions on how to change the drivers.

  • by spitzak ( 4019 )
    I seem to be in the minority here, but I don't think the "network protocol" is the problem. The problem is in the horrid design of the Xlib calls themselves! Implementing Xlib as local calls will just remove the only advantage of X and would be totally wrong.

    There is nothing wrong with buffered network protocols. In fact they use less context switches than api's. If this were not true, why do we have interfaces that write more than one character (or one bit) to a device? Isn't the overhead of copying those characters to a buffer from where they originally were inefficient? NO!

    Another way to look at it: if Xlib puts 10,000 requests in a buffer and sends it, we get TWO context switches (one to the kernel, one to the server). Win32 gets 10,000 context switches (each one to the kernel for each call). And X, despite being 5000 times more efficient in context switches, does not have the risks of putting complex code in the kernel! (PS: yea I know Win32 ain't that bad, but their solution is exactly equivalent to buffering multiple requests!)

    What does lose in network protocols is synchronous communication. When Xlib has to wait for an answer from the server, we get at least 4 context switches, plus the network overhead, and we lose. But we don't need so much synchronous communication!

    The solution is to chuck out most of the Xlib design except for the fact that it is a network protocol. A program that displays a non-interactive display should be writable with a *single* "write" to the server (plus it may have to wait for redraw events and send that write again).

    Get rid of colormaps! Trash the horrid font system and put in something so that if I ask for "Times" and 12 points, I get something (even if it is not Times at 12 points, if it has letters in it it would be an improvement over Xlib!). Either get rid of window managers, or make it sequential so I can create a window and send drawing to it in one block, without waiting for a stupid expose event to indicate syncrhonization with the window manager. Get rid of atoms, or make it so I can define thousands of atoms in a single round trip.

    While we are at it, put some non-primitive graphics in. It is inexcusable that we don't have anti-aliased fonts, or anti-aliased polygons (even though Win32 does not have these), or a call that draws a color image without me having to figure out how to dither it to the hardware!

  • Enligtenment and Gnome "support" does not cut it, because it is on the client end. If this was sufficient X could have one graphics call (putpixel) and we could quit working because all the work is done!

    Hey, I wrote a program that did radiosity and drew the result on the screen, but I don't think anybody would claim that because of that Linux graphics now supports radiosity!

    We need advanced graphics in the server. And we need to stop making excuses.

  • It's not much unlike the GPL in that respect (the difference being that you can write proprietary software with Qt if you pay, and you can't do it at all with the GPL).
    This isn't really true. Caldera uses the GPL extensively in just this way. They own the copyright for a lot of the stuff they produce, and if you want it under a non-GPL license, you have to pay them. This is nearly identical to the QPL.

    The difference is that what Caldera does provides much more benefit to the community. You cannot use portions of Qt in a GPLed program because of the incompatible licenses. And you cannot make a purely free fork of Qt -- any extensions to Qt have to be distributed under some sort of license that allows proprietary use by Troll Tech (I don't remember the exact terms).

    Caldera uses a symmetrical license -- it obeys the GPL, you obey the GPL, everyone has equal rights. But Troll is more equal than everyone else with Qt -- it can do whatever it wants with your patches to Qt, but you don't have the same rights. You can't say "this extension I wrote is only available to free software programs" -- and you probably don't want to, but they don't even give you the choice.

    This could be more important if/when Qt moves to embedded or otherwise Abnormal environments. In an embedded environment, things are often statically linked and integrated. But if you want to integrate Qt into general graphical interface, you will have to give up a lot of the control of your code to Troll Tech. The same is true with the GPL, but in that case you are giving up a lot of control to the community, not a company. That's what Open Source/Free Software is all about: community. The QPL is one-way, centralized on Troll Tech.

  • Troll Tech only gets rights to Qt derivatives (in the sense of copyright law), not to extensions.
    I don't see the distinction. The relavent clause is this (from the QPL [trolltech.com]):

    3. You may make modifications to the Software and distribute your modifications, in a form that is separate from the Software, such as patches. The following restrictions apply to modifications:

    a. Modifications must not alter or remove any copyright notices in the Software.

    b. When modifications to the Software are released under this license, a non-exclusive royalty-free right is granted to the initial developer of the Software to distribute your modification in future versions of the Software provided such versions remain available under these terms in addition to any other license(s) of the initial developer.

    It is, altogether, a rather short license. It doesn't seem to make any definition of "modified Software" or derivative work. I would thus assume that anything that used a portion of QPLed code would fall under this clause, and that would include many forms of extensions (though again, extension is not well defined either).

    This also clearly means that the initial developer has the right to distribute your free modifications under their proprietary license ("right is granted to the initial developer of the Software to distribute your modification in future versions of the Software provided such versions remain available under these terms in addition to any other license(s) of the initial developer."). This is a confusing notion, as each piece of the software has an initial developer, so I don't know why Troll Tech takes precedence...

  • Well, maybe I didn't tell you, but I predicted this. It's only a matter of time until we see the same thing for gtk/gnome.

    I figured this would happen once I saw what KDE and gnome were trying to do, namely isolate applications from X completely. Older apps communicate with graphics hardware via X. This meant that graphics hardware could be swapped in and out (and even across the network!). But now both KDE and gnome (with the help of GTK and QT, respecively) have become a complete layer between apps and X. This means it should be possible for KDE and gnome to completely skip X, and go straight to the hardware. The advent of the Linux frame buffer makes this even easier.

    There were hints of this already in projects like the now defunct Harmony (FreeQT) in how it handled TrueType fonts.

    As others have said, choice is great. It isn't (yet) time for X to die completely, being able to skip the rather large and complex called Xwindows will often be a great boon.

    I hope that at some point, all gnome and KDE apps will be run-time (or maybe shared-link time, which amounts to the same thing) switchable between framebuffer and X. Run the app, and if the DISPLAY is local, skip X, otherwise be an X client. ...or something like that, but now I'm just rambling.

    --Chouser

  • There would be similarity to Berlin, but not to GGI.

    "Embedded QT" represents an abstract API for constructing GUI apps. That does parallel Berlin.

    GGI represents a physical API that abstracts away only the lowest level of "talking to hardware."

    The net result is that you might want to run "Embedded QT" on top of GGI, much as you have to run Berlin on top of GGI.

    In the process, it's pretty evident that you'll lose the ability to have remotable network applications with "Embedded QT." (Berlin has no such loss, as it runs atop CORBA...)

    The thing that I don't see any information on is what they're doing about font rendering. That's one of the major things that X does which a framebuffer doesn't do...

  • Nope, that doesn't get the idea across. Berlin attempts to replace the GUI libraries like QT, Xt, GTK, ...

    Berlin depends on there being some lower-level display substrate like GGI.

    It would make sense to implement Berlin atop X; implementing it atop QT, of whatever form, would not make sense.

    What could make sense would be to implement Berlin (or, by the same token, X or Display Postscript) atop whatever low level framebuffer scheme lies underneath Embedded QT. But I suspect that this layer will more closely resemble GGI than anything else...

  • Seeing that KDE runs on Qt, if Qt/Embedded is source compatible, then the problem is solved. KDE on non-X displays.

    whoa... hold on a second here. i haven't looked at the kde code enough to prove this, but i kinda doubt that kde uses only qt. im pretty sure kde uses a lot of X calls as well. so if you have this new qt which doesn't use X, kde will not automatically compile for you. i may be wrong about this, and i would appreciate if someone would verify this for me, but i don't think kde can do all of the things it does based solely on the qt libs.

    but that's actually my secondary point. the more important part is this: For set top boxes, and consumer Linux installations, windowing can be provided by KDE, or any other Window Manager that is ported to Qt.

    now this i do know enough about to comment on, because i have worked with window manager code before. just porting a window manager to qt will do squat for you. in the most basic sense, the window manager does very little really. all it does is give you the means to move your windows around and resize them, and maybe close/shade/iconify them. X is what actually does the work of creating and displaying the windows. the wondow manager uses X library calls to modify the windows state, and do the other things it does. take away x, and oops! our wondow manager is now useless. want proof? run x without starting a windowmanager. see, you still get all of your windows, you just can't move them around. and you lose al of the little control options your window manager gives you. now try starting your window manager without x? what's that? you cant? ohhh.... ok, this isn't really proof, but it does illustrate my point. with this qt, the best you could do is a sort of MDI thing. you would write one big qt app that swallows smaller ones, kinda like the gnome control center. but this doesn't completely work, because all of your pre written qt apps wouldn't run inside this monster app. you'd need to rewrite them at least a little bit to make them compatible with an MDI scheme.

    > Sure it's nice for embedded stuff, but a lot of people seem to have the idea that they're getting a small, fast, free X11 replacement for their desktops.
    And for those who are looking to run their Qt/KDE applications, they are.


    nope, sorry. you are right about the framebuffer thing providing the video drivers, but it doesn't provide the windowing system for you, and kde, while it is an excellent desktop, is not a windowing system. so at best, you'd be able to run one app fullscreen on each of your 6 or so consoles, or run screen and switch between n different fullscreen apps, just like you would use it now to switch between a bunch of curses programs running on the console. (or the previously mentioned MDI app, with it's custom "applets")
  • Correct me if I'm wrong, but if Embedded Qt doesn't require X, then Qt apps should work on MacOS X without having to also run an X server.

    You're half right. You wouldn't need an X server, but you'd need Linux framebuffer support, which Mac OS X doesn't have, and isn't likely to have.

    Looks like a nifty hack for Darwin, though....

  • The question here is not whether framebuffer-based GUI Toolkits render X11 obsolete. There are many reasons why X11 will remain the better graphics subsystem for workstations:
    • X11 has network transparency
    • X11 runs in the userspace, so misconfiguration (or just switching your video card or screen) doesn't lock up the system
    • XFree 4.0 has many highend features which framebuffer-based GUIs will lack: multihead support, truetype support, modular drivers, 3D/OpenGL etc.etc.
    • X11 is GUI toolkit agnostic. You can run KDE, Gnome, GNUstep, Tk, Motif... apps under one X11 desktop, which you can't on a framebuffer-based desktop
    That said, I find Qt/embedded an excellent idea, moreover in the light of the recent progress in the efforts to port Linux to Psion PDAs and WinCE palmtops. For such devices, X11 is bloated. It will be nice to have Qt/KDE applications such as KLyX available on PDAs in the not-so-distant future. I hope the GTK/Gnome folks take up the idea and do the same with GTK/GDK, hopefully in a way that makes it possible to run both Qt- and GTK-based software under the same framebuffer-based GUI.

    These developments are important in a time where companies like Samsung are working on Linux-based PDAs with proprietary user interfaces and proprietary applications on top of the kernel. Although it's good that Linux becomes popular for settop boxes, PDA and other embedded devices, it would be a substantial drawback for the cause of Free Software if proprietary GUIs and userspaces would prevail on such systems. So Trolltech's move deserves applause from our community.

  • The press release doesn't mention licenses at all. The only reasonable thing to conclude is that it probably won't be free software.

    I believe it is now time for a fully free (GPL, perhaps) windowing system that fixes the major problems with X. Such a beast would:

    • Be based on a sophisticated imaging model with transparency and antialiasing
    • Have fonts that didn't suck
    • Be simple and small
    • Have hooks for adding hardware acceleration
    • Work with the realtime capabilities in the OS


    A lot of the infrastructure that we need already exists. Libart [levien.com] provides the imaging model. FreeType [freetype.org] can take care of the fonts. I've seen some early results from FreeType 2, and I have reason to believe it will be juicy. We can certainly make use of all the wisdom learned from mature systems such as X, as well as newer systems such as Berlin [berlin-consortium.org] and Microwindows [censoft.com].

    This idea, I think, is gathering momentum. If you're interested in contributing to the project, let me know and I can hook you up with some of the other people who are working in a similar direction.
  • The project EverBlue [netlabs.org] is a port in progress of Xlib to OS/2 Presentation Manager, so that you can compile X applications to run in a OS/2 framebuffer, using your normal OS/2 drivers and integrated with the rest of your OS/2 apps.
    --
  • [...]
    Set-top boxes[...] In this sort of environment, the 'display anywhere' X protocol is just excess baggage and a more direct route to the screen makes a lot of sense, especially if you are a company intent on providing a cheap device for general home use and want to get maximum speed out of the hardware.

    Actually that is where I most wish they would use X so I can have my non-embeded program display on my TV, or wrist watch, or car stereo's display, or PDA (assuming some sort of net connection). Witness the vast horde of folks wanting to do little more with the i-opener then turn it into an X terminal :-)

    Of corse I can see where the company that wants to sell a dirt cheap box would rather have a cheaper device... or want to lock me into their application.

  • compression, encryption and authentication/session management

    What about tunneling X over ssh?

  • Yes, but most QT applications will be source compatable. You can't say that about any of the gui toolkits you mentioned.


    -- Thrakkerzog
  • As others have pointed out, the userspace argument isn't true. I have to add that:
    • framebuffer-based apps don't necessarily miss out on multihead, truetype, modular driver and OpenGL support. Especially OpenGL and Truetype are already available.
    • It has advantages to have a GUI toolkit that is display driver agnostic. QT apps will compile for both X and the frame buffer device. The claim that you can't have many GUI toolkits on the framebuffer device is also simply wrong - you just need to port the toolkits or use an X server or X protocol proxy on the framebuffer device.
    • It is a common misconception that network transparency must be built in the display server/driver. It's very simple to add it later, as the X servers for other OSes prove, and much more efficient. Why do X applications need to convert all GUI-API calls to a protocol suitable for network transport, send the data over a Unix domain socket and convert it back to internal API calls for the X server? This is a great waste of resources and absolutely unnecessary.
    • X has very bad limitations that may be fixed only using X protocol extensions (which have the drawback of not being supported by existing software)
    • X wastes memory
  • Ever taken a look at the size of the market for Windoze products like Symantic PCAnyWhere or Citrix WinFrame? If your windowing system doesn't have that capability built-in, then someone's just going to have to tack it on later, anyway.

    I think the point is that X was designed to operate over a network, period; in hindsight, it probably would have been better to define a local display protocol that could be modified to work in a more peer-to-peer or client-server fashion as the need for that arose. There's nothing particularly wrong with "tacking on" functionality later, as long as the original specification was designed with that sort extensibility in mind.

    If that had been the case, then this discussion wouldn't be happening, because I could run X the way I want to, and you could run it the way you wanted, and we'd both be happy. As it stands right now, you get what you want, and when I try and get what I want, I get a shrug and a "Live with it - it's a good feature" reply.

  • Qt and GTK can potentially "skip" X and present abstract graphics interface because they have restricted applications domains: they are GUI toolkits for Motif and Windows-like applications. arranged and communicate.

    If you wanted to use a toolkit like Qt or GTK to replace X11 as a general purpose window system, you'd have to add a lot more functionality. And, in the end, you'd still end up with something that can't do as much.

    Embedded versions of those toolkits are very useful. However, they are no replacement for a system like X11.

  • X11 is still a great protocol for network transparent windowing: it's efficient, conceptually simple, and mature. In those areas where it really matters (bulk image and geometry transfer, 3D graphics) X11 already gives applications memory mapped access.

    X11 does lack a few features, like antialiased drawing and fonts. Those can be added easily with X11's well-defined and widely used extension mechanism, and without breaking backwards compatibility. If you type "xdpyinfo", you'll see that you are already running a dozen or so extensions.

    Using libraries that access the frame buffer directly does make sense for embedded systems, but for general usage, they would represent a big step backwards.

  • DPS and NeWS never worked as well or as efficiently as X11. In particular, for what really mattered--getting lots of data from the client to the display server--they are a lot worse than X11. X11 gives you memory mapped bulk data transfer on the local machine, and efficiently packed bulk data transfer to remote machines. That's really the best you can hope for.

    As for writing window managers, if you think writing them under X11 is hard, try doing it sometimes under Windows or MacOS. X11 at least delineates and defines responsibilities and puts the window manager in control. The fact that the protocol is complex is a result of the fact that there are a lot of complex interactions that can happen between different applications from different machines.

  • It's been done, and it's widely used: VNC [att.com]. It's free, it's very useful, and there are some vendors now offering thin clients based on it.
  • Qt is a proprietary toolkit. It may come with a more or less liberal license, but it's still owned and controlled by a single company. And, in fact, it appears that Troll Tech has opposed free reimplentations of Qt based on their API specifications in the past.

    Two truly open source GUIs for embedded systems are MicroWindows and NanoGUI. You can find more information at http://microwindows.censoft.com/. There are lots of other GUI libraries that can access the frame buffer as well. A port of GTK+ to SVGAlib or libggi probably wouldn't be all that hard either.

  • No, it wouldn't take a complete rewriting of the font code in X11 to get antialiased fonts. In fact, the existing font code should probably not get touched at all.

    Antialiased fonts and drawing could simply be added as a separate extension, with a separate set of requests. That way, for example, the antialiased FreeType code could probably be dropped in without a lot of changes.

    Whether to use antialiased operations probably should be left to high level toolkit libraries and/or applications, since it affects performance, color allocation, and color maps.

    For the common cases, of course, low-level client libraries could try to map non-antialiased calls onto antialiased calls.

  • Yes, I completely agree that there isn't enough innovation in GUIs on Linux. And I completely agree that it is time to move on.

    But X11/Xlib isn't the culprit. X11 clearly is not the best thing since sliced bread. It's an old design, a bit clunky in places, and lacks antialiasing for low resolution screens. But the would-be X11 competitors for desktop applications don't aim much higher. And the clunkiness of the low-level X11 API is of little concern to programmers, since it's mostly hidden by the various toolkits.

    The really important areas where Linux GUIs ought to innovate (but don't) are at the toolkit level. Well executed as they are, Qt and GTK+ are still MFC/toolbox-style, event driven, decades old technology. There are a lot more interesting and innovative ways of writing GUIs out there. Whether it's X11, GDI, Java, Berlin, SVGAlib, GGI, or anything else under the covers doesn't matter much.

    While for embedded systems, getting rid of X11 makes some sense because of space constraints, trying to replace X11 on the desktop to me is just barking up the wrong tree. I'd much rather see some of that effort go into something like a desktop based on scalable UIs, notebook interfaces, transcript-based interfaces, or any of a large number of other interesting, innovative approaches to GUIs.

  • Qt is just a application development toolkit, with a healthy dose of GUI.

    KDE uses Qt, but Qt is not a desktop environment. It is just a library.

    KDE will continue to use Qt/X11, as it always has.
  • How difficult would it be to abstract communication layer of the X server so that if it were running locally, it used direct calls, and if remotely, then by networking like it does now?

    Isn't that pretty much what AmiWin [nordicglobal.com] does, when you link it with the proper libraries?

    Why on earth do we need our computer to talk to itself through networking calls just to render a window?

    Because it's cool, and occasionally useful. Ever taken a look at the size of the market for Windoze products like Symantic PCAnyWhere or Citrix WinFrame? If your windowing system doesn't have that capability built-in, then someone's just going to have to tack it on later, anyway.

    It actually makes sense for X to have this feature. It's a good feature.


    ---
  • by redhog ( 15207 )
    I think we should bypass all of the OS and program the hardware directly, as done in windows to get better single user acceleration.
    --The knowledge that you are an idiot, is what distinguishes you from one.
  • by redhog ( 15207 )
    Of course I was joking! I thought that was obvious! Perheaps I should have put a ;) there to guide you...
    --The knowledge that you are an idiot, is what distinguishes you from one.
  • A few factoids to add to the discussion.

    The size of the X server on Itsy is under 700K, courtesy of Keith Packard's new frame buffer code; contrast this with your current X server weighing in at 2 megabytes. This is due to the changes in machine speeds over the last decade. (Note that Keith did the previous frame buffer code: but on 10 mip machines, you had to do things differently to drive a frame buffer flat out).

    DDX's are beginning to cut over to this code, so expect your X servers to get smaller over the next year or two.

    Keith is also working on an anti-aliased text and graphics with alpha blending extension: come hear his paper this summer at Usenix.

    Oh, and someone said X is 20 years old: incorrect, the first thing called X was created less than 16 years ago, and X11's design is about 12 years old.

  • I'm sure I'll get flamed but I think that a development library should not have a cost becuase you are trying to make a standard.

    Don't worry, I won't flame :-)

    The reason Qt has a cost is because Troll Tech is a business. Hmmm, was that a tautology? I actually think their marketing makes a whole lot of sense. Free for Free Software, proprietary for proprietary software. I wish the would do the same for their Windows product as well.

    Troll Tech is still largely a one product company. They would be foolish to give away their only source of revenue. But this embedded Qt, coupled with some other new products coming out the same time as Qt 2.1, means that there will be more of an incentive to opensource their professional version as well. If they can make more profits by giving Qt away and selling the complementary products, then they will do so.
  • Why don't you guys run a separate X session? Then you can have two resolutions and desktops at the same time (something Windows can't do).
  • Yeah, it would be great if the Trolls treated Windows like Unix: free for free and proprietary for proprietary. I suspect that this has crossed their minds more than once. I sense some signals that something like this may happen in the future.
  • The Trolls are hiring Mac developers. Hmmm...
  • The first thing I thought of was "this would make a better GUI installer for Linux". So far, only the Mandrake GUI installer has worked on my system. And only SuSE worked on my friend's system. Everything else completely bombs. The reason for this is X. My card cannot be probed, thus, not detected automatically. My friend's card doesn't have a VGA mode, so it can't use the default.

    An embedded Qt would allow distributions to use their own video detection routines. I don't know about frame buffers, but it seems that having two ways of making a GUI installer covers more bases than just the X way. Just load the library that's appropriate and use the same installer.
  • You are only half right. Yes, it is asymmetrical. But there's nothing wrong with that per se. As with any copyrightable product, the authors have some rights to derivative works.

    However, you claim about the QPL being incompatible with itself is totally off base. Troll Tech has zero rights to the code of third parties. Just because the QPL makes you open up your source code, it does not follow that Troll gets any rights to patch it into their proprietary version.
  • I've been thinking this over since yesterday, and there is still a problem with your scenario. The problem is copyright law. It doesn't matter what the any license says, it can't give any rights to the copyright holder that he or she did not already possess. The rights of party "A" do not transfer to party "B" just because party "C" combined their two code bases into one. In such a case, Troll could incorporate all of your modifications, including the third party stuff, into their free version of Qt, but they couldn't put any of the third party stuff into their professional version. That section of their license would be voided for that section of code.

    At the worst, you would be disallowed from combining the two. But in that case it's a very simple matter of making a distinct library that links to the original Qt and QPLd athena widgets.
  • It doesn't seem to make any definition of "modified Software" or derivative work...extension is not well defined either

    It doesn't have to define "modify" or "derivative" as they are already defined under copyright law. If you only link to Qt, then at most your code is an extension. But the only way you can be derived from Qt is to take parts of their actual code and modify them. The latter is what clause 3 refers to.

    But I assume you want to modify Qt itself...

    This also clearly means that the initial developer has the right to distribute your free modifications under their proprietary license

    That is true, but they also have the obligation to keep it in their free version as well. In short, they cannot close source it. The only way they can use it as proprietary code is to simultaneously issue it as open source code.
  • I asked VA Linux why they don't give their hardware systems away. They replied "we have to eat somehow."

    But that's not a true statement. Their employees may lose their jobs and the company may fold, but they can always get other jobs.
  • ...any extensions to Qt have to be distributed under some sort of license that allows proprietary use by Troll Tech (I don't remember the exact terms).

    You don't remember them because they aren't there. Troll Tech only gets rights to Qt derivatives (in the sense of copyright law), not to extensions.

    But actually, they might not be able to proprietarize you derivations either! IANAL, but look at the clause in question: ...a non-exclusive royalty-free right is granted to the initial developer of the Software to distribute your modification in future versions of the Software provided such versions remain available under these terms... To my non-legal mind, this means that they can only use your derivatives in the Qt version you derived from. If you derived from the Free X version, they can't use it in the Win32 version without your permission. They could of course put it in the proprietary X version, but they would still have to include it in the free version as well. Again, IANAL.
  • Clause 3c refers to the Software, ei. the Qt Widget Library. You would be correct if I incorporated a third party's QPLd code into my own version of Qt, but that was not your scenario at all. You were talking about linking an application to both the QPLd Qt and another QPLd code base. The Trolls get zero rights to any of your code that merely links to Qt (beyond the demand that you open source it).

    They can't proprietarize your code unless it is a modification to their code.
  • I see a lot of Windows developers on the Qt mailing lists. Probably just as many as there are Unix developers. From the questions they've posted and the comments they've made, I can surmise that at least a quarter of the Win/Qt developers are not doing porting. And this is despite the fact that Qt is not even close to the MS paradigm. The reason for this is that Qt is better, easier and more robust than MFC or Win32.
  • This week the company I work for is cutting a 6 figure check to Citrix for the privledge of a capability that X has for free. Nice.

    -B
  • For the first time Im relly happy about QT, I still doesn't like it and will never ever in hell use it but it will hopfully inspire GTK hackers to imitate ;). Linux doesn't need one way to do it but more ways, long live QT,GTK, Berlin, X,Dinx,Framebuffers and GGI !
  • I don't want an Xterm that uses a hard to read font

    You mean like xterm -fn '-bitstream-courier-bold-r-normal-*-*-220-*-*-m-*- iso8859-1' &?

    James

  • XFree already provides DGA to remove the X protocol and network overhead for local apps, so why not combine this with Qt/fb for a seamless "do the right thing" Qt-based desktop...

    A Qt/KDE based app. can determine if it's X display is local or not, and act accordingly: If the display is remote (i.e. over the network), then the normal Qt/X is used, but if the display is local, then the new "embedded" Qt/fb is used "on top of X" via DGA to provide a seamless display.

    What would really make this solution would be if XFree accelerated drivers could be used by Qt for direct screen access rather than using the framebuffer which has very limited 2D acceleration only.
  • Yes, the license for QT version 2.0 is fully "Open Source" compliant. Of course people still complain because it's not GPL'ed, but that's life.

    -----------

    "You can't shake the Devil's hand and say you're only kidding."

  • What's wrong with the QT license?

    It's an asymmetric license - Troll can use your derivatives in a non-free product, but you can't use theirs in a non-free product.


    This means that you can't combine code from both QT and a QPLed product from someone else. You'd have to give both original authors rights over each other's code which the QPL doesn't let you give.


    Compared to standard proprietory licenses, the QPL is a good deal. But don't mistake it for a license which allows the community-style code reuse which has made OSS mushroom so fast.

  • Do you have a problem with them eating? The levels of intolerance here at Slashdot have reached an all time low.

    I don't think the original poster was objecting to them eating, merely to their use of proprietory licensing.


    Most people in the world get paid without creating proprietory software. Even software developers (most of them write in-house software, which is not licensed *at all* - and hence does not have the same socially divisive effects that non-free packaged software does).

    In any case, this claim that people will `starve' if they don't write proprietory software is completely false, especially in Norway.

  • Just because the QPL makes you open up your source code, it does not follow that Troll gets any rights to patch it into their proprietary version.

    The QPL insists you give the initial developer these rights in your derivative works. In the case of QT, that means Troll. The relevant paragraph is 3c:
    When modifications to the Software are released under this license, a non-exclusive royalty-free right is granted to the
    initial developer of the Software to distribute your modification in future versions of the Software provided such versions remain available under these terms in addition to any other license(s) of the initial developer. [emphasis added]

    This means exactly that they get the right to patch it into their proprietary version.
  • At the worst, you would be disallowed from combining the two.

    Assuming that copyleft-style licenses are capable of standing up in court, that's what would happen.
    But in that case it's a very simple matter of making a distinct library that links to the original Qt and QPLed athena widgets.

    On a desktop machine it would be. A random palmtop platform might not have any facility to do dynamic linking.


    But I think the QPL is much more dangerous for applications than for libraries. As you say, generally you use a library by linking to it. Troll say that "We feel [the QPL] is particularly well suited for anyone who wants to run an Open Source project and still have the possibility to earn some money to eat from sales to closed source commercial developers." Other people on the net are starting to take that opinion. If two equivalent programs were both QPLed it would be very annoying, because there are many times when you'd want to share the code. E.g. you might want to rip xemacs's context highlighting code, modify it and then stick it into Abiword or KWord. If these were QPLed you couldn't. As a result, it becomes very hard to share new features without a complete rewrite, which is one of OSS's principal technical advantages.

  • This is not only great for embedded systems, but for desktops.
    A) The whole X server over network paradigm isn't really needed for a local desktop (most of the time) by utilizing the framebuffer and hardware acceleration, this is provide an increadible peformance and memory usage boost. One reason I use BeOS that its GUI is so ridiculously responsive. Meanwhile KDE on a PII300 and TNT chugs along. Ever open up SysV init editor and resize the window? Talk 'bout major redraw.
    I really hope they put in support for writing directly to the framebuffer. That way OpenGL could be put on it and we'd be in desktop heaven.
    B) Its X compatible so no re-writing apps to support a next Gen interface!
    C) It dumps all the X stuff that is in qt and is redundant anyway on a Qt system.
    I think they seriously have the right idea with this release. Finaly, a great kernel like Linux gets a good windowing system to go along. If this is GPLed, it will not make its biggest splash in the embedded market. It will make a splash in the desktop market, because even if Trolltech doesn't have the right focus for this product, I'm sure lots of media obsessed users pissed of by poor interactive performance do. This is seriously cool. This also bodes well for a DirectX type API on Linux. Think about it! It support hardware acceleration, so SDL could be put on it and have a very direct route to the graphics hardware. If basic SDL-style input services are put in, and OpenAL plays nice with it, you have a Direct, low-overhead API that is cross platform to boot!
  • No, X is really not very efficiant for local devices. BeOS and MacOS X display servers are efficiant, X is nowhere in that ball park. Actually, I didn't realize if embedded Qt does not support multiple windows (does it?) I know that BeOS certainly does and its graphics driver is loaded as a dynamic module. Having a client/server has nothing to do with it. Second, DirectX style is not only 3D. 2D graphics and input are also part of it. X has pretty bad 2D performance, and DRI is a pretty big hack. I'm saying that on the desktop there is no reason to have X (which is bloated and offers a lot of useless features (of the desktop anyway)) when something lighter and more efficiant can be put in place.
    PS> Network transparency should be a much higher level service. In a desktop environment, stuff like X and OpenGL and DCOM and SOM disgust me for their performance robbing network transparency.
  • What does that have to do with it? Every major PC windowing system aside from X can switch color depths on the fly.
  • "I really hope they put in support for writing directly to the framebuffer. That way OpenGL could be put on it and we'd be in desktop heaven."

    This is why the Vesa frame buffer + X11 frame buffer server exist. The problem is that it is totally non-accelerated. X11 uses the XAA (X Acceleration Architecture), which is a gain. True, redraws are somewhat expensive, but that's mainly because the app is written poorly.

    Use Slackware -- BSD style init scripts :-)

    "B) Its X compatible so no re-writing apps to support a next Gen interface!"

    It's QT compatible. I'm a GNOME guy. :-/
    ---
  • I certainly hope that the license terms are the same as for the original Qt, but I wasn't able to verify that either from the announcement or from Trolltech's own web site. I would imagine that they wouldn't intend to change course, but it would be nice to see that confirmed. If there's anyone from Trolltech reading this, an official statement on your web site would be a good thing.
  • Or to some other frame-buffer based GUI. I want to use Mozilla/XUL/XPCom as the basis for a whole set of applications. And it would help if I could use it embedded.

    Jack

  • X isn't designed to be fast sleek or elegant. It's designed to be stable flexible and powerful. It is that.

    How much of a performance hit the flexibility costs seems to be a subject of great debate. Not being an X hacker all I can offer is subjective, anecdotal evidence - on my box, certain things are noticeably slower, but other things are noticeably faster, I don't see any significant overall speed advantage to win32 over X on my hardware, just some fairly minor trade-offs going both ways.

    Of course X itself is flexible enough to adapt to a lot of situations - if I stuck a larger window manager on X I could make it slower than win32, and if I stuck a smaller one on I could speed it up a bit too.

    There are downsides to flexibility, to be sure, but there are advantages too. If you really don't like X, why not make something you like better? X isn't a part of linux, remember that. It's one of many open source programs that you can run if you choose.

  • This is something that I am so interested in its not even funny. X is good for sharing / pumping apps up and down a network / remote login etc. but is too much cruft for something as simple as a desktop GUI. The topic de rigeur is targeting Linux as a replacement for Windows (which I think is moronic: Linux is *really* a server but everyone will disagree and follow the trend and call me an asshole anyway. oh well!). Well, not in its present state. I mean, if Caldera's WebSpyder browser can run in DOS mode, there's no reason why Linux can't have a better GUI system that doesnt require so much twisted legacy-based logic and overhead.
  • What's wrong with the Qt license?
    Someone writing proprietary software does it for the money. It's fair that all the developers (including the ones working on the widget set etc.) would profit from that if the programmers don't give back anything else (their code).

    It's not much unlike the GPL in that respect (the difference being that you can write proprietary software with Qt if you pay, and you can't do it at all with the GPL).
  • It's not much unlike the GPL in that respect (the difference being that you can write proprietary software with Qt if you pay, and you can't do it at all with the GPL).

    This is one of the reasons that I like the LGPL more then I like the GPL. My point was that if they want to make Qt a standard then it should be free for "everyone" to use. The BSD license is also good in this regard. I'm not really critizing them for charging money for it but it isn't what I would do. That's it basically.
    Molog

    So Linus, what are we doing tonight?

  • X servers can communicate with clients over a variety of communications channels including network streams, shared memory, and unix domain sockets, etc...

  • 'spose you write closed source...for whatever reason.

    TrollTech: A set of libraries; $1550 per developer.

    Microsoft: Visual C++ Pro AND W2K. About $500 per developer, for both.

    My sources: The trolltech webpage and pricewatch.com

    I think the price for Qt is ridiculous. Borland sold their stuff to anyone, for $49.99, at a time when the cheapest alternatives were over a thousand. Phillipe Kahn is still a very rich man. The way they (Troll and KDE) keep yapping about the "QPL" is sickening. The Qt libs do not even have a value of a Borland product, let alone MSHAFT.

    Really, I know a lot of people don't like to hear it, but far too many Linux OS and add-on companies are guaging their price structures off of Microsoft, Borland and Apple.

    Here's some news for you: your product only runs on a few percent of the world's machines, if that. Stop staring at your P&L and get the products out for low cost so developers can use them.

    You are killing Linux, which wouldn't exist without people like RMS and Linus, who were selfless and knew they would have to give for a long time before the rewards came back.

    Wake up, Trolls.
  • I'm not sure if this is what Trolltech is talking about, but I want a display server that doesn't take over the whole screen. I want full screen text mode consoles to use with mutt. I don't want an Xterm that uses a hard to read font and useless crap on the screen to click on with a mouse that takes my hands off the keyboard. And I want to be able to launch a graphical browser from an email using the framebuffer without all the overhead of X and either Gnome or KDE. It's just way too much stuff.
    Anomalous: inconsistent with or deviating from what is usual, normal, or expected
  • Since this new Qt is built on top of the linux framebuffer infrastructure it will most likely use the standard frambebuffer drivers too. Currently there's at least drivers available for the Matrox cards, some TGA cards and a generic VESA 2.0 one.

    BTW, if you haven't checked out the frambuffer stuff yet, you really should, it's quite cool. You get a Tux logo while Linux boots up and you can have hi-resolution text consoles. Framebuffer support seems to be tagged experimental in the 2.2 kernels at the moment, but I've found that it works pretty well.

  • No X this mean:
    • They must convert KDE (that require X) or create a new desktop (one more :-).
    • No GTK applications will work with it (Unless support developped by the GTK project group, which is unlikely)
    • No X application support (Netscape Communicator ...) until a port is done.
    This is a M$-like method to create standard: pressing the developers to adopt Qt as the standard application model capable to be used in all environnement (X and non-X) inside Linux.

    And if Gnome release such environnement it will only create more fragmentation. I don't really like this idea.

  • The design of the X Server sticks to the original multiuser-server philosophy that everything runs on the server, and the client is practically nonexistent. At the time "GUI" (tm) came out, people were used to telnetting and running processes on central boxen. The X Server design maintained the status quo.

    But jesus, are we still in the days of VAX? Big servers are great and it's useful for people to share them, but everyone ALSO has a decent desktop box. Why on earth do we need our computer to talk to itself through networking calls just to render a window?

    If we're going to keep up the desktop-user push, we have to make the windowing environment better. Does anyone have any figures for how much slower the X server system is than a direct windowing API? If it's a signifigant speed issue (and I imagine it is), we're going to have to do something about it.

    How difficult would it be to abstract communication layer of the X server so that if it were running locally, it used direct calls, and if remotely, then by networking like it does now? Best of Both Worlds.
  • by bluGill ( 862 ) on Tuesday March 21, 2000 @11:49AM (#1185532)

    I find that the majority of my time in X is spent with something onscreen not running on the local machine. Even if we call the programs running on the same machine as my window manager this is true.

    Maybe your desktop machine is fast enough, but not mine. I used to have an ultra sparc on my desktop. I hated it, genuine noisy fan, poor keyboard (You think Sun would know the controll key belongs next to the A. xmodmap is for more difficult tasks than that) And when I kicked the power cord all my compiles stoped. Now the server is in a back room, I have a NCD (A dumb terminal that can run X) on my desk.

    As a devolper I find that my programs have to run on a machine in the lab. Pop an X window from the lab machine to my desktop and its like working in the lab. THen I can go home and pop an X window from the lab to my home FreeBSD machine. (I don't normally work from home, but if I can check my compile over night and fix the one typo after supper I save time at work the next day)

    I used to have a sun3 in one room, and my main machine in anouther. In theory I could run programs on the sun3, but since the main machine is 400 mhz, and the sun is 16 (20? doesn't matter as m68k and x86 of different generations don't compare well by looking at mhz, but you can get the idea) who wants to? X still has life. Xfree86 is very fast on a local machine, and works just fine on a remote one.

  • I wonder how many slashdot readers figured out that this poster is being sarcastic? Anyway here is my take on this new embeded QT.

    I read through the comments looking for someone who gets the real significance of this and came up with a blank. So here is my take on this baby.

    When WinCE was 1st released oneof MSs major promises was that it would let you run the same apps and exchange files in the same format on both desktop and palmtop. Basically they promised MSWord in a pocket sized version.

    It never happened and the reason is simple. MS office is over 200 megs of bloat. If they could have made it smaller they probably would but frankly that's tough to do. a 16 meg office suite and OS combination just isn't going to happen.

    fast forward to the present. portable Linux has a compressed file system almost dubbing the capacity of a flash card so all you really need is a 32 meg office suite to fit in 16 megs of flash. KOffice is normally under 30 megs with the kdelibs. add on 2 megs of QT and 400 K kernel with all the drivers for that device plus frame buffer and you are running in 16 megs of cache with an OS and an OFfice suite. add another 16 or 32 megs of RAM to run everything in and you can get decent performance plus a desktop.

    THAT is the significance of this thing. Linus plus Transmeta plus Troll Tech and the KDE team are about to deliver on Bill's promise.

    Frankly I would hate to be a microsofty right now.

    As for little issues like "dose this interface match the small size device?". They don't matter. Interfaces can be hacked and adjusted and with tidy modular code like this it doesn't really take much for good GUI designers to "fix" it.
  • by spitzak ( 4019 ) on Tuesday March 21, 2000 @04:23PM (#1185534) Homepage
    We need to replace X. Anybody who thinks otherwise is totally ignorant of how bad it is.

    But I don't want to see a "toolkit" interface as the low-level API. This will completely freeze all gui devlopment. It will also make Linux much harder to "hacker" program and will make it less fun. If I am forced to use Qt, I might as well use MFC and Direct X.

    What we need is a true replacement for X that keeps the (few) good ideas of X:

    A networked, buffered protocol. Despite claims above, this is more efficient than a call-based API. There has to be context switches, unless we want to allow the programs to write and peek at each other's windows and to be able to clobber the video registers. The way to keep the context switches down is to buffer requests. Nice simple buffering at a low level, and we get an efficient interface, and we get networked transparency for "free" (rather than having to add it on, as MicroSoft is feverishly trying to do right now...)

    The server does not have to do any "GUI" things. X design is 20 years old, yet it is obvious that it can draw all the GUI components ever invented (like we can copy Windoze quite exactly, and that was not a design criteria when X was made). I do not want a server that has any concept of a "menu" or "button". That is bloat. Put it in the user-level library (much like Qt and GTK are now). I really really fear Qt becoming the standard interface, even MicroSoft was smart enough to not cram MFC down everybody.

    The server does need advanced graphics capabilities. Here the opposite is obvious: X obviously cannot duplicate new ideas. We have seen antialiasing for years now and X cannot do it. 3D requires a whole new interface (OpenGL) that does not interact well with the rest (it does not use X gc's or colors, for instance). And way too many programs "work" by creating a local image buffer, doing all the work there (thus losing all hardware acceleration), and drawing the image.

    I envision a server much like X, but with graphics capabilities like a combination of PostScript and OpenGL (plus antialiased everything, like Flash, and 4-channel images, and transparent paint, and UTF-8 text).

    It seperates programs into arbitrary-shaped "windows" (perhaps with transparency) and does not allow one program to draw in another's "window" or intercept events to another's "window". But except for that it is "GUI stupid". It must deliver raw events to the clients and make absolutely no assumptions about anything, for instance a "window" does not mean it has a border.

  • Howdy Joel!

    It sounds nice at first, but don't get the idea that Qt is replacing X on the desktop anytime soon.

    As others have mentioned in here, it is likely that as a consumer desktop graphical system, an X-less QT/KDE interface could fill a big need. Consumers who just want to run graphical applications locally, don't ever need the overhead that X provides.

    Is Qt becoming its own windowing system as well?

    Seeing that KDE runs on Qt, if Qt/Embedded is source compatible, then the problem is solved. KDE on non-X displays.

    Will you be able to run more than one Qt app and have them windowed?

    There are 2 answers to this. 1, with embedded devices, such as webtops, PDA's, and refrigerators, only one app is running, and therefore windowing isn't needed. For set top boxes, and consumer Linux installations, windowing can be provided by KDE, or any other Window Manager that is ported to Qt.

    Where are the video card drivers coming from without X??

    Frame-buffer devices. This is what gives you the graphical penguin on most distributions bootup now.

    Sure it's nice for embedded stuff, but a lot of people seem to have the idea that they're getting a small, fast, free X11 replacement for their desktops.

    And for those who are looking to run their Qt/KDE applications, they are.

    -Brent
  • by Arandir ( 19206 ) on Tuesday March 21, 2000 @04:01PM (#1185536) Homepage Journal
    When I asked them about it, they used the "we have to eat somehow" line.

    Do you have a problem with them eating? The levels of intolerance here at Slashdot have reached an all time low.
  • by Arandir ( 19206 ) on Tuesday March 21, 2000 @05:28PM (#1185537) Homepage Journal
    I don't think the original poster was objecting to them eating, merely to their use of proprietory licensing.

    Then he should have stuck to that objection, instead of bringing food into it :-)

    Seriously, it is unrealistic to expect commercial developers to give up their jobs and become waiters as suggested by RMS. But we are not talking about developers here, we are talking about the companies that employ developers. Before these companies can pay their employees, they need revenue. If Troll Tech open sourced their professional version, they would end up with ZERO revenue, and be forced to lay off their employees. If they can get complementary products to support Qt with in the future, then that may be an option at that time. But it is not an option now.

    Qt is not the type of product that you can shrink wrap, put on store shelves, and hope enough users buy it to subsidize those that download it instead. And it's unrealistic to expect them to convert to a support company, particularly since their customers are in the profession least likely to need support.

    The unfortunate fact is that Troll Tech has only one product. They don't sell other proprietary software like Redhat does. They don't sell hardware like VA Linux. All they have is Qt, and if they don't sell it they have to lay off their employees.

    Their current situation is in my mind nearly ideal. The software is free if you write free software, but it's proprietary if you write proprietary software (I only wish that the Windows version were the same). But one who is of the opinion that all software must be free takes a strange stand by insisting that proprietary software get the benefit of a free library.
  • by anonymous cowpie ( 31472 ) on Tuesday March 21, 2000 @07:33PM (#1185538)
    In a similar vein, the YAX [netpedia.net] (YAX Ain't X) project aims eventually to build a windowing system on top of svgalib/GGI/fbcon/Mesa/whatever that will support Gnome and GTK apps. There hasn't been a lot of traffic on the list, but the code is progressing, albeit somewhat slowly.
  • by Pike ( 52876 ) on Tuesday March 21, 2000 @11:55AM (#1185539) Journal
    It sounds nice at first, but don't get the idea that Qt is replacing X on the desktop anytime soon.

    Is Qt becoming its own windowing system as well? Will you be able to run more than one Qt app and have them windowed? Where are the video card drivers coming from without X??

    Sure it's nice for embedded stuff, but a lot of people seem to have the idea that they're getting a small, fast, free X11 replacement for their desktops.

    -JD
  • by geirt ( 55254 ) on Tuesday March 21, 2000 @11:35AM (#1185540)
    Microwindows/NanoGUI is an Open Source project aimed at bringing the features of modern graphical windowing environments to smaller devices and platforms. NanoGUI allows applications to be built and tested on the Linux desktop, as well as cross-compiled for the target device.

    Both share a common graphics engine. Nano-GUI is based on an X-like protocol called Nano-X. Microwindows sports an interface similar to the ECMA APIW spec with some advancements.

  • by be-fan ( 61476 ) on Tuesday March 21, 2000 @05:02PM (#1185541)
    I'm talking about efficiancy. If you look at the BeOS and MacOS APIs a lot of what they do is very efficiant code-wise. I'll speak for BeOS because thats what I use most often. The BeOS display server is just a thread in the app server (the BeOS is a microkernel.) The connection between the app and the server is just some really efficient message passing between two threads. It leaves out a lot of the negotiation and protocol stuff needed with X. In the app server, it is drawn using the graphics driver which is loaded as a dynamic link library. I don't know too much about MacOSX, but I do know that it too uses a light weight window process. Also, there is very little cruft in the BeOS window manager. It is not nearly as feature heavy, and a lot of the layers such as toolkits and window managers and desktop environments are not there. Sure it can't do any of the network transparent stuff, but it really isn't meant to. Aside from technical factors, X is slow from experiance. There are noticable problems with redraw in KDE, and it just doesn't feel snappy. Its on par with windows 98 and slightly slower than 95. Of course, since I come from BeOS, it is painfully slow. I've seen what a light, well designed interface can do. For example, BeOS has a busy cursor, but I've only seen it once when running a benchmarking app. Huge menues load instantly, complex views almost never have redraw problems, and there is never a time when you feel like you're waiting for the sytem to respond to you.
  • by taniwha ( 70410 ) on Tuesday March 21, 2000 @11:24AM (#1185542) Homepage Journal
    So will there be an API for 2d drivers for common cards? (embedded systems seem to be using all the same chipsets ...) will they use an existing one so that existing drivers can be used? what about 3d drivers?
  • by molog ( 110171 ) on Tuesday March 21, 2000 @11:19AM (#1185543) Homepage Journal
    With QT now being a good solution for embeded Linux, it would make good sense to use QT for application portability. I like QT. It is object oriented and easy to program with. On the other hand, I'm not too keen on the way that it is marketed. With QT you can use it in open source software with no charge. If you are making propriatery software there is a big charge for it(well some people could compare it to other componets that cost more but I'm speaking from my point of view). I know it would be a nice world if everyone would write open source apps, but a lot of cool apps that would get written for Linux would only be brought over if there was a good open frame work. I think that the best way to go as far as development libraries go is to sell a development environment. Trolltech sells the library only AFAIK. It is for this reason that I support and use the GTK becuase it feels more open to me that everyone can use it. I'm sure I'll get flamed but I think that a development library should not have a cost becuase you are trying to make a standard. Just an opinion.
    Molog

    So Linus, what are we doing tonight?

  • by tjwhaynes ( 114792 ) on Tuesday March 21, 2000 @11:36AM (#1185544)

    This version of QT without X looks very nice for running on Set-top boxes - anti-aliased text and all. In this sort of environment, the 'display anywhere' X protocol is just excess baggage and a more direct route to the screen makes a lot of sense, especially if you are a company intent on providing a cheap device for general home use and want to get maximum speed out of the hardware. This does of course assume that the license for QT/Embedded is reasonably set... On the flip side, just how much software are you cutting yourself off from if you don't provide X libraries? Quite a lot I suspect unless QT/Embedded is providing some extra coverage.

    Cheers,

    Toby Haynes

  • X11 is still a great protocol for network transparent windowing

    Really?

    it's efficient

    Only if you consider marshalling/unmarshalling individual drawing primitives across some sort of IPC (network or local) efficient. No, I'm not advocating direct application hardware access. Think outside the box, and maybe go back and look at how systems like NeWS, Display Postscript and Berlin are designed.

    conceptually simple

    No, not really. Try writing a window manager sometime. The original idea was (is) pretty simple, but once you start adding the various standard extensions that accumulated over the years, if you're writing something major, it's a real mind-bending mess. You're fortunate nowadays that GTK+ and Qt hide a lot of the evil from you.

    mature

    No argument there; X is tried, true, and it works.

    In those areas where it really matters (bulk image and geometry transfer, 3D graphics) X11 already gives applications memory mapped access.

    That doesn't help you if you're remote ... and yes those are nice sometimes if you're remote.

    X11 does lack a few features, like antialiased drawing and fonts. Those can be added easily with X11's well-defined and widely used extension mechanism, and without breaking backwards compatibility.

    Ever wonder why that hasn't been done yet? It's because most people who thought about it decided it wasn't worth the trouble: existing applications might run, but they wouldn't get the new functionality (i.e. antialiased characters). They would still still require a rewrite (yes, a rewrite, not just recompiling). The APIs and necessary backend code are just necessarily that different, because the original X ones were designed so badly.

    [To be fair, the situation is a little better now, just because modern toolkits abstract the stuff enough that you could get by with only minor changes to the library APIs ... in most cases you'd just have to recompile the apps that didn't use the changed APIs, and only make minor changes to the ones that did, or that bypassed the library in some way]

    If the antialiased font server was backwards compatible, it would only be because it kept the entire old (now redundant) architecture and API, in addition to implementing the new one.

    The necessity of taking this approach to extend other aspects of X is one of the contributing factors to its bloat over the years.

    Using libraries that access the frame buffer directly does make sense for embedded systems, but for general usage, they would represent a big step backwards.

    Agreed, for the most part. However, arbitrated (i.e. not totally unsupervised) hardware access is still good for certain classes of specialized applications, and of course games. That's the need that ultimately spawned fbcon and KGI (the GGI kernel layer).

    Something to ponder in parting... if someone wants to experiment with a windowing system that is not X, they either need to rewrite all the drivers themselves, run under X (...then what's the point?) or they need to have some kind of non-X driver infrastructure availible.

    i.e. has the reliance on X to drive graphics hardware directly strangled the development of alternatives on Unix?

  • by Thag ( 8436 ) on Tuesday March 21, 2000 @12:16PM (#1185546) Homepage
    I'm wondering how this would compare to the Berlin windowing system [berlin-consortium.org] or GGI [ggi-project.org]? With the goal of running embedded, I'd guess QT's new system is simpler, and less cross-platform. Basically a way to get QT apps ported to handhelds really quickly, rather than a general replacement for X. I'll freely admit, though, that I don't know much about GUI framework design. Anyone out there in the know and willing to comment?

    I have to wonder, though, how many X apps will really work well on a handheld? It's a different environment, after all, with somewhat different inputs and uses. Just dumping X apps to a PDA would be like the approach MS used for WinCE, and it didn't really work.

    Jon

You knew the job was dangerous when you took it, Fred. -- Superchicken

Working...