mirror of
https://github.com/nbeaver/why-linux-is-better.git
synced 2025-08-28 16:19:55 +02:00
Extensive editing.
This commit is contained in:
@@ -1,20 +1,20 @@
|
|||||||
.. -*- coding: utf-8 -*-
|
.. -*- coding: utf-8 -*-
|
||||||
|
|
||||||
====================================================
|
=================================================
|
||||||
Objective reasons for preferring Linux to Windows NT
|
Objective reasons for preferring Linux to Windows
|
||||||
====================================================
|
=================================================
|
||||||
|
|
||||||
Claims like "Linux is more stable and reliable",
|
Claims like "Linux is more stable and reliable",
|
||||||
or "Linux is more secure and private",
|
or "Linux is more secure and private",
|
||||||
or "Linux is faster and less bloated",
|
or "Linux is faster and less bloated",
|
||||||
or "Linux is more flexible and customizable",
|
or "Linux is more flexible and customizable",
|
||||||
or "Linux has a better community"
|
or "Linux has a better community"
|
||||||
are vague and unhelpful.
|
are vague and hard to verify.
|
||||||
|
|
||||||
It is easy to opine about one's preferred operating system,
|
It is easy to opine about one's preferred operating system,
|
||||||
but harder to give objective, concrete examples.
|
but harder to give objective, concrete examples.
|
||||||
|
|
||||||
With the caveat that both Windows NT and Linux are moving targets,
|
With the caveat that both Windows and Linux are moving targets,
|
||||||
here are some specific technical reasons to prefer Linux.
|
here are some specific technical reasons to prefer Linux.
|
||||||
They are by no means exhaustive,
|
They are by no means exhaustive,
|
||||||
but aim to be representative.
|
but aim to be representative.
|
||||||
@@ -30,7 +30,7 @@ but unfortunately I am not familiar enough with any of them to comment specifica
|
|||||||
.. contents::
|
.. contents::
|
||||||
|
|
||||||
+++++++++++++++++++++++++++++++++++++
|
+++++++++++++++++++++++++++++++++++++
|
||||||
Technical deficiencies of Windows NT.
|
Technical deficiencies of Windows.
|
||||||
+++++++++++++++++++++++++++++++++++++
|
+++++++++++++++++++++++++++++++++++++
|
||||||
|
|
||||||
--------------------
|
--------------------
|
||||||
@@ -47,8 +47,8 @@ which generally runs faster than the OS installed on the disk.
|
|||||||
|
|
||||||
Windows LiveCDs, while `they`_ `do`_ `exist`_,
|
Windows LiveCDs, while `they`_ `do`_ `exist`_,
|
||||||
are hampered by licensing restrictions or technical limitations.
|
are hampered by licensing restrictions or technical limitations.
|
||||||
For example, until Windows 8, desktop versions of Windows NT could not boot from a USB.
|
For example, until Windows 8, desktop versions of Windows could not boot from a USB.
|
||||||
The BartPE LiveCD building program will run on version of Windows NT,
|
The BartPE LiveCD building program will run on any version of Windows,
|
||||||
but it requires the installation files and is `only able to make`_ a LiveCD for Windows XP or Windows Server 2003.
|
but it requires the installation files and is `only able to make`_ a LiveCD for Windows XP or Windows Server 2003.
|
||||||
|
|
||||||
.. _Live versions: http://www.linux.com/directory/Distributions/livecd
|
.. _Live versions: http://www.linux.com/directory/Distributions/livecd
|
||||||
@@ -62,9 +62,9 @@ but it requires the installation files and is `only able to make`_ a LiveCD for
|
|||||||
Maximum path lengths.
|
Maximum path lengths.
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
Windows NT path lengths `are limited to 260 characters`_, including filename.
|
Windows path lengths `are limited to 260 characters`_, including filename.
|
||||||
(In practice, it is often more like `199 characters`_.)
|
(In practice, it is often more like `199 characters`_.)
|
||||||
This is `not a flaw in NTFS`_ or Windows NT per se, but in the `non-Unicode version of the Windows API`_.
|
This is `not a flaw in NTFS`_ or Windows per se, but in the `non-Unicode version of the Windows API`_.
|
||||||
|
|
||||||
This problem can be avoided by using Unicode versions of the API calls,
|
This problem can be avoided by using Unicode versions of the API calls,
|
||||||
but many applications (e.g. Windows Explorer, Powershell) have not done so.
|
but many applications (e.g. Windows Explorer, Powershell) have not done so.
|
||||||
@@ -76,18 +76,29 @@ but many applications (e.g. Windows Explorer, Powershell) have not done so.
|
|||||||
.. _have not done so: http://blogs.msdn.com/b/bclteam/archive/2007/02/13/long-paths-in-net-part-1-of-3-kim-hamilton.aspx
|
.. _have not done so: http://blogs.msdn.com/b/bclteam/archive/2007/02/13/long-paths-in-net-part-1-of-3-kim-hamilton.aspx
|
||||||
|
|
||||||
Of course, most OS restrictions are `not an issue in well-written software`_.
|
Of course, most OS restrictions are `not an issue in well-written software`_.
|
||||||
Some have `argued`_ that Windows paths are long enough.
|
Maybe Windows paths `are long enough`_.
|
||||||
Is MAX_PATH an actual problem in real software?
|
Is MAX_PATH an actual problem in real software?
|
||||||
|
|
||||||
Yes, most definitely. [#]_ [#]_ [#]_ [#]_
|
Yes, most definitely. [#]_ [#]_ [#]_ [#]_
|
||||||
Moreover, Windows developers are `so used to`_ `working around it`_
|
Moreover, Windows developers are `so used to`_ `working around it`_
|
||||||
that it has become deeply entrenched and will most likely `never be fixed`_.
|
that it has become deeply entrenched and will most likely `never be fixed`_.
|
||||||
|
|
||||||
|
The Linux kernel does impose an adjustable pathname length limit (`4096 chars in typical kernels and filesystems`_),
|
||||||
|
but `this limit is not enforced`_, and some ``libc`` implementations could `suffer from buffer overflow`_ as a result.
|
||||||
|
The 2008 POSIX revision has `addressed the issues`_,
|
||||||
|
but prior to this the Linux kernel made non-standard modifications to avoid overflow,
|
||||||
|
and `warned about the problem`_ in the ``realpath (3)`` man page of the Linux Programmer's Manual.
|
||||||
|
|
||||||
.. _not an issue in well-written software: http://blogs.msdn.com/b/oldnewthing/archive/2007/03/01/1775759.aspx
|
.. _not an issue in well-written software: http://blogs.msdn.com/b/oldnewthing/archive/2007/03/01/1775759.aspx
|
||||||
.. _argued: http://blog.codinghorror.com/filesystem-paths-how-long-is-too-long/
|
.. _are long enough: http://blog.codinghorror.com/filesystem-paths-how-long-is-too-long/
|
||||||
.. _so used to: http://blogs.msdn.com/b/tomholl/archive/2007/02/04/enterprise-library-and-the-curse-of-max-path.aspx
|
.. _so used to: http://blogs.msdn.com/b/tomholl/archive/2007/02/04/enterprise-library-and-the-curse-of-max-path.aspx
|
||||||
.. _working around it: http://stackoverflow.com/a/11212007
|
.. _working around it: http://stackoverflow.com/a/11212007
|
||||||
.. _never be fixed: http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2156195-fix-260-character-file-name-length-limitation
|
.. _never be fixed: http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2156195-fix-260-character-file-name-length-limitation
|
||||||
|
.. _4096 chars in typical kernels and filesystems: http://unix.stackexchange.com/questions/28997/on-deep-created-directories
|
||||||
|
.. _this limit is not enforced: http://insanecoding.blogspot.com/2007/11/pathmax-simply-isnt.html
|
||||||
|
.. _suffer from buffer overflow: http://stackoverflow.com/questions/1171833/how-to-get-the-absolute-path-of-a-file-programmatically-with-out-realpath-unde
|
||||||
|
.. _addressed the issues: https://www.securecoding.cert.org/confluence/display/seccode/FIO02-C.+Canonicalize+path+names+originating+from+tainted+sources
|
||||||
|
.. _warned about the problem: http://linux.die.net/man/3/realpath
|
||||||
|
|
||||||
.. [#] https://github.com/joyent/node/issues/6960
|
.. [#] https://github.com/joyent/node/issues/6960
|
||||||
.. [#] http://stackoverflow.com/questions/1880321/why-does-the-260-character-path-length-limit-exist-in-windows
|
.. [#] http://stackoverflow.com/questions/1880321/why-does-the-260-character-path-length-limit-exist-in-windows
|
||||||
@@ -101,45 +112,62 @@ NTFS case-sensitivity.
|
|||||||
NTFS on Windows `cannot be case-sensitive`_ because the Windows API for filenames `is not case-sensitive`_ for legacy reasons.
|
NTFS on Windows `cannot be case-sensitive`_ because the Windows API for filenames `is not case-sensitive`_ for legacy reasons.
|
||||||
However, it is `case-preserving`_.
|
However, it is `case-preserving`_.
|
||||||
This means that you can mount an NTFS partition with Linux and make a file called "Myfile.txt" in the same directory as "MYFILE.TXT".
|
This means that you can mount an NTFS partition with Linux and make a file called "Myfile.txt" in the same directory as "MYFILE.TXT".
|
||||||
However, you won't be able to access both those files using Windows NT.
|
However, you `won't be able to`_ access both those files using standard Windows software.
|
||||||
|
|
||||||
In practice, developers of cross-platform software have to simply make a habit of not relying on case-sensitive filesystem access,
|
This has ramifications for cross-platform development.
|
||||||
but it is an example of issues they run into while porting software.
|
In practice, most developers of cross-platform software just make a habit of not relying on case-sensitive filesystem access,
|
||||||
|
but this issue still crops up when porting from Linux to Windows or vice-versa.
|
||||||
|
|
||||||
.. _cannot be case-sensitive: http://www.sevenforums.com/general-discussion/278918-making-windows-7-case-sensitive-possible.html
|
.. _cannot be case-sensitive: http://www.sevenforums.com/general-discussion/278918-making-windows-7-case-sensitive-possible.html
|
||||||
.. _is not case-sensitive: http://support.microsoft.com/kb/100625
|
.. _is not case-sensitive: http://support.microsoft.com/kb/100625
|
||||||
.. _case-preserving: http://en.wikipedia.org/wiki/Case_preservation
|
.. _case-preserving: http://en.wikipedia.org/wiki/Case_preservation
|
||||||
|
.. _won't be able to: http://technet.microsoft.com/en-us/library/cc976809.aspx
|
||||||
|
|
||||||
------------------------------
|
------------------------------
|
||||||
Limited choice in filesystems.
|
Limited choice in filesystems.
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
Windows NT has no built-in support for any filesystems but NTFS and the `patent-encumbered`_ FAT16/FAT32/exFAT family.
|
Windows has built-in support for its native NTFS,
|
||||||
Linux can mount any file system that can be legally mounted without paying patent fees,
|
UDF (used for some CDs and DVDs),
|
||||||
and the ones it uses by default (``ext2``/``ext3``/``ext4``) have some design advantages;
|
and the legacy FAT16/FAT32/exFAT family.
|
||||||
for example, they do not require defragmentation.
|
|
||||||
|
|
||||||
.. _patent-encumbered: http://arstechnica.com/information-technology/2009/02/microsoft-sues-tomtom-over-fat-patents-in-linux-based-device/
|
Linux has drivers for almost file systems that can be legally mounted without paying royalties.
|
||||||
|
It also can also mount FAT and NTFS,
|
||||||
|
despite Microsoft's `ongoing`_ `litigation`_ against Android manufacturers and `other companies`_ for their use of the Linux kernel's FAT drivers.
|
||||||
|
|
||||||
|
.. _ongoing: http://www.forbes.com/sites/timworstall/2013/12/06/german-patent-ruling-threatens-microsofts-windows-phone-earnings-from-android/
|
||||||
|
.. _litigation: http://gizmodo.com/the-secret-android-patents-that-microsoft-forces-oems-t-1591338496
|
||||||
|
.. _other companies: http://arstechnica.com/information-technology/2009/02/microsoft-sues-tomtom-over-fat-patents-in-linux-based-device/
|
||||||
|
|
||||||
|
Linux users can choose from the usual EXT family of journaling filesystems as well as up-and-coming filesystems like Btrfs.
|
||||||
|
|
||||||
------------------
|
------------------
|
||||||
UTF-16, not UTF-8.
|
UTF-16, not UTF-8.
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
UTF-16 is widely considered inferior to UTF-8.
|
If the Windows API were designed today, it would most likely use `UTF-8`_.
|
||||||
If the Windows NT API were designed today, it would most likely use UTF-8.
|
The Unicode Consortium only `recommends UTF-16`_ for compatibility with Java and the Windows API.
|
||||||
Some reasons:
|
Some reasons:
|
||||||
|
|
||||||
- UTF-8 is a superset of ASCII, so it is backwards-compatible with existing text files.
|
- UTF-8 is a superset of ASCII, so it is backwards-compatible with existing text files.
|
||||||
- UTF-8 does not require a byte-order mark and is less likely to be mistaken for other encodings.
|
- UTF-8 is `self-synchronizing`_.
|
||||||
|
- UTF-8 does not require a `byte-order mark`_ and is less likely to be mistaken for other encodings.
|
||||||
|
|
||||||
|
.. _UTF-8: http://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt
|
||||||
|
.. _recommends UTF-16: http://www.unicode.org/faq/programming.html#2
|
||||||
|
.. _self-synchronizing: http://en.wikipedia.org/wiki/UTF-8#Description
|
||||||
|
.. _byte-order mark: http://www.unicode.org/faq/utf_bom.html
|
||||||
|
|
||||||
----------------------------------------------------
|
----------------------------------------------------
|
||||||
File extensions are the sole determiner of filetype.
|
File extensions are the sole determiner of filetype.
|
||||||
----------------------------------------------------
|
----------------------------------------------------
|
||||||
|
|
||||||
On Linux, filetypes are determined by a combination of filesystem metadata, heuristics, and file extension.
|
On Linux, filetypes are determined by a combination of filesystem metadata, heuristics for fixed-formats, and file extension.
|
||||||
On Windows NT, the file extension is the sole determiner of filetype.
|
On Windows, the file extension is the sole determiner of filetype.
|
||||||
|
|
||||||
If the file extensions for different filetypes happen to collide (recall that files are not case-sensitive),
|
If the file extensions for different filetypes happen to collide (recall that files are not case-sensitive),
|
||||||
one program must take default precedence over the other.
|
one program must take default precedence over the other.
|
||||||
|
For example, there a lot of different file formats with a ``.dat`` file extension.
|
||||||
|
|
||||||
++++++++++++++++++++++++++++++++
|
++++++++++++++++++++++++++++++++
|
||||||
Architectural benefits of Linux.
|
Architectural benefits of Linux.
|
||||||
@@ -158,22 +186,22 @@ and run a backtrace when the program fails (it's better with debugging symbols,
|
|||||||
If the process is already unresponsive, you can attach ``strace`` and see what system calls it makes,
|
If the process is already unresponsive, you can attach ``strace`` and see what system calls it makes,
|
||||||
and whether it receives the kill signals you send it or not.
|
and whether it receives the kill signals you send it or not.
|
||||||
|
|
||||||
There are `programs`_ `similar`_ to ``gdb`` and ``strace`` `for`_ Windows.
|
There are `programs`_ `similar`_ to ``gdb`` and ``strace`` `for Windows`_.
|
||||||
However, they don't come installed by default,
|
However, they don't come installed by default,
|
||||||
whereas both ``strace`` and ``gdb`` come with a standard Linux install,
|
whereas both ``strace`` and ``gdb`` come with a standard Linux install,
|
||||||
so system administrators can rely on being able to use them on nearly any Linux box.
|
so system administrators can rely on being able to use them on nearly any Linux box.
|
||||||
|
|
||||||
.. _similar: http://www.intellectualheaven.com/default.asp?BH=projects&H=strace.htm
|
.. _similar: http://www.intellectualheaven.com/default.asp?BH=projects&H=strace.htm
|
||||||
.. _programs: http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx
|
.. _programs: http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx
|
||||||
.. _for: http://msdn.microsoft.com/en-us/library/windows/hardware/ff551063(v=vs.85).aspx
|
.. _for Windows: http://msdn.microsoft.com/en-us/library/windows/hardware/ff551063(v=vs.85).aspx
|
||||||
|
|
||||||
-----------------------------
|
-----------------------------
|
||||||
More permissive file locking.
|
More permissive file locking.
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
Windows NT applications `lock files they use by default`_, so file access is a nuisance by default.
|
Windows applications `lock files they use by default`_, so file access is a nuisance by default.
|
||||||
If an application is misbehaving and you want to examine a file it is using,
|
If an application is misbehaving and you want to examine a file it is using,
|
||||||
this is often blocked by the kernel.
|
this is generally blocked until the application is killed.
|
||||||
|
|
||||||
.. _lock files they use by default: https://en.wikipedia.org/wiki/File_locking#In_Microsoft_Windows
|
.. _lock files they use by default: https://en.wikipedia.org/wiki/File_locking#In_Microsoft_Windows
|
||||||
|
|
||||||
@@ -186,10 +214,10 @@ since applications can share file access by default.
|
|||||||
Separation of window manager and kernel.
|
Separation of window manager and kernel.
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
The Windows NT window manager and kernel are very tightly coupled.
|
The Windows window manager and kernel are very tightly coupled.
|
||||||
This has negative consequences for stability and backwards compatibility.
|
This has negative consequences for stability and backwards compatibility.
|
||||||
|
|
||||||
Also, by design, multiple concurrent sessions are `disabled`_ on all but the `server version`_ of Windows NT.
|
Also, by design, multiple concurrent sessions are `disabled`_ on all but the `server version`_ of Windows.
|
||||||
(This is a licensing issue, not a technical limitation.
|
(This is a licensing issue, not a technical limitation.
|
||||||
Third-party remote desktop software for Windows is `legally`_ `obligated`_ to not circumvent this limitation [#windowsVNC]_.)
|
Third-party remote desktop software for Windows is `legally`_ `obligated`_ to not circumvent this limitation [#windowsVNC]_.)
|
||||||
|
|
||||||
@@ -223,6 +251,8 @@ in fact, many former X11 developers are hard at work on its replacement, Wayland
|
|||||||
However, X11 has become so pervasive that versions of it power not only Linux desktops but also the BSD family and OS X (XQuartz),
|
However, X11 has become so pervasive that versions of it power not only Linux desktops but also the BSD family and OS X (XQuartz),
|
||||||
and there are ways to run an X server on Windows or Android.
|
and there are ways to run an X server on Windows or Android.
|
||||||
|
|
||||||
|
.. [#windowsVNC] "You would think that because Windows XP is multiuser, you could have multiple users running VNC servers. Indeed you can, but you can only use the one that has the currently active user - switch away, and that server goes black, and in my testing, can't even be used again. Windows XP is not really multiuser." http://aplawrence.com/Reviews/tightvnc.html
|
||||||
|
|
||||||
+++++++++++++++++++++++++++++++++++++
|
+++++++++++++++++++++++++++++++++++++
|
||||||
Configuration and software packaging.
|
Configuration and software packaging.
|
||||||
+++++++++++++++++++++++++++++++++++++
|
+++++++++++++++++++++++++++++++++++++
|
||||||
@@ -237,12 +267,12 @@ build system (``make``),
|
|||||||
and many, many shells (e.g. ``bash``, ``dash``, ``csh``, ``zsh``, ``fish``)
|
and many, many shells (e.g. ``bash``, ``dash``, ``csh``, ``zsh``, ``fish``)
|
||||||
In fact, they are required to do so by the `POSIX standard`_.
|
In fact, they are required to do so by the `POSIX standard`_.
|
||||||
Standards like POSIX make writing and using portable software easier,
|
Standards like POSIX make writing and using portable software easier,
|
||||||
and standard POSIX tool are unlikely to become obsolete.
|
and standard POSIX tools are unlikely to become obsolete.
|
||||||
|
|
||||||
.. _POSIX standard: http://pubs.opengroup.org/onlinepubs/009696699/utilities/contents.html
|
.. _POSIX standard: http://pubs.opengroup.org/onlinepubs/009696699/utilities/contents.html
|
||||||
|
|
||||||
On Windows NT, by contrast, a C compiler and build system are not installed by default,
|
On Windows, by contrast, a C compiler and build system are not installed by default,
|
||||||
and the current favored Windows NT shell (PowerShell) must be installed separately.
|
and the currently favored Windows shell (PowerShell) must be installed separately.
|
||||||
|
|
||||||
------------------------
|
------------------------
|
||||||
Registries and dotfiles.
|
Registries and dotfiles.
|
||||||
@@ -270,31 +300,48 @@ Package manager with signed binaries and easy backup/reinstall.
|
|||||||
|
|
||||||
Windows Installer is a software package manager in the sense of installing and uninstalling software,
|
Windows Installer is a software package manager in the sense of installing and uninstalling software,
|
||||||
but it does not provide the essential features of current major Linux packaging systems,
|
but it does not provide the essential features of current major Linux packaging systems,
|
||||||
such as securely retrieving the package from a trusted remote or local repository,
|
such as:
|
||||||
adding and removing third-party repositories,
|
|
||||||
changelogs,
|
|
||||||
cryptographically verifying the integrity of the package,
|
|
||||||
licensing status of software,
|
|
||||||
and sophisticated dependency management.
|
|
||||||
|
|
||||||
There are many Linux packaging systems,
|
- securely retrieving the package from a trusted remote or local repository,
|
||||||
including Fedora's rpm-based ``yum`` package manager,
|
- adding and removing third-party repositories,
|
||||||
Debian's ``apt`` and ``dpkg``,
|
- changelogs,
|
||||||
|
- cryptographically verifying the integrity of the package,
|
||||||
|
- licensing status of software,
|
||||||
|
- and sophisticated dependency management.
|
||||||
|
|
||||||
|
First, I really should mention that there is an open-source package manager for Windows, `Chocolatey`_,
|
||||||
|
which is under active development.
|
||||||
|
So far the repositories are not comprehensive;
|
||||||
|
for example: as of September 2014, no `KeePassX`_ [#]_, no `Apophysis`_ [#]_, and no `GSAS/EXPGUI`_ [#]_.
|
||||||
|
Also, the Chocolatey development team acknowledges it does not have package moderation or package signing yet,
|
||||||
|
which will need to be resolved before anyone uses it for something important.
|
||||||
|
|
||||||
|
.. _Chocolatey: http://chocolatey.org/
|
||||||
|
.. _KeePassX: https://www.keepassx.org/
|
||||||
|
.. _Apophysis: http://www.apophysis.org/
|
||||||
|
.. _GSAS/EXPGUI: http://ncnr.nist.gov/xtal/software/downloads.html
|
||||||
|
|
||||||
|
.. [#] http://chocolatey.org/packages?q=keepassx
|
||||||
|
.. [#] http://chocolatey.org/packages?q=apophysis
|
||||||
|
.. [#] http://chocolatey.org/packages?q=GSAS
|
||||||
|
|
||||||
|
Linux has many mature packaging systems,
|
||||||
|
including Fedora's ``.rpm``-based ``yum`` package manager,
|
||||||
|
Debian's ``.deb``-based ``apt`` and ``dpkg``,
|
||||||
Arch Linux's ``pacman``,
|
Arch Linux's ``pacman``,
|
||||||
and so on.
|
and so on.
|
||||||
This is the real reason Linux users are protected from viruses:
|
This is one reason Linux users are less susceptible to viruses:
|
||||||
they use packages that are cryptographically signed by the maintainers,
|
they generally install packages that are cryptographically signed by the maintainers,
|
||||||
not an opaque executable from a website which may not use secure HTTP.
|
not opaque executables from a website which may not use secure HTTP.
|
||||||
Even inexperienced users can safely install and uninstall software if it is all from a trusted repository.
|
Even inexperienced users can safely install and uninstall software if it is all from a trusted repository.
|
||||||
|
|
||||||
This is has other tangible benefits,
|
This is has other tangible benefits,
|
||||||
such as avoiding problems like DLL hell and its cousins while saving the disk space of duplicated libraries.
|
such as avoiding problems like DLL hell and its cousins while saving the disk space of duplicated libraries.
|
||||||
Package managers have good (though not perfect) security,
|
Package managers have decent (though not perfect) security,
|
||||||
and provide the ability to upgrade all software at once with a single command (or button if you use one of the many available GUIs).
|
and provide the ability to upgrade all software at once with a single command (or button if you use one of the many available GUIs).
|
||||||
Instead of making application developers re-invent the wheel each time they want to prompt the user to update the software,
|
Instead of requiring application developers to re-implement automatic updates,
|
||||||
packaging makes secure, regular updates much more accessible and convenient for users and developers.
|
packaging makes secure, regular updates much more accessible and convenient for users and developers.
|
||||||
|
|
||||||
|
|
||||||
There are other benefits, such as making backups easier by decoupling installed applications from stored personal files.
|
There are other benefits, such as making backups easier by decoupling installed applications from stored personal files.
|
||||||
Want to remember which programs you have installed without backing up every single binary?
|
Want to remember which programs you have installed without backing up every single binary?
|
||||||
Just save the output of ``dpkg -L`` or its equivalent.
|
Just save the output of ``dpkg -L`` or its equivalent.
|
||||||
@@ -307,20 +354,9 @@ and your backup software doesn't need to run as root since it's only accessing y
|
|||||||
Packaging also makes distributing programs with library dependencies easier,
|
Packaging also makes distributing programs with library dependencies easier,
|
||||||
even if you don't make a full package.
|
even if you don't make a full package.
|
||||||
For example, installing ``python`` and ``matplotlib`` is simple on Linux,
|
For example, installing ``python`` and ``matplotlib`` is simple on Linux,
|
||||||
but a `pain in the neck`_ on Windows NT.
|
but a `pain in the neck`_ on Windows.
|
||||||
People have been working on a `package manager for Windows NT`_,
|
|
||||||
but so far the repositories are not comprehensive.
|
|
||||||
(For example: as of September 2014, no `KeePassX`_ [#]_, no `Apophysis`_ [#]_, and no `GSAS/EXPGUI`_ [#]_)
|
|
||||||
|
|
||||||
.. _pain in the neck: http://matplotlib.org/users/installing.html#windows
|
.. _pain in the neck: http://matplotlib.org/users/installing.html#windows
|
||||||
.. _package manager for Windows NT: http://chocolatey.org/
|
|
||||||
.. _KeePassX: https://www.keepassx.org/
|
|
||||||
.. _Apophysis: http://www.apophysis.org/
|
|
||||||
.. _GSAS/EXPGUI: http://ncnr.nist.gov/xtal/software/downloads.html
|
|
||||||
|
|
||||||
.. [#] http://chocolatey.org/packages?q=keepassx
|
|
||||||
.. [#] http://chocolatey.org/packages?q=apophysis
|
|
||||||
.. [#] http://chocolatey.org/packages?q=GSAS
|
|
||||||
|
|
||||||
------------------------------------------------------------
|
------------------------------------------------------------
|
||||||
Fixing configuration problems with commands instead of GUIs.
|
Fixing configuration problems with commands instead of GUIs.
|
||||||
@@ -342,9 +378,15 @@ Want to see what USB devices are connected? Run ``lsusb``.
|
|||||||
Want to restart your networking daemon? Run ``sudo /etc/init.d/networking restart``.
|
Want to restart your networking daemon? Run ``sudo /etc/init.d/networking restart``.
|
||||||
|
|
||||||
Another benefit of textuality is ease of using search engines to find similar problems.
|
Another benefit of textuality is ease of using search engines to find similar problems.
|
||||||
|
Many a Linux user has thought they had found a new bug,
|
||||||
|
only to run a quick web search that turned up dozens of users with the same issue.
|
||||||
|
(The `Arch Linux BBS forum`_, for example, tends to be `ahead of the curve`_ on bug reports.)
|
||||||
|
|
||||||
|
.. _Arch Linux BBS forum: https://bbs.archlinux.org/
|
||||||
|
.. _ahead of the curve: https://bugs.archlinux.org/task/40444
|
||||||
|
|
||||||
Finally, software configuration can be kept or removed easily.
|
Finally, software configuration can be kept or removed easily.
|
||||||
For example, when uninstalling a software package on Debian Linux,
|
When uninstalling a software package on Debian Linux,
|
||||||
the user may either also remove the configuration (with ``apt-get purge``)
|
the user may either also remove the configuration (with ``apt-get purge``)
|
||||||
or leave the configuration in place when the application is installed again (with ``apt-get remove``).
|
or leave the configuration in place when the application is installed again (with ``apt-get remove``).
|
||||||
|
|
||||||
@@ -356,8 +398,15 @@ Accessing a Windows machine remotely generally requires remote desktop software.
|
|||||||
While it is possible to install an SSH server,
|
While it is possible to install an SSH server,
|
||||||
this is not a default feature.
|
this is not a default feature.
|
||||||
|
|
||||||
By contrast, nearly all Linux machines have ``sshd`` and can be accessed and configured remotely.
|
In additions, Windows machines `do not respond to`_ ``ping`` (ICMP) by default.
|
||||||
Combined with the use of text files for configuration and the ease of package management,
|
Arguably, this is the `wrong`_ `choice`_.
|
||||||
|
|
||||||
|
.. _do not respond to: http://msdn.microsoft.com/en-us/library/ms912869(v=winembedded.5).aspx
|
||||||
|
.. _wrong: http://security.stackexchange.com/questions/22711/is-it-a-bad-idea-for-a-firewall-to-block-icmp
|
||||||
|
.. _choice: http://serverfault.com/questions/84963/why-not-block-icmp
|
||||||
|
|
||||||
|
By contrast, nearly all Linux machines respond to ``ping`` and most allow ``ssh`` for remote access.
|
||||||
|
Combined with the use of text files for configuration and the simplicity of package management,
|
||||||
many tech support and remote administration tasks are easier and faster to resolve when accessing a remote machine running Linux.
|
many tech support and remote administration tasks are easier and faster to resolve when accessing a remote machine running Linux.
|
||||||
|
|
||||||
++++++++++++++++++
|
++++++++++++++++++
|
||||||
@@ -365,13 +414,13 @@ Cultural problems.
|
|||||||
++++++++++++++++++
|
++++++++++++++++++
|
||||||
|
|
||||||
These are practical issues caused by cultural problems,
|
These are practical issues caused by cultural problems,
|
||||||
not subjective criticism of the Linux/Unix culture vs. the Microsoft Windows NT culture.
|
not subjective criticism of the Linux/Unix culture vs. the Microsoft Windows culture.
|
||||||
|
|
||||||
--------------------
|
--------------------
|
||||||
Public bug trackers.
|
Public bug trackers.
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
Windows NT and proprietary software in general do not usually maintain a public bug tracker.
|
Windows and proprietary software in general do not usually maintain a public bug tracker.
|
||||||
This means that assessing what went wrong when an application crashes is often more difficult than it needs to be.
|
This means that assessing what went wrong when an application crashes is often more difficult than it needs to be.
|
||||||
By contrast, projects like the Linux kernel and the Debian project publically track and acknowledge bugs,
|
By contrast, projects like the Linux kernel and the Debian project publically track and acknowledge bugs,
|
||||||
even when it is `embarrassing`_ to `do so`_.
|
even when it is `embarrassing`_ to `do so`_.
|
||||||
@@ -383,13 +432,15 @@ even when it is `embarrassing`_ to `do so`_.
|
|||||||
Debugging habits.
|
Debugging habits.
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
By requiring frequent reboots,
|
By requiring `frequent`_ `reboots`_,
|
||||||
Windows NT encourages resetting software when encountering a problem,
|
Windows encourages bad habits such as restarting software to make a bug go away,
|
||||||
rather than diagnosing, reproducing, and reporting bugs.
|
rather than diagnosing, reproducing, and reporting bugs.
|
||||||
|
|
||||||
In the long run,
|
In the long run, this hurts both proprietary and open-source software running on Windows.
|
||||||
this hurts both proprietary and open-source software running on Windows NT.
|
It is also one reason why developing solely for Windows because of the larger user base may not always be the best choice.
|
||||||
It is also one reason why developing for Windows NT because of the larger user base may not always be the best choice.
|
|
||||||
|
.. _frequent: http://www.howtogeek.com/182817/htg-explains-why-does-windows-want-to-reboot-so-often/
|
||||||
|
.. _reboots: http://www.howtogeek.com/howto/31204/why-do-application-installs-make-you-reboot-and-close-other-apps/
|
||||||
|
|
||||||
--------
|
--------
|
||||||
Malware.
|
Malware.
|
||||||
@@ -407,10 +458,11 @@ This is has two repercussions:
|
|||||||
|
|
||||||
Number 2 is particularly pernicious, as some users attribute problems arising from failing hardware to malware instead.
|
Number 2 is particularly pernicious, as some users attribute problems arising from failing hardware to malware instead.
|
||||||
|
|
||||||
Computer running slowly? Might be viruses. (Or maybe some recently installed software is using a lot of memory.)
|
Computer running slowly?
|
||||||
|
Might be viruses. (Or maybe some recently installed software is using a lot of memory.)
|
||||||
|
|
||||||
Applications crashing? Is your anti-virus up to date? (Or maybe the application has bugs that need fixing.)
|
Applications crashing?
|
||||||
|
Is your anti-virus up to date? (Or maybe the application has bugs that need fixing.)
|
||||||
|
|
||||||
Random reboots? Oh, probably a virus. (Or maybe the hard drive is failing.)
|
Random reboots?
|
||||||
|
Oh, probably a virus. (Or maybe the hard drive is failing.)
|
||||||
.. [#windowsVNC] "You would think that because Windows XP is multiuser, you could have multiple users running VNC servers. Indeed you can, but you can only use the one that has the currently active user - switch away, and that server goes black, and in my testing, can't even be used again. Windows XP is not really multiuser." http://aplawrence.com/Reviews/tightvnc.html
|
|
||||||
|
Reference in New Issue
Block a user