Compiz Project Releases C++ Based v0.9.0
werfu writes "Compiz 0.9.0, the first release of Compiz rewritten in C++, has been announced on the Compiz mailing list. See the announcement for more info." Compiz has for years been one of my favorite ways to make Windows users envious, despite my (Linux) systems' otherwise low-end graphics capabilities. Besides the switch to C++ from C, this release "brings a whole new developer API, splits rendering into plugins,
switches the buildsystem from automake to cmake and brings minor functionality improvements."
I'm excited to learn about more software using this new programming language of the future!
Beware: In C++, your friends can see your privates!
This is a good move. I found it surprising that C was still more popular than C++, given C++ benefits. See http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html.
The language and dependency changes aside, how much do you want to bet there will be problems in every package distro?
After 2 and a half years of getting Compiz sorted in SuSE, RH, Slackware so you have a 50% or better chance of it working out of the box when you install a distro, not having to dig through massive tweaking to get it operating... I'm expecting a step or two backwards in the "installability" department for a while.
-1, linux zealotry bordering on FUD
The relevant words from the announcement are "complete rewrite". Or in simpler terms for the users, you do not want to run this until it reaches 0.10 (also as per the article.) This is a development and not stable release. (Sure would be nice if they would go 1.0 instead of .10 if it's going to be a stable release...)
Here's the stuff from the announcement interesting to users:
Everything else is of interest only to developers...
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
I had compiz working great in Ubuntu 8, made using Linux fun and is great for adding the "wooo" factor when demoing it for potential switchers, then i installed Ubuntu 10 and it no longer works :(
so i no longer show it to anybody as frankly there isnt much of a visual woo factor over other OSs without it,
and as we know every self-repecting hipster fashionista judges a book by its cover (look at the iphone)
and in order for Linux to be popular with the mainstream it has to do stuff better, that includes making it look "cool" Compiz is a step there.
FOSS has to be able to say "look at how slick this looks AND it can do [task here]"
be proud of your GUI
-1, linux zealotry bordering on FUD
Nah. He's karma whoring.
RIP America
July 4, 1776 - September 11, 2001
Would the coding switch gain any speed increase?
Since having the enforced change from the ultra fast, ultra stable Beryl to the not very fast Compiz, I have not been very impressed with Compiz. The developers told me they didn't change anything to get the Beryl fork back into Compiz, but the fact on _MY_ system is simple.
With Beryl I could run whatever effect I wanted and even multiple effects at the same time, and the CPU was barely used, about 98% of the work was offloaded to the graphics card. Now with Compiz if I do something like rotate the cube or some other effect, the CPU ends up doing most of the work, which is ridiculous. Same distro, same graphics card. Obviously something changed.
Actually looking at the process usage right now, Compiz is using 3.9% of the CPU just doing nothing AND with an upgraded CPU. Under Beryl with a same type of processor but slower processor, the maximum CPU usage was 5% doing whatever effect you wanted. This is not right.
Enforcing a change from Beryl to Compiz was wrong.
Take Nobody's Word For It.
Fewer viruses
True, Linux has a smaller user base/market share, and therefore is less of a target for malicious software.
Lower cost of ownership
Debatable, depending on the environment and exact software... but often this is true.
CLI/scripting system that actually works
Very, very true. Although PowerShell is quite powerful... but quite different from most shell scripting in the UNIX world.
Most open source software runs on it
Depends what you mean by "most" ... "most" open source software runs on many, many platforms... including Windows.
Drivers for just about any piece of hardware ever built
'cept all the hardware that only has drivers for Windows.
No blue screen of death
True, you get kernel panics instead when hardware fails or you have a rogue driver. The driver issue isn't as significant, however, if you can get away with sticking to the standard in-kernel drivers.
Not nearly as resource hungry (unless of course you use Compiz :-)
Again this is totally debatable depending on what you're doing and the software you are running. My Ubuntu system loads up more shit than my Windows 7 system after a fresh boot, it seems. Sometimes the gnome-power-manager is consuming 200 MB of ram all on its own. I still prefer the Ubuntu system, however.
Penguins way cooler than butterflies
Definitely true :)
Compiz doesn't actually use that much system resources, nor strain your hardware either. It uses your gfx card to do all the work, which otherwise would be doing 99% nothing in most other circumstances anyway.
This is a first release after the reunification of the Compiz, Compiz++, NOMAD and Compiz Fusion branches. It's unstable, but at least it's good to see all the effort coming under the same roof again.
But then I guess you have never tried to use cmake; else you would not have made the ignorant statement about its incomprehensibility. If you have never used autoconf, automake, make, libtool, m4 and friends it would be just as incomprehensible.
My karma is not a Chameleon.
It'd be nice if the summary contained at least a sentence describing what the software actually does.
Mod me down if you want to, but I've yet to have Windows drop me to a command prompt after an video card driver update, OS update (Ubuntu anyone?) or had to recompile sound drivers after every OS update (Ubuntu on that one too). My file manager will display in a column what date pictures were taken so I can categorize them accordingly, can yours do that? It couldn't the last time I checked.
My Tech Posts on Twitter
If you have two servers with weblogic the linux one costs $10.000.000 and the windows one $10.000.500.
Yeah linux isn't at all that cheap.
You forgot a unified update system with updates rarely requiring a system restart.
Finally had enough. Come see us over at https://soylentnews.org/
re: viruses / vulnerabilities
try this distro: http://www.damnvulnerablelinux.org
an excellent tool for learning.
However informative your list is not a Windows users list.
I use a variety of POSIX operating systems 95% of the time, at work through necessity, and at home through choice. And because I use them, rather than despite it, I am compelled to respond.
And drunken cheerleaders get date raped more than shut-in nerd chicks. Personally, I prefer nerd chicks, and you likely do too, but most people don't. Really, they don't, and there's no use telling them that their opinion is wrong.
If you don't value your time. For the latest of many, many examples down the years, I 'invested' 3 hours this weekend trying to get WiFi with WPA working again after upgrading my wife's box from Ubuntu 9.10 to 10.04. Verdict: the rt73usb driver has (yet again) returned to a state of porkage, so it was (yet again) ndiswrapper and Windows drivers for the eventual win.
Until of course you try and run a script written for fooshell on barshell, i.e. when a distro changes its shell.
Can be made to run on it, given enough time.
If you limit "ever" to "older than two years or so". But sure, many of the drivers give the appearance of working tolerably well, for a surprising amount of the time! And when they don't, well, there's ndiswrapper, or we'll-fix-it-in-the-next-release, or you've-got-the-source-compile-a-previous-version-yes-we-know-it-doesn't-build-against-your-kernel-headers-or-gcc-version-fix-it-yourself-you-filthy-M$-shill.
Ain't seen on one Windows for years.
Granted. Oh, unless you've got a driver bug, which you almost certainly do if your hardware was designed this millennium. Then see above.
By that measure, that would mean...
...that.
This is not the year of Linux on the desktop (or the netbook). I thought we were there with Ubuntu 10.04, but it's actually a regression from 9.10. I'd just recommend 9.10, but that's effectively abandonware now, just like all previous versions of all Linux distros, "LTS" included.
Again: I'm writing this from Ubuntu 9.10. I've got RHEL5 in that VM over there, SUSE 11 yonder, Solaris in that shell, and even SUA on Windows (tastes a bit like POSIX). I'm happy with POSIX OSen. But I would not recommend them to a Joe Windows user, ever, since I don't want to be their Support Guy from now until there's a distro that actually Just Works.
If you were blocking sigs, you wouldn't have to read this.
In fact, on old systems with a graphics card it is significantly faster than the traditional way of redrawing windows.
Why? Because:
1. the gfx card can do part of the work
2. all windows are already drawn and kept in the graphic card's memory
The creatures outside looked from Alt-Right to Antifa; but already it was impossible to say which was which.
Sure, please tell me where is the driver for my cell phone's USB cable on Linux. Hell, I can't even find one for x64 versions of Windows.
Most build systems are arcane at best.
Insanely, I think Visual Stuidio's is the best out there (for ease of use)... right up until you start trying to link libraries that have been linked against different version of the runtime.
No, karma whoring is to post something completely obvious you know will be modded up and not add anything to the discussion. Like this comment.
Fewer Viruses - While this is technically true, most viruses I've seen installed on users machines are the result of users actively clicking and running an executable on their machine. While not running in root mode by default on Linux helps to prevent some of the damage, I think a virus running as a regular unprivileged user could still cause a lot of damage. This is also ignoring the fact that if the same incompetent users if presented with a message asking them to perform administrator actions for no reason at all would still click on "Yes", even if there should be no reason for them to do so, as long it promises smiley icons.
Lower cost of Ownership - Last time I went shoppping for a computer, I didn't see any discounts for not having Windows installed from the get go. Either you go with Dell/HP/Lenovo, and they only offer windows, or when the offer Linux, it's the same price, or only a little cheaper, but you get a lot less selection of machines you can get. The other option is to build your own machine from off the shelf components. This is my favourite option, as you can get exactly what you want, but you will end up spending more.
CLI/Scripting system - Almost nobody except tech geeks cares about this. Also, Powershell on Windows isn't all that bad. It has its pluses and its minuses.
Most open source software runs on it - Most all of open source that is worth running will run on Windows. Maybe not all of it, but most of the more important stuff. Conversely, almost no closed source software runs on Linux. Which might not matter to you, but if you're trying to get work done, having things like Photoshop, Outlook (hate it but necessary for business), and many other closed source programs, makes a big difference.
Drivers - Sure you get drivers for all the old stuff. But are you sure that shiny new piece of hardware that just came out last week will run to its full potential. Probably not. And there's also plenty of older hardware that I had that I couldn't run on Linux.
No Blue Screen - I haven't seen a blue screen on a Windows machine in many years. And when I do, it's usually because of bad RAM, causing something to get corrupted. Blue screens still exist, but they don't happen quite as often as they used to. I imagine most Linux systems would also crash pretty badly when they have bad memory.
I'm not some Windows Zealot. I use Windows when it makes sense, and I use Linux where it makes sense. But I don't really think that that any of the reasons you mentioned are valid. Especially if you're talking about home desktop use. Which in the case of Compiz, is exactly the kind of people we are talking about.
Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
CLI/scripting system that actually works
Very, very true. Although PowerShell is quite powerful... but quite different from most shell scripting in the UNIX world.
You really expect any CLI, no matter how awesome, will make Windows users jealous? I definitely think Compiz is one of the few ways to make your average Windows user jealous of Linux, with perhaps your favourite package manager coming next. I remember reading that MS are building an app store for Windows though, so it won't be something to be jealous of for long!
Of course, trying to make other people jealous of you is pretty pathetic.
which is totally what she said
Some of the other points in the parent are BS as well:
Don't get me wrong, I love Linux and use it daily. A couple of things that should be on the list:
Does the typical windows/mac user care about these? No.
I am a proud user of Linux, but I fear that the day it goes mainstream, I will need to start looking for something else.
I have to agree that the cube is useless (and I don't use it).
There are a number of plugins that increase productivity a lot though, namely the scale, desktop wall, expo, app switcher and zoom plugin. Problem is: the default configuration is not designed to be useful, but to be easy.
While installing new systems, I install the CompizConfig Settings Manager, and then set up the plugins for efficiency: I basically map common window functionality to screen edge/corner clicks with the mouse.
Base setup is 6 (2x3) desktops. I move between these desktops by clicking one of the edges (depending on which direction I want to go - up/down/left/right) of my screen with the right mouse button.. See the overview (expo) with right click to the top-right edge. Alt-tab/Alt-shift-tab with mouse button clicks to the top left edge (app switcher), and see open window overview with right/left clicks to the bottom-left corner of the screen (scale).
This (combined with select - emulated middle button pasting) effectively enables me to do all activity you'd normally need mouse+keyboard to do with keyboard only.. and that very fast and instinctively.
Guess what you wanted to say is: the default configuration could use some tuning. Problem is: though this improves baseline productivity and is very fun when being used to it, it violates the common desktop paradigm that every desktop function has to be an icon, or context menu. In other words, setting it up in a useful manner involves thinking and learning a bit, which most folks seem to avoid by all means. (no offense).
Compiz doesn't actually use that much system resources, nor strain your hardware either.
I have a 3.2GHz tri-core Phenom II system with a GTS 240 (~400MHz, 96 stream processors) and Compiz will easily consume 5% or more if you have a window with continual graphics updates, like a game or a video player. That's a lot of CPU! You can manually disable transforms on that window but that requires a visit to the settings manager that would leave the average user dumbfounded.
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
But the easiest way of making a windows user envious is to use a mac
Something that's more closed than Windows and Linux?
No, we're not envious. You might think that we should be envious, just like the guy who brags about his expensive designer clothes or Iphone, but the rest of us don't actually care.
I have used autotools, and they're still incomprehensible.
Whenever some big project (bullet, opencv, etc) has switched to cmake and says that it is preferred over autotools, it never works. I always just end up using autotools to build it instead because it Just Works (tm).
A Windows user is quite unlikely to care about either Windows or Mac OS X being a "closed" system.
Of course, you're extremely stupid, so I don't really blame you for missing that point.
Until of course you try and run a script written for fooshell on barshell, i.e. when a distro changes its shell.
If you were using #!/bin/sh and expecting bash specific code to work, you're doing it wrong. If you want bash, call it by its proper name and it will always work.
Give me Classic Slashdot or give me death!
Gnome and KDE were imperfect Desktop environments so that F/OSS unix could have one. Now that we are getting a good one at long last (Android). Why stick with the old an obselete?
What can i do in android that i cant do in gnome?
What can the windows gui do that i cant do in gnome?
What can the mac gui do that i cant do in gnome?
Just because an environment is simplistic doesn't mean it sucks. I prefer gnome over kde because it focuses less on eye-candy and more usability.
I prefer gnome over windows because it doesn't try to compress my programs menu.
Also who are you to say that android is a perfect environment? Why do they constantly come out with new updates?
finally android was made for a touchscreen environment, not a point and click one.
You actually go through the trouble to reimplement build systems in autotools? That's a lot of work, dude. I'm calling foul here.
Slashdot: Where people pretend to be twice as smart as they really are by behaving like children.
Oh, great old one, please tolerate my invasion on your lawn.
What the hell is your problem with X?
Oh come on... how, exactly, is the Mac platform (no, not the iPad, not the iPhone, the Mac, ie Mac OS X) "more closed than Windows"? At best it's exactly as closed, though I'd argue somewhat less so (thanks to the existence of Darwin, their work on the ObjC gcc backend, Webkit, etc).
The default Ubuntu UI (which includes compiz) is better designed than MacOSX.
Have you ever used it? I have tried both MacOS X and Ubuntu, and Ubuntu is far more user friendly than MacOS. They just don't have the hype machine that Apple has.
Classes (not virtual)
Sugar for functions that take this as their first argument. But as Micropolis showed, these are useful for taking legacy code that uses global or module-scope variables and allowing it to be instantiated multiple times. I'll grant you this one.
References
Sugar for pointers.
You have other problems when your code runs out of memory that often
Only if you consider running on a microcontroller or a handheld device a "problem". In such a case, running out of memory means the allocator has to purge items from the cache. Then you run into other classes that use new as their factory, for which new might throw for reasons unrelated to memory: TCP connections, file system access, file format parsers, etc.
which means c sucks too once you find hardware which does not support all functions of the c standard lib?
You're referring to 8-bit microprocessors, I take it. But there's still a lot of interesting hardware that runs C well but doesn't do so well at virtual and <iostream> of C++.
as I understand it c has no better alternative to templates
It appears you're not as much of a fan of C++ as a fan of the subset of C++ including C and templates.
Well, sure, if your definition of "actually works" depends on "if you use it right", which is a perfectly reasonable condition.
But then that means the Windows "CLI/scripting system" also "actually work9s)", doesn't it? Perhaps more so, since (AFAIK) a script that was working won't suddenly assplode when you download a service pack or update.
Heck, maybe you were agreeing with me. It's hard to tell.
If you were blocking sigs, you wouldn't have to read this.
I have a dual core Pentium E5200 with 1 GB of RAM and Compiz takes very little resources. Next to no CPU usage, even with video players and such.
if you remove the templates by hand-instantiating them, you'd still have the same issue of code duplication.
The difference is that algorithms and containers in C or Java encourage the use of erasure to a higher type (e.g. void * or java.lang.Object). C++ templates can be used this way, but they can also be instantiated once for each T* (by pointer) or even once for each T (by value). I can think of a few things to watch out for when using templates:
So some people aren't big fans of C++ templates because templates are so easy to misuse.
But then that means the Windows "CLI/scripting system" also "actually work9s)", doesn't it?
Yes, windows work9s well.
Good lord, I did not expect so many to come the defense of that grand old dame, X.
Rather than get into an argument on the Internet about Computers, I'll just say that
the Linux desktop remains a beloved canard to me. I do not doubt that others will disagree
with me.
if you follow ODR then you'll have at most 1 template instantiation for each combination of type parameters.
The problems come when A. programmers become unaware of how many combinations of type parameters they're actually using, or B. programmers can't decipher template type names in compiler diagnostic messages.
Also, libstdc++ is a beast. But so is glibc. If you compile for embedded devices - don't use it.
Newlib is better than glibc for embedded devices. What C++ standard library implementation do you recommend for these?
It's certainly possible to make 'Hello world' to be about 1kb in C++.
I've done so with std::fputs of <cstdio>, but there are still a lot of self-proclaimed C++ purists who apply the no-true-Scotsman fallacy on C++ code using <cstdio>, claiming that <cstdio> isn't in the spirit of C++.
I would imagine that the biggest performance hit for C++ vs C is just the fact that most objects make extensive use of memory allocations. C++ makes this 'safer' than in C, and so most C++ users use it. In C, I tend to avoid memory allocation. You end up defining arrays sized to some reasonable maximum, but there's no performance penalty for that. Occasionally, this does cause problems when that maximum was underestimated, but most of the time it's pretty effective.
Where I work, we have a transaction processing system that was developed in C. Most of the library code is in C, and multiple attempts to build applications in C++ have resulted in something much more complex and less supportable than the 'standard' C apps. I don't know if this is due to unskilled C++ programmers, or if maybe the particular environment, being highly optimized for C coding, just doesn't gain many of the advantages C++ could provide had the platform been object oriented in the first place.
For example, our standard apps maintain state persistence by simply writing out one or more C structures to a temp file on disk. These files are simply read back in on the next transaction, requiring no code and no serious overhead (the data's usually in cache anyway). It sounds crude, but it's amazingly effective. C++ coders could continue to do this, of course, but they've assumed they needed to use objects for this purpose, leading to complex schemes for streaming those objects out to disk for persistence.
Then you get the programmers that attempt to build a pseudo MVC view around a platform that was designed to be a back-end system with a smart terminal front end. In this platform, all the code is on the back end, and the 'view' and the 'controller' are pretty much intertwined. But they persist and build these arbitrary separations which have to then communicate back and forth and each have to persist their own states. After the fact, they've all agreed that what they've built is harder to support than the C stuff they were building before. .Again, maybe this is bad coding or a misunderstanding of the OOP model, but it does point out a problem with C++. Unless you're just building code around an existing, well defined C++ framework, you're not likely to implement a great object model on the first (or fifth) try.
Posted from my Android phone. Oh, I can change this? There, that's better...
Fewer Viruses - check
Lower TCO - check
CLI is not working on windows - wrong
Most FLOSS runs on it - check
Drivers for more hardware - check
No kernels panics (BSOD) - wrong
Not nearly as resource hungry - wrong because tests indicate that Windows 7 is less hungry than Ubuntu
Penguins - what a BS
The easyest way of making a Windows user envious = getting the hottest chick on the planet
Here be signatures
No, karma whoring is to post something completely obvious you know will be modded up and not add anything to the discussion solely because you want to boost your karma. Unlike this comment.
Here be signatures
you can always use nothrow new
As I understand it, the standard library uses throw new, not nothrow new. So if you use the standard library, you get the exception handlers linked in.
What is the performance overhead of namespaces, [...] references, [...] use of const ints for array sizes (more efficient than C), non-virtual methods, protected/private modifiers
True, these features allow one to use C++ as "a better C". But a lot of C++ fanboys will claim that if a program doesn't use virtual, throw, and <iostream>, it's not in the spirit of C++.
typesafe object creation, STL (the word "virtual" does not appear anywhere in the STL sources)
Exception overhead. Or is the entire C++ standard library also available in a nothrow version?
function and operator overloading
No runtime overhead, but especially operator overloading is easy for a programmer to do wrong. People see += and think "cheap"; they see .addAll (Java) or .extend (Python) and think expensive.
support for wide characters
Doesn't <wchar.h> aka <cwchar> have these too?
Many C++ programmers use printf instead of iostream.
I agree, but C++ fans who write things like C++ FAQ Lite section 15 disagree. See both sides of the story in C++ FQA Lite section 15.
Note that C++0x has features specifically designed to support a typesafe printf
That will be interesting once LLVM and GCC actually implement it. Have they yet?
Well, on my system, Windows 7 idles at about 1.5 GB of RAM in use, while Gentoo idles at about 200 MB, so...
Yes, if you don't do things right, they won't work right. Wow, you are a genius. Perhaps bash is less forgiving than Windows crap, but I'd call that a feature, not a bug. The main problem with Windows is that it is so damn forgiving in every area that people can do stupid things and then require the OS to support them for years/decades to come, fucking everyone else over in the meantime. Windows shell scripting still works from release to release because they simply don't change anything because it is simply no longer under development and is deprecated.
Ha... ha... ha... ha... ha....
Okey....
1. Windows 7 has better OpenGL performance no matter what hardware and what drivers you throw at it.
2. 1.5GB? Sorry but I thought Windows 7 didn't use more than 200-300MB RAM and cached out wasted RAM space?
3. What are you running next to GNU+Linux?
Here be signatures
Oh I forgot to mention less kilowatts...
Here be signatures
Big deal, C++ sucks hard if an amateur tries to write in it when he's used to C.
Guess I won't be upgrading.
I just used the middle click / cube shrinks and becomes semi-transparent and can be rotated... effect in Compiz, which immediately shot up the CPU usage for both cores of my processor from 20% to around 60% per core. Under Beryl the CPU usage changed about 2% over what the system was already running at. I would say that Compiz does not use the graphics card like Beryl did, and the Compiz devs deny there is a problem.
Take Nobody's Word For It.
If you were using #!/bin/sh and expecting bash specific code to work, you're doing it wrong. If you want bash, call it by its proper name and it will always work.
A more likely scenario is that a script written by someone else improperly references /bin/sh despite being chock full with bashisms.
The real problem is that many people these days just assume Unix = Linux and can't even think of /bin/sh possibly not being bash (or something "compatible enough"). This is especially true of "Linux on the desktop" crowd, as server admins typically know better
Something that's more closed than Windows and Linux?
1. OS X is not any more closed than Windows.
2. A Windows user will likely not care anyway.
For example, our standard apps maintain state persistence by simply writing out one or more C structures to a temp file on disk.
Of course, the C standard explicitly states that the layout in memory of structures is implementation-dependent, so doing things like that sets yourself up for serious pain when you do things like change compiler versions, optimization options, or run on different platforms.
In my experience, a lot of programs run without crashing only through sheer luck.
dragonhawk@iname.microsoft.com
I do not like Microsoft. Remove them from my email address.
So you are saying if you were to compile kde-4.4.x (they use cmake) you would convert it all to autotools? ... I don't believe you at all, not for a second.
My karma is not a Chameleon.
References
Sugar for pointers.
And C is sugar for assembler, which is sugar for writing machine code directly using a hex editor.
The whole point of any language feature is to make it easier to use machine features. Calling them "sugar" doesn't negate that.
dragonhawk@iname.microsoft.com
I do not like Microsoft. Remove them from my email address.
I'm happy with POSIX OSen. But I would not recommend them to a Joe Windows user, ever, since I don't want to be their Support Guy from now until there's a distro that actually Just Works.
Seriously? My POSIX compliant OS X is something I do recommend as it does Just Work.
C++ coders could continue to do this, of course, but they've assumed they needed to use objects for this purpose, leading to complex schemes for streaming those objects out to disk for persistence.
My PoV on C v C++ coding comes down to this kind of stuff. In C, you'll have a function that takes a struct parameter and writes it to file. In C++ you put that function inside the struct and remove the parameter.
so Persist(struct Data d); becomes d.Persist(); simples!
In effect, no difference - except to handily keep methods and data together and easier to understand. Obviously a decent C programmer will put the persistence routines and data struct together in a module... which is roughly the same thing.
The benefit to C++ is that you get all the above type of coding (ie no difference but a bit of easier code organisation) and you can, if you want to, use some nice new features like the STL.
Any coder who thinks that C++ is a great place to go fully OO is miguided, IMHO. I've seen object hierarchies and exception hierarchies that are totally confused, difficult to debug and understand. In fact, you could say that this kind of app should not be written in C++, but written in UML instead! In other words - confused, difficult to understand, debug and fragile as any other "Enterprise" app.
So - keep it simple and you're golden, try to go crazy with every little feature and you're stuffed. I have a feeling that many a coder who tries the latter and fails then moves on to Java or C# thinking its the language that is at fault.
I run compiz on several Atom 230 and 330. This are mini-itx mobos that have integrated Intel GMAs (Pineview series). I am checking this as we speak over SSH.
Compiz CPU usage: 2% Ram: 34MB.
This is with all settings turned up to 11, and, since this machines are surveillance systems, 4 windows showing 352x288 video @30fps each, plus a fullscreen browser window that is constantly updated.
Total CPU usage is ~3.4%.
WTF am I doing replying to an AC at 5 A.M on a Friday night?
Well, I know OpenGL performance on Linux is sucky, but Windows 7 is definitely using more RAM. That's what task manager shows. And yes, I know how to read the various dials on there.
I don't know what your 3rd question is supposed to mean.
Miss: X = GUI
Assuming something is what it isn't will surely give you wrong impressions. X is NOT by ANY means a GUI. Try again.
I'm not going to pretend to understand all the "rules" that Windows or any other operating system plays by, regarding RAM.
But, it seems pretty obvious to me that most operating systems are going to use, or try to use, all the memory available.
Ubuntu desktop has 8 gig of memory, currently using 2.2 gig, 1 gig of which is given over to my Win7 virtual machine.
Inside the Virtual machine, 700 meg in use, running only Firefox and task manager. My Firefox is rather bloated, with several scripts and addons installed.
In my experience, both Ubuntu and Win7 run nicely with 1 gig of memory. Both tend to gobble up RAM if it's available. Your mileage may vary, depending on how you configure your system, applications installed, and resources available.
"Windows is like the faint smell of piss in a subway: it's there, and there's nothing you can do about it." - Charlie Br
If you don't value your time.
Linux is only free if your time is worth nothing.
Windows is only $119.99 if your time is worth nothing.
Sometimes the gnome-power-manager is consuming 200 MB of ram all on its own.
I'm all for bashing Gnome, but I think in that case you're not reading the numbers right. Probably, most of those 200MB are links to shared libs loaded anyway as part of the Gnome system. If you divide that bit up equally among all the users of those libraries, you'll probably end up with 4-6M or so. If you only take the bit that is used *extra* for having gnome-power-manager, you'll probably get less than a megabyte, a likely less than .1.
All numbers are wild guesses since I don't actually have a Gnome system :)
Religion is regarded by the common people as true, by the wise as false, and by rulers as useful.
I think the biggest issue is that there's no real market for Linux computers. Too many are tinkerers who'll put it on their old PC or random parts or some sale or will want a different distro than it's sold with anyway or whatnot. Sure, there's a select few Ubuntu models online at Dell US but otherwise the availability is very, very slim. And if you first buy these they don't come with a Windows license so it's not for the "let me get my feet wet and if I panic I can boot into Windows" crowd, as far as I know pretty much nobody sells dual boots. The end result is that Linux is trying to jump the "Just works" hurdle on all hardware simultaneously, which is incredibly hard. What we need are known Linux-friendly machines you can point people to and say "This machine will run both Linux and Windows. Try it, if it's not for you dual boot back and all you lost was a little bit of time." Right now you have to commit far too much for comfort.
Live today, because you never know what tomorrow brings
Funny, I've been using Ubuntu 10.04 on my netbook since it came out, and previous versions since I got the thing, but I never had problems of the kind you describe.
1. what you really meant to say was the gfx card has to do some work too in addition to the cpu
2. due to limitation of the composite extension the data has to be bounced around like mad causing serious performance issues, this is quite apparent when resizing windows
Task manager shows RAM in use, including cache, which is common knowledge.
Then the third question is also supposed to be dead obvious:
Gentoo is nothing more buyt Lego. So what did you build with Gentoo? A bloated Ubuntu, a mean and lean, feature-less E17 machine... etc etc... How the hell can you compare Gentoo to Windows?!
Here be signatures
Don't critize that which you know nothing about, I guess?
FWIW; Fedora here eats up about 1.1GB and KDE4 is even harder to max out due to all the libs/data engines sharing. Mever exceeded the 2GB limit. SWAP has never been doing anything at all. I have 8GB of RAM, because it's drit cheap and because I wanted more RAM than I would ever need.
Here be signatures
i have an orange afro you insensitive clod
I know how to read memory reports, you dolt. Right now, I have 1762 MB in use, 2158 it Standby (cache) and 13 MB free. I compare that with Linux, which uses pretty much the same virtual memory model as Windows (aside from the global vs. local working set deal and a few other things of no importance here) and I see that Windows uses three times as much memory as Linux does running basically the same programs -- services excluded. What did I build with Gentoo? I installed KDE and I have a KDE desktop. It works, it's snappy and uses a lot less memory than Windows 7. I can compare it with Windows because at the end of the day, it's still a monolithic OS kernel, system libraries, system software/desktop environment plus user applications. I can't think of a single reason why my Gentoo w/KDE is not comparable to Windows 7 with Explorer.
Is way too low for me to have contributed to Compiz anyway. But I do worry when I see simpler projects converting to C++, because I feel that it locks me out along with so many people that might otherwise contribute. I look at C++ and the whole thing may as well be encrypted or written in perl for the amount that I can understand it. I could at least struggle through what the C was trying to tell me.
Nullius in verba
Then there's something horribly wrong with your Windows 7. I have access to a Windows 7 workstation here and Windows 7 doesn't consume that much. On the other hand you can't tell me that you installed a full blown KDE SC 4.x. KDE3.5.x? Or you must be running something realy, realy stripped down... 200MB is almost impossible...
Here be signatures
Unused RAM is wasted RAM. Windows correctly uses a lot of the physical memory not in other use to hold stuff it would otherwise need to get from the HDD.
Yeah, I'm thinking I might need to do a clean install. I find 1.7 GB with just Chrome open to be appalling. I do have a full-blown KDE running, but KDE really isn't that heavy, despite what the GNOME-tards say.
It's only 200 MB when first started up and with no apps running. It does get bigger, but it usually stays between 250 MB and 400 MB when idling.
Don't forget the tactic of responding to a highly-rated comment in a contrarian way by accusing the poster of a strawman argument and accusing them of astroturfing, you two-faced M$ stockholder.
And drunken cheerleaders get date raped more than shut-in nerd chicks. Personally, I prefer nerd chicks, and you likely do too, but most people don't. Really, they don't, and there's no use telling them that their opinion is wrong.
Do people prefer Windows? After actually trying Linux? Not in my experience.
If you don't value your time.
Most stuff works out of the box. Some stuff does not work out of the box on Windows or Mac either.
Until of course you try and run a script written for fooshell on barshell, i.e. when a distro changes its shell.
Dash is supposed to compatible with Bash if you stuck to Debian policy of affected scripts (those than use #!/bin/sh - if you useed bash specific features you should have used #!/bin/bash . Any examples of stuff that breaks? BTW Bash is still the login shell.
Can be made to run on it, given enough time.
Most stuff non-geeks use is in the major distros repos and is easier to install than Windows apps.
But I would not recommend them to a Joe Windows user, ever, since I don't want to be their Support Guy from now until there's a distro that actually Just Works.
My father, my wife, by seven year old daughter, her former pre-school principal, an accountant who used to work for me are all presumably geeks? They all prefer Linux.
That's still a pretty good tick on the processor. Windows 7 eats up 0% at idle with all the bling turned on. The taskmanager is the only thing that reports cpu usage. I never liked compiz on linux because it always involved a decent amount of resource drain, even with accelerated drivers. I'm sure its better than when I last tried it, but I want 100% of my cpu all the time if possible.
zosxavius photography
200-300MB RAM and cached out wasted RAM space
heh, that's why windows 7 runs so well on 256 meg of ram
/sarcasm
This is a joke. I am joking. Joke joke joke.
Excuse me, what part of "since this machines are surveillance systems, 4 windows showing 352x288 video @30fps each, plus a fullscreen browser window that is constantly updated. Total CPU usage is ~3.4%." You didn't understand?
It's not compiz itself eating up that much processing power. It's the 4 threads capturing 352x288 video @30 fps, and displaying it in 4 different windows.
Also, it is IMPOSSIBLE for any operating system to be actively displaying how much CPU it is using while using 0% CPU. Answer: WINDOWS IS LYING TO YOU.
On the other hand, even if windows created some magic way to run out of thin air while using 0 processor power, it would mean nothing because it would still be completely useless.
WTF am I doing replying to an AC at 5 A.M on a Friday night?
Have you tried?
I've had more USB devices "just work" in Linux where I had to install something special BEFORE plugging in my hardware in XP.
Linux's USB Mass storage drivers are light years ahead of Windows, IMHO.
Every time I start to have faith in humanity, I ruin it by driving to work between 7 and 8 am.
Heres why I WOULD recommend them to some people, in certain controlled instances (have, actually):
/home.
D) Heres the real kicker. Windows as of now has AWFUL recovery options. Windows XP was the last OS that had any form of disaster recovery-- combofix works well, its got the recovery console, its got repair installs, and its boot.ini is actually editable in any OS. Vista and 7 dont have a useable repair (to repair, you have to launch it from a working windows install...), and any recoveries you make to a new HDD will just not work because the disk ID wont match the BCD. If you get a virus on Vista or 7, youre basically hosed, because combofix doesnt really work on it, and there arent any fantastic removal tools yet (theres GMER, but its showing its age, and I dont know if it works on Win7 x64).
A) have you actually tried to figure out how to secure a network, or even your Dad's computer, when doing so requires he have the ABSOLUTE LATEST version of flash, adobe reader, and java? Not to mention those realplayer and QT plugins that are sure to get exploited one of these days? Linux gets it right with centralized software updates; Windows is an absolute nightmare in this regard. Theres WSUS, but oh wait you cant add crap like foxit reader to it, and MSI deployments can be a nightmare to upgrade. Not to mention some things just dont have MSIs.
B) Most users these days honestly dont care that much about windows, as the programs that they run and the way their windows act. Seeing as many users manage to make the transition to Mac just fine, I dont see why you would claim that there are no "Joe Windows users" out there who would survive an easy transition to, say, Ubuntu 9.04. And in general, once you get things working (which ISNT that hard, theres 8 million wiki articles on just about every concievable 9.04 problem by now), they will continue to work; as exploits get discovered, the system will automatically patch as the updates are released.
C) Being able to customize the crap out of Linux means I can take Ubuntu {favorite version}, set up some sane defaults (remove crappy and unnecessary programs, install VNC and a DDNS updater), then compile the whole thing into a single CD that installs the working system as is. A little more work and you can have a backup that runs to an external drive (back-in-time), and set the CD to auto-wipe / reinstall the root partition without touching the
If something goes wrong on Ubuntu, conversely, I can hand them a disk with a remote-access agent on it, remote in, and fix their root partition easily.
Look, Ive heard this argument that "I dont want to be their tech repair guy" before, but chances are you already are, and given the choice between friends and family using Windows with its AWFUL update mechanism, its AWFUL vulnerabilities, its AWFUL recovery options, and the joys of having to hunt down drivers to make crap work (ever try installing XP on a machine that was bundled with Vista home? It SUCKS.), I will take Linux with centralized everything and built in drivers any day.
Mod parent up! Damn, I just spent all my mod points on another thread. I can't tell you the number of times I had to get this fact straight with people.
XRandR still broken for multiple video cards? Seriously, it's 2010 and they still haven't fixed that shit. People with three monitors are far more common then they once were, and we still get left out in the cold. Hell, it's shameful that Nvidia's flagship quad monitor cards utterly fail with Compiz because of the little detail of a PCIe switch on the card connecting two GPU's.which are EXACTLY THE SAME. ATI is no better either, and the pain will only increase with the Eyefinity rigs.
Compiz does need a simple Mac-style settings interface with optimal settings pre-fed along with the more advanced one. It takes nearly an hour to explore all options and select the configuration that will look the coolest for one's desktop.
Ah I see... But I'm guessing you are not running preload? Or did you not count that as RAM usage?
Here be signatures
kde is the first thought I had. I initially hated cmake but have really grown quite fond of it.
What can i do in android that i cant do in gnome?
Provided that you only have an inaccurate pointing device that obscures 30% of the screen, pretty much anything.
Conversely, almost no closed source software runs on Linux. Which might not matter to you, but if you're trying to get work done, having things like Photoshop
GIMP
Outlook
Thunderbird - I use that exclusively at work where they don't even know that you can buy software from anyone other than M$
No Blue Screen - I haven't seen a blue screen on a Windows machine in many years. And when I do, it's usually because of bad RAM, causing something to get corrupted. Blue screens still exist, but they don't happen quite as often as they used to. I imagine most Linux systems would also crash pretty badly when they have bad memory.
While I also don't see blue screens on my work machine, I do see a lot of instability, poor memory management, bloatware, and general time wasting annoyances on my Windows machine. I definitely have to spend a lot of time getting things working in Linux, but it is nice to actually know that I'm a competent user of the machine and not just someone along for the ride.
I am no where near a cmake guru, but it does seem a lot simpler to deal with than the autotools stuff; not that I am an autotools guru. Though I do wish the cmake folks would shorten the option names. They can get a lot more lengthy than those used in ./configure, like; -DCMAKE_INSTALL_PREFIX, why not just INSTALL_PREFIX or PREFIX?
My karma is not a Chameleon.
I'm not running preload. I've never found it to be worth it. Things load fast enough already anyway.
I booted back into Gentoo again last night and the numbers are more like this: starts off around 200 MB once I get into KDE. After doing things for a bit, but then closing all programs, it's more around 400 MB. I presume more code paths get touched by KDE and other libs and those get pulled into active RAM. But that's still considerably less than Winodws 7 is using.
I've seen Compiz, and I must admit that a user like me simply not impressed by the bells and whistles. I use my computer to get stuff done. I want the primary interface to get to my apps to stay out of the way and NOT take up the memory I would rather my apps have. In Windows, I set the performance options to maximum performance. Yes, I turn off all of the animations and -- as I see it -- completely unnecessary visual effects. I use my computer for the apps, not to waste time with pretty-pretty icons, swoopy sound effects and transparents fade-ins/outs. For me, it is about the utility of the device. I want the OS to be stable and do its job efficiently. Just get me to my applications and leave my CPU to making my app faster.
Bearded Dragon
Compiz does need a simple Mac-style settings interface with optimal settings pre-fed along with the more advanced one. It takes nearly an hour to explore all options and select the configuration that will look the coolest for one's desktop.
It has one, though neither is installed by default when you install compiz. Install simple-ccsm, it gets you both the complex and simple configuration tools. The simple one allows you to activate plugins by assigning them to hot corners, edges, keys etc. The complex one allows you to enable them and then assign keys etc. It's actually a very graceful way of handling the situation, and I hope it continues for 0.10.
I spent probably hours collectively tweaking Compiz, but then I started with Beryl on Xgl. And I use Emerald, so I count theme tweaking in there. I have a very nice clear glass theme that I adore, especially now that emerald seems to be able to stay running for more than ten minutes.
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
or had to recompile sound drivers after every OS update (Ubuntu on that one too).
I wish I could. Sometimes vendors take years to get their sound drivers working. Google realtek, imac, and Windows 64 bit.
I know this is horribly off topic, but I have to say this. This concerns user experience. Recompiling and patching by hand is IDIOTIC thing to require a user to do. Two reasons:
Patching can also go wrong very easily. For instance, if user decides that he seems to have a choice of downloading newer sources. Patch might do something horribly wrong to a wrong version. I know that an experienced user won't do silly things like that, but the inexperienced have no idea why the exact version matters so much. Even when explained to them.
Compiling usually ends in tears also. Most users who have a certain problem with, for instance a wifi-card, and try a certain patch follow a guide that is usually at least an year old. In that year many packages required to build the package you need to patch have changed. Because distro maintainers are not demigods who find every little compile-time bug, you usually get at least one package that simply won't compile with out fiddling. Or you get the same result because the user skipped/forgot one command from the guide. Even if everything went well, you still might end up with a version that screws up your configs.
I had all these problems + crash course to mercurial patching em28xx-driver on Ubuntu 8.10. Even after that my video capture device wouldn't still work other than randomly.
Let's take a car analogy. Say your car's engine is low on power and makes horrid noise. Your friend and an expert tells you that crankshaft bearings need to be replaced (hypothetically). They give you some instructions how to do it. Let's assume you live in a communist country where you can get all necessary parts and tools for free. Now all you need to do is to dismantle the car enough so that you can get the engine out. Then you have to dismantle the whole engine to get to the crankshaft. After replacing the bearings you have to assemble the engine and put it back in the car. Then you only have to assemble the car. Now you have fixed the bugs in your car.
Except that usually when you do things the hard way you hit a dead end somewhere (rusted bolt) and you give up. Or you end up with an engine that has a dozen new problems.
Now I ask you. Would you do all this? Would a normal person do all this? No, they hire someone else to do it i.e. automate the process. Of course, there are people who would do all that. They are called enthusiasts.
Don't design your user experience for enthusiasts.
With autotools you just fiddle with configure.ac and the various Makefile.am's. You don't touch the Makefile.in's or the *.m4 files.
Autotools is very powerful. It is also easy to use, but I admit it is hard to learn how to use.
cmake is easier to learn how to use, is also easy to use, but is way less complete.
The biggest advantage for cmake is the built-in support for OSX and Windows, if you want to build on these platforms.
IMHO there is very little reason to choose cmake for a *nix project.
Both sides of this argument are quite good. Thanks to you both for a well thought out and civilized discussion comparing the strengths of two popular operating systems.
However, this is Slashdot. There is no room for this sort of cerebral and informed debate so I'll have to ask you to leave.
That there is a performance overhead for exceptions is mostly a myth.
There might not be a time overhead, but there sure is a space overhead. Adding a single throw and try...catch to a program compiled with g++ resulted in 64 KiB of additional library code. This is a lot more significant on a handheld device from mid-2001 with 288 KiB of RAM than on its successor from three and a half years later with 4 MiB, so I guess nowadays it isn't enough to worry about.
If the generated code ends up being equivalent instructions, a competently written compiler can eliminate the additional code
For one thing, I don't see how often templates instantiated for types of different sizes would result in equivalent instructions. For another, which free C++ compilers are competently written in this respect?
a defect in one particular implementation isn't a legitimate complaint against the language.
A language is only as good as its best free implementation.
Also, it is IMPOSSIBLE for any operating system to be actively displaying how much CPU it is using while using 0% CPU. Answer: WINDOWS IS LYING TO YOU.
Maybe not lying per-se, but not displaying to a drilled down accuracy either. 0% at idle, is showing that the system is using less than 1% usage at idle... windows doesnt show cpu usage percent in smaller than 1 increments.
So to clarify, system using 0% *according to windows* could equate to approximately [0].16% cpu usage at idle. - Not exactly 0%, but for rounding purposes, alot closer to 0 than 1.
I fully understand that it is a rounding error. They are using floor() instead of round().
Anyway, I put it that way because the parent post was implying that windows was better than GNU/Linux because in my case my OS was using 3.4% of CPU while showing 4 full video windows on an OpenGL Desktop, and running Apache, MySQL and several other daemons in the background, which he considered "idle", and he compared that to a windows os doing nothing that showed "0%".
WTF am I doing replying to an AC at 5 A.M on a Friday night?
Dash is supposed to compatible with Bash
You mean, Dash is supposed to be compatible with sh. In the past most distros just used Bash for sh compatibility, but Dash is supposed to be much faster, but it doesn't have the features of dash. For scripts that are truly sh compatible, there shouldn't be a problem using Dash instead of Bash.
but it doesn't have the features of dash
Dammit, that should be "but it doesn't have the features of Bash".
No. I was talking about how you claimed that Compiz uses up 2% at idle. What are you claiming? That your system with nothing else running is hovering at 2% or are you saying that compiz is using 2% at any given time? I wasn't trying to say anything about the 3.4% you keep harping about. Yes that's certainly not a bad number. I was just talking about how your display interface of choice shouldn't take up ANY CPU. If it can't offload to the gpu, it is totally useless to me. As it is windows aero does not even register on my CPU. The pretty desktop widgets take up 2% or so, but I can toggle them off with an icon on my taskbar. My experience with X and especially compiz is that they both eat CPU cycles like candy and something tells me that even with perfectly good video card drivers with real decent open gl acceleration, compiz and X would still eat up CPU cycles. Why? Because they both suck. Maybe one day instead of coding 4 different window managers/desktop environments running on an ancient windows server from the 1990s and having major distros line up on a single solution that integrates from top to bottom as one homogeneous piece of code. I won't hold my breath.
zosxavius photography
Your idea that your WM shouldn't use the processor is ridiculous at best. Everything takes up cycles, a program running on your computer will take up cycles unless it is asleep. In windows you can't even tell them apart because the whole system is a fucking mess where you can't really tell apart what each process is doing.
On the other hand, comparing a few shitty reflections that windows added to an actual full OpenGL desktop is ridiculous.
The sole fact that you are actually using windows proves that you are a fucking asshole that isn't qualified to comment on anything related to computers. Go be a farmer or something that you can actually manage with your single digit IQ.
WTF am I doing replying to an AC at 5 A.M on a Friday night?