Note: This license label is deprecated, so don't use it for new packages.
Unfortunately, "as-is" has been (ab)used also for non-free software and
you cannot rely on it. Please check the upstream license instead.

"as-is" in its originally intended sense is now covered by the OSI-approved
"HPND" (Historical Permission Notice and Disclaimer).

---------------------------------------------------------------------------

This is a generic place holder for a class of licenses that boil down to do
no guarantees and all you get is what you have. The language is usually
similar to:

  Permission to use, copy, modify, and distribute this software and its
  documentation for any purpose and without fee is hereby granted, provided
  that the above copyright notice appears in all copies and that both the
  copyright notice and this permission notice appear in supporting
  documentation, and that the same name not be used in advertising or
  publicity pertaining to distribution of the software without specific,
  written prior permission. We make no representations about the
  suitability of this software for any purpose. It is provided "as is"
  without express or implied warranty.


You will need to check the license that came with the software for the exact
specifics. Generally you are free to do most anything you want with "as is"
software but you should not take this license as legal advice.

Note: Most all license have an "as is" clause. For our purposes this does
not make all software in this category. This category is for software with
very little restrictions.

The information in this license about licenses is presented "as is". :-P
