Differences between revisions 19 and 102 (spanning 83 versions)
Revision 19 as of 2005-12-03 04:45:02
Size: 7983
Editor: KenshiMuto
Comment: Kenshi created trial TTF udeb file.
Revision 102 as of 2009-09-14 14:23:54
Size: 8076
Editor: GeoffSimmons
Comment: DebianBug, DebianPkg. sdljump is now gnujump.
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
Overview of open issues and things to be done for the ["DebianInstallerGUI"]. == Introduction ==
This is an overview of some of the bugs and issues left open or workarounded only in Etch and that i hope will be fixed later in a point release.
Line 3: Line 4:
See also open [http://bugs.debian.org/cdebconf-gtk-udeb bug reports against cdebconf-gtk-udeb]. Items tagged as '''''pointrelease''''' are desiderata for next Etch pointrelease (mainly bugfixes), all other items refer to issues which will be addressed in Lenny only.
Line 5: Line 6:
= Issues = This is no way meant to be an exhaustive list of every bug somehow related to the graphical installer: for a complete buglist see packages DebianBug:cdebconf-gtk-udeb, DebianBug:directfb, [[DebianBug:libdirectfb-1.0-0-udeb]], [[DebianBug:libgtk-directfb-2.0-0]], [[DebianBug:libgtk-directfb-2.0-0-udeb]], DebianBug:rootskel, DebianBug:rootskel-gtk.
Line 7: Line 8:
There is currently one remaining issue that blocks including the graphical installer from being included in the main installer build infrastructure: udeb dependency resolution. <<TableOfContents(3)>>
Line 9: Line 10:
== udeb dependency resolution == == Architecture independent issues ==
 * Develop real graphical interfaces for components where that adds value. Main example is partitioning.
  * For partitioning one option is porting gparted to C. Work on this was already started by [[http://lists.debian.org/debian-boot/2006/06/msg01358.html|Xavier Oswald]]. Current code is available [[http://svn.debian.org/wsvn/parted/gdisktool/trunk/?rev=0&sc=0|on alioth]].
 * Try to find a way to present information in columns despite using a proportional font. This may require extensions to the debconf protocol. This should also be generally useful for frontends used in the installed system for configuring packages. '''done'''
 * Input is not handled in UTF-8 mode, some letters cannot be correctly typed. DebianBug:401296 - '''done'''
 * Support for dead keys was added in DFB post 0.9.25, but GTKDFB does not handle deadkeys anyway, so backporting the DrectFB patch is useless ATM DebianBug:394871 - '''done'''
 * Plans for Lenny are having cdebconf (C implementation of debconf used in the d-i) replacing debconf (DebianBug:328498) in regular debian systems: this will require cdebconf's building system and the GTK frontend being able to build atop of both gtk/directfb nad gtk/x11, see also DebianBug:402127 - '''done'''
Line 11: Line 18:
During a build, not all dependencies between udebs can be resolved if all udebs are taken from the official mirrors. The current workaround is to copy some udebs to "localudebs", but this is not acceptable for the main build infrastructure (see also [http://lists.debian.org/debian-boot/2005/10/msg00955.html this thread]). == Per-architecture issues ==
We're trying to inventory bugs affecting the g-i on a per-architecture base, architectures considered here are i386, PowerPC, AMD64 .
Line 13: Line 21:
The problem occurs if some udebs depend on a normal library package (libfoo.deb) while other udebs depend on the corresponding udeb (libfoo.udeb). === i386 specific ===
 * For historical reasons the vga16fb module is still loaded even if a framebuffer device is already provided by vesafb: this forced us to check that DirectFB actually accesses the framebuffer device provided by vesafb , better would be not starting at all two fb devices concurrently (this also wastes little memory). DebianBug:401685 - '''done'''
 * Some popular video chips, like intel i810, are not supported by the vesafb framebuffer module and hw-specific modules are not available in the installer, so we cannot currently support those chips. We need to either build into the kernel or provide as loadable modules hw specific framebuffer modules, and load them on the base of the found hardware DebianBug:405737.
Line 15: Line 25:
There are two known solutions for this issue.
 1. Change dependencies in udebs in such a way that they all depend in the same manner. This is what currently happens for the main installer. Problem with this solution is that the udebs involved are not maintained by the d-i team. Also, this would be ignoring the structural problem.
 1. Fix the toolchain (mainly dpkg-dev) to improve automatic dependency determination when udebs are build. A [http://lists.debian.org/debian-dpkg/2005/06/msg00198.html patch] for this has been proposed but has not yet been implemented.
=== AMD64 specific ===
 * '''pointrelease''' The console switching problem on AMD64 DebianBug:373253 was worked around by adding libgcc1.so.1 via the EXTRAFILES option available in the installer, proper fix requires adding that library via an udeb.
Line 19: Line 28:
== Other issues ==
 * Frontend crashes when user switches to a different virtual console while the frontend is busy ([http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=339379 #339379]). If the frontend is waiting for input, console switching works.
 * Option in the main menu to exit to a shell does not work ([http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=339855 #339855]).
=== PowerPC specific ===
Line 23: Line 30:
= TODO =  * DirectFB linux_input input module cannot correctly detect the keyboard on most PowerMacintosh models, so we had to disable it relying on the legacy ps2mouse and keyboard input dr.<<BR>>This required the inclusion into rootskel and rootskel-gtk packages of some ad hoc startup scripts that take care of picking the correct DirectFB input driver depending on the host architecture.<<BR>>A prper addressing of this issue requires fixing the linux_input module so that we can switch to linux_input input module for all supported architectures and drop some startup scripts.<<BR>><<BR>>
 * Another issue is related to the fact that apparently DirectFB cannot run on top of the nvidia framebuffer: no more information are available because not much light was made on this problem yet.<<BR>><<BR>> This thread (DebianBug:422146) is about the two above mentioned issues, while a g-i on PowerPC compatibility list can be found here [[DebianInstaller/GUIPowerPC]]: feel free to add entries for any configuration that's not yet listed.<<BR>><<BR>>
 * The framebuffer device has a fixed size that cannot be set at boot like it's done on i386, so the GTK frontend should adapt itself to go "fullscreen". DebianBug:401693
Line 25: Line 34:
== Porting ==
The graphical version of the installer is currently available for Intel x86, AMD64 and PowerPC. The PowerPC port probably needs work to get different types of system correctly supported. Other architectures the graphical installer could be ported to include Sparc, Alpha and HPPA.
== Ideas for future development ==
Line 28: Line 36:
== Fonts ==
One of the main advantages of the graphical version of the installer is that it can support languages that use combining characters. We are currently using mainly TTF fonts, with the exception of Japanese and Chinese.
=== Porting ===
Line 31: Line 38:
Fontconfig is used for font management. fc-cache files are automatically generated at startup. The graphical version of the installer is currently available for Intel x86, AMD64 and PowerPC. The PowerPC port needs work (DebianBug:341597) to get different types of system correctly supported. Other architectures the graphical installer could be ported to include Sparc, Alpha and HPPA.
Line 33: Line 40:
The following issues are open with respect to fonts:
 * Not all fonts needed for the graphical installer have yet been packaged into udebs (needed for inclusion in the official Etch release).
 * Translators should check if their languages are displayed correctly and check for missing characters. Special attention should be given to Indic languages, Arabic and Hebrew. Help from translators may be needed to decide the optimal font for the installer (taking into consideration both quality and space required).
 * There are [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=341229 known problems] for Indic languages and Arabic. These need to be specified and traced. Possibly extra software is needed for correct display.
 * Ideal would be to have each character we need present in only one font. The current fonts have a lot of overlap which wastes space.
 * Display has to be good both when no language has yet been selected (language selection screen) and when it has.
 * Possibly font configuration can be improved. It would be very nice if we could influence which font is used for a specific language.
=== Fonts ===
Line 41: Line 42:
=== Requirements for packaging fonts ===
 * Total amount of space used for fonts should be minimized.
 * Only font files that are actually used in the installer should be included.
 * Minimize overlap between fonts. Is it possible to "strip" characters from a font?
For font information, please see [[DebianInstaller/GUIFonts]]
Line 46: Line 44:
Kenshi Muto and Hideaki Iwai created TTF shirink tool, based on [http://fontforge.sourceforge.net/ fontforge]. Their subject is to make small TTF udeb which is specialized for d-i 1st stage.
See http://kmuto.jp/debian/mtu/pool/main/t/ttf-compact-fonts/
(Or you can get ttf-compact-fonts binary/source by apt via "deb-src http://kmuto.jp/debian/mtu unstable main")
=== Usability ===
Line 50: Line 46:
=== Overview of fonts currently used ===
 * Base characters (Latin) are taken from ttf-freefont (existing udeb).[[BR]]This font was selected because it looks quite good, has a character set that gives good support for a lot of languages and was already packaged as an udeb. A negative aspect is that it also has partial/limited/ugly support for other scripts/languages and it would be better to only have specialized fonts for those.
 * For Indic languages we currently include fonts from ttf-devanagari-fonts and ttf-punjabi-fonts (both maintained by Jaldhar H. Vyas <jaldhar@debian.org>)
   * Gargi_1.7.ttf (ttf-devanagari-fonts)
   * chandas1-1.ttf (ttf-devanagari-fonts)
   * lohit_hi.ttf (ttf-devanagari-fonts)
   * Saab.ttf (ttf-punjabi-fonts)
   * lohit_pa.ttf (ttf-punjabi-fonts)
 * For Arabic we currently include fonts from ttf-arabeyes (maintained by Mohammed Elzubeir <elzubeir@arabeyes.org>)
   * ae_Tholoth.ttf
 * For Chinese and Japanese we currently use bitmap fonts from xfonts-wqy (maintained by Carlos Z.F. Liu <carlosliu@users.sourceforge.net>). Initially we used ttf fonts, but it turns out that bitmap fonts are a lot more readable (and smaller in size).
 * For Korean we currently include fonts from ttf-unfonts (maintained by Changwoo Ryu <cwryu@debian.org>)
   * !UnDotum.ttf
   * !UnDotumBold.ttf

'''Note''' This is just an initial collection we've put together. There are known issues for some languages and possibly additional fonts are needed. It also is very much possible this is not the optimal mix of fonts for the graphical installer.

Information on how to play around with fonts is included in ["DebianInstallerGUIBuild"].

== Usability ==
 * Screen resolution.
   * Currently fixed at 800x600. Should be made flexible (adapt to resolution set by system or user).
   * Interface should adapt itself so that text blocks are never too wide for optimal readability.
 * Improve accessability (for the visually handicapped). One way to do this is to support different themes (color schemes). (Note: should not lead to a major increase in initrd size.)
 * Progress bar in separate window.
 * Alternative (graphical) ways to start a shell or browse log files.
 * Interface should adapt itself so that text blocks are never too wide for optimal readability.
 * Improve accessability (for the visually handicapped). One way to do this is to support different themes (DebianBug:339735) (color schemes). (Note: should not lead to a major increase in initrd size.)
 * Alternative (graphical) ways to start a shell or browse log files - '''done'''
 * Logfile-viewer (in split window) in expert mode as default, if screen resolution permits
Line 79: Line 53:
== Reduce size of initrds == === Interface design ===
Line 81: Line 55:
The initrds are currently very large which also results in fairly high memory requirements to run the graphical installer. Size has thus far not been a major concern, our focus has been on getting things working. Most of the work on the graphical side has been done by Eduardo Silva. He has set up a [[http://www.geocities.com/jobezone/d-i_gtk.html|webpage]] with images he designed and some comments about possible future changes.
Line 83: Line 57:
Options to reduce initrd size.
 * Library reduction for graphical libraries.
 * Remove unused files from udebs.
 * Reduction of space used by fonts (see above).
=== Games ===
Line 88: Line 59:
It would be nice for g-i to have some games to help kill time during lengthy install sessions.
Line 89: Line 61:
== Migrate from gtk+-directfb-2.0.9 to gtk+-directfb-2.8.3 ==
The udebs for gtk+-directfb are based on a [http://www.directfb.org/downloads/Libs/gtk+-directfb-2.0.9-2.tar.gz set of sources]
released in Apr 2003; it's now possible to build a set of libraries based on gtk+2.8.3
which was released around Oct 2005. The main problem is that [http://wiki.debian.org/DebianInstallerGUIBuild building] is rather tricky, and there are no pre-patched sources available from upstream. Upstream author is now working on [http://lists.freedesktop.org/archives/cairo/2005-November/005625.html including directfb backend into Cairo main line] as a first step; [http://mail.gnome.org/archives/gtk-devel-list/2005-November/msg00057.html inclusion of gdk-directfb code into gtk+ tree] should follow then.
Once upstream libraries will be ready to be used, they'll have to be packaged into udebs before we can use them in the installer.
The [[http://lists.debian.org/debian-boot/2007/08/msg00560.html|cdebconf-gtk-tetris]] udeb is a start, but having a separate entry in the menu does not seem the best way to do it.

Other candidates for inclusion need to have a limited set of dependencies, preferable only those that are already included in g-i, use directfb for graphics, eventually using SDL, sound should be optional, and not need more input device than already detected by g-i.

This excludes c++ implemented games linked against libstdc++, or other language whose runtime is not-available in g-i, as well as all those that link with the gnome libs or other such. A preliminary list follows, out of them, icebreaker sounds like a very good candidate. It is only depending on libsdl, easy to understand, using only the mouse and not the keyboard, and not controversial in any way.

 * [[DebianPkg:unstable/games/airstrike|airstrike]] - 2d dogfight game in the tradition of 'Biplanes' and 'BIP'
 * [[DebianPkg:unstable/games/atris|atris]] - tetris-like game with a twist for Unix
 * [[DebianPkg:unstable/games/barrage|barrage]] - Rather violent action game
 * [[DebianPkg:unstable/games/black-box|black-box]] - Find the crystals
 * [[DebianPkg:unstable/games/bomberclone|bomberclone]] - free Bomberman-like game
 * [[DebianPkg:unstable/games/bugsquish|bugsquish]] - Bugs are trying to suck blood out of your arm!
 * [[DebianPkg:unstable/games/bumprace|bumprace]] - 1 or 2 players race through a multi-level maze
 * [[DebianPkg:unstable/games/bygfoot|bygfoot]] - soccer (football) manager game featuring the most important European leagues
 * [[DebianPkg:unstable/games/circuslinux|circuslinux]] - The clowns are trying to pop balloons to score points!
 * [[DebianPkg:unstable/games/dangen|dangen]] - shoot 'em up game where accurate shooting matters
 * [[DebianPkg:unstable/games/gnujump|gnujump]] - (formerly sdljump) Jump up in a sinking tower (a first [[http://lists.alioth.debian.org/pipermail/pkg-games-devel/2006-February/000349.html|unofficial (and untested) udeb]] was already made by Bas Wijnen <shevek at fmf.nl> )
 * [[DebianPkg:unstable/games/icebreaker|icebreaker]] - Break the iceberg

Introduction

This is an overview of some of the bugs and issues left open or workarounded only in Etch and that i hope will be fixed later in a point release.

Items tagged as pointrelease are desiderata for next Etch pointrelease (mainly bugfixes), all other items refer to issues which will be addressed in Lenny only.

This is no way meant to be an exhaustive list of every bug somehow related to the graphical installer: for a complete buglist see packages cdebconf-gtk-udeb, directfb, libdirectfb-1.0-0-udeb, libgtk-directfb-2.0-0, libgtk-directfb-2.0-0-udeb, rootskel, rootskel-gtk.

Architecture independent issues

  • Develop real graphical interfaces for components where that adds value. Main example is partitioning.
    • For partitioning one option is porting gparted to C. Work on this was already started by Xavier Oswald. Current code is available on alioth.

  • Try to find a way to present information in columns despite using a proportional font. This may require extensions to the debconf protocol. This should also be generally useful for frontends used in the installed system for configuring packages. done

  • Input is not handled in UTF-8 mode, some letters cannot be correctly typed. 401296 - done

  • Support for dead keys was added in DFB post 0.9.25, but GTKDFB does not handle deadkeys anyway, so backporting the DrectFB patch is useless ATM 394871 - done

  • Plans for Lenny are having cdebconf (C implementation of debconf used in the d-i) replacing debconf (328498) in regular debian systems: this will require cdebconf's building system and the GTK frontend being able to build atop of both gtk/directfb nad gtk/x11, see also 402127 - done

Per-architecture issues

We're trying to inventory bugs affecting the g-i on a per-architecture base, architectures considered here are i386, PowerPC, AMD64 .

i386 specific

  • For historical reasons the vga16fb module is still loaded even if a framebuffer device is already provided by vesafb: this forced us to check that DirectFB actually accesses the framebuffer device provided by vesafb , better would be not starting at all two fb devices concurrently (this also wastes little memory). 401685 - done

  • Some popular video chips, like intel i810, are not supported by the vesafb framebuffer module and hw-specific modules are not available in the installer, so we cannot currently support those chips. We need to either build into the kernel or provide as loadable modules hw specific framebuffer modules, and load them on the base of the found hardware 405737.

AMD64 specific

  • pointrelease The console switching problem on AMD64 373253 was worked around by adding libgcc1.so.1 via the EXTRAFILES option available in the installer, proper fix requires adding that library via an udeb.

PowerPC specific

  • DirectFB linux_input input module cannot correctly detect the keyboard on most ?PowerMacintosh models, so we had to disable it relying on the legacy ps2mouse and keyboard input dr.
    This required the inclusion into rootskel and rootskel-gtk packages of some ad hoc startup scripts that take care of picking the correct DirectFB input driver depending on the host architecture.
    A prper addressing of this issue requires fixing the linux_input module so that we can switch to linux_input input module for all supported architectures and drop some startup scripts.

  • Another issue is related to the fact that apparently DirectFB cannot run on top of the nvidia framebuffer: no more information are available because not much light was made on this problem yet.

    This thread (422146) is about the two above mentioned issues, while a g-i on PowerPC compatibility list can be found here DebianInstaller/GUIPowerPC: feel free to add entries for any configuration that's not yet listed.

  • The framebuffer device has a fixed size that cannot be set at boot like it's done on i386, so the GTK frontend should adapt itself to go "fullscreen". 401693

Ideas for future development

Porting

The graphical version of the installer is currently available for Intel x86, AMD64 and PowerPC. The PowerPC port needs work (341597) to get different types of system correctly supported. Other architectures the graphical installer could be ported to include Sparc, Alpha and HPPA.

Fonts

For font information, please see DebianInstaller/GUIFonts

Usability

  • Interface should adapt itself so that text blocks are never too wide for optimal readability.
  • Improve accessability (for the visually handicapped). One way to do this is to support different themes (339735) (color schemes). (Note: should not lead to a major increase in initrd size.)

  • Alternative (graphical) ways to start a shell or browse log files - done

  • Logfile-viewer (in split window) in expert mode as default, if screen resolution permits
  • Interface design.
  • Create custom plug-ins for cdebconf to improve handling of some dialogs and make optimal use of possibilities offered by the graphical environment.

Interface design

Most of the work on the graphical side has been done by Eduardo Silva. He has set up a webpage with images he designed and some comments about possible future changes.

Games

It would be nice for g-i to have some games to help kill time during lengthy install sessions.

The cdebconf-gtk-tetris udeb is a start, but having a separate entry in the menu does not seem the best way to do it.

Other candidates for inclusion need to have a limited set of dependencies, preferable only those that are already included in g-i, use directfb for graphics, eventually using SDL, sound should be optional, and not need more input device than already detected by g-i.

This excludes c++ implemented games linked against libstdc++, or other language whose runtime is not-available in g-i, as well as all those that link with the gnome libs or other such. A preliminary list follows, out of them, icebreaker sounds like a very good candidate. It is only depending on libsdl, easy to understand, using only the mouse and not the keyboard, and not controversial in any way.

  • airstrike - 2d dogfight game in the tradition of 'Biplanes' and 'BIP'

  • atris - tetris-like game with a twist for Unix

  • barrage - Rather violent action game

  • black-box - Find the crystals

  • bomberclone - free Bomberman-like game

  • bugsquish - Bugs are trying to suck blood out of your arm!

  • bumprace - 1 or 2 players race through a multi-level maze

  • bygfoot - soccer (football) manager game featuring the most important European leagues

  • circuslinux - The clowns are trying to pop balloons to score points!

  • dangen - shoot 'em up game where accurate shooting matters

  • gnujump - (formerly sdljump) Jump up in a sinking tower (a first unofficial (and untested) udeb was already made by Bas Wijnen <shevek at fmf.nl> )

  • icebreaker - Break the iceberg