He's not telling Google to keep out of Enterprise searches, he's telling his own staff that they are going to (try to) keep Google out of that market (good luck!).
He's also enticing Google to come out and fight. If you want to gauge what the competition can actually do, just pick a fight and see what they come out swinging with.
And Photoshop is typically free to all the people I know who have warezed a copy.
If you're trying to sell GIMP based on pricing, you're not going to win -- certainly not with the lack of polish in GIMP's UI compared to Photoshop's.
Plus, the other big advantage to Photoshop is all the filters and plug-ins that work on it. Unless GIMP supports all of the same filter and plug-ins that work with the latest Photoshop, most professional graphic designers or artists won't find it useful.
So if I use the words "minimum wage" on my web site, will the RIAA require me to pay royalties for the They Might Be Giants song with the same lyrics? Where does this bullshit stop?
Ultimately, the video game industry will correct itself through market selection.
If newer systems with fancier graphics and capabilities require more development time and cost, development houses will take fewer risks and innovation will suffer. Those systems will eventually die out in the market as people lose interest.
But if other newer systems come along and don't require more development time or cost due to smart development tools and SDK/platform, the development houses won't have to avoid taking risks and innovation will still thrive. Those systems will succeed whereas the ones costly to develop for will not.
The advantage of WP isn't that it's right all the time, it's that it is (through the tireless effort of zillions of people on five-minute breaks) self-correcting.
The exact same issue appears in open-source software development. When is the development of a piece of open-source software "finished"? When you take a sample (snapshot in time) of an open-source project, it may appear incomplete (loose ends, certain polish lacking, etc), but it is almost always improved over the last sample taken. Is continual improvement enough, or are consumers of the endeavor expecting some level of completion or polish that an ongoing line of churn can never provide?
The solution to this in the software development world is release management. Choosing when to cut releases, and what things should and shouldn't go in each release, is more of an art form than a science, so there's no clear formula to follow. But the whole point of it is to halt the churn and whip the whole project into a consumable state (for publishing) before allowing the churn to continue again.
I don't buy into the line of thinking that claims "potential for misuse of a thing means creation of such a thing shouldn't be permitted".
Just put that into context using two popular examples around here: P2P networks and DVD copying. Just because P2P technology or DVD copying technologies can potentially be used to make illegal copies, that doesn't mean the technologies themselves should be completely outlawed.
I know all the Slashdot fanboys are violently against anyone collecting personal information about them without their permission. I can't say I disagree (at a gut-feel level). But set your emotional disgust and fear aside and think about it.
Information collection isn't the problem. Information misuse is the problem.
The problem with the data brokerage industry isn't that they collect data about me (and sometimes get it wrong). The problem is that there's no transparency for consumers into the data kept about them, and no efficient process for them to get inaccuracies corrected. The problem is that companies and the government are often using data (sometimes incorrect) in ways they shouldn't be allowed to.
You just can't stop data collection. It's going to happen, it's already happening, it's been happening. Organizations and people need to collect and exchange information in order for the economy and society to function efficiently and smoothly. Law enforcement needs information to investigate and prosecute wrongdoers. These kinds of informational needs aren't going to magically disappear.
What needs to be stopped it the misuse of data. I should be guaranteed by law the right to completely and freely see, without being charged, at any time, any and all information that any organization, business, or the government has on me, and I should be able to challenge the accuracy of the data and get corrections made in a timely manner. It should be illegal for law enforcement or the government to use data about my legal actions or protected opinions as justification for arresting me, harassing me, publicly smearing me, getting a search warrant against me, or suspecting me of criminal activity. It should be illegal for a lender to deny me a loan based on inaccurate information in my credit report; I should be guaranteed by law an opportunity to prove that the information is wrong and the lender should then be forced to reevaluate using the corrected data. It should be illegal for an employer to not hire me based on information in my credit report or medical records. Etc.
What we need are more accurate and good laws to protect people against the misuse of information. Then the mere collection of data becomes a moot point.
I cannot believe how entitled you feel others are to control someone else's actions.
It doesn't matter if a person publicly releases something for profit or out of charity -- they still bear an ethical responsibility to stand behind the quality of their release. If a developer doesn't want that responsibility, then he shouldn't publicly release his work, period.
You have many choices. Only one of them is to use any particular open source project. No one has forced you to pick it up. Your only meaningful leverage on the develper to threaten "I won't use your product".
Exactly. I don't use any software which doesn't meet my needs. I feel good about sticking it to the FOSS zealots by not using their poorly-designed stuff.
You are demanding that the developer do something expensive - develop to your requirements rather than his/her own.
It's no more expensive to develop for the requirements of the average user than it is to develop for the requirements of supergeeks. The developer obviously isn't worried about getting reimbursed for his work anyway, since he released it for free in the first place. So your argument here is dead on arrival.
You are not offering to contribute the one currency expected - improvements to the code, not developed by the originator.
Expecting ordinary people (e.g. non-coders) to contribute code is idiocy, and disregarding legitimate feedback from non-coders is a foolish mistake. The "expected currency" is the wrong thing to expect.
Just because a user cannot code, that does not automatically make their feedback or suggestions invalid or worthless. The user has bothered to download, try, use, struggle through annoyances with, and send feedback about, the developer's work. That is a charitable donation by the user of their time and energy and skills. Are you actually suggesting that the user's time and efforts are worthless just because they aren't a "leet c0ding god"? I call bullshit on your attitude.
Basically, it sounds like you are a freeloader. Hmmm.
BZZT! Wrong! Basically it sounds like I expect shit to work, which is never an unreasonable expectation. It's an innate human expectation held by the vast majority of people.
But your house analogy breaks down whenever an open-source project team releases actual binaries along with the source code... which is the common case.
Maybe I'm just stupid, but why don't you solve this by mapping the network drives to later drive letters, such as W, X, Y, or Z? Then there's no collision.
Bad analogy. What's really happening is I'm designing and building my own house, but I'm putting the schematics on public display. Does this give anyone the right to say I should add a garage, or design the bathroom differently?
No, yours is a flawed analogy, because only you are using your house and suffering its deficiencies. That's not the case with open-source software; other people are using and suffering from the deficiencies in your work in that case.
My point is that, for complex tasks, it's impossible to avoid a learning curve.
Yeah, obviously, I get that. But my point is that the learning curve should always be minimized as much as possible (to be as close to non-existant as possible), and the learning curve should never include things that are tangential to the task at hand (why should someone have to learn how to be a Linux sysadmin just to paint something in the Gimp?) That should always be the aim of a good software designer.
Again, returning to the point, one must find a good balance between intutiveness and usability. A non-computer example is the automatic transmission vs. manual debate, the automatic is intuitive, but the manual performs better. Another example is the Windows command shell compared to the Bash shell; Bash is significantly harder, but more powerful then the Windows shell.
But your example just proves my point: wherever a choice exists between something with lower learning curve and something with higher learning curve, the option with the lower learning curve is the obvious correct choice for newcomers. And if a design is truly usable, it will be equally efficient and hassle free even for an expert -- that's exactly the case for the "automatic vs. manual" transmission, since no person accustomed to driving a manual transmission has difficulty figuring out and driving an automatic.
You assume I'm making an immature joke, but I'm not.
"GameCube" says what it is -- it's a cube that plays games. Pretty straightforward. Good name.
"Wii" -- what the fuck is that? How do you even pronounce it? It could be a new fragrance. It could be a brand of baby food. It could be "W-2". Terrible name.
I find the statement "Users won't read, and shouldn't have to" is misleading. It's true for simple web applications and utilities. There are applications where a learning curve is worth the hassle. Maple is an incredibly powerful mathematics program; yet it is only powerful because its interface has a steep learning curve. On the far extreem, it's impossible to use Visual Studio without prior knowledge of a programming language. Trying to go 100% intuitive GUI also leads to repetative scenarios that can't be automated. For example, Surcode's DTS CD encoder can't be called from the command-line, thus making it difficult to automate.
Your reply isn't the first to cite math modelling or programming software as a supposed counterexample. But these are not valid counterexamples.
A mathematician using math modelling software should only have to know about their field of expertise -- math. They shouldn't also have to be a general computer/OS expert to be able to use the software.
A C++ programmer using Visual Studio should only have to know about C++ programming. They shouldn't also have to be an expert on system administration and the inner guts of the OS just to be able to use the IDE and compiler.
And just because someone is a math genius or a C++ programmer, that doesn't mean they will be any more inclined to read a manual, README file, or text in the software's UI. It's generally human nature to want to read as little as possible as quickly as possible, regardless of how smart you are or what field you are in. If your software is designed well, there shouldn't be any need for the user to read any instructions or documentation up front.
It seems like you should make it accessible for both extremes, but focus on the middle ground.
There appears to be a common misconception that making an interface usable for newcomers means making it annoying for experts, but no such trade-off is necessary. A truly usable interface is one that is both easily mastered by newcomers and efficient and transparent to experts.
Just because some existing software (like Microsoft Bob or the Office Clippy) tries to accomodate newcomers in a way that annoys the hell out of experts, that doesn't mean you have to trade off between the two. It just means the designers of those programs did a terrible job with usability.
A 17-year-old student who posted on his blog site that he was being bullied and threatened by the Plainfield School District will face an expulsion hearing this week
Well, if he wasn't being bullied by the school district before, he sure is now. They just proved his argument for him!
Just by following a few simple common-sense guidelines, you can drastically improve the usability of any given software:
Simplicity: keep things as simple as possible. Fewer options/settings/etc means less to have to figure out. If you must provide an option for something, supply a reasonable default. The user should never have to configure a bazillion options before being able to just use the program.
Sane hierarchical organization: The human mind can only processes and deal with the external world by grouping, categorizing, and thinking of a collection of items as a single "chunk". So sanely organize options in hierarchical menus; sanely organize navigation into a tree-like path; etc.
Direct manipulation: users always expect to be able to direclty manipulate an on-screen object by clicking directly on it, dragging it, etc, so design your UI that way. (Example that violates this: a listbox with items in it, with buttons underneath that must be clicked to act on the selected item, rather than allowing the user to right-click on the item itself to get a pop-up menu.)
Data transparency: there should always be a way in the UI for the user to clearly see the information they want organized in the way they want it, and it should never be a mystery to the user where some calculated field came from or how it was calculated.
Terminology: keep technical lingo out of the program's UI as much as possible, and make all text and phrasing clear to non-technical users. Whenever an error occurs, present a dialog that clearly explains the nature of the error and which also suggests a course of action that might rectify the error.
Real-time on-screen feedback: when a user performs an action, they need immediate feedback to know whether the action succeeded or failed. Real-time responsiveness is super important. If a user-initiated action will take longer than about 0.1 seconds to achieve the ultimate result, then you need to put up a suitable progress indicator that updates itself responsively as the operation proceeds. If the user clicks on something and they don't realize the system is just busy processing their request, they are likely to click on it again and again without realizing the first time succeeded. (Example that violates this: you launch an app from the Windows XP start menu... you don't hear the hard drive churning or see a hard drive light because you are remoted in via Remote Desktop... no visual on-screen cue is given that the app is actually loading up... so you try to launch it again... in the end you get 2 or 3 instances of the app).
Don't assume user expertise: always assume your user knows NOTHING about computers.
Scenario-based design: don't merely dump a bundle of functionality on the user; give them a program that guides them through all the steps needed to solve their scenario. It's the difference between handing someone a graphing calculator and handing them a math expert.
Users won't read, and shouldn't have to: users don't read text -- it's a proven fact. Nor should they generally have to. For most people, reading is an unpleasant expenditure of valuable energy and time that could instead be used getting something done. If you need more than one brief sentence in the UI to explain something, then your UI is too unusable and you're just leaning on text (that won't get read) as a crutch. Users should be able to jump in and start being productive with your software without having to read a manual, README file, or any other long-winded explanation whatsoever.
install/uninstall a program under your own user account?
debug a program running under your own user account?
change a typical system setting, such as the system time?
install/remove/configure device drivers?
If some programs or settings are "shared" for use by "all users", shouldn't the system be architected in such a way that it permits any user to one-off that setting or program for their own account?
Microsoft is taking the wrong approach with Vista (by having the system prompt for admin credentials all over the place). Instead, they should have rearchitected the system so that admin rights aren't needed so much in the first place.
The fundamental problem with Windows security and reliability is that the state management is unnecessarily complex.
It's unnecessary for a program to be "installed" in order to be used -- why should I have to modify the state of the system itself, and wedge crap into the registry and C:\WINDOWS directory, just to run a program? Why should the program have to keep its state in a global database (registry) that is also a core part of the system itself? It's a broken design.
Fixing the architecture to simplify state management would have other added benefits. For example, if a program's last state/settings are stored with the program, all bundled up into some kind of package file, and the program doesn't even have to be "installed" to be run, then it would be easy for users to move a program (plus all its settings) from one machine to another, or to fully backup/restore it, or to carry it across OS upgrades, etc. I've never used OS X, but I've read a little about it and it sounded like that's the approach it takes, which is just common sense.
He's not telling Google to keep out of Enterprise searches, he's telling his own staff that they are going to (try to) keep Google out of that market (good luck!).
He's also enticing Google to come out and fight. If you want to gauge what the competition can actually do, just pick a fight and see what they come out swinging with.
Photoshop Elements sells for well under $100.
And Photoshop is typically free to all the people I know who have warezed a copy.
If you're trying to sell GIMP based on pricing, you're not going to win -- certainly not with the lack of polish in GIMP's UI compared to Photoshop's.
Plus, the other big advantage to Photoshop is all the filters and plug-ins that work on it. Unless GIMP supports all of the same filter and plug-ins that work with the latest Photoshop, most professional graphic designers or artists won't find it useful.
So if I use the words "minimum wage" on my web site, will the RIAA require me to pay royalties for the They Might Be Giants song with the same lyrics? Where does this bullshit stop?
Ultimately, the video game industry will correct itself through market selection.
If newer systems with fancier graphics and capabilities require more development time and cost, development houses will take fewer risks and innovation will suffer. Those systems will eventually die out in the market as people lose interest.
But if other newer systems come along and don't require more development time or cost due to smart development tools and SDK/platform, the development houses won't have to avoid taking risks and innovation will still thrive. Those systems will succeed whereas the ones costly to develop for will not.
The advantage of WP isn't that it's right all the time, it's that it is (through the tireless effort of zillions of people on five-minute breaks) self-correcting.
The exact same issue appears in open-source software development. When is the development of a piece of open-source software "finished"? When you take a sample (snapshot in time) of an open-source project, it may appear incomplete (loose ends, certain polish lacking, etc), but it is almost always improved over the last sample taken. Is continual improvement enough, or are consumers of the endeavor expecting some level of completion or polish that an ongoing line of churn can never provide?
The solution to this in the software development world is release management. Choosing when to cut releases, and what things should and shouldn't go in each release, is more of an art form than a science, so there's no clear formula to follow. But the whole point of it is to halt the churn and whip the whole project into a consumable state (for publishing) before allowing the churn to continue again.
I don't buy into the line of thinking that claims "potential for misuse of a thing means creation of such a thing shouldn't be permitted".
Just put that into context using two popular examples around here: P2P networks and DVD copying. Just because P2P technology or DVD copying technologies can potentially be used to make illegal copies, that doesn't mean the technologies themselves should be completely outlawed.
Apple Pulls Out of India
I suppose that's better than Apple prematurely ejaculating inside India.
I know all the Slashdot fanboys are violently against anyone collecting personal information about them without their permission. I can't say I disagree (at a gut-feel level). But set your emotional disgust and fear aside and think about it.
Information collection isn't the problem. Information misuse is the problem.
The problem with the data brokerage industry isn't that they collect data about me (and sometimes get it wrong). The problem is that there's no transparency for consumers into the data kept about them, and no efficient process for them to get inaccuracies corrected. The problem is that companies and the government are often using data (sometimes incorrect) in ways they shouldn't be allowed to.
You just can't stop data collection. It's going to happen, it's already happening, it's been happening. Organizations and people need to collect and exchange information in order for the economy and society to function efficiently and smoothly. Law enforcement needs information to investigate and prosecute wrongdoers. These kinds of informational needs aren't going to magically disappear.
What needs to be stopped it the misuse of data. I should be guaranteed by law the right to completely and freely see, without being charged, at any time, any and all information that any organization, business, or the government has on me, and I should be able to challenge the accuracy of the data and get corrections made in a timely manner. It should be illegal for law enforcement or the government to use data about my legal actions or protected opinions as justification for arresting me, harassing me, publicly smearing me, getting a search warrant against me, or suspecting me of criminal activity. It should be illegal for a lender to deny me a loan based on inaccurate information in my credit report; I should be guaranteed by law an opportunity to prove that the information is wrong and the lender should then be forced to reevaluate using the corrected data. It should be illegal for an employer to not hire me based on information in my credit report or medical records. Etc.
What we need are more accurate and good laws to protect people against the misuse of information. Then the mere collection of data becomes a moot point.
I cannot believe how entitled you feel others are to control someone else's actions.
It doesn't matter if a person publicly releases something for profit or out of charity -- they still bear an ethical responsibility to stand behind the quality of their release. If a developer doesn't want that responsibility, then he shouldn't publicly release his work, period.
You have many choices. Only one of them is to use any particular open source project. No one has forced you to pick it up. Your only meaningful leverage on the develper to threaten "I won't use your product".
Exactly. I don't use any software which doesn't meet my needs. I feel good about sticking it to the FOSS zealots by not using their poorly-designed stuff.
You are demanding that the developer do something expensive - develop to your requirements rather than his/her own.
It's no more expensive to develop for the requirements of the average user than it is to develop for the requirements of supergeeks. The developer obviously isn't worried about getting reimbursed for his work anyway, since he released it for free in the first place. So your argument here is dead on arrival.
You are not offering to contribute the one currency expected - improvements to the code, not developed by the originator.
Expecting ordinary people (e.g. non-coders) to contribute code is idiocy, and disregarding legitimate feedback from non-coders is a foolish mistake. The "expected currency" is the wrong thing to expect.
Just because a user cannot code, that does not automatically make their feedback or suggestions invalid or worthless. The user has bothered to download, try, use, struggle through annoyances with, and send feedback about, the developer's work. That is a charitable donation by the user of their time and energy and skills. Are you actually suggesting that the user's time and efforts are worthless just because they aren't a "leet c0ding god"? I call bullshit on your attitude.
Basically, it sounds like you are a freeloader. Hmmm.
BZZT! Wrong! Basically it sounds like I expect shit to work, which is never an unreasonable expectation. It's an innate human expectation held by the vast majority of people.
Who Controls the Internet?
The Juggernaut, bitch!
U.S. people! Blow your Congrssmans' ear off!!
Why don't we just let Dick Cheney do it?
But your house analogy breaks down whenever an open-source project team releases actual binaries along with the source code... which is the common case.
Maybe I'm just stupid, but why don't you solve this by mapping the network drives to later drive letters, such as W, X, Y, or Z? Then there's no collision.
Bad analogy. What's really happening is I'm designing and building my own house, but I'm putting the schematics on public display. Does this give anyone the right to say I should add a garage, or design the bathroom differently?
No, yours is a flawed analogy, because only you are using your house and suffering its deficiencies. That's not the case with open-source software; other people are using and suffering from the deficiencies in your work in that case.
My point is that, for complex tasks, it's impossible to avoid a learning curve.
Yeah, obviously, I get that. But my point is that the learning curve should always be minimized as much as possible (to be as close to non-existant as possible), and the learning curve should never include things that are tangential to the task at hand (why should someone have to learn how to be a Linux sysadmin just to paint something in the Gimp?) That should always be the aim of a good software designer.
Again, returning to the point, one must find a good balance between intutiveness and usability. A non-computer example is the automatic transmission vs. manual debate, the automatic is intuitive, but the manual performs better. Another example is the Windows command shell compared to the Bash shell; Bash is significantly harder, but more powerful then the Windows shell.
But your example just proves my point: wherever a choice exists between something with lower learning curve and something with higher learning curve, the option with the lower learning curve is the obvious correct choice for newcomers. And if a design is truly usable, it will be equally efficient and hassle free even for an expert -- that's exactly the case for the "automatic vs. manual" transmission, since no person accustomed to driving a manual transmission has difficulty figuring out and driving an automatic.
You assume I'm making an immature joke, but I'm not.
"GameCube" says what it is -- it's a cube that plays games. Pretty straightforward. Good name.
"Wii" -- what the fuck is that? How do you even pronounce it? It could be a new fragrance. It could be a brand of baby food. It could be "W-2". Terrible name.
Is that the gay easter bunny?
...because the name "Wii" is so much better than the name "GameCube".
h4x0r: d00d 3y3 c4n pwn3rfy th3m f0r ch3ep w1f my 0d4y j3etsp34k to0lbar!
:-P
Yep, that was me, I admit it
I find the statement "Users won't read, and shouldn't have to" is misleading. It's true for simple web applications and utilities. There are applications where a learning curve is worth the hassle. Maple is an incredibly powerful mathematics program; yet it is only powerful because its interface has a steep learning curve. On the far extreem, it's impossible to use Visual Studio without prior knowledge of a programming language. Trying to go 100% intuitive GUI also leads to repetative scenarios that can't be automated. For example, Surcode's DTS CD encoder can't be called from the command-line, thus making it difficult to automate.
Your reply isn't the first to cite math modelling or programming software as a supposed counterexample. But these are not valid counterexamples.
A mathematician using math modelling software should only have to know about their field of expertise -- math. They shouldn't also have to be a general computer/OS expert to be able to use the software.
A C++ programmer using Visual Studio should only have to know about C++ programming. They shouldn't also have to be an expert on system administration and the inner guts of the OS just to be able to use the IDE and compiler.
And just because someone is a math genius or a C++ programmer, that doesn't mean they will be any more inclined to read a manual, README file, or text in the software's UI. It's generally human nature to want to read as little as possible as quickly as possible, regardless of how smart you are or what field you are in. If your software is designed well, there shouldn't be any need for the user to read any instructions or documentation up front.
It seems like you should make it accessible for both extremes, but focus on the middle ground.
There appears to be a common misconception that making an interface usable for newcomers means making it annoying for experts, but no such trade-off is necessary. A truly usable interface is one that is both easily mastered by newcomers and efficient and transparent to experts.
Just because some existing software (like Microsoft Bob or the Office Clippy) tries to accomodate newcomers in a way that annoys the hell out of experts, that doesn't mean you have to trade off between the two. It just means the designers of those programs did a terrible job with usability.
I think I'm going to tell the school board exactly what I think of their actions. Most of their email addresses are posted here.
When you do that, be sure to sign your message "TitsNbeer" for full effect.
A 17-year-old student who posted on his blog site that he was being bullied and threatened by the Plainfield School District will face an expulsion hearing this week
Well, if he wasn't being bullied by the school district before, he sure is now. They just proved his argument for him!
Just by following a few simple common-sense guidelines, you can drastically improve the usability of any given software:
If some programs or settings are "shared" for use by "all users", shouldn't the system be architected in such a way that it permits any user to one-off that setting or program for their own account?
Microsoft is taking the wrong approach with Vista (by having the system prompt for admin credentials all over the place). Instead, they should have rearchitected the system so that admin rights aren't needed so much in the first place.
The fundamental problem with Windows security and reliability is that the state management is unnecessarily complex.
It's unnecessary for a program to be "installed" in order to be used -- why should I have to modify the state of the system itself, and wedge crap into the registry and C:\WINDOWS directory, just to run a program? Why should the program have to keep its state in a global database (registry) that is also a core part of the system itself? It's a broken design.
Fixing the architecture to simplify state management would have other added benefits. For example, if a program's last state/settings are stored with the program, all bundled up into some kind of package file, and the program doesn't even have to be "installed" to be run, then it would be easy for users to move a program (plus all its settings) from one machine to another, or to fully backup/restore it, or to carry it across OS upgrades, etc. I've never used OS X, but I've read a little about it and it sounded like that's the approach it takes, which is just common sense.