[互操作系统] ==>Linux is Not Windows

weixin_38051598 2004-10-17 09:33:37

In the following article, I refer to the GNU/Linux OS and various FOSS projects under the catch-all name of "Linux". It just scans better. . .
Linux != Windows
(Linux is Not Windows)

Translations: Chinese Translation by Xiao Shu  Spanish Translation by Claudio Cortes  Swedish Translation by 'Non Plus Ultra'  German translationby Felix Schwarz Hungarian translation by Andras Csepinszky Portugese translation by Mike Silva Finnish translation by Väinö Lappi

(Note: Linkdenotes a link to a relevant web article.)

If, as I do, you spend any amount of time on a Linux forum, you'll eventually grow exasperated, as I did, by the number of posts that run something like this:

"Hi! I've been using Linux for a few days, and it's mostly great. But, it's a shame that [something or other] doesn't work like it does on Windows. Why don't all the developers completely rewrite all the software so it acts more like Windows? I'm sure Linux would get lots more users if they did!"

You may even have had a go at answering these questions, only to be shot down in flames by a Linux newbie who takes it as read that his idea, based on years of experience with a different OS plus a few hours on Linux, is revolutionarily brilliant, and you only don't like it because you're an "old-school Linux user" who thinks that GUIs are the spawn of the Devil and everybody should be forced to stick to the CLI.

This article is aimed at explaining to those newbies exactly why their ideas tend to get flamed rather than embraced.

First and foremost, the most cherished argument: "If Linux did this, it would get lots more people converting from Windows!"

So, allow me to explain something that is fundamental to understanding Linux: The Link Linux community is not trying to provide the average Windows user with a replacement OS. The goal of Linux is not "Linux on every desktop".

Really. It honestly isn't.Link. Yes, they're both an OS. Yes, they can both be used for the same things. But that makes Linux an alternative, not a replacement. It might seem an insignificant distinction, but it's actually a vitally important one.

Linux <=> Windows is like Motorbikes <=> Cars: Both are vehicles that get you from A to B via the roads. But they're different shapes, different sizes, have different controls, and they work in fundamentally different ways. They are not freely interchangeable. They have different uses and different strengths & weaknesses, and you should pick whichever is appropriate, not pick one and expect it to do everything that the other can do.

Somebody who drives a car might be sitting in a long queue of traffic someday and see a motorbike go sailing past him. He might envy the biker's ability to largely ignore something that is a crippling problem to a car. If that driver then said "I know all about cars, so I must know all about motorbikes!" then he'd be wrong.

    * If that driver bought a bike and then found that he was confused by the accelerator being a hand-controlled twist-grip instead of a foot-controlled pedal, he might complain that motorbikes should be fitted with a gas pedal.
    * If that driver had a wife and two kids, he might find the bike's single passenger capacity a flaw. He might suggest that bikes be re-built so they could carry four people, two abreast.
    * If that driver were to try and drive away, only to find that he fell over because he wasn't used to having to keep balance, he might suggest that bikes should be re-designed with four wheels.
    * If the driver were to find himself leaning around the corners, he might suggest bikes should be fitted with stabilisers to keep them upright when cornering.
    * If the driver wanted to keep his bike from being stolen, he might complain that there were no doors to lock potential thieves out, making his bike much more likely to be stolen than a car.
    * If the driver found a crash helmet an encumbrance, he might suggest that an airbag in the bike's handlebars could be fitted as an alternative to the annoying helmet.

And in every case, he would be wrong. Because he thinks that a motorbike replaces a car, he thinks it can and should do everything a car can do. He thinks it can work in the same way that a car does, that 'missing' car features can just be grafted on.

In the same way, well-meaning Linux newcomers make suggestions about making Linux more like what they're used to. And they get nowhere, for all the same reasons. Linux and Windows might both be used for the same purposes, but so are a car & motorbike. That doesn't mean you can swap directly from one to the other, and it doesn't mean features can or should be swapped directly from one to the other.

Too many people think that migrating from Windows to Linux is like switching from a BMW to a Mercedes. They think that the controls should be the same, their experience should transfer directly, and all differences should be largely cosmetic. They think that "I need a car to use a road, I need an OS to use a computer. Cars all work the same way, therefore OSes should all work the same way." But this is not accurate. "I need a vehicle to use a road, I need an OS to use a computer. I know how to drive a car, I'm ignorant about motorbikes. I know how to use Windows, I'm ignorant about Linux." - this is accurate.

A Windows user must realize that he's only an experienced Windows user, not an experienced computer user; just like a car driver is only a car driver, not an all-road-vehicles driver. A Windows user on Linux must realize that he has just become a novice again, just like a car driver on a motorbike. A Windows user must be willing to learn that there are different ways of accomplishing the same task, just as a car driver must get used to the handlebars replacing a wheel and the need for a crash helmet he never had to use before. And they have to be prepared to accept that "different" does not mean "inferior".

This simple fact causes great difficulty for the more established Windows users. They come to Linux with many Windows habits ingrained and an attitude of "I know exactly how to use a computer, thank you very much." The problem is, they don't. They only know how to use Windows. When they come to a different OS, these "power users" can be the ones who have the worst problems: They have far more to unlearn.

Where a newbie will just say "I don't know" and start exploring or asking on forums, the Windows Power User will say "I know how to do this, I just do this, this, this, and then. . . It doesn't work! Stupid OS!" And then they'll say "If knowledgeable me couldn't get it working, a newbie will stand no chance! Linux is nowhere near ready for desktop use!". They don't realise that all their knowledge is working against them, causing them to have more problems than the less knowledgeable users. They've made the mistake of thinking Linux is different software doing the same thing as Windows, when it's actually different software doing different things. It's not doing a bad job of the same tasks, it's doing a good job of alternative tasks.

Linux is an alternative to Windows, but not a replacement. It will never be a replacement, because it has incompatible goals. Microsoft's goal is to get their software onto as many PCs as possible, as their priority is profit. Linux has no such goal, because Linux is free. It has a different priority.

To understand this is to understand FOSS Link. It's perfectly understandable that Linux newbies don't understand it yet - they're new to it. They're used to thinking in terms of proprietary software. So let me explain it:

Typical FOSS software is created by somebody who looks around, doesn't find any pre-existing software he likes, and so writes his own. Then, because he's such a nice guy, he throws open the source and says to the world "Help yourself!". He can do this, because it costs nothing to duplicate software, so it costs him no more to give it to the whole world than it would to keep it to himself. He doesn't suffer by giving his software away.

However, the important thing to remember is: He doesn't benefit from giving his software away, either. Whether it gets used by one person, or by one billion, makes no difference to the developer. Oh, sure, he gets the satisfaction of knowing he's made a popular product: The number of people using it can be a nice ego boost; a way, if you will, of keeping score. But it doesn't make him any money: It's FOSS.

If the software is a success, other people get interested in it, and they help improve it. That's the biggest advantage of FOSS: Every user is a potential developer. Everybody can chip in and do their part in making software work better, do more, be less buggy. It's great when a piece of software attracts a community of developers. But it's great for the software. It makes the software better. It doesn't make the developer richer. It just creates more demands on his time.

FOSS is the exact opposite of proprietary software like Windows: FOSS is all about the software. It's not about the number of end users. Software that works well but has only a few users is considered a failure by commercial software standards, but a success by FOSS ones.

FOSS is about making good quality software, software that can DO things. If you want to use it, you're expected to invest time in learning how to use it. It was created and given to you, free of charge, by people who invested a lot of their own time in it for no personal gain. The least you could do to repay their contribution is invest a little time of your own before you complain that it doesn't work like the parallel Windows software.

"Aha, now I've got you," says a newbie smugly. "There are Linux projects with the goal of replacing Windows, not just being an alternative."

It's easy to see where that idea comes from. KDE and Gnome, for instance, provide a desktop environment that's far more Windows-like than typical Linux window managers and the CLI. Linspire is a distro based almost entirely around the idea of making Linux Windows-like.

However, paradoxically, these prove my point better than they prove the newbie's.

Why? Because these projects are normal FOSS projects, revolving entirely around making the software better. The only difference is, one of the definitions of quality in these projects is "How easily can a Windows user use it?"

As soon as you factor this in, you can't help but agree that these are 100% typical Linux, with the sole aim of improving software. These are projects made by even-more-selfless-than-usual Linux developers: They aren't making software for their own use, as they know Linux very well. Instead, they're making software entirely for other people's benefit: Software that makes the transition from Windows to Linux easier.

These developers have recognised that there are Windows users who want to move to Linux, and they've put a lot of effort into creating a Linux environment which Windows users find comfortably familiar. But they haven't done so to try and replace Windows, though the end result might give that impression. The end goal is what makes the difference: The goal is not to make a Windows replacement; the goal is to ease the Windows-user's transition to Linux.

It's not uncommon to see community hostility towards these projects. Some of it for rational, understandable reasons ("KDE is a resource hog, so use Fluxbox") but some seems to be an irrational, hostile, "Windows-like software is bad" attitude. This isn't, actually, an anti-MS or anti-Windows attitude. Instead, it's the far more comprehensible dislike of what isn't understood.

The 'typical' Linux user is a hobbyist: He uses computers because computers are fun, programming is fun, hacking is fun. And Linux is a far better OS for a hacking hobbyist: He can take it apart to its most fundamental level, and reassemble it exactly as he sees fit.

However, the current influx of Linux users has a large percentage of non-hobbyist non-hackers. They want a computer that Just Works, a computer that works like Windows. They aren't interested in spending time setting up Linux to make it work the way they want it, they want it to work like that out-of-the-box.

