For those who are interested in moving towards a truly secure kernel, and getting to understand the inherent flaws and lack of rigor in the security models of popular operating systems (Lin, Win, *nix, etc) I suggest reading up on EROS, the Extremely Reliable Operating System.
This work is extremely promising, in that it represents a well architechted, principle-driven design that can make guarantees about its security model (e.g. it provably enforces the confinement principle). Not only does EROS achieve significant security goals, but it does so while mantaining excellent performance.
Other bells and whistles of interest include transparent persistence. EROS' memory model does not include an explicit disk/filesystem layer. Instead, it uses a single-level store model, wherein the memory model is extended all the way down to disk. Periodically, a consistent system state is checkpointed down to disk. This includes not only conventional end-user data, but processes, IPC state, etc. Everything. Perhaps counter-intuitively, this is actually *more* efficient than conventional designs.
As a parting note, this kernel is still in research phases, and wasn't quite to the point where it's ready for major external application-level software authoring... but it's been making steady and impressive progress both in technology and implementation.
If you're using damnable helical-scan tape media (DAT, VHS, etc), repeated usage *will* get you to a point where low-level dropouts occur. Then life begins to suck. Yes, in principle one can use layers of ECC plus a compression algorithm and bitstream format designed for graceful degradation of the image in the presence of missing/corrupt data... but these tapes degrade relatively rapidly with just repeated regular use. Then consider the kinds of hell that tapes go through both inside and outside of the player... and this is even less appealing.
Many people I tell this to think it would be a good idea to take them during finals.
I never grokked why this stay-up-for-hours mentality became such a powerful meme with college students. I *always* did better by getting a reasonable amount of sleep than by staying up to cram. Give yourself a few extra days lead time for in-depth studying. Get proper sleep sleep for the period just before and during exams. Watch your performance soar.
Good point, but that view isn't shared by all consumers or manufacturers these days. Recall that laptops are often used for presentations, such that huge displays w/ wide viewing angles are considered a positive feature.
Moreover, with laptops becoming a popular home computing system due to small size, portability, and convenience... this has been changing the demographic away from the jet-setting to the couch-sitting. I've had friends in the former category actually complain about the wide viewing angle on newer laptops for just the privacy reason you mention. The usual solution is an add-on privacy screen that replicates the por viewing angle of older LCD panels... 8-)
Not only are the Apple Cinema (and Studio) LCD displays coveted by graphic designers and other professionals who do color work, you can actually use external color calibration equipment with them just as is done with CRTs and get reliable results for production printing. This article's information, while accurate for run-of-the-mill LCDs, perpetuates a lot of "old news" about LCD tech that is soon to go by the wayside.
BTW, the stated viewing angle on these is 170 deg, and they darn well mean it. Comparing (e.g.) a laptop LCD to these is wholly inaccurate -- not all LCD panels are created equal these days.
Anyone know of other displays that have managed to ship with panels of this quality?
Many have asked (and answered) "What is NetHack?" -- so I'll give the answer to a different question. "How" is NetHack? Here goes:
In The Beginning there was Rogue. That was okay, but the source wasn't generally available, and thus was born Hack. The old net.gods looked upon Hack and saw that it was Good, but that it lacked the Kitchen Sink, that the dog needed a bit of obedience school, and a bazillion other minor deficiencies. So the old net.gods hacked Hack and thus were created The Patches.
Needless to say The Patches were often incompatible. Including everything and the Kitchen Sink made the Compiler cranky. Thus a great army was raised and set to the task of unifying Hack and the Patches into a new work named NetHack. NetHack was so named for its birth out of networked collaboration (which was a very novel thing at the time).
Last but not least, let us not forget the Moria descendents in the Roguelike family of games: Angband and ZAngband. Have a look-see at http://thangorodrim.angband.org/ and http://www.zangband.org/
Oracle: "You owe the Oracle the first set of NetHack shar archives."
"Here's the reality: You block ads. You cost us money. Ultimately, I mean."
This is an interesting point. Turth be told, I don't mind nonintrusive ads as we've got now. Some of them I even click through and keep in mind for purchases (which is vastly unlike 99.999% of web ads).
I'd like to contrast this with ads on About.com -- there's a site there that I've been checking out with quite a bit of useful info (I'm violating some sort of Geek Union bylaw by getting exercise via inline skating..;-). The site is great, but it has the most obnoxious huge popup *casino* ads. I blocked images (doubleclick.net) and may put some more thorough measures in place, but... On one hand, I have no guilt about blocking ads from an ad agency I detest (doubleclick) and for services I will never use (a casino)... but I find two things quite sad: the dearth of known good web-content business models, and advertsing mechanisms that have resorted to (virtually) assaulting users just to get their attention.
Wrong! You are completely confusing the analog vs. digital distinction of generational copy degradation with a specific property (lossy vs. lossless) of a digital compression algorithm.
A compression format is lossy IFF the output from an encode/decode cycle may not be identical to the input. Period. I.e. Playing back your DVcam tape doesn't produce the exact digital data that was originally output by the cam's CCD, due to the lossy compression used in storing that data to tape. This has no bearing on generational loss, which digital formats (uncompressed or no, lossy or no) don't suffer from.
Easily solved. For, say, the 1.3 point release of Ogg Vorbis, pull a Sun and dub it "Og3". Heck, just call it that right now. Positions it nicely as a competitor to the known format.
Re:Windows Media Format...
on
Non-MP3 Codecs?
·
· Score: 4, Informative
Odds are that they didn't do double blind listening tests, and didn't control for the relative bitrates and/or take care to select for their MP3 encoder and decoder quality. WMA is a slightly more recent codec design than MP3, and garners a better ratio for perceptual quality per bit/s.
It's useful to note that any production WMA decoder/encoder is either Microsoft's code, or if otherwise, must pass Microsoft certification. I.e. even in those rare cases that someone outside of MS gets to mess with that code/format, MS makes sure the result is vetted before it may be deployed in a product. Likewise, all products deploying WMA (e.g. digital audio players) must undergo certification independently of whatever WMA code is used in them. This helps to ensure interoperability and sound quality for ports and embedded implementations.
MP3 on the other hand, is something of a free-for-all w.r.t. the available decoders., and no one (esp. not Fraunhofer or Thompson) has a certification process to validate the quality of the generated bitstream. (c.f. another poster's comments about the merits of VBR LAME vs. WMA).
What in the heck do you think this IS? Many of the best students treat developing their coding and CS skills more like a musician or artist practicing and performing for many hours a day. It's a creative act, and can be very involving. Moreover, that level of involvement hones problem solving and practival skills that the "just a job" students can never hope to achieve.
I always wondered about students who didn't have any passion for the field. From what I've seen in both academia and industry, that "just a job" mentality reduces one's skills to "programming fodder", and would seem to be a pretty unenjoyable career.
Heh, cancelled my cable months ago, and haven't missed it one bit. I've been away from it long enough that TV mostly annoys me now. I've become jealous of my precious time.
<irony>I do have lapses tho, which usually result in Slashdot posts such as this one.;-)</irony>
Actually, D3D, as of DirectX 8, has pretty much been gutted and is now nearly a line for line translation from OpenGL. The D3D design has been asymptotically converging towards OpenGL's design in many ways. Unsurprising, as the MS architects and developers were continually faced with 1) the same problems that OpenGL had been designed to address, and 2) a graphics developer market whose major experience has been OpenGL.
The Audigy has a useful optional package (sitting right here on my desk at work): the Platinum EX. It's similar to the various Live! Drive modules, except this one is external (hence the EX), and extends all of the normal Live!Drive jacks plus firewire to your desktop. Oh, and it's black, not asthetic-nightmre beige. 8-)
I just finished reading Resnick's book, and I'll give it a hearty second recommendation. It is an excellent (and fun!) introduction to decentralized thinking. It's very lucidly written, short, yet conveys its core ideas very well.
As the prior poster mentioned, StarLogo is a "massively parallel logo" -- a language inspired by Logo and retains Logo's coneptual simplicity. The goal of StarLogo's design was to create a tool in which to explore emergent behavior and decentralized thinking, yet remain a very accessible and fun environment.
While I'm skeptical as regards Gibson's market targeting with this tech, we may get some good mechanical design out of it.
A notorious problem for musical applications of computer-oriented communication layers (e.g. Firewire, USB, 10/100B-T, etc.) is the lack of robustness of the connectors and/or cables. Various computer music authors have written papers addressing this very issue. (e.g. search CCRMA's archives for a repurposing of AES/EBU for non-audio musical data.) Perhaps Gibson will come up with a *really* robust ethernet mechanical connector design and cabling that can withstand many harsh connect/disconnect cycles and other physical stresses that live guitarists will put on their equipment.
On-chip accelerometers are great, but last I looked, much of the decent chip-based accelerometer tech was classified and military use only due to its ability to be readily applied to create sophisticated missle guidance systems.
'tis unfortunate, as there are any number of really cool (and non-lethal..) applications that geek-minded people could find for tiny cheap accelerometers. (Whee, your Lego robot now has ultra-accurate dead-reckoning and perfect balance...)
While it may be correct that he has right to control the distribution of his copyrighted materials, no one has the right to make money. No form of intellectual use rights guarantee revenue, nor should they. Business models go out of date, companies just plain suck, and they lose money. Good.
[version] that comes with no guarantee.
Guarantees for what? The translation? The software? You've got to be kidding. I am frankly amazed that I have to remind a slashdot reader how "All your base are belong to us" came to be...
Re:"C with safety," or C with trigger locks?
on
C with Safety - Cyclone
·
· Score: 3, Informative
I like the notion of building protection against common, insidious errors, but why did they have to create a new language to accomplish it? I didn't quite understand that point.
The problem lies in the difficulty of reasoning about the semantics (and therefore the correctness) of the program being analyzed. Put simply, C is a disaster for semantic analysis. In newer languages whose design is informed by modern PL research, a goal is often to avoid the sorts of design pitfalls that make analysis difficult.
Ever had an agressive optimizer break code, such that you had to use a lower optimization setting? This can be a symptom of weakness in the compiler's ability to statically analyze the program. Not just a garden variety "bug", but rather the optimization is correct only for a subset of valid input source code! I.e. it can be difficult to impossible to prove that a given optimization is safe, aka "semantics preserving".
Many modern PL researcher/designers thus aim to give compiler writers a head start by ensuring that the language design permits increasingly powerful forms of static program analysis.
Functional language work in particular has focused heavily on utilizing language and type system design to enable more powerful analysis support.
(cf. the various published papers on the Haskell and OCaml languages as a starting point).
Re:Man, where's the "%" key...?
on
Virtual Keyboard
·
· Score: 2
Well, it does seem rather lame for full touch typing..(and I do touch type) but I'd *love* to try out this tech for a modified "hands-free" chording and/or gesturing style interface. Especially with this tech further minaturized, so that only thin band or fingerless "cycling glove" look was requried.
Imagine the now-famous IBM wearable with this as the "keyboard". Now add some positioning hardware so that you could point/gesture w.r.t.the projected image.. and that little IBM device becomes oh-so-much more usable (and private) than with speech-only input.
WTF? Just because a processor uses async logic at the low level has no particular impact on "timing errors" in an OS kernel, or any other OS layer. Synchronization of action in modern systems, depending on your usage, either depends on the atomicity of memory accesses (either direct or aided by special processor instructions such as compare-and-swap, etc.) or else refers to syncronization through an (asynchronous!) event such as an interrupt. If your code someone depends that seriously on instruction/pipeline timing, you'd be screwed by any number of other fairly mundane CPU or source code changes.
The professionalism of which you speak exists, and is the job of the distribution managers in this community. RedHat, SuSE, Debian, etc. all produce stable releases which include vetted kernels. Often these kernels aren't latest stable, but rather the ones which passed the QA and field testing process.
While Linux kernel development has its ups and downs, stable branches definitely do cool down and become very stable (see 2.2.19). This time is a little bumpier than most. Such is life.
On one hand, I do agree that the VM change would have been better in a development branch (2.3 or 2.5). On the other, I view that statement as an valued ideal that didn't mesh with reality in this case. I'll guarantee that such happens in "professional" production environments -- sometimes you simply find yourself between a design flaw and a hard place and *must* make a decision that will enable the product to meet its goals. Yes, Linus took a gamble and ruffled feathers. Yet as hindsight plays out, his gamble appears to be paying off in both performance and maintainability.
Hear, hear! It's one thing for a site to just have obnoxious ads, but it's wholly another for that site to have a combination of ads and ad-free subscription. I've taken advantage of this already on a couple of sites that I want to support. E.g. Sluggy Freelance (one of my fave webcomics) and The Weather Underground both have ad-free subscription services that I've chosen to use.</Shameless Plug>
In fact, this is even better for my personal web usage style than ads, because I virtually NEVER click through, except to occasionlly support a site by clicking through! It's ironic that the 'net is my primary source of pre-purchase information, yet web ads rarely if ever play a part in that process.
I agree with the sentiment that one should go elsewhere if the squeeze is too high (squeeze == taxes, bribes, or other costs of doing business..., cf. Heinlein). Nevertheless, this is substantially different than any clause of the GPL and it's important to understaned why.
The "dubious" clauses of the GPL you refer to (whatever those are) permit certain limited distribution rights, which is well within the context of copyright law. The GPL places no restrictions whatsoever on use of applications written and distributed under the terms of the GPL.
However, the abusive EULAs discussed in this thread restrict kinds of USE. In my book, this becomes a consumer rights/fair trade issue. These EULAs are essentially non-negotiable and often the layperson is not really equipped to understand their rights as described in the EULA or guaranteed under local law w.r.t. such "contracts" (I use the term loosely). Not being contract lawyers, most of them don't even read EULAs. Especially in the case of a company with MS' market power, one does not necessarily have a choice but to use their platform, either for interoperability or for applications written only to the MS platform. Even small software companies have more legal might than most individual or small business customers can respond to. Thus even if the terms of the EULA are "unenforcable", the legal might of the lawyers wins anyway.
The CLI vs. GUI argument is hollow. The real issue of how well a tool meets the needs of the users (in this case, developers). Good GUI tools have been designed, and good CLI tools abound. But just making a CLI tool a GUI tool does not necessarily improve it in any way, and can make it significantly less powerful.
First, I'll cheat, then offer specific examples. 8-) Just how useful would the *nix "cut" utility be in a GUI form? Answer: not at all! cut is essentially a function, designed for the functional programming environment of the Unix command line. The synergy of applications that can use the command line, be scripted in various manners, and communicate with one another is powerful.
One case study/gripe: At work, our C/C++ vendor's toolset uses the CodeWarrior IDE as the front end for build management. I can now categorically state that as a build tool this IDE is MUCH more limited than good old fashioned Makefiles. When I'm PO'ed at the tools, I often say things like: "great IDE for toys!" These limitations are both functional (e.g. the outright ability to accomplish the desired build structure) or simply awful UI design. It almost seems to have been an IDE not designed or written by people who actually develop software!
Another bit of GUI software: Visual SourceSafe (yes, MS's source control software). VSS' source control model basically sucks, which is why we're transitioning to CVS. Nevertheless, the GUI does have a few good ideas in enabling developers to manipulate and visualize the code database. For this very reason, tools like {Win,Lin}CVS are available to provide a convenient visualization front end. Excluding the source control model, which is better VSS or CVS? CVS wins, because it provides scriptable functionality AND the advantages of GUI-based visualization and interaction. The right tool for the right need.
This work is extremely promising, in that it represents a well architechted, principle-driven design that can make guarantees about its security model (e.g. it provably enforces the confinement principle). Not only does EROS achieve significant security goals, but it does so while mantaining excellent performance.
Other bells and whistles of interest include transparent persistence. EROS' memory model does not include an explicit disk/filesystem layer. Instead, it uses a single-level store model, wherein the memory model is extended all the way down to disk. Periodically, a consistent system state is checkpointed down to disk. This includes not only conventional end-user data, but processes, IPC state, etc. Everything. Perhaps counter-intuitively, this is actually *more* efficient than conventional designs.
As a parting note, this kernel is still in research phases, and wasn't quite to the point where it's ready for major external application-level software authoring... but it's been making steady and impressive progress both in technology and implementation.
DEATH TO HELICAL SCAN MEDIA! <cough>
If you're using damnable helical-scan tape media (DAT, VHS, etc), repeated usage *will* get you to a point where low-level dropouts occur. Then life begins to suck. Yes, in principle one can use layers of ECC plus a compression algorithm and bitstream format designed for graceful degradation of the image in the presence of missing/corrupt data... but these tapes degrade relatively rapidly with just repeated regular use. Then consider the kinds of hell that tapes go through both inside and outside of the player... and this is even less appealing.
Many people I tell this to think it would be a good idea to take them during finals.
I never grokked why this stay-up-for-hours mentality became such a powerful meme with college students. I *always* did better by getting a reasonable amount of sleep than by staying up to cram. Give yourself a few extra days lead time for in-depth studying. Get proper sleep sleep for the period just before and during exams. Watch your performance soar.
Good point, but that view isn't shared by all consumers or manufacturers these days. Recall that laptops are often used for presentations, such that huge displays w/ wide viewing angles are considered a positive feature.
Moreover, with laptops becoming a popular home computing system due to small size, portability, and convenience... this has been changing the demographic away from the jet-setting to the couch-sitting. I've had friends in the former category actually complain about the wide viewing angle on newer laptops for just the privacy reason you mention. The usual solution is an add-on privacy screen that replicates the por viewing angle of older LCD panels... 8-)
Not only are the Apple Cinema (and Studio) LCD displays coveted by graphic designers and other professionals who do color work, you can actually use external color calibration equipment with them just as is done with CRTs and get reliable results for production printing. This article's information, while accurate for run-of-the-mill LCDs, perpetuates a lot of "old news" about LCD tech that is soon to go by the wayside.
BTW, the stated viewing angle on these is 170 deg, and they darn well mean it. Comparing (e.g.) a laptop LCD to these is wholly inaccurate -- not all LCD panels are created equal these days.
Anyone know of other displays that have managed to ship with panels of this quality?
Many have asked (and answered) "What is NetHack?" -- so I'll give the answer to a different question. "How" is NetHack? Here goes:
In The Beginning there was Rogue. That was okay, but the source wasn't generally available, and thus was born Hack. The old net.gods looked upon Hack and saw that it was Good, but that it lacked the Kitchen Sink, that the dog needed a bit of obedience school, and a bazillion other minor deficiencies. So the old net.gods hacked Hack and thus were created The Patches.
Needless to say The Patches were often incompatible. Including everything and the Kitchen Sink made the Compiler cranky. Thus a great army was raised and set to the task of unifying Hack and the Patches into a new work named NetHack. NetHack was so named for its birth out of networked collaboration (which was a very novel thing at the time).
Last but not least, let us not forget the Moria descendents in the Roguelike family of games: Angband and ZAngband. Have a look-see at http://thangorodrim.angband.org/ and http://www.zangband.org/
Oracle: "You owe the Oracle the first set of NetHack shar archives."
Neophyte: "What's a shar archive?"
Oracle: "ZOT!"
Wrong! You are completely confusing the analog vs. digital distinction of generational copy degradation with a specific property (lossy vs. lossless) of a digital compression algorithm.
A compression format is lossy IFF the output from an encode/decode cycle may not be identical to the input. Period. I.e. Playing back your DVcam tape doesn't produce the exact digital data that was originally output by the cam's CCD, due to the lossy compression used in storing that data to tape. This has no bearing on generational loss, which digital formats (uncompressed or no, lossy or no) don't suffer from.
Easily solved. For, say, the 1.3 point release of Ogg Vorbis, pull a Sun and dub it "Og3". Heck, just call it that right now. Positions it nicely as a competitor to the known format.
It's useful to note that any production WMA decoder/encoder is either Microsoft's code, or if otherwise, must pass Microsoft certification. I.e. even in those rare cases that someone outside of MS gets to mess with that code/format, MS makes sure the result is vetted before it may be deployed in a product. Likewise, all products deploying WMA (e.g. digital audio players) must undergo certification independently of whatever WMA code is used in them. This helps to ensure interoperability and sound quality for ports and embedded implementations.
MP3 on the other hand, is something of a free-for-all w.r.t. the available decoders., and no one (esp. not Fraunhofer or Thompson) has a certification process to validate the quality of the generated bitstream. (c.f. another poster's comments about the merits of VBR LAME vs. WMA).
What in the heck do you think this IS? Many of the best students treat developing their coding and CS skills more like a musician or artist practicing and performing for many hours a day. It's a creative act, and can be very involving. Moreover, that level of involvement hones problem solving and practival skills that the "just a job" students can never hope to achieve.
I always wondered about students who didn't have any passion for the field. From what I've seen in both academia and industry, that "just a job" mentality reduces one's skills to "programming fodder", and would seem to be a pretty unenjoyable career.
<irony>I do have lapses tho, which usually result in Slashdot posts such as this one. ;-)</irony>
Simplified Account of Reality Ahead
Actually, D3D, as of DirectX 8, has pretty much been gutted and is now nearly a line for line translation from OpenGL. The D3D design has been asymptotically converging towards OpenGL's design in many ways. Unsurprising, as the MS architects and developers were continually faced with 1) the same problems that OpenGL had been designed to address, and 2) a graphics developer market whose major experience has been OpenGL.
The Audigy has a useful optional package (sitting right here on my desk at work): the Platinum EX. It's similar to the various Live! Drive modules, except this one is external (hence the EX), and extends all of the normal Live!Drive jacks plus firewire to your desktop. Oh, and it's black, not asthetic-nightmre beige. 8-)
I just finished reading Resnick's book, and I'll give it a hearty second recommendation. It is an excellent (and fun!) introduction to decentralized thinking. It's very lucidly written, short, yet conveys its core ideas very well.
As the prior poster mentioned, StarLogo is a "massively parallel logo" -- a language inspired by Logo and retains Logo's coneptual simplicity. The goal of StarLogo's design was to create a tool in which to explore emergent behavior and decentralized thinking, yet remain a very accessible and fun environment.
While I'm skeptical as regards Gibson's market targeting with this tech, we may get some good mechanical design out of it.
A notorious problem for musical applications of computer-oriented communication layers (e.g. Firewire, USB, 10/100B-T, etc.) is the lack of robustness of the connectors and/or cables. Various computer music authors have written papers addressing this very issue. (e.g. search CCRMA's archives for a repurposing of AES/EBU for non-audio musical data.) Perhaps Gibson will come up with a *really* robust ethernet mechanical connector design and cabling that can withstand many harsh connect/disconnect cycles and other physical stresses that live guitarists will put on their equipment.
On-chip accelerometers are great, but last I looked, much of the decent chip-based accelerometer tech was classified and military use only due to its ability to be readily applied to create sophisticated missle guidance systems. 'tis unfortunate, as there are any number of really cool (and non-lethal..) applications that geek-minded people could find for tiny cheap accelerometers. (Whee, your Lego robot now has ultra-accurate dead-reckoning and perfect balance...)
Ever had an agressive optimizer break code, such that you had to use a lower optimization setting? This can be a symptom of weakness in the compiler's ability to statically analyze the program. Not just a garden variety "bug", but rather the optimization is correct only for a subset of valid input source code! I.e. it can be difficult to impossible to prove that a given optimization is safe, aka "semantics preserving".
Many modern PL researcher/designers thus aim to give compiler writers a head start by ensuring that the language design permits increasingly powerful forms of static program analysis. Functional language work in particular has focused heavily on utilizing language and type system design to enable more powerful analysis support. (cf. the various published papers on the Haskell and OCaml languages as a starting point).
Well, it does seem rather lame for full touch typing..(and I do touch type) but I'd *love* to try out this tech for a modified "hands-free" chording and/or gesturing style interface. Especially with this tech further minaturized, so that only thin band or fingerless "cycling glove" look was requried.
Imagine the now-famous IBM wearable with this as the "keyboard". Now add some positioning hardware so that you could point/gesture w.r.t.the projected image.. and that little IBM device becomes oh-so-much more usable (and private) than with speech-only input.
WTF? Just because a processor uses async logic at the low level has no particular impact on "timing errors" in an OS kernel, or any other OS layer. Synchronization of action in modern systems, depending on your usage, either depends on the atomicity of memory accesses (either direct or aided by special processor instructions such as compare-and-swap, etc.) or else refers to syncronization through an (asynchronous!) event such as an interrupt. If your code someone depends that seriously on instruction/pipeline timing, you'd be screwed by any number of other fairly mundane CPU or source code changes.
The professionalism of which you speak exists, and is the job of the distribution managers in this community. RedHat, SuSE, Debian, etc. all produce stable releases which include vetted kernels. Often these kernels aren't latest stable, but rather the ones which passed the QA and field testing process.
While Linux kernel development has its ups and downs, stable branches definitely do cool down and become very stable (see 2.2.19). This time is a little bumpier than most. Such is life.
On one hand, I do agree that the VM change would have been better in a development branch (2.3 or 2.5). On the other, I view that statement as an valued ideal that didn't mesh with reality in this case. I'll guarantee that such happens in "professional" production environments -- sometimes you simply find yourself between a design flaw and a hard place and *must* make a decision that will enable the product to meet its goals. Yes, Linus took a gamble and ruffled feathers. Yet as hindsight plays out, his gamble appears to be paying off in both performance and maintainability.
Hear, hear! It's one thing for a site to just have obnoxious ads, but it's wholly another for that site to have a combination of ads and ad-free subscription. I've taken advantage of this already on a couple of sites that I want to support. E.g. Sluggy Freelance (one of my fave webcomics) and The Weather Underground both have ad-free subscription services that I've chosen to use.</Shameless Plug>
In fact, this is even better for my personal web usage style than ads, because I virtually NEVER click through, except to occasionlly support a site by clicking through! It's ironic that the 'net is my primary source of pre-purchase information, yet web ads rarely if ever play a part in that process.
I agree with the sentiment that one should go elsewhere if the squeeze is too high (squeeze == taxes, bribes, or other costs of doing business..., cf. Heinlein). Nevertheless, this is substantially different than any clause of the GPL and it's important to understaned why.
The "dubious" clauses of the GPL you refer to (whatever those are) permit certain limited distribution rights, which is well within the context of copyright law. The GPL places no restrictions whatsoever on use of applications written and distributed under the terms of the GPL.
However, the abusive EULAs discussed in this thread restrict kinds of USE. In my book, this becomes a consumer rights/fair trade issue. These EULAs are essentially non-negotiable and often the layperson is not really equipped to understand their rights as described in the EULA or guaranteed under local law w.r.t. such "contracts" (I use the term loosely). Not being contract lawyers, most of them don't even read EULAs. Especially in the case of a company with MS' market power, one does not necessarily have a choice but to use their platform, either for interoperability or for applications written only to the MS platform. Even small software companies have more legal might than most individual or small business customers can respond to. Thus even if the terms of the EULA are "unenforcable", the legal might of the lawyers wins anyway.
The CLI vs. GUI argument is hollow. The real issue of how well a tool meets the needs of the users (in this case, developers). Good GUI tools have been designed, and good CLI tools abound. But just making a CLI tool a GUI tool does not necessarily improve it in any way, and can make it significantly less powerful.
First, I'll cheat, then offer specific examples. 8-) Just how useful would the *nix "cut" utility be in a GUI form? Answer: not at all! cut is essentially a function, designed for the functional programming environment of the Unix command line. The synergy of applications that can use the command line, be scripted in various manners, and communicate with one another is powerful.
One case study/gripe: At work, our C/C++ vendor's toolset uses the CodeWarrior IDE as the front end for build management. I can now categorically state that as a build tool this IDE is MUCH more limited than good old fashioned Makefiles. When I'm PO'ed at the tools, I often say things like: "great IDE for toys!" These limitations are both functional (e.g. the outright ability to accomplish the desired build structure) or simply awful UI design. It almost seems to have been an IDE not designed or written by people who actually develop software!
Another bit of GUI software: Visual SourceSafe (yes, MS's source control software). VSS' source control model basically sucks, which is why we're transitioning to CVS. Nevertheless, the GUI does have a few good ideas in enabling developers to manipulate and visualize the code database. For this very reason, tools like {Win,Lin}CVS are available to provide a convenient visualization front end. Excluding the source control model, which is better VSS or CVS? CVS wins, because it provides scriptable functionality AND the advantages of GUI-based visualization and interaction. The right tool for the right need.