=head1 NAME
Devel::CheckOS::Families - what OS "families" are supported "out of the
box" by Devel::CheckOS and Devel::AssertOS?
=head1 WHAT IS AN OS FAMILY
Computing platforms fall into several categories. For example, there is
the category of Unix-a-likes. Each of these categories is a "family".
A platform can fall into several families.
=head1 THE Unix FAMILY
Broadly speaking, these are platforms where:
=over
=item Devices are represented as pseudo-files in the filesystem
=item Symlinks and hardlinks are supported in at least some filesystems
=item "Unix-style" permissions are supported
That is, there are seperate read/write/execute permissions for file owner,
group and anyone. This implies the presence of multiple user accounts
and user groups. Permissions may not be supported on all filesystems.
=item The filesystem has a single root
=item The C API for the operating system is largely POSIX-compatible
=back
=head1 THE Linux FAMILY
This includes both ordinary Linux and Android. Plain old Linux will
match 'Linux'. Android will match both that and 'Android'.
=head1 THE Linux::Debian FAMILY
Up until version 1.84 this wasn't a family, and would match any platform
which claimed to be Debian via C<lsb_release -i> or on which a file called
C</etc/debian_version> existed. That meant that as well as matching real
Debian, it would also match Ubuntu, Raspbian, and so on. As of version 1.85
C<Linux::Debian> has become a family of all the Debian-based Linuxes. If
you want to test which particular family member you're on then look at
C<list_family_members("Linux::Debian")> to see what's available.
NB the difference between C<Linux::RealDebian> (which uses C<lsb_release>
for identification) and C<Linux::UnknownDebianLike> (which uses the
existence of C</etc/debian_version> for identification). In particular
beware that some *very* old Debians don't have C<lsb_release> available
and so will be detected as C<Linux::UnknownDebianLike>.
=head1 THE MicrosoftWindows FAMILY
This includes any version of Windows and also includes things like
Cygwin which run on top of it.
=head1 THE DEC, Sun, and Apple FAMILIES
These include any OS written by, respectively, DEC, Sun, and Apple.
They exist because, while, eg, Mac OS Classic and Mac OS X are very
different platforms, they do support some unique features - such as
AppleScript.
=head1 THE Realtime FAMILY
This is for all real-time OSes. So far, it only includes QNX.
=head1 THE EBCDIC FAMILY
OSes which use EBCDIC instead of ASCII.
=head1 AUTHOR, COPYRIGHT and LICENCE
Copyright 2023 David Cantrell E<lt>F<david@cantrell.org.uk>E<gt>
This documentation is free-as-in-speech. It may be used,
distributed and modified under the terms of the Creative Commons
Attribution-Share Alike 2.0 UK: England & Wales License, whose
text you may read at
L<http://creativecommons.org/licenses/by-sa/2.0/uk/>.
=head1 CONSPIRACY
This documentation is also free-as-in-mason.
=cut