"Bad Penguin" Overview
Prepared in 2000 by Antonio Gallo
=================================



Preamble
========
This document describe the idea and algorithms behind the 
"Bad Penguin" GNU/Linux distribution. Thru' 1997 to 2000
we put togheter a lot of ideas, scripts and binaries. Now
comes the time where everything has to be written from
scratch to integrate all the module each other into a better way.
In this document we give you an overview of all the BP
core components and their functionality.



Components
==========

- distribution, it contains the bootdisk image, the second stage setup
  program,
 a lot of packages, one or more pre-built kernels, and other 
  stuffs;

- bootdisk, it contains a kernel and the first stage setup program;

- libbadpenguin, it's a library with generic functions (IO, chains, ansi, 
  etc.);

- libhardware, it's a library to detect your hardware devices (disks, 
  cdroms, scsi, netcard,
 soundcards, videocards and more);

- libgringo, it's a library to develop programs that run both in CUI, 
  using ncurses,
 and/or in GUI, using GTK;

- device manager, it's a libgringo interface to handle module detection 
  and configuration;

- first stage setup program, it detect where is the distribution, then
  try to probe and load modules for each device using the distribution
  it self or prompting for the floppy with the modules, finally it mount
  again the distribution, if not found before, and run the second stage
  setup program;

- second stage setup program, it let you mangage your disks, let you
  edit a partition scheme for you system, let you select wich package
  to install, remove, restore or upgrade, and configure your system
  for the boot;

- package manager, it's a libgringo based interface to pkg-tools;


- pkg-tools, contains a set of command line tools to build, install 
  and manage
 packages assembled into the .bpp format;


- package-setup, it's the command line tool (like rpm, or dpkg) to
  deal with .bpp packages;


- gringosh, is a shell that read statements from the command line or 
  from a file 
in order to produce a form using libgringo; the form will 
  be interactive and will
 produce a dump of all the objects on the stderr, 
  this dump is usefull for shell
 script in order to build dinamic 
  interface for configuration scripts;


- service manager, a set of tools and libgringo utility to handle services, 
  devices
 and daemons;



Dependencies
============

pkg-tools -----> packages

libhardware ---> device manager -----> stage1
               ^
               |
libgringo -+---+> package manager ----> stage2
           |
           +----> gringosh -----------> configuration tools
           |                          ^
           \----> service manager ----|



Tools Status
============
- libbadpenguin .....: Ok
- badpenguin-scripts : Ok
- package-setup .....: 55% - (minor things to be done + bug fixing)
- package-tools .....: 48% - (package-create fixing + other tools)
- libhardware  ......:  Ok - support only PCI devices for now;
- libgringo  ........:  0% - redevelop the existing one; no NEW specs available;
- device manager ....:  5% - check for SCSI devices only for now;
- stage1 setup ......:     - prerequisite not ready; no NEW specs available;
- package manager... :     - prerequisite not ready; no NEW specs available;
- stage2 setup ......:     - prerequisite not ready; no NEW specs available;
- gringosh ..........:     - assigned to Gabriele; prerequisite not ready; 
- service manager... :     - prerequisite not ready; no NEW specs available;



Package Status
==============
- core ...........:  0% - kernel, modules, shell;
- base ...........:  0% - run level 1 without network;
- system .........:  0% - all devices configured;
- client .........:  0% - simple network services;
- workstation ....:  0% - X-Window;
- desktop ........:  0% - wm + gnome + tools;
- server .........:  0% - server tools;
- notebook .......:  0% - notebook tools;
- enterprise .....:  0% - performance tuning;
