
 rEFIt License
===============

Copyright (c) 2006 Christoph Pfisterer
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

 * Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.

 * Redistributions in binary form must reproduce the above copyright
   notice, this list of conditions and the following disclaimer in the
   documentation and/or other materials provided with the
   distribution.

 * Neither the name of Christoph Pfisterer nor the names of the
   contributors may be used to endorse or promote products derived
   from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


 Additional Notice
===================

Parts of the file system driver sub-projects are covered by the GNU
GPL instead. See the LICENSE.txt files in the fs_ext2 and fsw
directories for more information.


 Additional Additional Notice
=============================

The preceding license terms apply to the original rEFIt program.
Modifications to the program made in forking the project as rEFInd are
covered by the GNU GPL, version 3. See the file COPYING.txt for details of
the GPLv3 license. The rEFInd documentation (HTML files) are covered by the
GNU FDL, version 1.3. See the file FDL-1.3.txt in the documentation
directory for details of the FDL license.

Although I (Roderick W. Smith) am releasing rEFInd in its current form, the
program is not the work of a single person. Others have contributed to the
program, both in its original version (rEFIt) and by providing features
I've incorporated into the current version. Specifically:

Program (C source code and script) files:
-----------------------------------------

* Christoph Pfisterer was the original author of rEFIt. See its Web page,
  http://refit.sourceforge.net, for this version of the program. Christoph
  has therefore contributed more to rEFInd than anybody else, myself
  included; my changes are comparatively small additions to the original
  rEFIt base.

* The Debian project has made a version of rEFIt available that
  incorporates a number of patches, all attributed to Julien BLACHE
  (jblache@debian.org), to enable it to build properly on a Linux system.
  It was this version of rEFIt that I used as a starting point for creating
  rEFInd. See http://packages.debian.org/sid/refit for this version of the
  program.

* The filesystem drivers released with version 0.4.0 rely on a filesystem
  wrapper created by Christoph Phisterer. They then passed through Oracle's
  VirtualBox (https://www.virtualbox.org) and the Clover boot loader
  project (https://sourceforge.net/projects/cloverefiboot/). The
  filesystem-specific code comes from various sources, including Apple,
  the Linux kernel, and Christoph Pfisterer.

* Assorted support code is borrowed from the TianoCore EDK2
  (https://sourceforge.net/projects/tianocore/), which is the reference
  implementation for EFI.

* Dave Vasilevsky (dave@vasilevsky.ca) contributed the disk-ejection
  code.

* John Bressler (jrb1327@gmail.com) contributed the code to boot BIOS-based
  OSes on UEFI-based PCs.

* CJ Vaughter contributed the code for support of touch displays and mice,
  with some improvements to the former by Tom Briden.

* The code for editing boot options (cursor_left(), cursor_right(), and
  line_edit() in screen.c) is taken from gummiboot
  (http://freedesktop.org/wiki/Software/gummiboot).

* Stefan Agner (stefan@agner.ch) turned the original ext2fs/ext3fs driver
  into one that can read ext4fs.

* Samuel Liao ported the GRUB 2 Btrfs and NTFS code into EFI drivers and
  contributed them to this project, along with several miscellaneous
  improvements.

* Martin Whitaker (other@martin-whitaker.me.uk) added 64-bit support
  to the ext4fs driver.

* Emerson Barcelos (emerson_freitas@yahoo.com.br) wrote the code for
  enabling Intel VMX support (the enable_and_lock_vmx token in
  refind.conf).

* Rohan Sehgal (rohan.sehgal.su@gmail.com) wrote code to help rEFInd
  detect network boot options and launch them, with the help of the
  external ipxe.efi and ipxe_discover.efi programs.

* Matthew J. Garrett (mjg@redhat.com) wrote the shim boot loader upon which
  rEFInd relies for its Secure Boot functionality. I took a few shim
  functions to help out on the rEFInd side, too; see the mok/mok.c source
  code file.

* James Bottomley (James.Bottomley@HansenPartnership.com) wrote the
  Linux Foundation's PreBootloader, which is an alternative to shim. I've
  found that much of its code is also useful in implementing Secure Boot
  functionality in rEFInd. Most of the files in the mok subdirectory are
  based on Bottomley's PreBootloader code.

* The PNG support, in the files libeg/lodepng.c and libeg/lodepng.h, is a
  slightly modified version of LodePNG (http://lodev.org/lodepng/) by Lode
  Vandevenne. (The libeg/lodepng_xtra.c file provides some necessary
  ancillary and interface functions written by me.)

* Pavel Penev contributed the code to enable encrypting rEFInd's locally
  generated signing keys in refind-install.

* The RefindPkg.dec and RefindPkg.dsc files, used to enable compiling
  rEFInd in the traditional TianoCore way, come from
  https://github.com/snarez/refind-edk2.

Icons and graphics:
-------------------

* Most icons are derived from the AwOken icon set, version 2.5, by
  Alessandro Roncone (aka alecive); see
  http://alecive.deviantart.com/art/AwOken-163570862. Many of these icons
  have been scaled or altered in color from their original forms.

* The Debian icon is based on the SVG available from
  https://commons.wikimedia.org/wiki/File:Debian-OpenLogo.svg. I modified
  it to fit the general style set by the AwOken icons.

* The Elementary OS icon is based on the SVG available from
  https://commons.wikimedia.org/wiki/File:Elementary_logo.svg. I modified
  it to fit the general style set by the AwOken icons.

* Erik Kemperman provided the original (pre-0.9.3) rEFInd icon, which is a
  combination of the common refresh/reload icon and the search/find icon.
  For version 0.9.3, I created a new icon from Erik's basic design concept,
  but to match the AwOken flat-with-drop-shadow style.

* Additional icons were created by me.

Licensing for the filesystem drivers is complex. Three different licenses
apply to various parts of the code:

* Christoph Pfisterer's original file system wrapper (FSW) code is covered
  by a BSD-style license. Many of the source files with names that take the
  form fsw_*.[ch] are so licensed, but this is NOT generally true of
  filesystem-specific files (e.g., fsw_ext2.c or fsw_btrfs.c).

* Certain filesystem drivers are licensed under the GPLv2, either because
  they borrow code from the Linux kernel or because a developer (typically
  Oracle) applied the GPLv2 license to them. This is true of the ext2fs,
  ext4fs, ReiserFS, HFS+, and ISO-9660 drivers.

* At least one filesystem driver (Btrfs) uses code taken from GRUB, and so
  uses the GPLv3 (or later) license.

Note that the GPLv2 and GPLv3 are, ironically, not compatible licenses.
Thus, code from GPLv2 and GPLv3 projects should not be mixed. The BSD
license used by Pfisterer's original code is compatible with both versions
of the GPL, so the fact that both GPLv2 and GPLv3 drivers is built upon it
is OK. If you intend to contribute to this project's drivers or use the
code yourself, please keep this fact in mind.

The below was written by Christoph Pfisterer with respect to his original
code:

 File System Wrapper License
=============================

The various parts of the File System Wrapper source code come from
different sources and may carry different licenses. Here's a quick
account of the situation:

 * The core code was written from scratch and is covered by a
   BSD-style license.

 * The EFI host driver was written from scratch, possibly using code
   from the TianoCore project and Intel's EFI Application Toolkit. It
   is covered by a BSD-style license.

 * The ext2 and reiserfs file system drivers use definitions from the
   Linux kernel source. The actual code was written from scratch,
   using multiple sources for reference. These drivers are covered by
   the GNU GPL.

For more details, see each file's boilerplate comment. The full text
of the GNU GPL is in the file LICENSE_GPL.txt.
