-<li>Testing! rEFIt was complex enough that changes such as the ones I've
- made have the potential to disrupt the program's operation in
- unexpected ways. Since the initial 0.2.0 release, I've continued to add
- features to rEFInd, and every new feature is another way for bugs to
- get into the program. I can only test on a handful of systems with a
- limited number of configurations. Therefore, if you try rEFInd and run
- into bugs, please report them to me!</li>
-
-<li>Currently, rEFInd can detect whether it's compiled for <i>x</i>86 or
- <i>x</i>86-64 systems and displays this information in its "About"
- screen (AboutrEFInd() in main.c). I'd like to add detection for Itanium
- and ARM systems, but I have no way to test such changes.</li>
-
-<li>I have little talent with graphics manipulation programs, so rEFInd's
- boot logo, such as it is, is pretty weak. If you have artistic talent
- and would like to create a rEFInd logo, please feel free to send it to
- me. I won't make any final decision about changes until at least June
- 30 of 2012.</li>
-
-<li>rEFIt's original design, and hence rEFInd's design, enables easy
- theming by replacing icon files. If you'd like to design a new theme
- for rEFInd, feel free to submit it. I might or might not replace the
- icons it uses now (most of which come from the Oxygen Icons package),
- but I may provide a way to make selecting a theme from one of several
- installed themes easy, and provide links to themes on this Web site (or
- even host them on the project's Sourceforge page). For more information
- on designing themes for rEFInd, see the <a href="themes.html">Theming
- rEFInd</a> page.</li>
-
-<li>The code could be more flexible in its handling of the sizes of various
- graphical elements, and particularly drawn text. Prior to version
- 0.2.2, submenu text was invisible on UEFI-based PCs with 800x600 and
- smaller displays because of an inability to properly crop the graphics
- fields that hold the text. With version 0.2.2, I've put a band-aid on
- this problem by reducing the field size so that it now works on 800x600
- displays, but smaller displays still suffer from this problem. This is
- just an example of the inflexibility of certain layout issues within
- rEFInd.</li>
-
-<li>Text mode has a known display glitch: Not all loaders are shown until
- you use the cursor keys to move down the list, effectively "drawing"
- the "invisible" tags. This obviously needs to be fixed.</li>
-
-<li>Although the ICNS file format used by rEFInd supports multiple image
- sizes, if a size that rEFInd needs isn't present in the file, rEFInd
- can't use the icon. The ability to scale images to the desired size
- would be useful.</li>
-
-<li>EFI supports network boots. rEFInd doesn't, but it would be nice if it
- would.</li>
-
-<li>I would like to be able to specify the volume on which a boot loader
- resides using a partition GUID value, but extracting a GUID from the
- partition data is harder than extracting the volume's label or counting
- up the filesystem numbers.</li>
-
-<li>It would be useful to be able to specify paths to boot loaders and/or
- initial RAM disks relative to the rEFInd directory (or the boot
- loader's directory, in the case of initrds).</li>
-
-<li>There's currently no way to create a manual boot stanza for a
- BIOS-booted OS. This isn't a big priority for me personally, but I can
- see how it could be for some people.</li>
-
-<li>I'd like to find a way to get rEFInd to launch BIOS boot loaders on
- UEFI-based systems. This option currently works only on Macs—or
- at least, I've not gotten it to work on any of my UEFI-based PCs. (I
- have an idea about this, but haven't yet investigated it in detail. If
- you'd like to help on this, <a
- href="mailto:rodsmith@rodsbooks.com">e-mail me</a> for my
- thoughts.)</li>
-
-<li>The <a href="http://www.rodsbooks.com/gb-hybrid-efi/">Gigabyte Hybrid
- EFI</a> has a bug that causes the allegedly case-insensitive
- <tt>StriCmp()</tt> function to perform a case-sensitive comparison.
- This causes any number of bugs in file matching. For instance: Changing
- the case of icon filename extensions (or various other parts of icon
- filenames) causes icons to be replaced by ugly "generic" ones; and
- rEFInd sometimes appears in its own menu (the firmware sometimes
- returns an all-caps version of the filename, but other times returns
- the filename with the correct case, causing a mismatch if the path
- includes lowercase elements). Some of these problems can be overcome by
- converting both strings to be compared to one case before doing the
- comparison, but others aren't so easy, since I think <tt>StriCmp()</tt>
- is being called internally to the EFI. In any event, it'd be nice to
- fix some of these problems. OTOH, this is a workaround for a bug on
- just one EFI implementation, and a dismal one at that, so I'm inclined
- to just let it go.</li>
-
-<li>I've received queries about rEFInd's ability to work with Apple's
- whole-disk encryption scheme that's new with OS X 10.7. Unfortunately,
- I lack the hardware to test this.</li>
-
-<li>The Page Up and Page Down keys work in a rather strange way—a
- result of an admittedly quick fix on my part to a problem with a data
- structure that makes implementation of scrolling harder than it ought
- to be.</li>
-
-<li>The Shutdown option works correctly on Macs, but not on UEFI-based PCs.
- On such systems, Shutdown reboots the computer. This should be
- fixed.</li>
-
-<li>I'd like to find a way to enable users to enter customizations for boot
- options and then save them to the <tt>refind.conf</tt> file.</li>
-
-<li>It should be possible to override specific auto-detected boot loader
- settings—say, to disable one specific boot loader or change its
- icon.</li>
-
-<li>A way to read boot options set via <tt>efibootmgr</tt>, <tt>bless</tt>,
- or similar options from NVRAM to add to the boot set would be
- useful.</li>
-
-<li>A way to examine and change the NVRAM settings could be useful. This
- would enable a CD-based boot of rEFInd to fix a broken disk boot.
- Perhaps this could be done via a separate tool that could be launched
- much like the shell or <tt>gptsync</tt>.</li>
-
-<li>I'd like to find a way to have rEFInd re-scan removable media when
- they're inserted.</li>
-
-<li>Enabling users to eject removable media would be useful.</li>
-
-<li>I'd like to give the user the ability to set custom options on a
- per-boot basis, similar to what's possible in GRUB.</li>
-
-<li>The code is in need of review to search for memory leaks and similar
- problems.</p>
+<li><b>Tasks with which non-programmers can help:</b>
+
+ <ul>
+
+ <li>Testing! rEFIt was complex enough that changes such as the ones
+ I've made have the potential to disrupt the program's operation in
+ unexpected ways. Since the initial 0.2.0 release, I've continued to
+ add features to rEFInd, and every new feature is another way for
+ bugs to get into the program. I can only test on a handful of
+ systems with a limited number of configurations. Therefore, if you
+ try rEFInd and run into bugs, please report them to me!</li>
+
+ <li>rEFIt's original design, and hence rEFInd's design, enables easy
+ theming by replacing icon files. If you'd like to design a new
+ theme for rEFInd, feel free to submit it. I might or might not
+ replace the icons it uses now (most of which come from the Oxygen
+ Icons package), but I may provide links to themes on this Web site
+ (or even host them on the project's Sourceforge page). For more
+ information on designing themes for rEFInd, see the <a
+ href="themes.html">Theming rEFInd</a> page.</li>
+
+ </ul></li> <!-- Non-programmer help -->
+
+<li><b>Improvements to existing features:</b>
+
+ <ul>
+
+ <li>As described in reference to version 0.9.2 on the <a
+ href="revisions.html">Revisions</a> page, rEFInd includes a
+ delicate and hackish workaround to a problem introduced by Shim
+ 0.8. Developing a better solution to that problem is a high
+ priority.</li>
+
+ <li>The support for booting legacy (BIOS) OSes on UEFI-based PCs
+ currently has a number of limitations. Most importantly, it works
+ off of the list of boot devices stored in the computer's NVRAM. I'd
+ prefer to have it scan disks and partitions, as the Mac's legacy
+ boot support does. Also, the UEFI legacy boot code presents empty
+ optical drives and uses generic icons rather than OS-specific
+ icons.</li>
+
+ <li>rEFInd's <tt>Makefile</tt>s and, to a lesser extent, C code,
+ support <i>x</i>86, <i>x</i>86-64, and ARM64 CPUs. EFI is also
+ available for Itanium (IA-64) and ARM32 CPUs, so I'd like to add
+ this support.</li>
+
+ <li>Currently, rEFInd can detect whether it's compiled for <i>x</i>86,
+ <i>x</i>86-64, or ARM64 systems and displays this information in
+ its "About" screen (<tt>AboutrEFInd()</tt> in <tt>main.c</tt>). I'd
+ like to add detection for Itanium and 32-bit ARM systems, but I
+ have no way to test such changes.</li>
+
+ <li>Further to the preceding, rEFInd's GPT-scanning code (used to
+ extract partition names) includes assumptions about byte order, and
+ so will work only on little-endian CPUs such as the x86 and
+ x86-64.</li>
+
+ <li>A way to set the color of the font would be useful for theming
+ purposes.</li>
+
+ <li>The program's font features could be greatly improved by enabling
+ use of a standard font format, by enabling use of non-ASCII
+ characters, and by enabling use of variable-width as well as
+ monospace fonts.</li>
+
+ <li>The <tt>default_selection</tt> might be expanded to support some
+ form of specification of disk types, as in a special entry for any
+ optical disk or any external disk, no matter what its name is.</li>
+
+ <li>It would be useful to be able to specify paths to boot loaders
+ and/or initial RAM disks relative to the rEFInd directory (or the
+ boot loader's directory, in the case of initrds).</li>
+
+ <li>Currently the background for certain subscreens (such as the
+ information page or submenu listings) is a solid color based on the
+ upper-left corner of the screen. Having an option to support a
+ transparent background is desirable to some users.</li>
+
+ <li>When delivering rEFInd as a boot loader from a network server,
+ rEFInd is limited to its default options and can boot only local
+ OSes, not network OSes. The cause is that the server delivers a
+ single file, so rEFInd is divorced from its configuration and
+ support files.</li>
+
+ <li>A way to identify specific Windows versions and present unique
+ icons or change the text is desirable. Currently, a crude
+ distinction of XP and earlier vs. Vista and later is possible for
+ BIOS-booting on Macs, but no such distinction is made for EFI-mode
+ booting, and nothing finer-grained is attempted. Improvements will
+ probably require identifying unique features of each version's boot
+ loader files or boot sector code.</li>
+
+</ul></li> <!-- Improvements -->
+
+<li><b>Known bugs that need squashing:</b>
+
+ <ul>
+
+ <li>I've been receiving reports of blank screens when using rEFInd on
+ some recent Mac models. I've investigated this with the help of one
+ user, and I suspect that Apple has made changes to its firmware
+ that are likely to affect just about any EFI program. I don't have
+ a definitive solution, but at least one user has reported that
+ removing rEFInd's drivers has caused the problem to go into
+ remission.</li>
+
+ <li>Some EFIs have bugs that cause the allegedly case-insensitive
+ <tt>StriCmp()</tt> function to perform a case-sensitive comparison.
+ This causes any number of bugs in file matching. For instance:
+ Changing the case of icon filename extensions (or various other
+ parts of icon filenames) causes icons to be replaced by ugly
+ "generic" ones; and rEFInd sometimes appears in its own menu (the
+ firmware sometimes returns an all-caps version of the filename, but
+ other times returns the filename with the correct case, causing a
+ mismatch if the path includes lowercase elements). This problem is
+ worse when compiling rEFInd with GNU-EFI than with Tianocore.
+ Version 0.9.1 has made improvements on this score, but some issues
+ may continue to lurk.</li>
+
+ <li>The Shutdown option works correctly on Macs, but not on many UEFI-based
+ PCs. On such systems, Shutdown reboots the computer. This should be
+ fixed.</li>
+
+ <li>The media-ejection feature (F12) should be extended to work on
+ UEFI-based PCs and early Macs. At the moment, it relies on an
+ Apple-specific EFI extension, and I know of no standard EFI way to
+ do it.</li>
+
+ <li>A couple of Mac users have reported that the brightness-adjustment
+ features in Windows don't work when Windows is booted via rEFInd,
+ but that these features do work when Windows is booted via the
+ Mac's built-in boot manager. Unfortunately, I have no idea what
+ causes this problem, I have no Windows installation on my one
+ (elderly) Mac, and I have no way to debug it. Therefore, it's
+ unlikely that I'll be able to fix this problem myself; but if you
+ have the equipment and skill to do so, I'd be interested in
+ receiving a patch.</li>
+
+ <li>If you use a true MBR disk on a Mac to boot Windows or some other
+ BIOS-only OS, and if that disk has an extended partition, bogus
+ additional BIOS/legacy-bootable options may appear in the rEFInd
+ menu. The reason appears to be a bug in the handling of
+ extended/logical partitions in the <tt>refind/lib.c</tt> file, but
+ I haven't fully tracked it down.</li>
+
+ <li>The re-scan feature occasionally produces odd results, such as
+ ignoring new media or keeping old media that have been ejected.
+ This should be investigated and fixed.</li>
+
+ <li>The "scanning for new boot loaders" message that appears during the
+ re-scan feature is primitive. Some sort of dynamic icon would be
+ nice, but perhaps impractical, given the single-tasking nature of
+ EFI.</li>
+
+ <li>On my Mac Mini, launching a shell, returning, and performing a
+ re-scan causes the system to be unable to launch the shell again. I
+ have not observed this behavior on UEFI-based PCs. It seems to be
+ caused by a truncated DevicePath to the shell, which includes the
+ shell's pathname but not the device identifier.</li>
+
+ <li>When specifying a volume by name in <tt>dont_scan_dirs</tt>,
+ slashes are converted to backslashes in the specification but not
+ in the actual volume name read from disk. Thus, you can't specify a
+ volume by name if it includes a slash (as in <tt>Fedora
+ /boot</tt>). Workarounds are to rename the volume to omit the slash
+ and to use a filesystem number rather than a volume label.</li>
+
+ <li>The code is in need of review to search for memory leaks and
+ similar problems.</li>
+
+ <li>If the user has a Linux software RAID 1 array with Btrfs, HFS+,
+ or FAT filesystem, rEFInd will detect kernels or boot loaders in
+ RAID 1 twice. Checks to prevent this with ext2/3/4fs and ReiserFS
+ already exist; these checks could be expanded to block such
+ duplication with more filesystems.</li>
+
+ <li>Some Macs experience problems with waking up from suspend states
+ when rEFInd is installed. Unfortunately, I lack the hardware to
+ test and experiment with this (my only Intel-based Mac doesn't
+ exhibit this problem), so I can't fix this myself. <a
+ href="apple.stackexchange.com/questions/91139/why-does-my-mbp-sleep-on-mountain-lion-and-often-not-wake-up/91150#91150">Using
+ <tt>pmset</tt> to disable the <tt>autopoweroff</tt> option</a> is
+ <a
+ href="http://apple.stackexchange.com/questions/91529/macbook-air-not-waking-up-from-suspend-sleep-with-refind-boot-manager-installed">claimed
+ by some</a> to at least partially fix the problem, though. Using
+ the <tt>--ownhfs</tt> installation option may also help in some
+ cases.</li>
+
+ <li>If you activate BIOS-mode support on UEFI-based PCs, you may find
+ multiple copies of the BIOS-mode loaders added to your firmware's
+ boot manager. Only one copy shows up in rEFInd, though.</li>
+
+ </ul></li> <!-- Known bugs -->
+
+<li><b>New features I'd like to add:</b>
+
+ <ul>
+
+ <li>There's currently no way to create a manual boot stanza for a
+ BIOS-booted OS. This isn't a big priority for me personally, but I
+ can see how it could be for some people.</li>
+
+ <li>I'd like to find a way to enable users to enter customizations for
+ boot options and then save them to the <tt>refind.conf</tt> file.
+ One possible way to implement this would be to have manual boot
+ stanzas override auto-detected boot loader definitions for the same
+ boot loader file.</li>
+
+ <li>Along similar lines, some users have asked for a way to take
+ detected boot programs and create a set of manual boot stanzas for
+ them, so that they can be modified manually.</li>
+
+ <li>Support for touchscreens and/or configurable buttons for rEFInd's
+ actions would enable use of rEFInd on tablet computers that lack
+ complete keyboards.</li>
+
+ <li>The ability to rotate the display for users who rotate their
+ monitors or who use tablets would be helpful.</li>
+
+ <li>GRUB provides a configuration-file command called <tt>outb</tt>
+ that enables manipulating hardware registers. Something similar,
+ via the <tt>mm</tt> command, can be done in the EFI shell. I'd like
+ to add such a feature to rEFInd, since it enables doing things like
+ disabling one or another video output on Macs with two video
+ cards.</li>
+
+ <li>I have thoughts about creating an EFI configuration tool and
+ information utility—something to tell you about your hard
+ disks, enable you to manage MOKs, adjust boot loader priority in
+ the NVRAM, and so on. This would be useful in system maintenance
+ and in recovering from boot problems.</li>
+
+ <li>An installation tool for the EFI environment would be useful.
+ A simple EFI shell script might work, but because this function
+ requires access to the <tt>bcfg</tt> command, this would work
+ only from a version 2 shell or if <tt>bcfg</tt> were implemented
+ as a standalone program. Another alternative would be a program
+ written in C.</li>
+
+ <li>It should be possible to override specific auto-detected boot
+ loader settings—say, to disable one specific boot loader or
+ change its icon.</li>
+
+ <li>A GUI configuration tool for host OSes (Linux, OS X, Windows, etc.)
+ would be nice, but it's low on my personal priority list. If you'd
+ like to contribute, I prefer something written in a cross-platform
+ GUI toolkit, so that a single code base can be used on any of the
+ major OSes.</li>
+
+ </ul></li> <!-- New features -->
+
+<li><b>Improvements to the EFI drivers:</b>
+
+ <ul>
+
+ <li>Drivers for additional filesystems are desirable. Only XFS and JFS
+ are missing from the major Linux filesystems. UDF would also be a
+ welcome addition, as might drivers for other OSes (say, for the
+ BSDs, especially if BSD developers create a boot loader similar to
+ Linux's EFI stub loader). Also along these lines, adding drivers
+ for Linux LVM and RAID setups would be useful.</li>
+
+ <li>This may not be possible, or it may require a new driver, but a way
+ to have the drivers access files (like a Linux loopback mount) is
+ desirable.</li>
+
+ <li>When built with the GNU-EFI package, an attempt to load more than
+ one driver on my 32-bit Mac Mini causes the computer to hang. I do
+ <i>not</i> have this problem with 64-bit drivers on my UEFI-based
+ computers. I don't know if this is a 32-bit issue or a Mac issue.
+ This is <i>not</i> relevant if you're using my binary package,
+ since I build it with the TianoCore EDK2, and the drivers built in
+ that way don't exhibit this bug.</li>
+
+ </ul></li> <!-- Drivers -->
+
+<li><b>Improvements to <tt>gptsync</tt>, <tt>refind-install</tt>, or other
+ support tools:</b>
+
+ <ul>
+
+ <li>The <tt>gptsync</tt> program can return misleading error codes
+ under some circumstances, such as when it makes no changes to the
+ partition table. Fix this.</li>
+
+ <li>rEFInd's support for network booting is primitive and relies on the
+ external iPXE package. In my own testing, iPXE retrieves the
+ BIOS-mode boot loader from some servers that offer both, which
+ makes it useless on those networks.</li>
+
+ <li>A Mac-specific package is highly desirable.</li>
+
+ </ul></li>