1
0
mirror of https://github.com/nbeaver/why-linux-is-better.git synced 2025-08-26 23:34:34 +02:00

Light editing and shuffling footnotes for better flow.

This commit is contained in:
Nathaniel Beaver
2015-09-02 23:52:39 -05:00
parent d8849d9be3
commit e0d42f543f

View File

@@ -539,6 +539,10 @@ Windows software uses various workarounds,
such as removing the colon entirely such as removing the colon entirely
or replacing it with a similar-looking Unicode character. [#]_ [#]_ [#]_ [#]_ [#]_ [#]_ [#]_ or replacing it with a similar-looking Unicode character. [#]_ [#]_ [#]_ [#]_ [#]_ [#]_ [#]_
(It should be acknowledged that on Linux
the names of directories in ``$PATH`` cannot contain colons either,
but such restrictions do not apply to filenames.)
.. [#] https://stackoverflow.com/questions/7874111/convert-datetime-now-to-a-valid-windows-filename .. [#] https://stackoverflow.com/questions/7874111/convert-datetime-now-to-a-valid-windows-filename
.. [#] https://stackoverflow.com/questions/11037831/filename-timestamp-in-windows-cmd-batch-script .. [#] https://stackoverflow.com/questions/11037831/filename-timestamp-in-windows-cmd-batch-script
.. [#] https://stackoverflow.com/questions/1642677/generate-unique-file-name-with-timestamp-in-batch-script .. [#] https://stackoverflow.com/questions/1642677/generate-unique-file-name-with-timestamp-in-batch-script
@@ -547,11 +551,6 @@ or replacing it with a similar-looking Unicode character. [#]_ [#]_ [#]_ [#]_ [#
.. [#] https://serverfault.com/questions/16706/current-date-in-the-file-name .. [#] https://serverfault.com/questions/16706/current-date-in-the-file-name
.. [#] https://programmers.stackexchange.com/questions/61683/standard-format-for-using-a-timestamp-as-part-of-a-filename .. [#] https://programmers.stackexchange.com/questions/61683/standard-format-for-using-a-timestamp-as-part-of-a-filename
(It should be acknowledged that on Linux
the names of directories in ``$PATH`` cannot contain colons either,
but such restrictions do not apply to filenames.)
.. [#C_strings] The wisdom of this decision is a matter of some debate. .. [#C_strings] The wisdom of this decision is a matter of some debate.
Dennis Ritchie has explained the `rationale for using a null-terminator`_: Dennis Ritchie has explained the `rationale for using a null-terminator`_:
@@ -738,16 +737,16 @@ and run a backtrace when the program fails
Alternately, if the process is already unresponsive, Alternately, if the process is already unresponsive,
you can attach ``strace`` and see what system calls it makes, you can attach ``strace`` and see what system calls it makes,
and whether it receives the kill signals you send it or not. and observe how it responds to various kill signals.
There are `plenty of Windows`_ `programs`_ `similar`_ to ``gdb`` and ``strace``, There are plenty of Windows programs similar to ``gdb`` and ``strace``, [#]_ [#]_ [#]_
but they don't come installed by default, but they don't come installed by default,
whereas both ``strace`` and ``gdb`` come with almost all Linux distributions, whereas both ``strace`` and ``gdb`` come with almost all Linux distributions,
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.
.. _plenty of Windows: http://msdn.microsoft.com/en-us/library/windows/hardware/ff551063(v=vs.85).aspx .. [#] http://msdn.microsoft.com/en-us/library/windows/hardware/ff551063(v=vs.85).aspx
.. _programs: http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx .. [#] http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx
.. _similar: http://www.intellectualheaven.com/default.asp?BH=projects&H=strace.htm .. [#] http://www.intellectualheaven.com/default.asp?BH=projects&H=strace.htm
--------------------------------- ---------------------------------
Restrictive default file locking. Restrictive default file locking.
@@ -763,8 +762,9 @@ this is generally blocked until the application is killed.
.. _file access is a nuisance: https://stackoverflow.com/questions/546504/how-do-i-make-windows-file-locking-more-like-unix-file-locking .. _file access is a nuisance: https://stackoverflow.com/questions/546504/how-do-i-make-windows-file-locking-more-like-unix-file-locking
By contrast, By contrast,
on Linux it is not unusual for two different applications to share read access to a file, on Linux it is not unusual for two different applications
or one process to read a file another process is writing to, to share read access to the same file,
or for one process to read a file while another process is writing to it,
since applications do not lock files by default. since applications do not lock files by default.
---------------------------- ----------------------------
@@ -812,14 +812,14 @@ especially on high-resolution monitors. [#]_ [#]_
.. [#] http://windows.microsoft.com/en-us/windows/working-with-windows#1TC=windows-7&section_3 .. [#] http://windows.microsoft.com/en-us/windows/working-with-windows#1TC=windows-7&section_3
.. [#] http://answers.microsoft.com/en-us/windows/forum/windows_7-desktop/cannot-resize-small-windows/160862cf-6e52-4a99-9365-d380491a067d .. [#] http://answers.microsoft.com/en-us/windows/forum/windows_7-desktop/cannot-resize-small-windows/160862cf-6e52-4a99-9365-d380491a067d
The usual solution to this problem is to download and run a third-party background process One solution to this problem is to download and run a third-party background process
that tracks every single time a window is resized. [#]_ [#]_ [#]_ that tracks every single time a window is resized. [#]_ [#]_ [#]_
.. [#] http://www.thewindowsclub.com/resize-non-resizable-windows .. [#] http://www.thewindowsclub.com/resize-non-resizable-windows
.. [#] http://www.howtogeek.com/howto/11799/turn-non-resizeable-windows-into-rezieable-windows/ .. [#] http://www.howtogeek.com/howto/11799/turn-non-resizeable-windows-into-rezieable-windows/
.. [#] http://www.digitallis.co.uk/pc/ResizeEnable/index.html .. [#] http://www.digitallis.co.uk/pc/ResizeEnable/index.html
The README does not have a good URL, The README is not directly linkable via URL,
so here are some of the salient parts:: so here are some of the salient parts::
============================================================================================= =============================================================================================
@@ -898,10 +898,6 @@ so much so that many users learned to ignore it or turned it off entirely.
.. _User Account Control: http://technet.microsoft.com/en-us/magazine/2007.06.uac.aspx .. _User Account Control: http://technet.microsoft.com/en-us/magazine/2007.06.uac.aspx
.. _users run as administrator by default in Windows XP: https://msdn.microsoft.com/en-us/library/bb530410.aspx#vistauac_topic1 .. _users run as administrator by default in Windows XP: https://msdn.microsoft.com/en-us/library/bb530410.aspx#vistauac_topic1
.. [#] http://www.computerworld.com/article/2477832/desktop-apps/microsoft-exec--we-know-users-hate-uac.html
.. [#] http://arstechnica.com/security/2008/04/vistas-uac-security-prompt-was-designed-to-annoy-you/
.. [#] http://windowssecrets.com/woodys-windows/microsoft-claims-windows-7-uac-flaw-is-by-design/
.. [#] http://windowsitpro.com/blog/microsoft-quotmalware-authors-really-hate-uacquot
Despite Microsoft ending support for Windows XP in April 2014, Despite Microsoft ending support for Windows XP in April 2014,
a `large number of users are still running Windows XP in 2015`_, a `large number of users are still running Windows XP in 2015`_,
@@ -909,6 +905,12 @@ many of them as administrators.
.. _large number of users are still running Windows XP in 2015: https://redmondmag.com/articles/2015/04/08/windows-xp-usage.aspx .. _large number of users are still running Windows XP in 2015: https://redmondmag.com/articles/2015/04/08/windows-xp-usage.aspx
.. [#] http://www.computerworld.com/article/2477832/desktop-apps/microsoft-exec--we-know-users-hate-uac.html
.. [#] http://arstechnica.com/security/2008/04/vistas-uac-security-prompt-was-designed-to-annoy-you/
.. [#] http://windowssecrets.com/woodys-windows/microsoft-claims-windows-7-uac-flaw-is-by-design/
.. [#] http://windowsitpro.com/blog/microsoft-quotmalware-authors-really-hate-uacquot
********* *********
Windows 8 Windows 8
********* *********
@@ -917,20 +919,10 @@ As another example,
the transition from Windows 7 to Windows 8 was controversial, the transition from Windows 7 to Windows 8 was controversial,
because the Metro user interface departed substantially from the historical Windows desktop. [#]_ [#]_ [#]_ [#]_ [#]_ [#]_ because the Metro user interface departed substantially from the historical Windows desktop. [#]_ [#]_ [#]_ [#]_ [#]_ [#]_
.. [#] http://www.washingtonpost.com/blogs/the-switch/wp/2014/02/14/8-things-i-hate-about-windows-8-1/
.. [#] http://www.forbes.com/sites/tonybradley/2014/03/19/im-sorry-the-windows-8-hate-just-doesnt-make-sense/
.. [#] http://www.smh.com.au/digital-life/computers/hate-windows-8-microsoft-replacing-it-with-windows-9-20140122-317fo.html
.. [#] http://bgr.com/2013/12/04/windows-8-hatred-explained/
.. [#] http://www.maximumpc.com/article/features/8_things_we_hate_about_windows_841
.. [#] http://answers.microsoft.com/en-us/windows/forum/windows_8-windows_install/i-hate-windows-8/cd2d9fec-9d95-42ba-9e41-727419459465
Enterprise customers, in particular, Enterprise customers, in particular,
refused to upgrade from Windows 7, refused to upgrade from Windows 7,
citing usability problems. [#]_ [#]_ citing usability problems. [#]_ [#]_
.. [#] http://www.forbes.com/sites/adriankingsleyhughes/2013/05/19/why-enterprise-is-avoiding-windows-8/
.. [#] http://www.nngroup.com/articles/windows-8-disappointing-usability/
These examples are relevant not because they show that Microsoft makes occasional mistakes, These examples are relevant not because they show that Microsoft makes occasional mistakes,
but to highlight the risks of monoculture and vendor lock-in but to highlight the risks of monoculture and vendor lock-in
and to provide contrast to the way that the Linux ecosystem maintains checks and balances. and to provide contrast to the way that the Linux ecosystem maintains checks and balances.
@@ -948,11 +940,9 @@ This reflects a general dislike of forced breaking changes.
When the GNOME developers made controversial changes [#]_ [#]_ [#]_ in GNOME 3, When the GNOME developers made controversial changes [#]_ [#]_ [#]_ in GNOME 3,
a team forked GNOME 2 to become `MATE`_, a team forked GNOME 2 to become `MATE`_,
which retained the "traditional desktop metaphor". which retained the "traditional desktop metaphor".
This would be impossibly difficult if GNOME 2 were the desktop environment of a proprietary operating system. This would be impossibly difficult if GNOME 2
were the desktop environment of a proprietary operating system.
.. [#] http://www.zdnet.com/article/linus-torvalds-would-like-to-see-a-gnome-fork/
.. [#] https://felipec.wordpress.com/2011/06/16/after-two-weeks-of-using-gnome-3-i-officially-hate-it/
.. [#] https://lwn.net/Articles/433409/
.. _MATE: http://mate-desktop.org/ .. _MATE: http://mate-desktop.org/
A fork like MATE will either `eventually fade away`_, A fork like MATE will either `eventually fade away`_,
@@ -964,29 +954,44 @@ depending on the needs of its users.
.. _coexist with its parent project: https://en.wikipedia.org/wiki/OpenBSD .. _coexist with its parent project: https://en.wikipedia.org/wiki/OpenBSD
.. _overtake its parent: http://www.softpanorama.org/People/Stallman/history_of_gcc_development.shtml .. _overtake its parent: http://www.softpanorama.org/People/Stallman/history_of_gcc_development.shtml
.. [#] http://www.washingtonpost.com/blogs/the-switch/wp/2014/02/14/8-things-i-hate-about-windows-8-1/
.. [#] http://www.forbes.com/sites/tonybradley/2014/03/19/im-sorry-the-windows-8-hate-just-doesnt-make-sense/
.. [#] http://www.smh.com.au/digital-life/computers/hate-windows-8-microsoft-replacing-it-with-windows-9-20140122-317fo.html
.. [#] http://bgr.com/2013/12/04/windows-8-hatred-explained/
.. [#] http://www.maximumpc.com/article/features/8_things_we_hate_about_windows_841
.. [#] http://answers.microsoft.com/en-us/windows/forum/windows_8-windows_install/i-hate-windows-8/cd2d9fec-9d95-42ba-9e41-727419459465
.. [#] http://www.forbes.com/sites/adriankingsleyhughes/2013/05/19/why-enterprise-is-avoiding-windows-8/
.. [#] http://www.nngroup.com/articles/windows-8-disappointing-usability/
.. [#] http://www.zdnet.com/article/linus-torvalds-would-like-to-see-a-gnome-fork/
.. [#] https://felipec.wordpress.com/2011/06/16/after-two-weeks-of-using-gnome-3-i-officially-hate-it/
.. [#] https://lwn.net/Articles/433409/
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Crippled multi-user remote access. Crippled multi-user remote access.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
`Windows remote desktop licensing`_ makes multi-user remote access and sharing of machine resources expensive. `Windows remote desktop licensing`_ makes multi-user remote access
By design, multiple concurrent sessions are disabled on all but the server version of Windows, and sharing of machine resources expensive.
and `third-party remote desktop software is not permitted`_ to legally `circumvent this limitation`_. [#]_ [#]_ [#]_ By design, multiple concurrent sessions are disabled
on all but the server version of Windows,
and `third-party remote desktop software is not permitted`_
to legally `circumvent this limitation`_. [#]_ [#]_ [#]_
.. _Windows remote desktop licensing: http://technet.microsoft.com/en-us/library/cc725933.aspx .. _Windows remote desktop licensing: http://technet.microsoft.com/en-us/library/cc725933.aspx
.. _third-party remote desktop software is not permitted: http://superuser.com/questions/784523/tightvnc-while-an-rdp-session-is-running .. _third-party remote desktop software is not permitted: http://superuser.com/questions/784523/tightvnc-while-an-rdp-session-is-running
.. _circumvent this limitation: http://lifehacker.com/5873717/enable-concurrent-remote-desktop-sessions-in-windows-with-this-patch .. _circumvent this limitation: http://lifehacker.com/5873717/enable-concurrent-remote-desktop-sessions-in-windows-with-this-patch
.. [#] "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
.. [#] "Windows, unless you're using Terminal Server (and have the licenses to go with it) doesn't have this capability, and I don't believe that even with Terminal Server, VNC will be able to take advantage of this." http://tightvnc.10971.n7.nabble.com/Multiple-Unique-Sessions-td2060.html
.. [#] "If you heard about/saw many active desktop sessions in non-server Windows - that was modified OS with swapped termsrv.dll. Licensing does not allow you to modify/swap system files and use non-server system that way and this is ILLEGAL." http://stackoverflow.com/questions/9410091/multi-user-login-remote-desktop-on-windows-linux
Note that this is a licensing issue, Note that this is a licensing issue,
not a technical limitation of Windows itself, not a technical limitation of Windows itself,
but it compromises the utility of the operating system. but it compromises the utility of the operating system.
Because Linux is multi-user by design, `multiple local instances of the X server`_ are not unusual, Because Linux is multi-user by design,
even with different desktop environments (e.g. GNOME and KDE can coexist on the same Linux box). `multiple local instances of the X server`_ are not unusual,
even with different desktop environments
(e.g. GNOME and KDE can coexist on the same Linux box).
X sessions can be accessed remotely using e.g. `VNC`_ or `X over SSH`_. X sessions can be accessed remotely using e.g. `VNC`_ or `X over SSH`_.
It is common for two different users to work remotely at the same time on the same machine. It is common for two different users to work remotely
at the same time on the same machine.
.. _multiple local instances of the X server: http://journalxtra.com/linux/desktop/multiple-desktops-on-one-linux-pc-now-thats-greedy/ .. _multiple local instances of the X server: http://journalxtra.com/linux/desktop/multiple-desktops-on-one-linux-pc-now-thats-greedy/
.. _VNC: https://wiki.debian.org/VNCviewer .. _VNC: https://wiki.debian.org/VNCviewer
@@ -997,8 +1002,10 @@ Even on single-user machines this capability of the X server is useful to e.g. r
.. _multiseat: https://wiki.archlinux.org/index.php/xorg_multiseat .. _multiseat: https://wiki.archlinux.org/index.php/xorg_multiseat
Also, sometimes Linux users will forego the X server entirely and log in from a text-only `virtual terminal`_ (a.k.a ``tty``). Also, sometimes Linux users will forego the X server entirely
This is important to be able to do if the X server crashes or cannot start. and log in from a text-only `virtual terminal`_ (a.k.a ``tty``).
This is important to be able to do
if the X server crashes or cannot start.
.. _virtual terminal: http://en.wikipedia.org/wiki/Virtual_console .. _virtual terminal: http://en.wikipedia.org/wiki/Virtual_console
@@ -1006,7 +1013,8 @@ Because the Linux kernel does not rely on the X server to function,
the X server can be restarted without rebooting. the X server can be restarted without rebooting.
If a crash is unrecoverable and it becomes necessary to reboot the kernel, If a crash is unrecoverable and it becomes necessary to reboot the kernel,
one can do so cleanly even if the X server is unresponsive by using the "`Magic Alt-SysRq keys`_", one can do so cleanly even if the X server is unresponsive
by using the "`Magic Alt-SysRq keys`_",
key combinations which send instructions to the kernel. key combinations which send instructions to the kernel.
.. _Magic Alt-SysRq keys: https://www.kernel.org/doc/Documentation/sysrq.txt .. _Magic Alt-SysRq keys: https://www.kernel.org/doc/Documentation/sysrq.txt
@@ -1028,7 +1036,8 @@ and Canonical (the company behind Ubuntu) is working on a separate but similar e
.. _Wayland: http://wayland.freedesktop.org/architecture.html .. _Wayland: http://wayland.freedesktop.org/architecture.html
.. _Mir: http://unity.ubuntu.com/mir/ .. _Mir: http://unity.ubuntu.com/mir/
However, X11 has become so pervasive that versions of it power not only Linux desktops However, X11 has become so pervasive
that versions of it power not only Linux desktops
but also the BSD family of operating systems and OS X (`XQuartz`_), but also the BSD family of operating systems and OS X (`XQuartz`_),
and it's also been `ported to Windows`_ `and Android`_, and it's also been `ported to Windows`_ `and Android`_,
even though they don't use it as a display manager. even though they don't use it as a display manager.
@@ -1037,30 +1046,41 @@ even though they don't use it as a display manager.
.. _ported to Windows: http://sourceforge.net/projects/xming/ .. _ported to Windows: http://sourceforge.net/projects/xming/
.. _and Android: https://play.google.com/store/apps/details?id=net.sourceforge.x11basic .. _and Android: https://play.google.com/store/apps/details?id=net.sourceforge.x11basic
.. [#] "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
.. [#] "Windows, unless you're using Terminal Server (and have the licenses to go with it) doesn't have this capability, and I don't believe that even with Terminal Server, VNC will be able to take advantage of this." http://tightvnc.10971.n7.nabble.com/Multiple-Unique-Sessions-td2060.html
.. [#] "If you heard about/saw many active desktop sessions in non-server Windows - that was modified OS with swapped termsrv.dll. Licensing does not allow you to modify/swap system files and use non-server system that way and this is ILLEGAL." http://stackoverflow.com/questions/9410091/multi-user-login-remote-desktop-on-windows-linux
-------------------------- --------------------------
Some notes on performance. Some notes on performance.
-------------------------- --------------------------
So far, we have avoided the topic of performance almost entirely. So far, we have avoided the topic of performance almost entirely.
This is because evaluating and comparing performance is a complex and nuanced topic, This is because evaluating and comparing performance
incorporating at the very least hardware-specific considerations and deep knowledge of every level of software. is a complex and nuanced topic,
incorporating at the very least hardware-specific considerations
and deep knowledge of every level of software.
It also incorporates psychology, It also incorporates psychology,
since people don't care if software has good performance if they `don't perceive it to have good performance`_. since people don't care if software has good performance
if they `don't perceive it to have good performance`_.
.. _don't perceive it to have good performance: https://developers.google.com/speed/articles/usability-latency .. _don't perceive it to have good performance: https://developers.google.com/speed/articles/usability-latency
As a result, As a result,
unqualified generalizations about the performance of software as complex as an operating system are nearly always wrong. unqualified generalizations about the performance
of complex software such as an operating system
are nearly always wrong.
There are some things, however, that we do know about relative performance of the Windows and Linux kernels. There are some things, however, that we do know
about relative performance of the Windows and Linux kernels.
First, an `anonymous Windows kernel developer stated`_ in 2013 First, an `anonymous Windows kernel developer stated`_ in 2013
that he believes that Windows has fallen behind in performance that he believes that Windows has fallen behind in performance
because of how Microsoft functions as a corporation. because of how Microsoft functions as a corporation.
(This developer gave a SHA1 hash of part of the NT kernel as proof, (This developer gave a SHA1 hash of part of the NT kernel as proof,
which while not incontrovertible is certainly strong evidence he is who he claims to be.) which while not incontrovertible is certainly strong evidence
that he is who he claims to be.)
Windows is indeed slower than other operating systems in many scenarios, Windows is indeed slower than other operating systems in many scenarios,
and the gap is worsening. The cause of the problem is social. There's and the gap is worsening. The cause of the problem is social. There's
@@ -1125,18 +1145,21 @@ Configuration and software packaging.
Default software. Default software.
----------------- -----------------
Linux distributions have many powerful development tools installed by default, Linux distributions have development tools installed by default,
such as a C compiler (usually ``gcc``), such as a C compiler (usually ``gcc``),
build automation (e.g. ``make``), build automation (e.g. ``make``),
and usually more than one shell (e.g. ``bash``, ``dash``, and ``csh``). text utilities (``diff``, ``patch``, ``grep``, ``find``, etc.),
and more than one shell (e.g. ``bash``, ``dash``, and ``csh``).
In fact, they are required to provide these tools by the `POSIX standard`_. In fact, they are required to provide these tools 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 tools 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, by contrast, neither the `C compiler and build system`_ On Windows, by contrast,
nor the currently favored Windows shell (`PowerShell`_) are installed by default. neither the `C compiler and build system`_
nor the currently favored Windows shell (`PowerShell`_)
are installed by default.
.. _C compiler and build system: http://msdn.microsoft.com/en-us/vstudio/ .. _C compiler and build system: http://msdn.microsoft.com/en-us/vstudio/
.. _PowerShell: http://technet.microsoft.com/en-us/library/hh847837.aspx .. _PowerShell: http://technet.microsoft.com/en-us/library/hh847837.aspx
@@ -1148,8 +1171,10 @@ Registries and dotfiles.
On Windows, configuration files are not centralized in the user's home directory. On Windows, configuration files are not centralized in the user's home directory.
Most of the things that users care about Most of the things that users care about
--- not losing configuration between installs --- --- not losing configuration between installs ---
are scattered around as ``.INI`` text files in various directories or in the `Windows Registry`_. are scattered around as ``.INI`` text files
This makes configuration less robust and harder to adapt to the needs of specific users. in various directories or in the `Windows Registry`_.
This makes configuration less robust
and harder to adapt to the needs of specific users.
Windows developers have noted the `many other drawbacks`_ `of the registry`_. Windows developers have noted the `many other drawbacks`_ `of the registry`_.
.. _Windows Registry: http://msdn.microsoft.com/en-us/library/ms970651.aspx .. _Windows Registry: http://msdn.microsoft.com/en-us/library/ms970651.aspx
@@ -1163,51 +1188,70 @@ However, there are a variety of possibilities depending on the needs of the peop
.. _package manager: `Package manager with signed binaries.`_ .. _package manager: `Package manager with signed binaries.`_
System administrators, for example, care about system-level configuration files, generally text files in ``/etc/``. System administrators, for example,
care about system-level configuration files,
generally text files in ``/etc/``.
Text files are simple to edit for ad-hoc debugging and automation, Text files are simple to edit for ad-hoc debugging and automation,
easy to diff, easy to diff,
easy to backup or version control, easy to backup or version control,
and robust against corruption. and robust against corruption.
User level configuration is stored in dotfiles (hidden folders or files) in the user's home directory. User level configuration is stored in dotfiles (hidden folders or files)
There are good arguments to the effect that making dotfiles responsible for configuration `is problematic`_. in the user's home directory.
Configuration files would make much more sense stored in a dedicated configuration folder in the user's home directory, There are good arguments to the effect that
making dotfiles responsible for configuration `is problematic`_.
Configuration files would make much more sense
if stored in a dedicated configuration folder in the user's home directory,
and indeed some applications are `beginning to standardize on this`_. and indeed some applications are `beginning to standardize on this`_.
In the meantime, however, dotfiles do the job, cluttered as they are, In the meantime, however, dotfiles do the job, cluttered as they are,
since each user's files and configuration is isolated to his or her home directory. since each user's files and configuration
is isolated to his or her home directory.
.. _is problematic: https://plus.google.com/+RobPikeTheHuman/posts/R58WgWwN9jp .. _is problematic: https://plus.google.com/+RobPikeTheHuman/posts/R58WgWwN9jp
.. _beginning to standardize on this: http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html .. _beginning to standardize on this: http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
Centralized databases like the Windows Registry are usually unnecessary for configuration. Centralized databases like the Windows Registry
are usually unnecessary for configuration.
Applications for which text files are a bad choice, Applications for which text files are a bad choice,
e.g. ones which need random access to large amounts of structured data or which require atomic updates, e.g. ones which need random access to large amounts of structured data
or which require atomic updates,
can use, for example, `an SQLite database`_ in the user's home directory. can use, for example, `an SQLite database`_ in the user's home directory.
In a similar vein, the GNOME desktop provides `dconf`_, In a similar vein, the GNOME desktop provides `dconf`_,
which is probably the closest thing to a Windows Registry that Linux has. which is probably the closest thing to a Windows Registry
that Linux has.
.. _dconf: https://wiki.gnome.org/Projects/dconf .. _dconf: https://wiki.gnome.org/Projects/dconf
.. _an SQLite database: http://kb.mozillazine.org/Places.sqlite .. _an SQLite database: http://kb.mozillazine.org/Places.sqlite
Moreover, using ordinary files instead of a database for application configuration has many benefits. Moreover, using ordinary files instead of a database
for application configuration has many benefits.
Since many configuration files on Linux are `textual`_, Since many configuration files on Linux are `textual`_,
they are easy to modify, they are easy to modify,
back up, back up,
and ``diff`` or merge, and ``diff`` or merge,
which means users can share and benefit from others' customized configurations and accommodate upstream changes. which means users can share and benefit from others' customized configurations
and more easily accommodate upstream changes.
.. _textual: http://catb.org/~esr/writings/taoup/html/textualitychapter.html .. _textual: http://catb.org/~esr/writings/taoup/html/textualitychapter.html
It also means that migrating to a different Linux distribution is not as painful as starting from scratch, It also means that migrating to a different Linux distribution
is not as painful as starting from scratch,
since many applications keep the configuration formats relatively stable since many applications keep the configuration formats relatively stable
and merging in the customizations is usually straightforward. and merging in the customizations is usually straightforward.
During major Debian upgrades, for example, administrators can choose to adopt new configuration files, During major Debian upgrades, for example,
keep the old ones, or ``diff`` and merge the files into a hybrid. administrators can choose to
adopt new configuration files,
keep the old ones,
or ``diff`` and merge the files into a hybrid.
In short, configuration on Linux is better adapted to the needs of its users than on Windows. In short, configuration on Linux
Ordinary users have the package manager or applications themselves for managing configuration, is better adapted to the needs of its users than on Windows.
developers who like to keep their configuration under version control can use tools like `GNU Stow`_, Ordinary users have the package manager
and system administrators can use any of many dedicated configuration management tools like or applications themselves for managing configuration,
developers who like to keep their configuration under version control
can use tools like `GNU Stow`_,
and system administrators can use
dedicated configuration management tools like
`Puppet`_, `Chef`_, `Ansible`_, `SaltStack`_, etc. `Puppet`_, `Chef`_, `Ansible`_, `SaltStack`_, etc.
.. _GNU Stow: http://www.gnu.org/software/stow/ .. _GNU Stow: http://www.gnu.org/software/stow/
@@ -1220,8 +1264,10 @@ and system administrators can use any of many dedicated configuration management
Package manager with signed binaries. Package manager with signed binaries.
------------------------------------- -------------------------------------
Windows Installer is a software package manager in the sense of installing and uninstalling software, Windows Installer is a software package manager
but it does not provide the salient features of current major Linux packaging systems, in the sense of installing and uninstalling software,
but it does not provide the salient features
of modern Linux packaging systems,
such as: such as:
- securely retrieving the package from a trusted remote or local repository, - securely retrieving the package from a trusted remote or local repository,
@@ -1240,8 +1286,10 @@ such as:
Now, there is an open-source package manager for Windows, `Chocolatey`_, Now, there is an open-source package manager for Windows, `Chocolatey`_,
that is under active development. that is under active development.
However, thus far the Chocolatey repository is not as comprehensive as Linux repositories. However, thus far the Chocolatey repository
Here are some examples of packages which are not in the Chocolatey repository (as of July 2015). is not as comprehensive as Linux repositories.
Here are some examples of packages
which are not in the Chocolatey repository (as of July 2015).
- `Apophysis`_ fractal flame editor `* <http://chocolatey.org/packages?q=apophysis>`__ - `Apophysis`_ fractal flame editor `* <http://chocolatey.org/packages?q=apophysis>`__
- `xyscan`_ data extractor `* <https://chocolatey.org/packages?q=xyscan>`__ - `xyscan`_ data extractor `* <https://chocolatey.org/packages?q=xyscan>`__
@@ -1260,10 +1308,14 @@ Here are some examples of packages which are not in the Chocolatey repository (a
.. _Unison: http://www.cis.upenn.edu/~bcpierce/unison/ .. _Unison: http://www.cis.upenn.edu/~bcpierce/unison/
.. _xchat: http://xchat.org/download/ .. _xchat: http://xchat.org/download/
(This list isn't particularly significant, it's just example open-source software that I happen to use which has a Windows version.) (This list isn't particularly significant,
it's just example open-source software that I happen to use
which has a Windows version.)
Also, the Chocolatey development team acknowledges it `does not currently have package moderation or package signing`_ in place yet, Also, the Chocolatey development team acknowledges
which is significant for overcoming Window's issue with `installing software from untrusted sources`_. that it `does not currently have package moderation or package signing`_ in place yet,
which is significant for overcoming Window's issue
with `installing software from untrusted sources`_.
.. _does not currently have package moderation or package signing: https://chocolatey.org/about .. _does not currently have package moderation or package signing: https://chocolatey.org/about
.. _installing software from untrusted sources: `Malware.`_ .. _installing software from untrusted sources: `Malware.`_
@@ -1284,28 +1336,44 @@ Debian's ``deb``-based ``apt`` and ``dpkg``,
Arch Linux's ``pacman``, Arch Linux's ``pacman``,
and so on. and so on.
This is one reason Linux users are less susceptible to malware: This is one reason Linux users are less susceptible to malware:
they generally install packages that are cryptographically signed by the maintainers, they generally install packages
not opaque executables from a website which may or may not use secure HTTP. that are cryptographically signed by the maintainers,
Even inexperienced users can safely install and uninstall software if it is all from a trusted repository. not opaque executables from a website
which may or may not use secure HTTP.
Even inexperienced users can safely install and uninstall software
if it is all from a trusted repository.
Package managers have other benefits, Package managers have other benefits,
such as avoiding dependency hell while saving the disk space of duplicated libraries. such as avoiding dependency hell
while saving the disk space of duplicated libraries.
Package managers have decent (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 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). (or button if you use one of the many available GUIs).
Instead of requiring all application developers to re-implement automatic updates, Instead of requiring all 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.
Package mangers can make backups easier by decoupling installed applications from stored personal files. Package mangers can make backups easier
Want to remember which programs you have installed without backing up every single binary? by decoupling installed applications from stored personal files.
Just save the output of ``dpkg -L`` or its equivalent as a text file of installed packages,
Want to remember which programs you have installed
without backing up every single binary?
Just save the output of ``dpkg -L`` or its equivalent
as a text file of installed packages,
and voilà, you can restore them later. and voilà, you can restore them later.
If your backup fails or you just want to switch to a different Linux distribution with the same package manager, If your backup fails
you can easily get back your installed software by feeding your package manager the package list. or you just want to switch
All you need is a fresh Linux install and a good internet connection. to a different Linux distribution
Meanwhile, you can keep your home directory backed up using cloud storage or physical drives (ideally both), with the same package manager,
and the backup software doesn't need to run as root since it's only accessing your home directory. you can easily get back your installed software
by feeding your package manager the package list.
All you need is a fresh Linux install
and a good internet connection.
Meanwhile, you can keep your home directory backed up
using cloud storage or physical drives (ideally both),
and the backup software doesn't need to run as root
since it's only accessing your home directory.
Packaging also makes distributing scripts with library dependencies easier. Packaging also makes distributing scripts with library dependencies easier.
For example, installing ``python`` and ``matplotlib`` is simple on Linux, For example, installing ``python`` and ``matplotlib`` is simple on Linux,
@@ -1318,11 +1386,17 @@ Fixing configuration problems with commands instead of GUIs.
------------------------------------------------------------ ------------------------------------------------------------
Graphical user interfaces are excellent for some kinds of software, Graphical user interfaces are excellent for some kinds of software,
but they are clumsy and error-prone for rapidly fixing configuration problems. but they are clumsy and error-prone
Many Linux config problems can be fixed by editing a line in a text file or running a few commands in a terminal. for rapidly fixing configuration problems.
Windows configuration generally requires navigating deeply nested GUIs and ticking various checkboxes. Many Linux config problems can be fixed
This has equivalent security problems to blindly running commands in a terminal, by editing a line in a text file
but is much less efficient. or running a few commands in a terminal.
Windows configuration generally requires navigating deeply nested GUIs
and ticking various checkboxes.
This has similar security problems
to blindly running commands in a terminal,
but in a way that is much less efficient
for doing routine configuration tasks.
Graphical user interfaces (GUIs) are helpful for many tasks, but they are Graphical user interfaces (GUIs) are helpful for many tasks, but they are
not good for all tasks. I have long felt that most computers today do not not good for all tasks. I have long felt that most computers today do not
@@ -1336,8 +1410,11 @@ but is much less efficient.
.. _Learning the shell: http://linuxcommand.org/learning_the_shell.php .. _Learning the shell: http://linuxcommand.org/learning_the_shell.php
In addition, using GUIs for configuration makes user support and documentation significantly more time-consuming. In addition, using GUIs for configuration
Text is easier to automate, store, transmit, and search for than screenshots or ad-hoc notations like Tools -> Options -> General Options -> ... makes user support and documentation significantly more time-consuming.
Text is easier to automate, store, transmit, index, and search
than screenshots or ad-hoc notations
like ``Tools -> Options -> General Options -> ...``
.. TODO: discuss specific comparisons of fixing comparable configuration issue on Linux and Windows. .. TODO: discuss specific comparisons of fixing comparable configuration issue on Linux and Windows.
@@ -1346,10 +1423,13 @@ For example, want to see which displays you're connected to? Run ``xrandr``.
Want to see what USB devices are connected? Run ``lsusb``. 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 using search engines to find similar problems.
Many a Linux user has thought they had found a new bug, 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. only to run a quick web search
(The `Arch Linux BBS forum`_ and bug tracker, for example, tends to be `ahead of the curve`_ on bug reports.) that turned up dozens of users with the same issue.
(The `Arch Linux BBS forum`_ and bug tracker, for example,
tends to be `ahead of the curve`_ on bug reports.)
.. TODO: Find a better example of Arch Linux being ahead of the curve. .. TODO: Find a better example of Arch Linux being ahead of the curve.
@@ -1358,57 +1438,66 @@ only to run a quick web search that turned up dozens of users with the same issu
Finally, software configuration can be kept or removed easily. Finally, software configuration can be kept or removed easily.
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 wipe the system configuration (via ``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 (via ``apt-get remove``).
---------------------- ----------------------
Remote administration. Remote administration.
---------------------- ----------------------
Accessing a Windows machine remotely generally requires remote desktop software. 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 must installed and configured on each machine; this must installed and configured on each machine;
there is no built-in secure shell access on a vanilla Windows box. there is no built-in secure shell access
on a vanilla Windows box.
In addition, Windows machines `do not respond to`_ ``ping`` (ICMP) by default. In addition, Windows machines `do not respond to`_ ``ping`` (ICMP) by default.
Arguably, this is the `wrong`_ `choice`_. Arguably, this is the wrong choice. [#firewall_icmp]_ [#block_icmp]_
.. _do not respond to: http://msdn.microsoft.com/en-us/library/ms912869(v=winembedded.5).aspx .. _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. By contrast, nearly all Linux machines respond to ``ping``
Combined with the use of text files for configuration and the simplicity of package management, and most allow ``ssh`` for remote access.
many tech support and remote administration tasks are easier and faster to resolve when accessing a remote machine running Linux. 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.
.. [#firewall_icmp] http://security.stackexchange.com/questions/22711/is-it-a-bad-idea-for-a-firewall-to-block-icmp
.. [#block_icmp] http://serverfault.com/questions/84963/why-not-block-icmp
++++++++++++++++++ ++++++++++++++++++
Cultural problems. Cultural problems.
++++++++++++++++++ ++++++++++++++++++
It might appear at this point that we are throwing objectivity to the wind, It might appear at this point
that we are throwing objectivity to the wind,
but these are practical issues caused by cultural differences, but these are practical issues caused by cultural differences,
not subjective criticism of the Linux/Unix culture vs. the Microsoft Windows culture. not subjective criticism of Linux/Unix culture vs. Microsoft Windows culture.
-------------------- --------------------
Public bug trackers. Public bug trackers.
-------------------- --------------------
Windows and proprietary software in general do not usually maintain a public bug tracker, Windows and proprietary software in general
although there are exceptions [#]_ [#]_ [#]_. do not usually maintain a public bug tracker,
Software companies have strong incentives to keep their issue tracking systems internal due to things like customer confidentiality, although there are exceptions [#microsoft_connect]_ [#adobe_bugs]_ [#foldit_bugs]_.
Software companies have strong incentives
to keep their issue tracking systems internal
due to things like
customer confidentiality,
security, security,
and public relations. and public relations.
.. [#] https://connect.microsoft.com/
.. [#] https://bugbase.adobe.com/
.. [#] http://fold.it/portal/node/986241
Because bug trackers for proprietary software are not public, Because bug trackers for proprietary software are not public,
it can be hard to for a user to discern if their problem is shared by others, it can be hard to for a user to discern
if their problem is shared by others,
what they can do to fix it, what they can do to fix it,
and whether or not a bug has been fixed in the latest version. and whether or not a bug has been fixed in the latest version.
Most companies devote a lot of staff to user support for this reason. For this reason, many companies maintin a large user support staff.
The inefficiencies and pitfalls of this are evident The inefficiencies and pitfalls of this are evident
to anyone who's had to set up their home internet connection before. to anyone who's had to set up their home internet connection before.
Some companies complement user support with user forums, Some companies complement user support with user forums,
@@ -1416,9 +1505,15 @@ which have the same `issues with signal-to-noise ratio`_ that most forums have.
.. _issues with signal-to-noise ratio: http://blog.codinghorror.com/civilized-discourse-construction-kit/ .. _issues with signal-to-noise ratio: http://blog.codinghorror.com/civilized-discourse-construction-kit/
By contrast, projects like the Linux kernel and the Debian project maintain accountability and clarity by publically tracking and acknowledging bugs, By contrast, projects like the Linux kernel and the Debian project
even when it is embarrassing to do so [#brown_paper_bag_release]_ [#runs_rm_r_as_root]_. maintain accountability and clarity
by publically tracking and acknowledging bugs,
even when it is embarrassing to do so
[#brown_paper_bag_release]_ [#runs_rm_r_as_root]_.
.. [#microsoft_connect] https://connect.microsoft.com/
.. [#adobe_bugs] https://bugbase.adobe.com/
.. [#foldit_bugs] http://fold.it/portal/node/986241
.. [#brown_paper_bag_release] http://lwn.net/1999/0204/kernel.php3 .. [#brown_paper_bag_release] http://lwn.net/1999/0204/kernel.php3
.. [#runs_rm_r_as_root] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=155873 .. [#runs_rm_r_as_root] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=155873
@@ -1429,31 +1524,43 @@ even when it is embarrassing to do so [#brown_paper_bag_release]_ [#runs_rm_r_as
Debugging habits. Debugging habits.
----------------- -----------------
By `requiring`_ or encouraging `reboots`_ for installing software or changing configuration, By `requiring`_ or encouraging `reboots`_
Windows encourages bad habits such as restarting software to make a bug go away, for installing software or changing configuration,
Windows encourages bad habits
such as restarting software to make a bug go away,
or avoiding using parts of an application as a work-around, or avoiding using parts of an application as a work-around,
rather than reproducing and reporting bugs. rather than reproducing and reporting bugs.
.. _requiring: http://www.howtogeek.com/182817/htg-explains-why-does-windows-want-to-reboot-so-often/ .. _requiring: 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/ .. _reboots: http://www.howtogeek.com/howto/31204/why-do-application-installs-make-you-reboot-and-close-other-apps/
In the long run, this hurts both proprietary and open-source software running on Windows. In the long run,
It is also one reason why developing solely for Windows because of the larger user base may not always be a good choice. this hurts both proprietary and open-source software
on the Windows platform.
It is also one reason why developing solely for Windows
because of the larger user base
may not always be a good choice.
-------- --------
Malware. Malware.
-------- --------
In principle, Linux and Windows users are equally `susceptible to malware`_. In principle, Linux and Windows users
Android, for example, runs on the Linux kernel, and there is plenty of malware written that targets it. are equally `susceptible to malware`_.
Android, for example, runs on the Linux kernel,
and there is plenty of malware that targets it.
.. http://www.linux.org/threads/android-malware.7836/ .. http://www.linux.org/threads/android-malware.7836/
.. http://www.firstpost.com/business/gunpoder-new-android-malware-targets-users-not-residing-china-2339516.html .. http://www.firstpost.com/business/gunpoder-new-android-malware-targets-users-not-residing-china-2339516.html
In practice, though, Windows users are `more likely`_ to inadvertently install malware, In practice, though, Windows users are `more likely`_
primarily because of the way they install non-malicious software (see `notes on package management`_). to inadvertently install malware,
Requiring every computer user to do the work of package maintainers is harmful in a variety of ways; primarily because of the way they install non-malicious software
it tends to encourage a cargo-cult mentality to security instead of systematic root-cause analysis. (see `notes on package management`_).
Requiring every computer user to do the work of package maintainers
is harmful in a variety of ways;
it tends to encourage a cargo-cult mentality toward security
instead of systematic root-cause analysis.
.. _susceptible to malware: http://www.linux.com/learn/tutorials/284124-myth-busting-is-linux-immune-to-viruses .. _susceptible to malware: http://www.linux.com/learn/tutorials/284124-myth-busting-is-linux-immune-to-viruses
.. _more likely: http://unix.stackexchange.com/questions/2751/the-myths-about-malware-in-unix-linux .. _more likely: http://unix.stackexchange.com/questions/2751/the-myths-about-malware-in-unix-linux
@@ -1468,16 +1575,18 @@ As a result,
.. _falsely attribute: http://www.combofix.org/suspect-a-malware-infection-heres-the-right-way-to-remove-it.php .. _falsely attribute: http://www.combofix.org/suspect-a-malware-infection-heres-the-right-way-to-remove-it.php
.. _software misbehavior to malware: http://lifehacker.com/5958001/the-5-biggest-myths-about-slow-pcs-and-how-you-can-actually-fix-them .. _software misbehavior to malware: http://lifehacker.com/5958001/the-5-biggest-myths-about-slow-pcs-and-how-you-can-actually-fix-them
Some users may even attribute problems arising from failing hardware to malware instead. Some users may even attribute problems arising from failing hardware to malware.
This also has consequences for developers. This also has consequences for developers.
Because few Linux users experience problems due to malware, Because few Linux users experience problems due to malware,
they will report bugs caused by the actual applications, they will report bugs caused by the actual applications,
not ones caused by malware. not ones caused by malware.
Linux has a better security model which uses secure package installation by default, Most Linux distributions have a better security model
which uses secure package installation by default,
but allows installing software from other sources as well, but allows installing software from other sources as well,
unlike the overly restrictive app-store model. unlike the overly restrictive app-store model
seen in more recent versions of Windows.
Finally, because Linux is a ubiquitous server operating system, Finally, because Linux is a ubiquitous server operating system,
its security is under constant attack, its security is under constant attack,