=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'.

A word of warning - there are a vast number of Linux derivatives, and
I will never detect every single one of them. Most Linux derivatives
will only match 'Linux'.

=head1 THE Linux::Debian FAMILY

C<Linux::Debian> is the 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.

Note the difference between C<Linux::RealDebian> (which uses C</etc/os-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</etc/os-release> available
and so will be detected as C<Linux::UnknownDebianLike>.

It is likely that C<Linux::Ubuntu> will in the future turn into a family.

=head1 THE Linux::Redhat and Linux::SUSE FAMILIES

Both Redhat and SUSE come in multiple flavours, some commercial and
some open-source. In particular note that Oracle Linux is a Redhat
derivative.

=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 2024 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
