PDA

View Full Version : Why use Linux?



Bigchrome
07-26-2007, 01:38 PM
:confused: Why would you?

uOpt
07-26-2007, 01:59 PM
Here's a prototype of a writeup I did. Not spellchecked or anything.

%%

Why do I use Linux?

Well, first of all, I prefer FreeBSD when I can, but for the purpose of this discussion it's more like a more controlled form of Linux distribution, so let's just say "Linux".

So why do I use Linux?

I don't care. I don't care what OS I run. What I want is applications. I'm not any different from all the Windows users. One OS has the applications I like and I use that one. If it runs the software I want, and the way I want, I'm happy.

Now, the question is - why do I like the applications on Linux so much better?

Now we're talking.

What I want is this:
full control. Nothing, ever, is supposed to happen in my computer without me knowing about it and potentially controlling it.
full customization. My init files are maintained in a CVS tree, since the early 1990ties. That's more than a decade of tuning to suit my applications to my needs. The productivity and speed of activities on such a customized environment is beyond what most Windows users can even imagine (if you don't know it, you don't miss it, see below).
scriptability.
full moveability. I want to be able to move all that jung from one computer to another on the snap of a finger.
the ability to fix problems, any problem, without all that reinstall, reboot and other Voodoo that users of most operating systems practice.
never, ever, can I allow anybody to take one of my favorite tools away. Not updating it, not bugfixing it, doing no security fixes counts as taking away.


Let's address the last point first. Never take my tools away.

The true point about OpenSource for people like me is not of that "free" stuff. I don't care. I have enough money to buy the Microsoft palette up and down two times over. I don't care about seeing the source code as such either, unless the license is right. What I want is the ability to fix stuff, and more importantly, if the developers of a tool decide to develop it in a direction I don't like, then I can take it and make my own derivation.

You see, a commercial vendor can just decide to turn your favorite software into something different and then you are stuck. It's like they shoot it in the head. Ask any Turbo Pascal user how that feels. And the shareware people who don't publish source under a true opensource license aren't any better, and neither was Sun with the old JDK license. The fuss that people like me made to have the JDK put under a true opensource license is that the old Sun license allowed us to see the source code, but not split the project if required. If Sun had devided to develop Java in a way we didn't like we couldn't do anything about it. Now we can. Now we can split the project, and that is what the true power of open source is. This "right to split" is what makes people like me use a tool or not. I literally never base a major part of my work on a tool that I don't have the right-to-split for. That ensures that my decade of customization and learning will never go down the toilet.


Next point, full moveability.

I want to take my full OS install with all applications and put it onto a different computer in a snap. My decade customization is a single script that I can run on any Unix-like user account and have it fully custimized with hundreds of settings with one single command.

And when it comes to move an OS install: Windows doesn't really allow you to make a copy of everything and install it again elsewhere. And even if you do it, the freagging thing usually doesn't even boot on a different PC when e.g. the SATA controller doesn't match (why they removed mandatory support for the generic IDE driver in the SATA spec I'll never understand).

My last FreeBSD server lasted 7 years between reinstalls, and it was always up-to-date. I generally don't install new Linux or FreeBSD installations, I just copy over existing ones most of the time. And even if I do an install from scratch, can you imagine how much stuff comes with the base install of a good Linux distribution? How much productivity software is there after you doing no extra work, as opposed to you installing a dozen application CDs, all of which require a CD key, online activation, custom updating procedure and whatnot. Everything that comes with a Linux distribution is updated with a single command. You have one install to get all the applications instead of one per application, and after the install you have one central command bring everything up-to-date. Every thing in there, all of it, even the tiniest little dock icon from some obscure package that you would never both to update in Windows after you installed it on the side.


Full customization.

I won't elaborate on this. My experience is that A) people who can't do it have never done it (obviously) and B) hence never experienced it. The power of single keystrokes invoking commands of any complexity you like (including simulated mouseclicks and keystrokes if required). And then they think it's not a big deal. Or even that it's a bad thing. But that's OK, the topic of this writing is why I use Unix-like tools, not why anybody else should. If you ever had the power of a Symbolics SELECT key integrated with all that fancy junk coming with a full Linux distribution, you are getting closer to the truth. In Windows user's defense, most Linux users these days don't do any of the above either. But that's not relevant here, this is about why I use Linux, not them.


Scriptability.

Command line. I use the command line. People think I am insane, because they think that I replace one mouse click with 20 keystrokes.

Uh, no. Let me explain how my work goes. First of all I use commandline windows, but not neccessarily cmmandline utilities. Most of my non-web software such as mailers and programming environment run that way, but they are not drive by full commandlines ending in a return stroke. They react to single keystrokes, and even mouse, although I rarely use that. But the point is, they are extremely fast and snappy and customizable - and scriptable.

There are so many everyday tasks with data that floats around my harddrives that are extremely quickly done by using actuall commandlines - but combined into scripts. Little scripts that get you the info you want from a bunch of ASCII files. Nothing fancy, nothing you would heat up VisualStudio for. Nothing that would be worst the time importing in Excel. Just little collection utilities.

And, and here's the point - they grow. Little script kept, and maintained in a version control system, turn into frameworks that make some everyday tasks easier and easier.

But let's get back to more beginner relevant material, actually many productive Linux users never script either.


Full control.

I don't think I have to elaborate on this either. I have never seen a Windows user even halfway aware of what exactly is going on on his box, much less in full control. Some Linux tools are getting worse, noticably KDE and GNOME, and some hardware management helpers included in Linux distributions. But you don't have to use KDE or GNOME, and using half of GNOME is pretty OK from my opinion, and the hardware helpers are at least fully configurable and - most important - if you just kill them your system still works and you can do all the hardware management by hand (try that on Windows).

