=head1 NAME

Devel::CheckOS::Families - what OS "families" are supported "out of the
box" by Devel::CheckOS and Devel::AssertOS?


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:


=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


=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

=head1 THE Realtime FAMILY

This is for all real-time OSes.  So far, it only includes QNX.


OSes which use EBCDIC instead of ASCII.


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


This documentation is also free-as-in-mason.