When you install an application in linux, all of the application's files, such as its binaries, manual pages, and any libraries, get smushed together into the file system. Binaries go into any of the various bin or sbin folders in your system, manual pages go into any of the man folders, and libraries go into any of the lib folders. Soon enough your file system becomes a smorgasbord! It would be the same as installing every application on a Windows machine to the same folder. And good luck trying to uninstall anything! You don't know which file belongs to which application.
Here's an example. Lets say I have 3 applications I want to install on my computer: mozilla, php, and mysql. Say each application contains binaries, manuals, and libraries. That's 9 categories of files that I need to put on my file system. There are two ways I can organize them. Either I can put each application its own directory, with three sub-directories bin, man, and lib. Or I can sort all of the applications' files in three root directories, /bin, /man, and /lib.
Linux prefers the latter, but it should be using the former! Why is that? One word: uninstalling. Sorting my files by application allows me to easily remove any application by just deleting a single folder, without any need for any package management solution. Simple and easy.
Well I personally think this
Well I personally think this is not a real issue to linux. Like as been said, in windows there is a folder "program files" but then some things goes on registry and some on system or system32 folders, some other my go on "Documents and Settings" subfolders.
The things that goes on system or system32 folders goes there because are usually shared by other programs.
It's the same thing linux uses, some files might be in common with others so it's "useless" to have them duplicates.
The thing on linux that i hate is that every distro puts software whenever they like (/usr/, /usr/local, /opt/, ...) it's really confusing.
The so called "freedom of choice" on linux is the evil, that's why standards exists.
The linux programs file
The linux programs file organization is good and allow real protection storing files outside the user directory and often not allowing the user to modify files! and this without bothering the user with thousand of messages like "are you sure?!" The only things that sucks is that every distro put things in different places! We need a standard!
Program files distributed
Program files distributed across the filesystem is good, it's more logical. It makes more easy to find executables for programs like which, whereis and locate, which are used in scripting. Putting all stuff in the same directory (folder) doesn't make sense because linux comes from a *nix heritage, not a DOS heritage (like Windows). It shouldn't be a problem, as long as the package manager (dpkg, pacman, rpm, etc) handles the files and all dependencies without problems.
What is really disgusting is that there's a lot of incompatibilities among the different distributions. Some put stuff in /usr/ others in /usr/local others in /opt, etc. The BSDs use exclusively /usr/local for programs that are not part of the base system. The problem with linux is that there's no base system, it's all put together (kernel+userland) in the install process, and all distros do it their own way. That's what sucks about Linux (and what makes it very configurable to your needs too, you can't have both).
I see many people here are new to Linux and *nix in general, they come from Windows and talk about what's wrong about Linux. What you guys are talking about has nothing to do with what's really wrong about Linux. What you say you say out of your lack of knowledge and because you happen to have used Windows too much. Windows sucks for application management. Linux package managers like pacman and apt-get are really a panacea once you get the feel of them:
pacman -S irssi # installs irssi along with all libraries and other dependencies needed
pacman -Rus irssi # uninstall irssi and dependencies as long as it doesn't break anything
You can't be wrong and you don't have to be chasing files. In Windows world it's worst. Every application comes with its own installer and not every installer uninstalls its dependencies when requested, so you end up with lots of libraries no longer used somewhere in C:\Windows
But it gets worse. Most uninstallers leave the registry intact. So it grows and grows and someday it will bite you. Removing config files in Linux is easy as deleting a file. Removing registry entries in Windows is dangerous and not recommended. Also what the hell are those entries with GUID names? Should you remove one and you have to format and install Windows again.
And my last point, a rant if you like those:
C:\Windows -> what the fuck is that C: doing in a modern OS? When is Microsoft going to cut that crap of DOS era out of Windows?
"And good luck trying to
"And good luck trying to uninstall anything! You don't know which file belongs to which application."
You don't have to, just like you don't have to in Windows. It's been several versions of Windows since I had to manually delete program files to uninstall, and quite frankly, Windows tries its damnedest to keep you from doing that.
Same in Linux. I've been using it for 2 days and I've figured out that you can easily install software by adding packages and easily uninstall by removing packages. And the package managers explain what each package does.
Uninstalling software in
Uninstalling software in windows is like ridding your house of fleas. You can never be sure if you got everything.
What kind of software are
What kind of software are you installing in Windows if running a typical uninstall and (maybe) deleting the empty folder doesn't satisfy you? If anything is left after that, and you can't find it, does it really bother you?
If so, what of the dependent packages you might have left in Linux?
If I remember correctly,
If I remember correctly, Outlook left stuff behind, as did a 3D web development program i installed once. I though I removed it and found parts of it in my Windows folders weeks later. It's not that a big a problem anyway. As for Linux dependencies installed for a specific program, you have a point there. As for what happens to DLL's in the Windows folder, don't ask me! If I have to install libraries for one specific app, I make a note of which ones I installed. Not ideal, I know.
I'm not sure if there is a program which can check to see if there are libraries installed which have no dependant programs present.
The reason is, that Windows
The reason is, that Windows uses desktop shortcuts to access its programs, each which is contained seperately. Linux simplifies things (in a way), but having all the executable binaries in a few folders (so they are in your path), all the libraries in a few folders, etc. The Linux way kind of makes sense too. You can install a program, and the executable will always be in your path. It configuration files will be in a known location. Install libraries, and again, they are easily accessible.
The windows way is a continuation of the DOS way, but altered. By the way, windows dumps all programs in a "Program Files" folder, and applications DO install DLL's in the windows folder, and make registry changes. If you (in windows) delete a program by simply deleting its folder, you may be leaving behind DLL's its installed elsewhere, as well as registry keys and program icons/shortcuts. You can really only do this for programs you've unzipped into a folder and didn't have to run an 'installer'. Only in DOS could you cleanly uninstall each app by deleting the application folder. In windows, for most apps, you really do need to use the uninstall utility to delete it all (just as with Linux you need to use the package manager or 'make uninstall'). If Linux software was ALWAYS distributed in packages, then uninstalling it would be no different or more difficult that uninstalling windows software properly and cleanly.
The fact is, because windows programs are installed via an installer (and removed the same way), and Linux software should be installed via a pacjage system (like RPM) and uninstalled that way, itmakes little difference to most GUI users where the files are located. In fact, if you don't use the command line at all, it should make no difference at all where things are. The windows way had its advantages back in the DOS days, but now its only advatageous of you have different parittions and want to choose which programs are on which partitions. This is something which most computer users have no idea about anyway.
While the explanation of the
While the explanation of the shortcomings of Windows' methods is good it is irrelevant as those issues aren't a problem on Linux.
The proposed method would essentially make installation nothing more than copying a directory and the uninstallation deleting a directory. The Path issue can be solved in a variety of ways. That's kind of a trivial issue. Personally, I like having everything related to an application compartmentalized into a single directory. It makes managing these things so much easier.
A package system like RPM
A package system like RPM makes it unnessesary to store programs in directories according to type. The only shortfall is, if you need to access the files that come with the package directly, you need to look for them, but they are usually in /usr/share. By the way, how many Windows users actually know and remember where all their apps are installed? Very few I bet. The package system also categorise packages according to category/sub categories. So if you use a good graphical package manager (and there actually aren't many good ones, the ones the come with distros like fedora are weak, I' thinking like GnoRPM) you get to see all your programs as 'files' under different categories, so Apps, multimedia, system, games etc. Removing the package removes all associated files.
While with DOS is was great to have all your games under a GAMES directory, Apps, etc similarily stored, it was necessary because you had to manually change to that directory to locate the program to run it under the CLI. Also, people didn't have much software (or like me, just lumped DOS tools in a UTE folder, but you lose track of what you have, which files belong to which apps, etc) Now since apparently the CLI is dead, it makes no sense to start a program by navigating through the file system and looking for the .EXE and clicking it. NO ONE does that, not even back in the Windows 3.1 days. There were icons.
For smaller systems, like the old DOS PC systems, having each app in a different folder was the better option as there weren't as many apps as people use today and it was still a CLI system with NO software management. Package systems still give you the ability to look through all your Documentation apps, multimedia programs, etc by category (though the implementations aren't great) and 'delete' or 'add' programs. It's just that the package manager takes care of installing, removing the files, in handling upgrading and letting you know what files come with what package, and what file belongs to what package.
I agree
I agree completely.
Gobolinux does this concept though, so it "works" on Linux.
However, this will never become mainstream because fanatical longtime linux users will stick to their FHS way.
There is no point in investing time to convince them.
We need better competition so that we can replace Linux.
Well the only problem with
Well the only problem with deleting folders is that you need to first uninstall the program which will pretty much delete most of the files already.
Very much agreed. It was a
Very much agreed. It was a real pain during my first steps with Linux.