And that's perfectly okay, but from the typical Linux user's perspective, this is like somebody who wants a Lego car that comes pre-assembled and glued together so it can't come apart. It is alien to their understanding. The only way they can react is with a baffled "Why would anybody want that?"

It's baffling. If you want a ready-made model car, buy a toy car. If you want a car you can build and take apart, buy Lego. Why would anybody want a Lego car that can only be used as a toy car? The whole point of Lego is that you have fun assembling it yourself!

This is how a typical Linux user reacts to the "Why can't it Just Work?" brigade: "If you want it to Just Work, use Windows. If you want to hack it, use Linux. Why do you want to switch to Linux if you have no interest in taking advantage of its open source nature?"

The answer, usually, is that they don't actually want to move to Linux. They just want to get away from Windows: They're running away from viruses; they're fleeing malware; they're striving to be free of restrictions on how they use their paid-for software; they're trying to escape from the clutches of the E.U.L.A. They aren't trying to get into Linux, they're trying to get out of Windows. Linux is simply the best-known alternative.

More on that later. . .

You might think "Okay, that explains why developers don't make a deliberate effort to make their software work like Windows. But surely Linux software could be given a GUI that's Windows-user-friendly without it interfering with FOSS principles?"

There are a few reasons why this isn't the case.

Firstly: Do you really think that somebody who creates a piece of software deliberately gives it a Link lousy user interface?

When somebody devotes a large chunk of his own time to create a piece of software, he will make the user interface (UI) as good as possible. The UI is a hugely important part of the software: there's no point having functionality if you can't access it via the UI. You might not know what it is, but there is always a reason why the UI works the way it does. That reason? Because it is the best UI the creator could create.

Before you insist that a more Windows-like UI would make the software better, bear this fact in mind: The creator of this software, a coder who, by definition, knows far more than you do about this piece of software, doesn't agree with you. He might be wrong, but the odds are against it.Link

Secondly: There already ARE nice, Windows-user-friendly GUI frontends available. I can't think of any function off the top of my head that you can't control via a GUI, no matter how high-level. You can compile a kernel (make xconfig), set up your firewall (fwbuilder), partition your hard drive (qtparted). . . it's all there, pretty, interactive, intuitive, and user-friendly.

But the 'release cycle' of Linux isn't like Windows. You don't get the finished, highly-polished GUI package released right from the start. GUIs add complexity and no functionality to software. A developer doesn't sit down and design a pretty GUI that does nothing, he sits down and creates a piece of software that does what he needs it to do.

The first thing a piece of software does is be usable from the command line interface (CLI). It will probably have all sorts of invocation options and maybe a lengthy configuration file. This is how it starts out, because it's functionality that's required. Everything else comes later. And even when software has a nice GUI, it's important to remember it can still usually be controlled fully from the CLI and the config files.

    * This is because the CLI has many advantages: The CLI is universal. Every Linux system has a CLI. Every executable can be run from the CLI. It's easy to operate software via the CLI remotely.
      None of these are true of the GUI: Some Linux machines don't have the X11 windowing system installed; Some software has no GUI; Some software is not available from GUI menus; It's often not easy or practical to use a GUI tool remotely.

Lastly, multiple GUI frontends can exist to do the same job, and there's no telling which you may have installed.

So do remember, if you ask "How do I. . ?", you'll mostly be told how to do it via the CLI. That doesn't mean that it can only be done from the CLI. It just reflects the relative importance that the GUI has compared to the CLI in the development of a software project.

    * Windows is totally GUI-centric. It's a GUI-based OS with a lousy (but soon to improve) CLI. There's pretty much no such thing as non-GUI Windows software. That tends to make people think of the GUI as a vital and integral part of software. But in Linux, software gets released as soon as it's functional. Only after it's become stable, reasonably bug-free, and feature-rich, does it become worth adding a GUI.
      Try thinking about software without a helpful GUI as a "sneak preview" rather than a finished product. FOSS is very rarely 'finished', it's always being improved. In time, it will be made user-friendly. But most of the time, it's more important to make it work better than make it 'feel' better. Be glad you've got the functionality long before all the wimps who need a good GUI, instead of demanding tomorrow's software today. FOSS is more of a journey than a destination.

The last thing you have to bear in mind is, GUIs for software will often be a separate piece of software. It may even have been developed completely independently of the original piece of software, by completely separate developers. If you want a GUI, it's not unlikely that it will be a separate installation, rather than all one piece.

This does, admittedly, mean an extra step to get that elusive, 'Windowsy' GUI behaviour, but that shouldn't detract from the fact that you can, right now, do just about anything you really want to via a pretty, "just like Windows" GUI. You just have to remember: a GUI is usually the LAST step, and not the first. Linux doesn't do form over function. [ 本帖最后由 dlflying 于 2006-2-5 02:58 编辑 ]
...全文
17 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