Slashdot Mirror


GNOME Shell No Longer Requires GPU Acceleration

An anonymous reader writes "The GNOME 3.0 Shell with the Mutter window manager no longer requires GPU acceleration to work, while still retaining the compositing window manager and OpenGL support. GNOME Shell can now work entirely on the CPU using the LLVM compiler via the Gallium3D LLVMpipe driver. This will be another change to Fedora 17 to no longer depend upon the GNOME3 fall-back, which is expected to eventually be deprecated and further anger GNOME2 fans."

49 of 237 comments (clear)

  1. Software GPU Emulation by masternerdguy · · Score: 5, Insightful

    Is slow. I'm not sure that this is an advantage.

    --
    To offset political mods, replace Flamebait with Insightful.
    1. Re:Software GPU Emulation by jdege · · Score: 4, Interesting

      Am I the only person who runs my desktops as often through remoting as sitting at the console?

      How fast will this be running over VNC?

      --
      When cryptography is outlawed, bayl bhgynjf jvyy unir cevinpl.
    2. Re:Software GPU Emulation by TD-Linux · · Score: 5, Informative
      Meh, the compositor has to draw the pixels, one way or another. KDE has two backends, XRender and OpenGL. If acceleration isn't available, the XRender backend can still run in software, and is pretty fast. KDE also supports no compositing at all, but with software compositing it's becoming irrelevant.

      Note that compositing != GPU acceleration. Mac OS X has always used compositing, but it was entirely software. There are still good reasons to do so. I'll compare for you:

      No compositing, one frontbuffer: You don't get your own pixmap to draw onto. You have to send drawing commands to the display server to draw on your behalf, to prevent you from drawing wherever you want on the frontbuffer. Unfortunately, if you have something complicated to draw, the user gets to watch as the drawing happens. When drawing a new object, generally the algorithm used is to draw the background, and then draw the objects in order from back to front. This means whenever the screen is updated, the user will see flicker whenever any objects are updated because they may briefly flicker to the background color. To work around this most modern toolkits (Qt 4, GTK 3) render to a pixmap, and then just tell X to draw their pixmap when they are done. This avoids the flicker but uses a bit more RAM.

      With a compositor, the application still draws to the pixmap, but instead of requesting the X server to immediately draw their pixmap to the screen, they pass it a handle to the pixmap and the display server can draw it whenever. This makes a lot of things easier, like vertical sync and effects, as well as things like color format and color space conversion.

      Drawing the pixmap on the screen is really the same operations, no matter if compositing is on or off. And the API your compositor uses shouldn't matter too much either if the underlying implementation is optimized. The highly optimized Gallium3D blitter is going to just as good as the traditional X blitter, if not better. The only thing slowing it down in this case is the fact that OpenGL API is rather overkill for blitting, but hopefully the llvmpipe backend is optimized for this use case. And it's probably not worth it to make the compositor support two drawing APIs, like KDE, as they both end up doing the same thing anyway.

    3. Re:Software GPU Emulation by mvdwege · · Score: 2

      Currently there's some 450 files in /usr/share/applications. They all get read and parsed, and then their icons loaded, whenever I open the Applications view.

      And multisecond is maybe 2 or 3 seconds, I haven't timed it precisely, but it is a noticeable and irritating delay. I wish they'd cache the results a little more aggressively.

      Mart

      --
      "I know I will be modded down for this": where's the option '-1, Asking for it'?
    4. Re:Software GPU Emulation by Anonymous Coward · · Score: 3, Informative

      No compositing, one frontbuffer: You don't get your own pixmap to draw onto. You have to send drawing commands to the display server to draw on your behalf, to prevent you from drawing wherever you want on the frontbuffer. Unfortunately, if you have something complicated to draw, the user gets to watch as the drawing happens. When drawing a new object, generally the algorithm used is to draw the background, and then draw the objects in order from back to front. This means whenever the screen is updated, the user will see flicker whenever any objects are updated because they may briefly flicker to the background color. To work around this most modern toolkits (Qt 4, GTK 3) render to a pixmap, and then just tell X to draw their pixmap when they are done. This avoids the flicker but uses a bit more RAM.

      This is a bullshit way to look at it. You are confusing compositing, backingstores and backbuffers.

      Compositing means to have a procedural transformation from a window pixel to a screen pixel, and allows you to do such things as transparency and 3D windows, it implies nothing of whether or not the window pixels are cached (Backing store). Basically anything besides 1->1 blitting of pixels from window coordinates to screen coordinates is compositing.

      Backing stores, enabled in X11 with the +bs option and maybe used by default by other window systems, Wayland in particular, mean that the application renders to an offscreen buffer which is used to redraw the window during damage events (when the window is obscured), rather than calling back to the application to request it to redraw the window. They have nothing to do with tearing or removing flicker, except maybe in the degenerate case where the output device doesn't implement double-buffering or the window system operates asynchronously and decides to page-flip even though the new screen hasn't finished being drawn.

      Finally backbuffers (or double-buffering) are used by the graphics driver of the windowing system, so that the screen can be updated synchronously to the vertical-blank, to avoid both tearing artifacts when updating graphics, this is done by changing the base address the graphics hardware reads from to display a different part of the framebuffer on each alternate blank (or only when the screen contents has been updated).

      Backing stores are not actually as wonderful as people think, they increase memory usage by the size of the window (width*height*depth bits, or rounded up to the nearest page boundary, double if double-buffering is used), and the same results can be achieved much more efficiently by on-demand synchronous rendering, by placing responsibility for drawing widgets (what are known as Windows in X11) in the display system, as X Athena does (even if you think Athena i ugly, it does this right), rather than opaquely drawing bitmaps and transmitting those to the window system, as GTK and QT do. In the rare case that a backing store is necessary, because large complicated graphics are required, then backing store can be implemented in the application as you mention by using a pixmap. There is absolutely no reason why normal widgets and window layouts need to be back-stored, because if your window/widget system can not redraw all the widgets on the screen in less than 1/60 (1 blank), it is useless and pathetically slow.

      The issue in X11 is that because it's a network display protocol, and it makes certain choices to transmit low-level graphics primitives (windows and pixmaps) rather than higher-level objects like widgets and textboxes, it is very difficult to implement synchronous screen updates by on-demand drawing (or it was in the 1980/1990), so it resorts to asynchronous updates, where it redraws the screen regardless if the windows have finished drawing (in fact usually there is no update because X11 doesn't use double-buffering).

      It is entirely possible to have backing stores without compositing, compositing without backing stores, and double buffering in either the backing st

    5. Re:Software GPU Emulation by Pausanias · · Score: 2

      VNC or things like NX help in that if you turn off your laptop, your session is still running on your desktop. You can literally stop in the middle of what you're doing, suspend your laptop, and whatever you were doing with your remote session still keeps on chugging.

      Also, in general, VNC or NX are much much faster than the straight X protocol. Even when compressed, there is something incredibly laggy and slow about the X protocol when you're throwing up windows that are non-text. A graphics-heavy application will run much faster in VNC or NX than in X-forwarding, even though the former are doing movies of the desktop and the latter is supposedly doing something more intelligent.

    6. Re:Software GPU Emulation by bill_mcgonigle · · Score: 2

      using 'ssh -C -Y' and then calling whatever application I want to use (usually eclipse) and it works just great. If I want to remotely run the desktop itself I just call 'startx' instead of the application. It works fine. I'm just confused as to why VNC could possibly offer any benefit over doing it the way I described.

      OK, use case: You're right in the middle of working out a class in Eclipse, when you notice you have to leave *right now* to pick up the kid at day care. The class needs to be done tonight, but you can work on it from home, just needs an extra 20 minutes of work.

      ssh/X case: Save, quit Eclipse, possibly exit X desktop environment. Go home. .... Tuck kids in. Log in via ssh. [Start X desktop] Start Eclipse. Open Project. Navigate to class, scroll to function, start working again.

      VNC: disconnect. Go home. ... tuck kids in ... reconnect via VNC, start working right where you left off.

      --
      My God, it's Full of Source!
      OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
    7. Re:Software GPU Emulation by TheLink · · Score: 2

      It's like GNU screen, but for GUIs :).

      If you disconnect for whatever reason, you can still resume your session.

      --
  2. "fall-back .. to be eventually depreacated" by LizardKing · · Score: 5, Insightful

    Oh for fucks sake. I've just switched the wife's laptop from Ubuntu 11.10 to the beta of Fedora 16, since unlike that Unity bollocks at least the GNOME shell has the "fallback" mode that turns it back into something usable.

    1. Re:"fall-back .. to be eventually depreacated" by bmo · · Score: 2

      So much this.

      So much whining about Gnome3 and Unity. There is more than that in the repos.

      I've got FVWM and KDE installed. FVWM for when I'm abusing multiple virtual machines (because really, they have their own environments anyway), and KDE for my regular desktop.

      Linux is about choice. Don't like it? Install something else.

      --
      BMO

    2. Re:"fall-back .. to be eventually depreacated" by PessimysticRaven · · Score: 5, Insightful

      OOoh. I see what you did there!

      Seriously, though, I can't wrap my mind around why the most clunky, disgustingly inefficient windows managers are installed BY DEFAULT!

      You'd think they were trying to copy Win7 and OS X's shinies in some half-arsed attempt to gain followers...

      Oh, wait...

      --
      Consistency is only a virtue if you're not a screw-up.
    3. Re:"fall-back .. to be eventually depreacated" by jawtheshark · · Score: 5, Insightful

      I don't entirely agree. One thing that I liked about Ubuntu is that I could pretty much install it for anyone who wasn't computer literate and have them safely and easily do basic user tasks. To be able to support them well, I tend to use the same settings as they are so that I can help them even when I'm not in front of a computer.

      You can imagine that those kind of people are less likely to cope with huge paradigm shifts like Gnome2->Unity? The two most important of these users I have are my own mother and my mother in law. I don't foresee much problems with my mom, she's a science person (Master in Chemistry) and she'll cope. It will take her effort, but she's aware these changes require it. Mother in law though? Oh, boy, I so dread Ubuntu 12.04 LTS (I only give them LTSes)

      It's not that I cannot install a different distro or install a different DE. I can, it's just that Ubuntu (10.04 LTS) did give perfectly sane defaults with a reasonable interface with good discoverability. I personally see that gone with Unity.

      I have looked into Debian for an alternative, but Ubuntu does give a significant amount of polish (I'd mention the "Language Support" applet, for which I haven't found a decent alternative in Debian. I live in a multi-lingual environment, and it's pretty much the best tool I've seen in any operating system. It's not the only thing ) Linux Mint has been highly recommended on slashdot, and I'll most likely check it out sooner or later. I should also give Lubuntu a shot (LXDE, I use that on my Asus EEE 701 4G). It might be the way out of this mess. When doing a PXE installation of Ubuntu 11.10 it's given as a true option.

      All in all, switching to Unity is alienating the userbase. Tech people because they don't like the dumbed down aspect of it, and non-tech people because of the familiarity (and let's face it, pretty traditional way of doing things of GNome2). Except for the light destop environments, I see none of the big ones being even remotely desirable... I know people think that GNome2 looks old, I happen to disagree. It's mature. Iron out the tiny bugs and annoyances and you'd get a rock stable useful UI. However, we can't do that in the open source world. Always, new, alway rewrite alway try out the newest language. Cut it already and realize this needs to stop.

      --
      Ahhh...the great dumpster continuum. Many a free computer will be found there. -- sowth (748135)
    4. Re:"fall-back .. to be eventually depreacated" by thsths · · Score: 3, Interesting

      Yes, but XFCE is getting pretty fat, too. It is no fun in a VM or on a netbook. In fact it is using compositing now, too.

      I have moved on to LXDE as lightweight system - it still uses a rather traditional window manager instead of an integrated desktop.

    5. Re:"fall-back .. to be eventually depreacated" by hedwards · · Score: 2

      I haven't tried LMDE, but the standard Linux Mint is quite nice. When I get around to it, I'll be trying LMDE, but for the time being things work, and I don't generally have too much trouble getting my work done.

    6. Re:"fall-back .. to be eventually depreacated" by VJmes · · Score: 2

      Go and actually download Xfce, it's 15MB. Not even in the same league as GNOME's 200MB.

  3. Gnome 2 still included by pavon · · Score: 4, Informative

    The summary is a troll (as is typical for slashdot). Gnome 2 is still included in Fedora 17. The only difference is that if you have selected Gnome 3 for your desktop (which is default), and GPU acceleration isn't working, it will now fallback to unaccelerated Gnome 3 rather than Gnome 2. Regardless of your opinion of Gnome 3, this just makes sense; it would be much more confusing to get a completely different desktop than you were expecting just because your video drivers got borked. Not to mention it is wasteful to have to install Gnome 2 as a fallback if you want to use Gnome 3.

  4. xubuntu and lubuntu by nadaou · · Score: 3, Insightful

    thank goodness for xubuntu and lubuntu! kubuntu too... the linux-for-OS-refugees world still has some shining lights.

    --
    ~.~
    I'm a peripheral visionary.
  5. GNOME is a study in how to not architect software. by Anonymous Coward · · Score: 5, Interesting

    GNOME is a perfect study in how not to architect a software system. Everything about it is wrong.

    The first mistake they made was trying to cobble half-assed object-oriented support onto C, rather than just using C++ or Objective-C. Everything about GObject is stupid and counterproductive. It makes writing code a real pain in the ass, since you need to use typecasting macros all over the place. Worse, this sort of code promotes library design that's slow and inefficient. To make it even worse, this style of C code is so convoluted that it is not optimized well by compilers, resulting in binaries that are far slower than they should be.

    It basically goes totally downhill after that. This bullshit with GPU acceleration being required in the first place, and then this additional bullshit involving LLVM, is yet another in a long list of flaws and horrible decisions.

    I encourage all of the developers that I mentor to use GNOME and to get a good look at its internals. I just make sure that they know not to do what GNOME has done. By seeing the mistakes firsthand, it's less likely that they'll repeat them in the future with the software that they create.

  6. Re:GNOME is a study in how to not architect softwa by Anonymous Coward · · Score: 5, Informative

    GNOME is a perfect study in how not to architect a software system. Everything about it is wrong.

    The first mistake they made was trying to cobble half-assed object-oriented support onto C, rather than just using C++ or Objective-C. Everything about GObject is stupid and counterproductive. It makes writing code a real pain in the ass, since you need to use typecasting macros all over the place. Worse, this sort of code promotes library design that's slow and inefficient. To make it even worse, this style of C code is so convoluted that it is not optimized well by compilers, resulting in binaries that are far slower than they should be.

    Nonsense. GObject gives you multi-language bindings for free and if you're just an application developer it only makes your life easier. You can develop GNOME programs in C++, Python, Java or whatever suits your tastes.

    I don't think the overhead resulting from using C is substantial at all. Maybe you get more overhead than C++ by always using virtual calls but that is offset by not doing C++ magic like unnecessary constructor/destructor calls. You'll have to back this up if you want me to believe you.

    It basically goes totally downhill after that. This bullshit with GPU acceleration being required in the first place, and then this additional bullshit involving LLVM, is yet another in a long list of flaws and horrible decisions.

    I encourage all of the developers that I mentor to use GNOME and to get a good look at its internals. I just make sure that they know not to do what GNOME has done. By seeing the mistakes firsthand, it's less likely that they'll repeat them in the future with the software that they create.

    I'm not a fan of GNOME and I agree that they are headed in the wrong direction, but the problems are not at all due to GObject or C. Cut the FUD when you criticise GNOME next time.

  7. this would be nice by Tyrannosaur · · Score: 3, Informative

    if gnome shell were actually nice. I'm with Torvalds; switched to XFCE

    1. Re:this would be nice by EasyTarget · · Score: 4, Insightful

      It's the way the Gnome3 devs are all working against each other that really sucks.

      You have a half-incomplete tablet UI allied to a half-incomplete laptop UI both of which get on the tits of desktop users;
      - and my feeling of 'at least they are going somewhere different and interesting' has evaporated now I see Gnome 3.2 is identical to 3,0 in every single cockup. Only one of the real UI problems has been addressed; and more ill-considered and contradictory decisions have been imposed on us.

      --
      "Oops, I always forget the purpose of competition is to divide people into winners and losers." - Hobbes
  8. This is great news! by Etherized · · Score: 2, Interesting

    I know there's a lot of resistance to GNOME Shell, but it's clearly the future of GNOME (like it or not) and the weird non-3d degraded mode that you get with GNOME 3 + no 3d is something that's not really fit for anybody.

    Personally, I really like GNOME Shell and I'm glad to see that it will be supported on older hardware. I always found the decision to completely ignore this hardware to be questionable and damaging to Shell's adoption rate (as if it wasn't going to have a hard enough time to begin with). Surely they could have provided a similar UX without the eye candy for older systems - at least now we have a workaround!

    1. Re:This is great news! by Etherized · · Score: 2

      You are certainly right, GNOME's future is tied to Shell, and it's very much unclear whether Shell will ever reach the same userbase that GNOME 2 had at its peak. Luckily, we have choice in this space, and I'm glad to see XFCE and friends enjoy increased exposure as a result.

      Of course, some of us do like Shell, so the improved hardware support is very welcome. It may be that GNOME becomes a marginalized, oddball UI in time, but I've enjoyed similarly non-mainstream software for years - I mean, I do run Linux on the desktop, after all :)

  9. Just reached a decent compromise on my machine by Jack+Malmostoso · · Score: 3, Insightful

    Debian Sid introduced Gnome 3 a couple of weeks ago and I had a bit of a tough time to come to terms with it, but now I have reached a good compromise by installing tint2 and the alternate menu extension (which basically brings back the switch off menu item).
    I'm rather pleased with this setup and the only thing I am really missing are a couple of applets, but nothing major.

    Or, as other have said, XFCE is a great alternative, especially if you NEED external outputs (which gnome-shell still miserably fails to manage properly).

  10. Re:GNOME is a study in how to not architect softwa by Anonymous Coward · · Score: 3, Funny

    Thanks for quoting the entire post to make your six-word response.

  11. It's about time... by Zephiris · · Score: 4, Informative

    It's about time Slashdot stops accepting 'blogspam' links, such as Phoronix, instead of attributing the actual source itself. Phoronix didn't solve this, a developer did.
    A badly written Slash summary (and 'article') which just links twice to the same braindead Phoronix article (which itself is a several day old duplicate) is bad. Very bad.

    Dredged from the bottom of Phoronix:
    Mailing list post: http://lists.fedoraproject.org/pipermail/devel/2011-November/158976.html
    Fedora 17 feature point: https://fedoraproject.org/wiki/Features/Gnome_shell_software_rendering

    Personally, I have little doubt that the "anonymous reader" is Michael Larabel himself.

    --

    "A Goddess rarely smiles for she is forced by others to be an island unto herself." - Zephiris
  12. Re:GNOME is a study in how to not architect softwa by nej_simon · · Score: 2

    It basically goes totally downhill after that. This bullshit with GPU acceleration being required in the first place, and then this additional bullshit involving LLVM, is yet another in a long list of flaws and horrible decisions.

    Err.. The llvmpipe driver is developed by mesa and xorg to provide a software fallback driver that is faster than the dog slow swrast driver. Exactly why is this "bullshit" and a "horrible decision."?

  13. Re:GNOME is a study in how to not architect softwa by Anonymous Coward · · Score: 5, Interesting

    Not the GP, but what he's saying is far more true to my experience than what you're saying. I don't think the GP's comment is spreading FUD, either, but just a truth that many GNOME'ers don't want to hear.

    Have you ever tried to use the GObject bindings for other languages? The Python bindings are the only ones that aren't terrible, but they weren't that good either. The rest were very incomplete, very outdated, or didn't exist at all. The theoretical benefits or capabilities of GObject are worthless if we can't use them in practice. I've had a lot more success with interoperability between Java, Scala, and Clojure than I ever have had with any GObject-based code. The same goes for .NET when the languages are C#, VB.NET and F#. Those all work seamlessly with almost no effort, while GObject needs a lot of hand-holding and even then it often just doesn't work.

    What the GP says about some C compilers not doing a good job optimizing unusual C code is correct, too. I used to work on a compiler that generated C for a proprietary OO language and this artificial C code confused the optimizers of several popular C compilers. We got much better performance when we wrote our own native back-end. So I could totally see some of GNOME's bad performance being caused by this.

    Also, KDE is very good evidence to back up the GP's claims. It's comparable in size and complexity to GNOME, but is written using C++ instead of C. On every computer I've ever used, KDE has been a lot faster than GNOME. It is also a far nicer environment to work with when you're writing code. OO programming is more natural in C++ than it is in C using GObject.

    Don't write off the GP's comments as FUD. There's a lot of evidence to show that they're real problems.

  14. Re:GNOME is a study in how to not architect softwa by Anonymous Coward · · Score: 2, Funny

    Thanks for quoting the entire post to make your six-word response.

    Mod AC up hes his spot on...

  15. Re:GNOME is a study in how to not architect softwa by PopeRatzo · · Score: 5, Insightful

    Thanks for quoting the entire post to make your six-word response.

    It was useful for the poster to quote the entire post because many of us often filter out all posts by Anonymous Cowards. By filtering out the ACs, you avoid a lot of crap and frosty pisses and enthusiastic racist name-calling.

    It was an insightful post by someone who didn't care to create an account, even though it's very easy to create an account and Slashdot is very good about not misusing our email addresses. By quoting the good post in full, the GP performed a service to the community.

    --
    You are welcome on my lawn.
  16. Re:LLVM? by Ster · · Score: 2

    ... And also, does the above mean that Gnome is no longer using GCC to compile, but switching to the LLVM compiler? ...

    LLVM is designed to be modular. It sounds like what they're doing is probably similar to what Apple did a few years back - include LLVM bit-code files for functions that aren't handled natively, then hand those off to libllvm to emit native code when needed.

    -Ster

  17. Re:GNOME is a study in how to not architect softwa by Chibi+Merrow · · Score: 2

    And see a frost piss post...

    --
    Maxim: People cannot follow directions.
    Increases in truth directly with the length of time spent explaining them
  18. Re:GNOME is a study in how to not architect softwa by Anonymous Coward · · Score: 3, Insightful

    The first mistake they made was trying to cobble half-assed object-oriented support onto C, rather than just using C++ or Objective-C.

    Is that an attempt at recursive humor?

    It makes writing code a real pain in the ass, since you need to use typecasting macros all over the place.

    Presumably why they now have Vala.

    Worse, this sort of code promotes library design that's slow and inefficient.

    AKA: Object Orientated?

    To make it even worse, this style of C code is so convoluted that it is not optimized well by compilers, resulting in binaries that are far slower than they should be.

    I'm not convinced by this argument, it's possible to write inefficient code in any language.

    While I don't actually like Gnome, being written in C is about the only thing I do like about it. I certainly don't consider GObject/Gtk to be worse than QT or Apples API's.

  19. Re:I like Gnome Shell by MrLizardo · · Score: 2

    Yeah. I feel exactly the same. How many people reading this discussion are quietly enjoying GNOME 3 but don't care enough about the arguments to jump into the fray?

    --
    ^I'm with stupid.^
  20. Re:Just like Macs by Anonymous Coward · · Score: 2, Informative

    This driver is part of Mesa. Mesa is not part of GNOME.
    This story ties into GNOME, because the driver now supports all the features required of Gnome-shell at an adequate speed.

    You're right that Apple does do something similar. Shader compilation uses LLVM and if the graphics card is missing features it gets run on the CPU. You're wrong that xcode has anything to do with this. Xcode uses Clang which is a c compiler. Clang uses LLVM, but clang has nothing to do with 3d graphics.
    I would rather people copy each other, than suffer from not invented here syndrome. As LLVM is opensource, having extra contributors should be mutually beneficial.

  21. Re:GNOME is a study in how to not architect softwa by digitig · · Score: 5, Informative

    Who says it's not a verb? The Oxford English Dictionary lists it as having been a verb since at least 1818, and as being more specific than "design".

    --
    Quidnam Latine loqui modo coepi?
  22. Try to *look* at code you're talking about, OK? by Anonymous Coward · · Score: 2, Interesting

    GObject or C++ or scripting language or whatever - function call overhead is negligible compared to all that work (and make-work) which a typical API function of a typical GUI widget is doing. When for other coders several years ago those same APIs, libraries and languages, and *worse* optimizing compilers, worked perfectly well on 10, and even 100, times less powerful hardware - trying now to blame other coders' ineptitude on GObject, GTK+, C compiler, X server, or whatever, is nothing but pathetic and idiotic.

    The tools may be imperfect, but writing good and fast code with them is perfectly possible - *if* a coder knows what he's doing. If GNOME authors wrote a slow monstrosity, it is their own failure and no one else's.

  23. Re:GNOME is a study in how to not architect softwa by segedunum · · Score: 2, Interesting

    Is that an attempt at recursive humor?

    I don't think so because it's confirmed by your good self below:

    Presumably why they now have Vala.

    Yep, that's why they've tacked on another non-native language.

    AKA: Object Orientated?

    I believe the point is it's object oriented in the worst possible way.

    I certainly don't consider GObject/Gtk to be worse than QT or Apples API's.

    Uh, huh.

  24. remote X for Gnome apps by rduke15 · · Score: 2

    I often run remote GUI apps over SSH to my Ubuntu notebook. When you say that it doesn't work well with Gnome, does it also apply to single apps designed for Gnome (or designed for Gtk?), and would K* apps work better?

    In practice, I regularly use Meld to compare 2 remote files, or Geany to edit them. As far as I understand, these 2 happen to be designed for Gnome/Gtk, rather than for KDE.

    Would I be better off selecting KDE apps instead, or does it make no difference if I don't actually run the whole desktop, and just start a single app from my CLI SSH session?

  25. Re:GNOME is a study in how to not architect softwa by Vanders · · Score: 2

    Perhaps you should stop filtering ACs, in order to not shit-up Slashdot with reposts just to keep you happy?

  26. Re:I like Gnome Shell by RocketRabbit · · Score: 5, Insightful

    None. Not any.

    It becomes clearer every day that people hate Gnome 3, and yet even as the soft noise builds to a roar, some people think it's merely a few haters bellyaching.

    Listen, people hate the *shit* out of Gnome 3. It seems obvious that what started out as an attempt to create some sort of tablet-compatible UI which is also palatable on the desktop has now become a large liability. Gnome 3 has nothing that users asked for - it has been funded and driven by corporate interests (ahem INTEL) that wish to eventually provide some competition to Android's current domination in the Linux tablet market.

    People hate Gnome 3. Developers hate Gnome 3. Gnome 3 is simply one of the worst abortions of a window manager to ever appear on Linux, and the situation is not going to get any better until people start fleeing and distributions leave it in the dust.

    The writing's on the wall, but just because you avoid glancing in that direction that does not mean you can expect us all to swallow your fantasy about Gnome 3's awesome suitability.

  27. Re:GNOME is a study in how to not architect softwa by Anonymous Coward · · Score: 2, Insightful

    > I've had a lot more success with interoperability between Java, Scala, and Clojure than I ever have had with any GObject-based code. The same goes for .NET when the languages are C#, VB.NET and F#. Those all work seamlessly with almost no effort, while GObject needs a lot of hand-holding and even then it often just doesn't work.

    That's hardly a surprise. All JVM languages use the same object system underneath and were explicitly designed to interop with it. Same for CLR languages. When you use GObject, you are using it as a portable, but foreign object system that has to co-exist with the native one (like Python's). This is not poor design. It's a good work-around, given the constraints.

    It's one thing to discuss whether GNOME should have been in C++, but another to compare it with JVM/CLR features. Core libraries should be native, not byte code.

  28. Re:GNOME is a study in how to not architect softwa by Ragzouken · · Score: 2

    It's British English, dick'ead.

  29. Re:I like Gnome Shell by badpazzword · · Score: 2, Interesting

    I enjoy Unity and/or Gnome Shell. I'm the 1%

    --
    When ideas fail, words become very handy.
  30. Re:GNOME is a study in how to not architect softwa by PitaBred · · Score: 3, Insightful

    You've had AC's disabled for a while, eh? I only ever see a few frosty pisses or goatse's or whatever per discussion, and a lot more useless shit from people who've actually signed in.

  31. What a lot of whiners... by msevior · · Score: 4, Interesting

    There is a hell of a lot of whining about GNOME 3 here. I'm a free software developer of desktop software (AbiWord). I personally like GNOME 3 and its approach to do a new take on how best to present a computer interface to users. I also maintain systems for my mother and daughter who are definitely not computer geeks. They're both impressed and comfortable with GNOME 3.

    So my extremely small sample imply that GNOME 3 is a good step. For the computers geeks out there there a plenty of alternatives. Find the one that works for you.

  32. Re:GNOME is a study in how to not architect softwa by DrXym · · Score: 2
    Conflating the user experience with the programming experience is bizarre. A GUI might be a dog to program but might result in a good user experience or vice versa. And GPU accelerating the GUI should be regarded as a good thing whether we're talking of KDE, GNOME, OS X, Windows or anything else. Treating windows as surfaces massively improves performance on accelerated hardware and reduces the amount of context switching going on when windows damage other windows.

    If Mesa is getting a better software rasterizer through LLVMPipe it means that GNOME Shell (and KDE, Unity, xfce et al) can support users of older hardware without constraining what they can do that. That ultimately means better performance for the majority who do have GPUs, and it also means that Linux as a whole offers an experience that can compete against desktops running on other operating systems.

  33. Re:I like Gnome Shell by jc79 · · Score: 2

    I like Gnome Shell. I find it simple, fast and intuitive. I just don't shout as loudly about it as the haters, because I have better things to get upset about.

  34. Re:GNOME is a study in how to not architect softwa by rl117 · · Score: 2

    GNOME is a perfect study in how not to architect a software system. Everything about it is wrong.

    The first mistake they made was trying to cobble half-assed object-oriented support onto C, rather than just using C++ or Objective-C. Everything about GObject is stupid and counterproductive. It makes writing code a real pain in the ass, since you need to use typecasting macros all over the place. Worse, this sort of code promotes library design that's slow and inefficient. To make it even worse, this style of C code is so convoluted that it is not optimized well by compilers, resulting in binaries that are far slower than they should be.

    I don't think the overhead resulting from using C is substantial at all. Maybe you get more overhead than C++ by always using virtual calls but that is offset by not doing C++ magic like unnecessary constructor/destructor calls. You'll have to back this up if you want me to believe you.

    You are incorrect here. In C++, if you choose to make virtual calls, you pay the price of indirection via a vtable (this pointer). That's it. You only pay the price in classes which have virtual methods. With GObject, all classes contain a vtable, i.e. all class methods take a pointer to the type instance, which contains within it a pointer to the vtable. Every GObject instance contains this overhead, which makes instantiation of GObject expensive, and additionally increases the memory required for every object. In comparison, you don't pay this overhead for C++ classes unless you actually require it. This isn't including the overhead of additional GObject features such as properties, which are both inefficient to process and are type-unsafe, and the use of "construction properties" in object instantiation. What makes it truly awful is that all this work to implement OO in C is mostly done by hand! You have to manually create your own vtables; you have to manually cast all types to the correct type, and if you get it wrong the compiler won't typically tell you. You have to understand the intricacies of how a C++ compiler works to implement an inferior version in C! Why would anyone willingly inflict this upon themselves?

    But this is only the beginning of the GObject problems. When using GObject, the type resolution is done at run-time. Not only does this make programming unsafe--the many typecasts can hide typing issues, leading to failure at run-time rather than at compile-time, it has additional run-time overheads. Here are a few reasons: G_TYPE_CHECK_INSTANCE_CAST, G_TYPE_CHECK_CLASS_CAST, G_TYPE_CHECK_INSTANCE_TYPE, G_TYPE_CHECK_CLASS_TYPE, G_TYPE_INSTANCE_GET_CLASS. And you'll also need to check every function argument taking a GObject to make sure it's of the correct type with G_TYPE_CHECK_INSTANCE_TYPE (or commonly using a wrapper around it). This is not a cheap operation, it has to check the GType type register, which involves a string lookup in a hash table (GQuark, at least last time I looked). So you have several of those for every function call if you actually investigate the use of all the uppercase casting macros, and again inside the function. This is mostly absent for C++ code (the type checks and casts are done at compile-time), and C++ RTTI involves simple pointer comparisons of typeinfo objects; much faster, and again type-safe.

    Here's an example of class using GObject: header source

    This is the same class using C++