Proposal to replace Debian's install-info with GNU's install-info
=================================================================
Nicolas François <nicolas.francois@centraliens.net>
Norbert Preining <preining@debian.org>
Nathanael Nerode <neroden@fastmail.fm>
debian-dpkg@lists.debian.org
texinfo@packages.debian.org

Goals
=====
 * Replace dpkg's install-info by the GNU's install-info
 * Ease the recovery of a corrupted info dir file by allowing a generation
   from scratch

Rational
========
 * info files are mostly used by GNU packages. The format of these files
   is described by the GNU texinfo package, and the support for new
   features is added to the GNU's install-info (ginstall-info on Debian),
   and not in dpkg's install-info (e.g. support for documents with more
   than one section: #139569).
 * /usr/share/info/dir integrates information from different packages. A
   package can break what has been registered by another one, without any
   possibility to fix it (itself). Thus it would be better to be prepared
   for regenerating a dir file from scratch at any time.

Transition proposal
===================
 + Changes in dpkg
   - replace dpkg's install-info by a script which just issues a warning,
     or exit silently.
     This script could be removed for Lenny+1 or 2.
     install-info should no more be essential, it is only needed when the
     info viewer is installed to search the info pages.

 + Changes in texinfo
   - a new install-info package replaces dpkg's install-info
   - This install-info should support the current dpkg's install-info
     options (i.e. no failures, but not necessarily registering the info
     file)
     IMO, this install-info should be compatible with the GNU's install
     info, and when it detects that it is used by a old Debian package, it
     should do nothing (or just warn and recommend using update-info-dir,
     see below).
      * this should provide a compatibility with packages not installed
        from a Debian package (make && make install)
      * and should not block the installation of old packages
      * full compatibility with current dpkg's install-info would be nice,
        but is not required
   - Add an update-info-dir script. This script should just delete the dir
     file and then call the GNU's install-info with all the info files.
     (see also the previous mails from Ian Zimmerman, and his patch for
     --generate in install-info)

   - When installed for the first time (or first time >= version xxx),
     it should call update-info-dir.
     * There may be an issue with local softwares (not Debian packages)
       => maybe add a debconf question / NEWS entry?
     * What options should be used when installing the old info files?
   - Add support for multiple dir files in the info viewer.
     This would permit update-info-dir to use the
     --dir-file /usr/share/info/debian-dir option.
     /usr/share/info/dir (and /usr/local/share/info/dir) could be used for
     non Debian's info files.
   - Fix some regressions from dpkg's install-info.
     (IIRC an alignment regression was mentioned with GNU's texinfo)

 + Changes in packages installing info files
   - Note: According to an i386 Contents file, there are 2220 info
     files, in 403 packages
   - These packages should just drop their info files in /usr/share/info,
     and call the update-info-dir script if present (postinst and prerm).
     They could suggest/recommend the info package.
   - Packages using dh_installinfo should just depends on a new debhelper
     version.
   - The info files must be self sufficient (e.g. the section must be
     specified in the info file), so that they do not require any special
     install-info options when they are registered.
   - A review of all these packages (maintainer scripts & info files) will
     be needed.

 + Changes in dh_installinfo
   - Instead of calling install-info, test if update-info-dir is present,
     then call it. Same on postinst and prerm.

   dh_installinfo is very simple, so I don't think more changes are
   needed.

 + manuals
   - policy
     * the policy mentions install-info, and has a section about Info
       documents. Some changes may be required (e.g. require that the
       info files are self sufficient, and mention update-info-dir)
   - Other documents?

Note: In this proposal, I did not consider an issue that some info files of
old packages are not installed with the new install-info.

Timeline
========
These steps do not need synchronization, and could start right now.
 * better analysis for the requirements of the install-info script in texinfo
 * packages could also fix their info file, in order to avoid using
   install-info options (e.g. many do not specify the section)
   - patches could be sent to all packages with info file which use
     install-info options
 * prepare a proposal for the policy

The following steps probably need to happen in that order:
 * upload texinfo with install-info and update-info-dir
 * upload debhelper.
 * new policy (I don't think there is a strong need for synchronization of
   this step)
 * file bugs with blockers to keep track of the transition
 * fix all packages (for most of them, it will be just increasing the
   debhelper version in the build dependencies)
 * upload empty install-info in dpkg (no need to wait for the end of the
   previous step).


