1
0
mirror of https://github.com/nbeaver/why-linux-is-better.git synced 2025-08-22 21:42:59 +02:00

Line wrapping and formatting.

This commit is contained in:
Nathaniel Beaver
2017-03-24 09:57:46 -05:00
parent 543af578c8
commit db7b0a5d1b

View File

@@ -53,7 +53,8 @@ This document will not cover servers, phones, or embedded devices.
This document will not cover closed vs. open source development,
but will instead focus on functionality.
There is plenty of discussion of the advantages and disadvantages of open source elsewhere.
There is plenty of discussion
of the advantages and disadvantages of open source elsewhere.
(Besides, what is there to discuss
when we now know that `even Microsoft loves open source`_?)
@@ -217,7 +218,8 @@ are lightweight enough that they default to `running from a RAM disk`_,
and consequently have much faster disk I/O
than an OS that must access a spinning hard drive.
(This comes at the cost of disk space being limited by RAM.
There's no reason you can't mount an internal or external drive to store files, though.)
There's no reason you can't mount an internal or external drive
to store files, though.)
.. _Puppy Linux: http://puppylinux.org/
.. _running from a RAM disk: https://en.wikipedia.org/wiki/List_of_Linux_distributions_that_run_from_RAM
@@ -309,7 +311,8 @@ Judging by the number of bug reports and complaints, the answer appears to be ye
#. http://sumedha.blogspot.com/2011/01/svn-checkout-fails-windows-max-path.html
#. http://forums.mozillazine.org/viewtopic.php?f=29&t=263489
But the bigger issue is that many Windows developers are `so used to`_ `working around`_ the problem
But the bigger issue
is that many Windows developers are `so used to`_ `working around`_ the problem
that it has become deeply entrenched and may `never be fixed`_.
.. _so used to: http://blogs.msdn.com/b/tomholl/archive/2007/02/04/enterprise-library-and-the-curse-of-max-path.aspx
@@ -332,18 +335,20 @@ when trying to resolve canonical file paths.
.. _this limit is not enforced: http://insanecoding.blogspot.com/2007/11/pathmax-simply-isnt.html
.. _susceptible to buffer overflow: http://stackoverflow.com/questions/1171833/how-to-get-the-absolute-path-of-a-file-programmatically-with-out-realpath-unde
The 2008 POSIX revision has `addressed the issue`_,
but prior to this the Linux kernel had to make non-standard modifications to avoid overflow,
and `warned about the problem`_
in the ``realpath (3)`` man page of the Linux Programmer's Manual.
The 2008 POSIX revision has `addressed the issue`_, but prior to this
the Linux kernel had to make non-standard modifications to avoid overflow,
and `warned about the problem`_ in the ``realpath (3)`` man page
of the Linux Programmer's Manual.
.. _addressed the issue: 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
This illustrates that while the Linux kernel developers scrupulously avoid breaking external compatibility,
This illustrates that while the Linux kernel developers
scrupulously avoid breaking external compatibility,
they also intentionally expose false assumptions,
since false assumptions tend to cause hard-to-fix bugs.
This is why Linus Torvalds `chose an unusually high`_ timer interrupt frequency for Linux:
This is why Linus Torvalds
`chose an unusually high`_ timer interrupt frequency for Linux:
I chose 1000 originally partly as a way to make sure that people that
assumed HZ was 100 would get a swift kick in the pants. That meant making
@@ -403,7 +408,8 @@ which could only fit a single alphabet.
tant to be able to derive a 64-character, monocase alphabet, graphic
subset from the code by simple, not complex, logic.
--- Charles E. Mackenzie, "Coded character sets: history and development" (1980), p.228
--- Charles E. Mackenzie, "Coded character sets: history and development"
(1980), p.228
In fact, the some of the committee members
wanted to reserve the remaining space for control characters.
@@ -421,7 +427,8 @@ wanted to reserve the remaining space for control characters.
--- Ibid, p.232
Though the comittee first formed in 1961,
it wasn't until late 1963 that they finally agreed to include a lowercase alphabet,
it wasn't until late 1963
that they finally agreed to include a lowercase alphabet,
largely because of the influence of the
International Telegraph and Telephone Consultative Committee (CCITT).
@@ -469,13 +476,15 @@ that enforcing filename case-sensitivity
-- and even case-sensitivity in general --
was a bad decision. [#against_case_sensitivity]_
There are also passionate views to the opposite effect. [#against_case_insensitivity]_
There are also passionate views
to the opposite effect. [#against_case_insensitivity]_
Laying aside that argument for the moment,
why did Windows filenames end up case-insensitive?
Strictly speaking, modern Windows filenames could be case-sensitive,
but they aren't because the `Windows API for opening files`_ `is not case-sensitive`_,
but they aren't
because the `Windows API for opening files`_ `is not case-sensitive`_,
i.e. the `default call`_ to ``CreateFile``
does not enable the ``FILE_FLAG_POSIX_SEMANTICS`` option.
@@ -535,7 +544,8 @@ was optimized for its architecture.
https://lkml.org/lkml/2002/7/30/257
(CP/M was written for an eight-bit architecture,
which is presumably why it used an 8.3 filename instead of a 6.3 filename.) [#8.3_filename]_
which is presumably why it used an 8.3 filename
instead of a 6.3 filename.) [#8.3_filename]_
Similarly, the RT-11 didn't use ASCII for filenames,
but rather an encoding called RADIX-50,
@@ -549,6 +559,7 @@ endures to this day.
The lack of agreement on filename case-sensitivity may seem insignificant,
but it has caused persistent difficulties
in cross-platform development. [#tortoise_svn_case_sensitivity]_ [#openfoam_no_windows_port]_ [#common_lisp_filenames]_
Developers of cross-platform software try to `avoid making assumptions about filename case-sensitivity`_,
but problems of this ilk crop up
when porting from Windows to Linux or vice-versa. [#valve_porting_source_to_linux]_
@@ -622,13 +633,14 @@ For example, the Linux port of the `Unity engine`_ has `issues with case-sensiti
.. [#against_case_sensitivity]
Mac Windows users have to have filenames read to them over the phone by
support techs. They have to be able to write little sticky notes to their
mothers about how to open up the mail program, without worrying about how the
filenames are capitalized. Haven't you ever fumed over a URL with initial-caps
in the folder names in the path, having to fiddle with capitalization until you
get a response that's anything but a 404? Haven't you ever been secretly
pleased that e-mail addresses aren't case-sensitive?
Mac Windows users have to have filenames read to them over the phone
by support techs. They have to be able to write little sticky notes to
their mothers about how to open up the mail program, without worrying
about how the filenames are capitalized. Haven't you ever fumed over a
URL with initial-caps in the folder names in the path, having to fiddle
with capitalization until you get a response that's anything but a 404?
Haven't you ever been secretly pleased that e-mail addresses aren't
case-sensitive?
--- Brian Tiemann, *On Unix File System's Case Sensitivity* (2001)
@@ -643,38 +655,40 @@ For example, the Linux port of the `Unity engine`_ has `issues with case-sensiti
https://www.ma.utexas.edu/pipermail/maxima/2003/004483.html
One of the most pernicious problems with C-based languages is that they're
case-sensitive. While this decision may have made sense in 1972 when the
language was created, one wonders why the sins of Kernighan and Ritchie have
been blindly perpetuated for the last thirty-three years.
One of the most pernicious problems with C-based languages is that
they're case-sensitive. While this decision may have made sense in 1972
when the language was created, one wonders why the sins of Kernighan and
Ritchie have been blindly perpetuated for the last thirty-three years.
[ . . . ]
Unless you have extremely compelling reasons to make something case-sensitive,
case insensitivity is a much more human being friendly design choice. Designing
software that's easier for machines is questionable at best.
Unless you have extremely compelling reasons to make something
case-sensitive, case insensitivity is a much more human being friendly
design choice. Designing software that's easier for machines is
questionable at best.
--- Jeff Atwood, *The Case For Case Insensitivity* (2005)
http://blog.codinghorror.com/the-case-for-case-insensitivity/
There is no longer any excuse for making humans learn and handle the quirks of
the way computers store upper- and lower-case characters. Instead, software
should handle the quirks of human language.
There is no longer any excuse for making humans learn and handle the
quirks of the way computers store upper- and lower-case characters.
Instead, software should handle the quirks of human language.
--- Brian Hauer, *Case-sensitivity is the past trolling us* (2014)
http://tiamat.tsotech.com/case-sensitivity-sucks
Since it appears to have manifested out of opinion rather than necessity, it
could be said case-sensitivity is the worst way that modern technology sucks.
Since it appears to have manifested out of opinion rather than
necessity, it could be said case-sensitivity is the worst way that
modern technology sucks.
--- Greg Raiz (2007)
http://www.raizlabs.com/graiz/2007/02/11/linuxunix-case-sensitivity/
This is really stupid, it causes a ton of problems and there is no longer
any good reason to have case sensitivity in an OS.
This is really stupid, it causes a ton of problems and there is no
longer any good reason to have case sensitivity in an OS.
--- Julian, OddThinking (2005)
@@ -701,18 +715,19 @@ For example, the Linux port of the `Unity engine`_ has `issues with case-sensiti
https://www.reddit.com/r/sysadmin/comments/2w6c8g/case_insensitive_windows_rant/
Why are computer file names and conventions and protocols so messed up? It's
bizarre -- and Microsoft has been one of the worst offenders with one of the
most powerful positions and opportunities to make it a better filename-naming
world.
Why are computer file names and conventions and protocols so messed up?
It's bizarre -- and Microsoft has been one of the worst offenders with
one of the most powerful positions and opportunities to make it a better
filename-naming world.
[ . . . ]
And, Microsoft dares to allow mixed case naming, but does case insensitive
handling of file names... don't even get me started about some of the bizarre
results and buggy behavior I've traced to that. I only wish I'd had a
chargeback code for all of the time I've spent fixing and debugging systems
that all come back to the file naming. Sigh, again.
And, Microsoft dares to allow mixed case naming, but does case
insensitive handling of file names... don't even get me started about
some of the bizarre results and buggy behavior I've traced to that. I
only wish I'd had a chargeback code for all of the time I've spent
fixing and debugging systems that all come back to the file naming.
Sigh, again.
--- yagu (2006)
@@ -743,8 +758,9 @@ For example, the Linux port of the `Unity engine`_ has `issues with case-sensiti
http://dosmandrivel.blogspot.com/2007/08/is-dos-rip-off-of-cpm.html
As I noted when I discussed the old MS-DOS wildcard matching rules, MS-DOS
worked hard at being compatible with CP/M. And CP/M used 8.3 filenames.
As I noted when I discussed the old MS-DOS wildcard matching rules,
MS-DOS worked hard at being compatible with CP/M. And CP/M used 8.3
filenames.
--- Raymond Chen (2009)
@@ -808,18 +824,18 @@ For example, the Linux port of the `Unity engine`_ has `issues with case-sensiti
From a post on the comp.sys.tandy Usenet group:
Of course, CP/M itself is an
almost exact knock off of DECs PDP-11 OS, RT-11, an operating system that
dates back to the early seventies, and RT-11 shows its roots in TOPS-10,
which goes back another year or two. For some reason, all the historians
tracing the source of MS-DOS mysteriously stop at CP/M, even when command sets
and utility syntaxes are compared side-by-side. Who had a PIP utility first?
Why, DEC, not Digital Research.
Of course, CP/M itself is an almost exact knock off of DECs PDP-11 OS,
RT-11, an operating system that dates back to the early seventies, and
RT-11 shows its roots in TOPS-10, which goes back another year or two.
For some reason, all the historians tracing the source of MS-DOS
mysteriously stop at CP/M, even when command sets and utility syntaxes
are compared side-by-side. Who had a PIP utility first? Why, DEC, not
Digital Research.
The joke in the seventies that "Digital Research" was a typographical error
and the companies real name was "Digital [Equipment Corporation] Rehashed",
for RT-11, TOPS-10 and RSTS/E all predated CP/M by a lot and yet have the same
command syntax.
The joke in the seventies that "Digital Research" was a typographical
error and the companies real name was "Digital [Equipment Corporation]
Rehashed", for RT-11, TOPS-10 and RSTS/E all predated CP/M by a lot and
yet have the same command syntax.
https://groups.google.com/forum/#!msg/comp.sys.tandy/EcfhcRv9gEU/fNu_h9fCe3AJ
@@ -844,14 +860,14 @@ For example, the Linux port of the `Unity engine`_ has `issues with case-sensiti
.. [#CPM_case_insensitive] CP/M did this conversion internally.
It should also be noted that all alphabetic lower case letters in file
and drive names are always translated to upper case when they are processed by
the CCP [Console Command Processor].
and drive names are always translated to upper case when they are
processed by the CCP [Console Command Processor].
[ . . . ]
Further, recall that the CCP always translates lower case characters to upper
case characters internally. Thus, lower case alphabetics are treated as if
they are upper case in command names and file references
Further, recall that the CCP always translates lower case characters to
upper case characters internally. Thus, lower case alphabetics are
treated as if they are upper case in command names and file references
https://archive.org/stream/Intro_to_CPM_Feat_and_Facilities/Intro_to_CPM_Feat_and_Facilities_djvu.txt
@@ -867,22 +883,22 @@ For example, the Linux port of the `Unity engine`_ has `issues with case-sensiti
.. [#RADIX50]
... files were located via the directory, which resided in a fixed
location at the beginning of the hard drive. The directory consisted of a
single array of entries, each with a 6.3 character file name formatted in DECs
Radix-50 format. A files directory entry indicated the address of the first
block of the file.
location at the beginning of the hard drive. The directory consisted of
a single array of entries, each with a 6.3 character file name formatted
in DECs Radix-50 format. A files directory entry indicated the address
of the first block of the file.
http://cryptosmith.com/2013/10/19/digitals-rt-11-file-system/
RADIX50 is a character coding system used in earlier Digital Equipment
Corporation computers, such as the PDP-10, DECsystem-10 and DECsystem-20.
It was implemented as a way to pack as many characters into as few bits as
possible.
Corporation computers, such as the PDP-10, DECsystem-10 and
DECsystem-20. It was implemented as a way to pack as many characters
into as few bits as possible.
RADIX50 actually contains 40 codes, or 50 in octal. Because this is not a
power of two, the PDP-10 processor had instructions to pack several
RADIX-50 words into a single 36-bit word or extract RADIX-50 words from a
36-bit word.
RADIX50 actually contains 40 codes, or 50 in octal. Because this is not
a power of two, the PDP-10 processor had instructions to pack several
RADIX-50 words into a single 36-bit word or extract RADIX-50 words from
a 36-bit word.
http://nemesis.lonestar.org/reference/telecom/codes/radix50.html
@@ -915,10 +931,17 @@ For example, the Linux port of the `Unity engine`_ has `issues with case-sensiti
.. [#valve_porting_source_to_linux] http://adrienb.fr/blog/wp-content/uploads/2013/04/PortingSourceToLinux.pdf
- Linux filesystems are case-sensitive
- Windows is not
- Not a big issue for deployment (because everyone ships packs of some sort)
- Not a big issue for deployment (because everyone ships packs of some
sort)
- But an issue during development, with loose files
- Solution 1: Slam all assets to lower case, including directories, then tolower all file lookups (only adjust below root)
- Solution 1: Slam all assets to lower case, including directories, then
tolower all file lookups (only adjust below root)
- Solution 2: Build file cache, look for similarly named files
@@ -955,10 +978,10 @@ due to their use in delimiting drive names like ``C:\``.
This causes issues in sharing files across platforms.
For example, a UNIX file name can use a colon (:), but a Windows file name
cannot use a colon (:). If a UNIX user attempts to create a file with a Windows
illegal character on a Windows Services for UNIX network file system (NFS)
share, the attempt is unsuccessful and the UNIX client computer receives an
input or output error.
cannot use a colon (:). If a UNIX user attempts to create a file with a
Windows illegal character on a Windows Services for UNIX network file
system (NFS) share, the attempt is unsuccessful and the UNIX client
computer receives an input or output error.
https://support.microsoft.com/en-us/kb/289627
@@ -991,15 +1014,17 @@ but such restrictions do not apply to filenames.)
https://stackoverflow.com/questions/1976007/what-characters-are-forbidden-in-windows-and-linux-directory-names
When Steve Bourne was writing his Unix shell (which came to be known as the
Bourne shell), he made a directory of 254 files with one-character names, one for each
byte value except ``'\0'`` and slash, the two characters that cannot appear in Unix file
names. He used that directory for all manner of tests of pattern-matching and tok-
enization. (The test directory was of course created by a program.) For years after-
wards, that directory was the bane of file-tree-walking programs; it tested them to
destruction.
When Steve Bourne was writing his Unix shell (which came to be known as
the Bourne shell), he made a directory of 254 files with one-character
names, one for each byte value except ``'\0'`` and slash, the two
characters that cannot appear in Unix file names. He used that directory
for all manner of tests of pattern-matching and tok- enization. (The
test directory was of course created by a program.) For years after-
wards, that directory was the bane of file-tree-walking programs; it
tested them to destruction.
--- Brian W. Kernighan and Rob Pike, "The Practice of Programming", Chapter 6: Testing, p. 158
--- Brian W. Kernighan and Rob Pike, "The Practice of Programming",
Chapter 6: Testing, p. 158
https://books.google.com/books?id=j9T6AgAAQBAJ&lpg=PP1&dq=the%20practice%20of%20programming&pg=PA158#v=onepage&q=When%20Steve%20Bourne
@@ -1019,12 +1044,12 @@ but such restrictions do not apply to filenames.)
Dennis Ritchie has explained the `rationale for using a null-terminator`_:
In BCPL, the first packed byte contains the number of characters in the string;
in B, there is no count and strings are terminated by a special character,
which B spelled ```*e'``. This change was made partially to avoid the limitation on
the length of a string caused by holding the count in an 8- or 9-bit slot, and
partly because maintaining the count seemed, in our experience, less convenient
than using a terminator.
In BCPL, the first packed byte contains the number of characters in the
string; in B, there is no count and strings are terminated by a special
character, which B spelled ```*e'``. This change was made partially to
avoid the limitation on the length of a string caused by holding the
count in an 8- or 9-bit slot, and partly because maintaining the count
seemed, in our experience, less convenient than using a terminator.
`Null-terminated strings do have some drawbacks`_,
such as making certain optimizations more difficult,
@@ -1057,11 +1082,13 @@ UDF (used for some CDs and DVDs),
and the legacy FAT16/FAT32/exFAT family.
All other filesystems require installation of `third-party software`_.
Linux has drivers for `almost all file systems`_ that can be legally mounted without paying royalties,
Linux has drivers for `almost all file systems`_
that can be legally mounted without paying royalties,
including ones that don't see much use nowadays, like `Amiga file systems`_.
It can also mount FAT and NTFS filesystems,
despite Microsoft's lucrative patent licensing deals and `ongoing`_ `litigation`_
against Android manufacturers and `other companies`_ that use the Linux kernel's FAT drivers.
despite Microsoft's lucrative patent licensing deals
and `ongoing`_ `litigation`_ against Android manufacturers
and `other companies`_ that use the Linux kernel's FAT drivers.
.. _third-party software: http://www.ext2fsd.com/
.. _almost all file systems: https://wiki.archlinux.org/index.php/file_systems
@@ -1072,19 +1099,19 @@ against Android manufacturers and `other companies`_ that use the Linux kernel's
For the system partition,
Linux users can choose among the usual ext3 journaling filesystem
or
up-and-coming filesystems like `Btrfs`_.
or up-and-coming filesystems like `Btrfs`_.
Unlike FAT and NTFS filesystems,
ext3 and Btrfs `do not require defragmentation`_
to maintain good performance.
(Realistically, though, `defragmentation isn't that important for NTFS`_, either.)
ext3 and Btrfs `do not require defragmentation`_ to maintain good performance.
(Realistically, though,
`defragmentation isn't that important for NTFS`_, either.)
.. _Btrfs: https://btrfs.wiki.kernel.org/index.php/Main_Page
.. _NTFS and FAT: http://technet.microsoft.com/en-us/magazine/2007.11.desktopfiles.aspx
.. _do not require defragmentation: http://www.tldp.org/LDP/sag/html/filesystems.html#FRAGMENTATION
.. _defragmentation isn't that important for NTFS: http://blogs.msdn.com/b/e7/archive/2009/01/25/disk-defragmentation-background-and-engineering-the-windows-7-improvements.aspx
Finally, Linux permits unprivileged users to run their own filesystems via FUSE.
Finally, Linux permits unprivileged users
to run their own filesystems via FUSE.
This has many practical benefits,
such as accessing cloud storage as if it were an ordinary directory.
@@ -1205,7 +1232,8 @@ because the `folder it is in cannot have a read-only status`_.
In Linux, by contrast, a read-only directory cannot have files added to it,
and files in such a directory cannot be moved, renamed, or deleted
without first removing the read-only status from the directory they are in.
Modifications of the contents of the files depend on the individual file permissions.
Modifications of the contents of the files
depend on the individual file permissions.
.. [#unix_groups] Unix permissions, for example, are not a panacea: https://unix.stackexchange.com/questions/164303/single-user-for-sharing-vs-multiple-users
.. [#ntfs_permissions_flaw] NTFS permissions have their own issues, e.g. https://serverfault.com/questions/31709/how-to-workaround-the-ntfs-move-copy-design-flaw
@@ -1255,8 +1283,8 @@ http://new.office-watch.com/2008/make-a-consistent-drive-letter-or-path-to-a-rem
Fortunately, there is a solution: NTFS mount points.
Volume mount points are robust against system changes that occur when devices
are added or removed from a computer.
Volume mount points are robust against system changes that occur when
devices are added or removed from a computer.
https://technet.microsoft.com/en-us/library/Cc938934.aspx
@@ -1281,15 +1309,15 @@ Unfortunately, Windows doesn't use mount points by default
for external hard drives or flash drives,
possibly because mount points behave slightly differently than drive letters.
The problem is the recycle bin. This "undo" option is maintained with a hidden
system file that is on the partition that holds the files being deleted.
Unfortuantely, when the command to delete a folder is given, the system
attempts to delete the folder using the mount point folder's Master File Table,
and not the subfolder's Master File Table. The mount point folder's MFT
doesn't host the record, and an access denied message is kicked back to you for
having the temerity to try and recycle a directory which apparently doesn't
even exist! The only solution for this is to not recycle subfolders and
directories, but to outright delete them.
The problem is the recycle bin. This "undo" option is maintained with a
hidden system file that is on the partition that holds the files being
deleted. Unfortuantely, when the command to delete a folder is given, the
system attempts to delete the folder using the mount point folder's Master
File Table, and not the subfolder's Master File Table. The mount point
folder's MFT doesn't host the record, and an access denied message is
kicked back to you for having the temerity to try and recycle a directory
which apparently doesn't even exist! The only solution for this is to not
recycle subfolders and directories, but to outright delete them.
http://getyouriton.blogspot.com/2009/08/serious-gotchas-with-mounted-drives-or.html
@@ -1360,7 +1388,8 @@ not the trash in the user's home directory.
However, the motivations for such a scheme go back further.
One of the most influential time-sharing systems,
CTSS, recognized the need for accessing files independently of their disk location.
CTSS, recognized the need for accessing files
independently of their disk location.
All files kept on the disk (and drum) are known to the
user only by name: the supervisor disk control module keeps
@@ -1380,18 +1409,19 @@ not the trash in the user's home directory.
Unix was developed on relatively small disk drives,
so it was useful to be able mount drives anywhere on the filesystem.
You know how Ken Thompson and Dennis Ritchie created Unix on a PDP-7 in 1969?
Well around 1971 they upgraded to a PDP-11 with a pair of RK05 disk packs (1.5
megabytes each) for storage.
You know how Ken Thompson and Dennis Ritchie created Unix on a PDP-7 in
1969? Well around 1971 they upgraded to a PDP-11 with a pair of RK05
disk packs (1.5 megabytes each) for storage.
When the operating system grew too big to fit on the first RK05 disk pack (their
root filesystem) they let it leak into the second one, which is where all the
user home directories lived (which is why the mount was called /usr). They
replicated all the OS directories under there (/bin, /sbin, /lib, /tmp...) and
wrote files to those new directories because their original disk was out of
space. When they got a third disk, they mounted it on /home and relocated all
the user directories to there so the OS could consume all the space on both
disks and grow to THREE WHOLE MEGABYTES (ooooh!).
When the operating system grew too big to fit on the first RK05 disk
pack (their root filesystem) they let it leak into the second one, which
is where all the user home directories lived (which is why the mount was
called /usr). They replicated all the OS directories under there (/bin,
/sbin, /lib, /tmp...) and wrote files to those new directories because
their original disk was out of space. When they got a third disk, they
mounted it on /home and relocated all the user directories to there so
the OS could consume all the space on both disks and grow to THREE WHOLE
MEGABYTES (ooooh!).
http://lists.busybox.net/pipermail/busybox/2010-December/074114.html
@@ -1454,7 +1484,8 @@ and observe how it responds to various kill signals.
There are plenty of Windows programs similar to ``gdb`` and ``strace``, [#gdb_for_Windows]_ [#strace_for_Windows]_
but they don't come installed by default,
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
with nearly any Linux box.
.. [#gdb_for_Windows]
https://msdn.microsoft.com/en-us/library/windows/hardware/ff551063
@@ -1546,11 +1577,11 @@ https://stackoverflow.com/questions/3848558/what-is-the-api-to-create-applicatio
Sometimes it isn't the API, either;
on Windows 8 it is impossible to disable the dwm window compositor.
In Windows Vista and Windows 7, desktop composition is disabled in a number of
scenarios. In Windows 8, DWM desktop composition is a core operating system
component and cannot be disabled. With a few exceptions, desktop composition is
always on; its started before the user logon and remains active for the
duration of a session.
In Windows Vista and Windows 7, desktop composition is disabled in a number
of scenarios. In Windows 8, DWM desktop composition is a core operating
system component and cannot be disabled. With a few exceptions, desktop
composition is always on; its started before the user logon and remains
active for the duration of a session.
--- Windows Dev Center documentation
@@ -1583,27 +1614,30 @@ in the same way that the Windows API is.
since KDE uses the cross-platform Qt framework.
The KDE on Windows Initiative is an ongoing project to port the KDE
applications to MS Windows. Currently supported versions of Windows are XP,
Vista and 7.
applications to MS Windows. Currently supported versions of Windows are
XP, Vista and 7.
https://windows.kde.org/
This is not without difficulties, however.
The current implementation of KDE is designed in a unix specific way, which is
partially different from the Windows way. Examples for this are:
The current implementation of KDE is designed in a unix specific way,
which is partially different from the Windows way. Examples for this
are:
* Process creating - Using the Unix way of fork and exec.
* It isn't available on Windows, this difference requires a redesign of the related parts.
* It isn't available on Windows, this difference requires a redesign of
the related parts.
* Its missing Windows api counterparts.
* KDE uses Unix domain socket for high speed data transfer betwen kioslave
slaves and its parent process and for the communication to/from the dbus
deamon. On Windows there are no Unix domain sockets. They could be emulated
by tcp sockets with the costs of slower bandwidth and additional patches to
deal with Unix domain socket files exchanged between processes.
* KDE uses Unix domain socket for high speed data transfer betwen
kioslave slaves and its parent process and for the communication
to/from the dbus deamon. On Windows there are no Unix domain sockets.
They could be emulated by tcp sockets with the costs of slower
bandwidth and additional patches to deal with Unix domain socket files
exchanged between processes.
--- Ralf Habacker, KDE developer
@@ -1635,10 +1669,11 @@ i.e. ``WS_THICKFRAME`` is not enabled by default.
.. TOOD: source
.. TODO: is it even possible to prevent resizing?
In some cases, you want to display something in a response window but you also
want this window to be resizable in order to let the user resize this window to
display the info the way he or she wants. Normally, response windows are not
resizable and this is also the Microsoft standard behaviour.
In some cases, you want to display something in a response window but you
also want this window to be resizable in order to let the user resize this
window to display the info the way he or she wants. Normally, response
windows are not resizable and this is also the Microsoft standard
behaviour.
--- Eric Aling, April 13, 2000
@@ -1669,64 +1704,78 @@ that watches for window creation and mouse click events.
[#ResizeEnable]_
The README is not directly linkable via URL,
so here are some of the salient parts::
so here are some of the salient parts:
=============================================================================================
What is ResizeEnable
=============================================================================================
It's a very ugly system hack that sits in your system tray and attempts to make windows
that can't usually be resized, resizeable.
=====================
What is ResizeEnable?
=====================
It's a very ugly system hack that sits in your system tray and attempts to
make windows that can't usually be resized, resizeable.
=============================================================================================
===================
Why was it written?
=============================================================================================
It was written following a request from a friend. He runs his PC at a screen resolution above
1280x1024, and was fed up with having to pick items from a list that could only display three
items because the window didn't take into account the screen resolution, hence only occupying
about 20% of the desktop 'real-estate'.
===================
It was written following a request from a friend. He runs his PC at a
screen resolution above 1280x1024, and was fed up with having to pick items
from a list that could only display three items because the window didn't
take into account the screen resolution, hence only occupying about 20% of
the desktop 'real-estate'.
=============================================================================================
=================
How does it work?
=============================================================================================
ResizeEnable sits in the background and attaches itself into Windows via three 'Hooks'.
The first hook is so that it can see which windows are created/destroyed, in which it attempts
to alter the window's style so that it can be resized.
The second hook intercepts all messages for every single window to see if it is a message
associated with resizing a window that it has previously altered the style of. If the message
is associated with sizing, it then resizes all the child windows (Buttons, Edit boxes and so on)
simply by scaling them to fit the new windows size. Its ugly, but most of the time it works ok.
The third hook spots whether the mouse has been pressed in the 'sizing area' of a window and
takes care of doing all the work of resizing the window. This hook didn't exist in v1.0 but
has been added to make even more windows resize properly.
=================
There are some drawbacks to this approach::
ResizeEnable sits in the background and attaches itself into Windows via
three 'Hooks'. The first hook is so that it can see which windows are
created/destroyed, in which it attempts to alter the window's style so that
it can be resized. The second hook intercepts all messages for every
single window to see if it is a message associated with resizing a window
that it has previously altered the style of. If the message is associated
with sizing, it then resizes all the child windows (Buttons, Edit boxes and
so on) simply by scaling them to fit the new windows size. Its ugly, but
most of the time it works ok. The third hook spots whether the mouse has
been pressed in the 'sizing area' of a window and takes care of doing all
the work of resizing the window. This hook didn't exist in v1.0 but has
been added to make even more windows resize properly.
=============================================================================================
There are some drawbacks to this approach:
==============
Known problems
=============================================================================================
1) Most applications will respond to having their windows resized ok. Well, applications that
have followed the guidelines will. <grin>
2) Some applications have, shall we say, problems, when their window has been resized and all
sort of visual chaos will be revealed.
==============
1) Most applications will respond to having their windows resized ok. Well,
applications that have followed the guidelines will. <grin>
2) Some applications have, shall we say, problems, when their window has
been resized and all sort of visual chaos will be revealed.
3) Some applications won't respond at all, which is rather strange!
4) Certain windows will 'jiggle' as you attempt to resize them, seemingly resizing and then
snapping back to their original size. This is annoying, but we're not sure what is
causing it.
5) Some versions of Internet Explorer, coupled with certain version of Windows98/NT seemed to
crash with v1.0 of ResizeEnable. We don't have that setup on any of our test machines
so we can't test it. But, we have done a little bit more work so ResizeEnable is a
bit more choosy as to which windows it can work with. So it -might- not crash anymore.
If it still crashes, then all we can suggest at the moment is that you upgrade to
Internet Explorer 6. We're not Microsoft pushers, but Internet Explorer 6 has better
error reporting and shouldn't just explode without warning.
6) Some Microsoft applications have dialogs that can be resized, but none of their contents
move. This is down to the fact that the contents of the dialog ARE NOT STANDARD
MICROSOFT CONTROLS! They are some bastardisation written specially for the application.
They may look like normal buttons/drop downs, but they sure as heck aren't! Hence,
ResizeEnable can't tell them to move or resize. Yet again, Microsoft ignore their own
codebase and reinvent the wheel. And people wonder why their applications are so big..
4) Certain windows will 'jiggle' as you attempt to resize them, seemingly
resizing and then snapping back to their original size. This is annoying,
but we're not sure what is causing it.
5) Some versions of Internet Explorer, coupled with certain version of
Windows98/NT seemed to crash with v1.0 of ResizeEnable. We don't have that
setup on any of our test machines so we can't test it. But, we have done a
little bit more work so ResizeEnable is a bit more choosy as to which
windows it can work with. So it -might- not crash anymore. If it still
crashes, then all we can suggest at the moment is that you upgrade to
Internet Explorer 6. We're not Microsoft pushers, but Internet Explorer 6
has better error reporting and shouldn't just explode without warning.
6) Some Microsoft applications have dialogs that can be resized, but none
of their contents move. This is down to the fact that the contents of the
dialog ARE NOT STANDARD MICROSOFT CONTROLS! They are some bastardisation
written specially for the application. They may look like normal
buttons/drop downs, but they sure as heck aren't! Hence, ResizeEnable can't
tell them to move or resize. Yet again, Microsoft ignore their own codebase
and reinvent the wheel. And people wonder why their applications are so
big..
.. [#resize_non_resizable_windows] http://www.thewindowsclub.com/resize-non-resizable-windows
.. [#turn_non_resizable_windows] http://www.howtogeek.com/howto/11799/turn-non-resizeable-windows-into-rezieable-windows/