Sometimes it (LightWave under Wine) runs faster than Windows. (I think it could be that the Linux malloc and VM implementations are better, or the Win32 console subsystem is just really slow).
I certainly have noticed this with our (non-Wine) applications too. The best explanation is that NFS works much better under Linux. However there are some cases (like where it is reading local files only) where it is still faster. This is despite the fact that VC++ did a better optimizing job than GCC.
You may be thinking like I did at first that he was advocating some trick with the stack pointers. That is wrong, he is advocating quite portable code that allocates a *different* "stack" in a block of memory and then uses normal pointers to allocate portions of that. It is not GCC specific.
If 99.999% of the time the string is shorter than the buffer, using strlcat is a huge win in speed.
strlcat returns the length of buffer that is needed. It's design actually agrees with what you are saying, if it overflows the buffer it "wastes time" counting the rest of the characters, rather than just quitting with the buffer truncated. This is because it knows that the proper response is to allocate a new buffer.
strlcat is much faster than calling strlen before every call, which for many programmers is extremely important.
strncat() does produce a null-terminated string. The problem is that for normal use into a buffer of N characters you have to do strncat(buffer, N-strlen(buffer)-1). People often get this wrong, just passing N or forgetting the -1.
It is vital that the plugins work as well. If they do this may be a good idea. I don't know if anybody has considered or tested it. Straight calculation like a LightWave renderer would probably run at nearly 100% speed under Wine.
Linux has replaced a significant number of NT machines at Digital Domain, both on the desktop and in the renderfarm. The machines are not being bought to replace Irix machines, they are being bought instead of Windows machines. And they are being bought for Linux itself, not because Linux is cheaper (each machine has a W2K license because they are dual-boot in case we need a huge LightWave render, and we pay for RedHat, so they are more expensive!).
Although we still have lots of Irix machines around we use them only because their cost is zero (since we already own them). Believe me Irix is not even considered in any consideration for purchases. We also have a lot of the SGI 320 NT workstations, which were a huge mistake, neither W2K or Linux work right on them. It was a direct competition between Linux and Windows and Linux won.
We could not consider Mac until OS/X came out. I understand it is quite popular at other places, and if our software is ported (which should not be hard) I think it will be popular at Digital Domain. Unless Linux GUI is improved considerably in the next 2 years it may find itself pushed back into the renderfarm and servers and off the desktop by OS/X.
You don't go back far enough. MicroSoft's original logo had a capital S and the o looked a bit like the AT&T death star. This was gradually refined to a notch in the o and a small s before they switched to the serif fonts in about 1995. Also all their products were clearly named MSblah (ie MSDOS, MSMouse, etc) and the S was always capitalized. Even in the Serif font they printed MS in capitals a lot.
If that was true then why is the #1 question asked about any new piece of word processing software is not "is it as good or better than MicroSoft word?" but is instead "how well can it import/export MicroSoft Office?".
Nobody can complete is because the ability to compete requires the ability to read and write a file format that they keep secret. That is monopoly behavior. If Word was so good they should be able to compete just fine reading and writing an open file format.
Reverse engineering this horrendous format requires so much effort that little time is left for making the rest of the program. Also the insistance that the program import and export the format without making too many changes severly limits the ability of the program to treat the text any differently than MicroSoft Word does, thus making "innovation" almost impossible.
Nonsense. They will go find their "computer expert friend" and that person will probably install a pirated Windows on the system, and suddenly their programs will install and work. Then they will continue to be happy with the money they saved buying the system.
This will not adversely impact Linux at all. "Lindows" will probably be considered "inexpensive" and there will be the knowledge that you need to get your hacker friend to do some weird thing to get the games to work, but a machine with "Lindows" in the name actually means a good price.
Often the images are not popups. They are imbedded images, complete with a picture of a Windows window frame. You cannot drag them around, attempting to do so clicks them (unless you drag out of them).
I suppose there are popup versions but I have never seen them (as I have popups disabled). They would have the advantage of having a matching window frame and thus look correct on that stupid new graphics design of XP.
Mickey Mouse *is* trademarked. It has been pointed out many times here that despite the fact that Disney/Mickey Mouse is the usual example, it does not apply. If copyrights ended, people could rebroadcast Steamboat Willy without paying Disney anything. But they still would not be allowed to make Mickey Mouse porno or name their company Mickey Mouse, because it would violate the trademark.
When you sell that flower, are you allowed to restrict what the buyer does with that flower? Are you allowed to tell them they cannot give that flower to somebody else, or plant it, or take it apart and sequence it's DNA? Are you allowed to do this without the buyer signing any kind of contract? Are you allowed to do this even if the buyer finds the flower on the street and does not even know who you are? Are you allowed to do this even if you give the buyer the flower as a "gift" and don't tell him about the restrictions?
You seem a little confused. Even RMS cannot write new laws.
The GPL quite clearly states that it is not a binding contract. This is very different from the EULA's which try, through legalese, to claim that ripping off cellophane or clicking OK indicates that you agree to some terms and conditions.
The reason why the GPL works is that there is no reason not to agree to it, because the alternative gives you less rights than agreeing to it (ie you CANNOT DISTRIBUTE THE PROGRAM AT ALL). This is due to US COPYRIGHT LAW that was written long before the GPL.
I am absolutely certain that if MicroSoft or anybody else was found in a GPL violation, they could pull the product from the market. They ARE NOT FORCED TO RELEASE ANYTHING!!!
I didn't say they would use Cygwin itself, instead I meant they write Cygwin style tools and distribute them as part of Windows. No doubt there would be people that would install GNU tools instead, just like they do on Solaris, but being able to assumme a working shell and single rooted filesystem and so on would get rid of almost all the animosity toward NT.
I think Solaris, Irix, HPUX, and even MicroSofts "tools for Unix" proves that it is possible to write entire Unix compatable toolsets without using GNU code.
Also you will find that the GPL is not viral at all: The worst that could happen is that MicroSoft could not distribute their Cygwin tools. IN NO WAY WHATSOEVER can anybody get the rights to any of their source, even the source to their cygwin rip-off! The GPL cannot be more powerful than copyright law because it is not a signed contract, it simply allos exceptions to coyright, giving the user of the software the rights to do a few more things than normal US law does.
I agree. I think a lot of the hatred of MicroSoft is due to the bad design and their refusal to learn from or copy the actual good designs.
If NT had been a Unix clone with real working pipes and a real shell there would be no Linux (or Solaris or any other Unix other than NT) and MicroSoft would rule absolutely everything right now.
MicroSoft biggest enemy is themselves. Even today they refuse to fix the system (they could at least make it work like Cygwin) because they are unable to admit they made a mistake. Imagine if you could assumme a Windows system had all the Cygwin tools, I don't think Linux would last more than a few months. Honestly. But (perhaps fortunately) MicroSoft has too much arrogance and ego for their own good.
I would argue that infact many Linux users suffer from more cognative dissonance that a normal computer user
Well, no DUH.
Unfortunatly after starting out logically you seem to have devolved into a misguided linux bash where you seem most concerned about applications. Believe me, even the most diehard Linux supporter knows there are no games or applications. Trying to say that anybody claims or believes otherwise makes you look like an idiot.
A more accurate critique is when features that exist on both systems but are different are compared. A good one is X: there are lots of defenders of X and as far as I can tell it can easily be proven that X performance is worse for basic architectural reasons (more due to the Xlib design than to the client/server model). I also think the X designers should be very embarrassed that they could not modify the existing calls to do anti-aliased fonts while MicroSoft was able to modify their calls easily.
1. Nobody, Linux hacker or otherwise, builds cards in their basement with modern surface mounted chips, it would cost dozens of times more than the card itself does.
2, They still have to buy the chips from ATI (if they have some other chips that ATI's drivers are useful for then ATI is in much worse trouble that from from your fantasy Linux hardware builder.)
3. The fix for the other cards was simple enough to be totally trivial for anybody capable of building the card from scratch.
You have to do better than this nonsense to try to insult Linux users. Go back to school.
Actually I would like to see it ignore attempts by the site to make a new window (ie messing with frames or using popups). Clicking on a link should always do the same thing. There should be a way (different shift or mouse buttons) for the user to decide if the new page should replace the current one, make a window (in which case it could pay attention to popup sizes), or make a tab.
It is extremely difficult without a test to see if the watermark is there. If the only way to test it is to run a program that they keep on a machine locked in a vault you will be unable to tell if you have removed the watermark.
Watermarks would work great for this. However those idiots keep trying to make them be used to stop copied music from being played. The problem with this is it gives the hacker a trivial test to see if it is removed, and it also gives them a huge incentive to remove it. This is how all the Ed Felton watermarks were removed.
They also have to send unencumbered MP3. This will reduce the amount of transcoding done so the watermark is even better preserved.
If the length is a power of two, than a "bit number" (a shift value, or an argument to a bit-test instruction, or anything else that identifies a bit by a number) will fit into a set of bits with no waste.
This DOES make a difference. More important than the space savings is the ability to know that a pattern of bits could not encode any illegal instructions that had to be tested for.
You have swapped the meanings from what most people are using.
ALPHA: This means that rendering is able to mix the color that is already on the screen with the new color. But usually it does not keep the original input, so once the colors are mixed they cannot be un-mixed. Another way to state this is that you are painting with "transparent paint". Once the paint is on the wall you cannot get it off, you can only paint over it with more opaque paint.
Alpha is tremendously, vitally important for modern graphics. Many drawings can only be efficienlty stated by using overlayed alpha drawings.
Alpha can also be simulated without any hardware or X server support whatsoever. The end result is *IDENTICAL*. Speed and bloat in the application programs is the problem.
TRANSPARENCY: This is usually taken to mean the storage of alpha in the server. Usually this means that the compositing is done at the last moment, perhaps by hardware, though it could also mean using math tricks to "decompose" the images back apart. The purpose of transparency is so that you can change the overlaying image without having to redo the underlying one (most people think of just moving the overlaying image or changing the layering order, but in fact the overlaying one can be transformed or redrawn arbitrarily).
Oddly enough the first "hardware graphics acceleration" was a type of transparency. "Sprites" were hardware supported long before any graphics, since they allowed objects to move quickly. Even the earliest X servers supported a mouse cursor with some transparency. (of course both of these were 1-bit alpha but the fact that hardware was dedicated to this long before drawing lines or bitblt is interesting).
Currently transparency is most useful for putting anti-aliased edges on objects that move around rapidly, ie overlapping windows. This allows them to be shapes other than rectangles. With partial transparency they can have nice curved shapes or faded edges (ie drop shadows).
It is not practical to do this outside the window server. Not only is it slow, it would require an enormous amount of cooperation between all the programs, and is probably more difficult to design than something inside the server.
There is a lot of similarity between Alpha and Transparency, but often they are implemented with totally different pipelines. It would be nice if the designers made the interface identical (ie you start with a transparent window, and the paint you use also accumulates for that transparency) but from what I know the designers have been too stupid to do this so far.
A "sandbox" will not work if the purpose of the program is to do something outside the sandbox. Whenever you see "A buffer overflow bug allows an intruder to do something with the same privledges as the XYZ server" it is because there is a bug in the XYZ server. You could put the XYZ server in a "sandbox" and the bug will no longer give the intruder dangerous privledges, but unfortunately the XYZ server will no longer have the privledges to do what it is supposed to do.
You could make the new sandboxed XYZ server talk to another thing that *does* have the privledges. Indeed this is one of the best ways of increasing security, by making the big complex and bug-prone part unable to be dangerous. But there is no guarantee that *that* thing does not have a bug so this is not a perfect solution.
It's fun to see MicroSoft make a mistake, but there is serious implications behind this, that would apply to Linux or any other system, and brings into question some new ideas.
The basic idea of signing code sounds quite good until you look at it deeper. There is no guarantee that signed==good. This is an excellent example where the signed one is actually worse. Now imagine if palladium was in there, refusing to accept a patch, or cheerfully undoing any attempt to fix the system, with NO way to fix it (you would no longer be able to say "I don't trust MicroSoft").
If you think only MicroSoft does such mistakes, I seem to remember there was a design error in the new Linux capabilities where it was possible to throw away the capability of *changing* your capabilities. If a bug happened to throw this away, and then your program tried to drop capabilities (and then ignored the error return, because that would be assummed to work always) and then execute untrusted code, the code would execute at full capabilities! Suddenly a system being advertised as a big improvement in security has turned into a worse liability!
I'm afraid that there are a lot of problems like this that are going to bite people. When you start to work on security you better know exactly what you are doing and plan ahead, and write a lot of real appliations, and assumme that there could be a mistake *anywhere*.
I believe we are talking about systems that are installed on machines before the user buys them. Truth is, Linux does not stand a chance if the user is expected to "install" it. Windows installation could require the installer to type the entire thing in in hex, and it will *still* be easier than "put the CD in the drive and reboot" to install Linux, because the work will already be done by the manufacturer.
I certainly have noticed this with our (non-Wine) applications too. The best explanation is that NFS works much better under Linux. However there are some cases (like where it is reading local files only) where it is still faster. This is despite the fact that VC++ did a better optimizing job than GCC.
You may be thinking like I did at first that he was advocating some trick with the stack pointers. That is wrong, he is advocating quite portable code that allocates a *different* "stack" in a block of memory and then uses normal pointers to allocate portions of that. It is not GCC specific.
If 99.999% of the time the string is shorter than the buffer, using strlcat is a huge win in speed.
strlcat returns the length of buffer that is needed. It's design actually agrees with what you are saying, if it overflows the buffer it "wastes time" counting the rest of the characters, rather than just quitting with the buffer truncated. This is because it knows that the proper response is to allocate a new buffer.
strlcat is much faster than calling strlen before every call, which for many programmers is extremely important.
strncat() does produce a null-terminated string. The problem is that for normal use into a buffer of N characters you have to do strncat(buffer, N-strlen(buffer)-1). People often get this wrong, just passing N or forgetting the -1.
It is vital that the plugins work as well. If they do this may be a good idea. I don't know if anybody has considered or tested it. Straight calculation like a LightWave renderer would probably run at nearly 100% speed under Wine.
Linux has replaced a significant number of NT machines at Digital Domain, both on the desktop and in the renderfarm. The machines are not being bought to replace Irix machines, they are being bought instead of Windows machines. And they are being bought for Linux itself, not because Linux is cheaper (each machine has a W2K license because they are dual-boot in case we need a huge LightWave render, and we pay for RedHat, so they are more expensive!).
Although we still have lots of Irix machines around we use them only because their cost is zero (since we already own them). Believe me Irix is not even considered in any consideration for purchases. We also have a lot of the SGI 320 NT workstations, which were a huge mistake, neither W2K or Linux work right on them. It was a direct competition between Linux and Windows and Linux won.
We could not consider Mac until OS/X came out. I understand it is quite popular at other places, and if our software is ported (which should not be hard) I think it will be popular at Digital Domain. Unless Linux GUI is improved considerably in the next 2 years it may find itself pushed back into the renderfarm and servers and off the desktop by OS/X.
MicroSoft! MicroSoft! MicroSoft! Pbbbttt!
Nobody can complete is because the ability to compete requires the ability to read and write a file format that they keep secret. That is monopoly behavior. If Word was so good they should be able to compete just fine reading and writing an open file format.
Reverse engineering this horrendous format requires so much effort that little time is left for making the rest of the program. Also the insistance that the program import and export the format without making too many changes severly limits the ability of the program to treat the text any differently than MicroSoft Word does, thus making "innovation" almost impossible.
You idiot, if you bothered to read the blockquote you would see the text "(even if it means no open sourcing)"
This will not adversely impact Linux at all. "Lindows" will probably be considered "inexpensive" and there will be the knowledge that you need to get your hacker friend to do some weird thing to get the games to work, but a machine with "Lindows" in the name actually means a good price.
Often the images are not popups. They are imbedded images, complete with a picture of a Windows window frame. You cannot drag them around, attempting to do so clicks them (unless you drag out of them).
I suppose there are popup versions but I have never seen them (as I have popups disabled). They would have the advantage of having a matching window frame and thus look correct on that stupid new graphics design of XP.
Mickey Mouse *is* trademarked. It has been pointed out many times here that despite the fact that Disney/Mickey Mouse is the usual example, it does not apply. If copyrights ended, people could rebroadcast Steamboat Willy without paying Disney anything. But they still would not be allowed to make Mickey Mouse porno or name their company Mickey Mouse, because it would violate the trademark.
When you sell that flower, are you allowed to restrict what the buyer does with that flower? Are you allowed to tell them they cannot give that flower to somebody else, or plant it, or take it apart and sequence it's DNA? Are you allowed to do this without the buyer signing any kind of contract? Are you allowed to do this even if the buyer finds the flower on the street and does not even know who you are? Are you allowed to do this even if you give the buyer the flower as a "gift" and don't tell him about the restrictions?
The GPL quite clearly states that it is not a binding contract. This is very different from the EULA's which try, through legalese, to claim that ripping off cellophane or clicking OK indicates that you agree to some terms and conditions.
The reason why the GPL works is that there is no reason not to agree to it, because the alternative gives you less rights than agreeing to it (ie you CANNOT DISTRIBUTE THE PROGRAM AT ALL). This is due to US COPYRIGHT LAW that was written long before the GPL.
I am absolutely certain that if MicroSoft or anybody else was found in a GPL violation, they could pull the product from the market. They ARE NOT FORCED TO RELEASE ANYTHING!!!
I think Solaris, Irix, HPUX, and even MicroSofts "tools for Unix" proves that it is possible to write entire Unix compatable toolsets without using GNU code.
Also you will find that the GPL is not viral at all: The worst that could happen is that MicroSoft could not distribute their Cygwin tools. IN NO WAY WHATSOEVER can anybody get the rights to any of their source, even the source to their cygwin rip-off! The GPL cannot be more powerful than copyright law because it is not a signed contract, it simply allos exceptions to coyright, giving the user of the software the rights to do a few more things than normal US law does.
If NT had been a Unix clone with real working pipes and a real shell there would be no Linux (or Solaris or any other Unix other than NT) and MicroSoft would rule absolutely everything right now.
MicroSoft biggest enemy is themselves. Even today they refuse to fix the system (they could at least make it work like Cygwin) because they are unable to admit they made a mistake. Imagine if you could assumme a Windows system had all the Cygwin tools, I don't think Linux would last more than a few months. Honestly. But (perhaps fortunately) MicroSoft has too much arrogance and ego for their own good.
Well, no DUH.
Unfortunatly after starting out logically you seem to have devolved into a misguided linux bash where you seem most concerned about applications. Believe me, even the most diehard Linux supporter knows there are no games or applications. Trying to say that anybody claims or believes otherwise makes you look like an idiot.
A more accurate critique is when features that exist on both systems but are different are compared. A good one is X: there are lots of defenders of X and as far as I can tell it can easily be proven that X performance is worse for basic architectural reasons (more due to the Xlib design than to the client/server model). I also think the X designers should be very embarrassed that they could not modify the existing calls to do anti-aliased fonts while MicroSoft was able to modify their calls easily.
That argument makes zero sense.
1. Nobody, Linux hacker or otherwise, builds cards in their basement with modern surface mounted chips, it would cost dozens of times more than the card itself does.
2, They still have to buy the chips from ATI (if they have some other chips that ATI's drivers are useful for then ATI is in much worse trouble that from from your fantasy Linux hardware builder.)
3. The fix for the other cards was simple enough to be totally trivial for anybody capable of building the card from scratch.
You have to do better than this nonsense to try to insult Linux users. Go back to school.
Actually I would like to see it ignore attempts by the site to make a new window (ie messing with frames or using popups). Clicking on a link should always do the same thing. There should be a way (different shift or mouse buttons) for the user to decide if the new page should replace the current one, make a window (in which case it could pay attention to popup sizes), or make a tab.
Watermarks would work great for this. However those idiots keep trying to make them be used to stop copied music from being played. The problem with this is it gives the hacker a trivial test to see if it is removed, and it also gives them a huge incentive to remove it. This is how all the Ed Felton watermarks were removed.
They also have to send unencumbered MP3. This will reduce the amount of transcoding done so the watermark is even better preserved.
This DOES make a difference. More important than the space savings is the ability to know that a pattern of bits could not encode any illegal instructions that had to be tested for.
ALPHA: This means that rendering is able to mix the color that is already on the screen with the new color. But usually it does not keep the original input, so once the colors are mixed they cannot be un-mixed. Another way to state this is that you are painting with "transparent paint". Once the paint is on the wall you cannot get it off, you can only paint over it with more opaque paint.
Alpha is tremendously, vitally important for modern graphics. Many drawings can only be efficienlty stated by using overlayed alpha drawings.
Alpha can also be simulated without any hardware or X server support whatsoever. The end result is *IDENTICAL*. Speed and bloat in the application programs is the problem.
TRANSPARENCY: This is usually taken to mean the storage of alpha in the server. Usually this means that the compositing is done at the last moment, perhaps by hardware, though it could also mean using math tricks to "decompose" the images back apart. The purpose of transparency is so that you can change the overlaying image without having to redo the underlying one (most people think of just moving the overlaying image or changing the layering order, but in fact the overlaying one can be transformed or redrawn arbitrarily).
Oddly enough the first "hardware graphics acceleration" was a type of transparency. "Sprites" were hardware supported long before any graphics, since they allowed objects to move quickly. Even the earliest X servers supported a mouse cursor with some transparency. (of course both of these were 1-bit alpha but the fact that hardware was dedicated to this long before drawing lines or bitblt is interesting).
Currently transparency is most useful for putting anti-aliased edges on objects that move around rapidly, ie overlapping windows. This allows them to be shapes other than rectangles. With partial transparency they can have nice curved shapes or faded edges (ie drop shadows).
It is not practical to do this outside the window server. Not only is it slow, it would require an enormous amount of cooperation between all the programs, and is probably more difficult to design than something inside the server.
There is a lot of similarity between Alpha and Transparency, but often they are implemented with totally different pipelines. It would be nice if the designers made the interface identical (ie you start with a transparent window, and the paint you use also accumulates for that transparency) but from what I know the designers have been too stupid to do this so far.
You could make the new sandboxed XYZ server talk to another thing that *does* have the privledges. Indeed this is one of the best ways of increasing security, by making the big complex and bug-prone part unable to be dangerous. But there is no guarantee that *that* thing does not have a bug so this is not a perfect solution.
The basic idea of signing code sounds quite good until you look at it deeper. There is no guarantee that signed==good. This is an excellent example where the signed one is actually worse. Now imagine if palladium was in there, refusing to accept a patch, or cheerfully undoing any attempt to fix the system, with NO way to fix it (you would no longer be able to say "I don't trust MicroSoft").
If you think only MicroSoft does such mistakes, I seem to remember there was a design error in the new Linux capabilities where it was possible to throw away the capability of *changing* your capabilities. If a bug happened to throw this away, and then your program tried to drop capabilities (and then ignored the error return, because that would be assummed to work always) and then execute untrusted code, the code would execute at full capabilities! Suddenly a system being advertised as a big improvement in security has turned into a worse liability!
I'm afraid that there are a lot of problems like this that are going to bite people. When you start to work on security you better know exactly what you are doing and plan ahead, and write a lot of real appliations, and assumme that there could be a mistake *anywhere*.
I believe we are talking about systems that are installed on machines before the user buys them. Truth is, Linux does not stand a chance if the user is expected to "install" it. Windows installation could require the installer to type the entire thing in in hex, and it will *still* be easier than "put the CD in the drive and reboot" to install Linux, because the work will already be done by the manufacturer.