Subject: SOC project proposal: easy updates
To: NetBSD tech-install mailing list <tech-install@netbsd.org>
From: Julian Coleman <jdc@coris.org.uk>
List: tech-misc
Date: 03/15/2007 03:42:27
Hi,

How does this sound as an SoC project proposal?

Thanks,

J

  - - 8< - - - - - - - - - - - - - Cut here - - - - - - - - - - - - - >8 - -

  Easy updates for NetBSD systems

  Project summary:
    Estimated difficulty: Medium
    Person/group of contact: Julian Coleman <jdc AT netbsd.org>
    Person/group of contact: tech-misc mailing list
    Person/group of contact: tech-install mailing list

  Add the ability to easily update NetBSD systems with security patches and
  OS updates.

  This project involves work in two major areas.  The first area is the
  NetBSD build process, where the framework for updates needs be added
  into the build process.  The second area is the client side, where the
  mechanisms for discovering and installing updates need to be written.

  There is unfinished work where all the installed files in the NetBSD
  system are tagged with a system package (syspkg) name.  This work needs
  to be finished, so that all installed system files are recorded in a
  similar fashion to the way that pkgsrc files are recorded.  This will
  be an additional part of the NetBSD build process.

  For system updates, for example the change from 3.0 to 3.0.1 or 3.1, not
  all the installed system files are updated.  The NetBSD build process
  should be extended to compare the results of the "base" system build
  (e.g. 3.0) and the results of the "update" system build (e.g. 3.0.1).
  This comparison will generate a collection of system packages that need
  to be installed in order to update the system to the newer version.
  Security patches, which usually affect a small number of system packages
  could be handled in the same way.  For ease of installation and
  administration, each update should be a superset of the previous ones.

  On the client side, a tool needs to be written to handle system package
  updates.  This could be an extension to the existing `sysinst` program.
  The tool needs to compare the list of currently installed system packages
  with the list of newer system packages available for download.  For
  example, the program could determine that the the base system is 3.0 and
  discover that there are updates available to 3.0.1, 3.0.2 and 3.1, as well
  as security patches for 3.0.2 and 3.1.  The way in which this information
  is generated for the client tool needs to be determined, as it needs to an
  integral part of the build process, above.

  The client tool needs to be able to safely backup the existing system
  packages and install the new versions.  When the user is happy with the
  new packages, the previous versions can be removed.

  Project deliverables:
    build system: "database" of installed system packages, with versions
    build system: ability to compare two NetBSD builds to determine which
      system packages are changed
    build system: creation of downloadable system package "update list" for
      updated packages
    client tool: query and compare installed system package list and update
      list(s) from server(s)
    client tool: backup obsoleted system packages, download and install
      updated system packages

  Background investigations:
    NetBSD build process
    NetBSD syspkg infrastructure
    pkgsrc databse of installed files and packages
    Other OS update mechanisms (e.g. FreeBSD)

  Knowledge required:
    C programming
    Makefile programming
    Shell script programming

  - - 8< - - - - - - - - - - - - - Cut here - - - - - - - - - - - - - >8 - -

-- 
  My other computer also runs NetBSD    /        Sailing at Newbiggin
        http://www.netbsd.org/        /   http://www.newbigginsailingclub.org/