Worse that just automatisms getting in your way, almost all licenses for big modern commercial packages grant some rights of control over your computer to the vendor. That will never happen to my box. Nobody except me searches on my box, nobody updates it without permission, nobody invokes a piece of code that follows his interests as opposed to my interests. And the latter is exactly what is happening with a lot of Windows software these days, including Windows itself.


Now, the last point.

The ability to fix problems. Any problem.

Given source code and enough people who have read it, and the general simplicity of OpenSource OSes you can fix almost any problem.

And by "fix" I don't mean reboot or reinstall or use "go-back" until the problem disappears (and all the other problems you fixed in the meantime pop up again). By "fix" I mean indentify what the problem is and actually apply the fix to make it go away, and no side effects like re-introducing long fixed other things with go-back. To understand what the problem is. To be able to deal with it instantly next time a similar problem comes up, without work disruption. And even the hope that the fix gets applied to the software that had the problem.


Now, can YOU do it?

Can you go and read the sourcecode and recompile it and test the fix like I do? Wait, do I? I don't do that either, even though I could. I don't start fixing a Linux problem from reading the source code. I start by asking the developers what they think about the symptoms. Together with the developers the same mailing list has experienced users who might have had the same problem. Normal users, not the developers, but all have access to the source code. Then all these people stick their heads together. You wouldn't believe how high the chance is that this group fixes the problem.

You see, there's not so much difference between me and you. Granted, I have all these webpages with tech glibberish, and I am a kernel and programming language developer. But it's really not why I can fix things in a random package in my Linux distribution. You wouldn't believe how stupid I actually am and how bad memory I have. The amount of attention that I can spend is strictly limited. Even though I can probably fix any bug that I can reproduce, I don't go off doing that for random bugs in random applications. Doing that would be way too expensive in terms of my limited attention.

I can get problems with OpenSource packages fixed because I can communicate well with OpenSource developers (well, not the GNOME and Fedora ones but anyway...). And I pay attention to details. If you come in bashing those people for some ill-identified problem of yours and are inpolite and a nuisance the above will not happen. They don't need you. There's no such concept of a customer in OpenSource. They won't fix it because it's broken for you. They'll fix it because you make a good case of why it needs fixing and by providing precisely the information needed for reproducing and debugging it, and the ability to react to "can you test this diff and see whether it fixes it?" by answering "yes" or "no".

If you spend years always trying to fix problems, as in FIX, not work around or do reinstall or some voodoo that just makes the problem disappear, then you are able to communicate well, and get problems fixed. You see, no matter now stupid you are and how bad memory you have, if you spend years doing something, you learn, and you learn a lot.

"Years" sounds scary? All that time you have to invest before you can actually make good use of an OpenSource OS, before it becomes actually better than Windows. You don't want to make that investment? You think you didn't have to make that investment on Windows?

Let me ask you this: how many hours have you spend killing some random Windows problem, how many hours of OS reinstall, driver reinstall, reboots, executing the same sequence of mouseclicks 20 times over and the 20th time magically worked? How much time have you spend dealing with malware (virusses, trojans) that don't even exist on Linux? And then add all the applications that don't do what you want. You've been doing this for years, many years, right?

Imagine this: what position would you be in if you had spent all these years and hours on purposefully looking at a problem and trying to fix it? No, you wouldn't have successed in actually fixing all of them, in particular not the early ones. Yes, you would have been yelled at by some disgrunted OpenSource guru for your stupid question, pretty much independently of whether it was actually stupid or not. But now? Today? After years and hundreds of hours? How much easier would it be now? With that experience under your belt, how much more targetted would you go to solve a problem, how much quicker would you be now? Did you learn anything useful, gained any skills from watching Windows reboot? Does Windows reinstall faster now that you have years experience reinstalling?

I guess this about explains why I use Opensource OSes.


Now, I know why some people arrive here and are still not convinced: Support

They think they can get, or even got, somebody on the phone, payed to help them. If you follow my above advice, you actually have to deal with people. Urgh. People suck. It's not that I disagree on that. People who don't have a boss breathing down their neck and are forced to help you are even worse.

But can you honestly say that whatever phone support you have gotten from Microsoft, Dell or whereever was worth the money, or would have been if it was your money? Did they tell you to reboot a lot? Did they tell you that "oh you did ..., that's not supported"?

I know, I know, dealing with people is still worse.

But think, how did you solve most problems in the last years? Did you google a lot? Did you find answers in collections of user-supplied writings, such as discussion forums, open contribution knowledge bases, commercial knowledge bases where they just post what the users told them, usenet?

Now, I don't want you to go and start posting on these forums a lot. But other people do that, a lot, and it comes up with useful answers some of the time. The trick is learning how to judge some people's posting on whether he's an idiot or knows what he's talking about. You will learn. It's a topic for a different webpage, but making efficient use of the "Web 2.0" knowledge bases out there is possible and not rocket science.

If I compare these "Web 2.0" knowledge bases, I can see a lot of Windows tips talking of rebooting and reinstalling (at least of drivers), and I can see a lot of Linux people poking the guy with the problem to extract more info so that they can actually fix it. Right next to all the voodoo advice which exists plenty for Linux (but not FreeBSD) and you need to learn to recognize. Maybe I have selective perception, and even if I don't you wouldn't take my word for it. Why don't you have an open eye for yourself?




And yes, I'd like to have go-back in my Linux. There is software that I can't have. I even admit I'd like to have a development environment that has good source code browsing capabilities and good build support, and that emacs is still the best I can find, and it's really a little underpowered in the browsing part. But does this make good for all or even any single one of the above points? Nope.

Knight
07-26-2007, 04:44 PM
Darn man.

You're making me want to change my OS. :p: