NIH is a package management tool for pkgsrc.
NIH means Not Invented Here, yes, I'm talking about NIH syndrome :-)

Why not:

  pkg_add/pkg_delete:
    - These are low level tools and cannot be used for handling
      hundreds of packages efficiently.

  pkg_chk:
    - I was using pkg_chk for several years and it's quiet good tool.
      But it lacks some useful features. It is also extreammly slow.

  pkg_rolling-replace:
    - Replacing packages "in place" is not safe.

  pkg_comp:
    - It works only on NetBSD
    - It doesn't allow to install or update packages, it only builds them

  pkgin:
    - Package manager written in "C"? No, thanks.
      "C" is a the worst programming language I've ever
      known for this task. All other reasons are secondary.
    - sqlite is absoletely useless for package management.

  pkgmanager:
    - It is dead

Why NIH:

  - I've got pkg_summary-utils, a big collection of powerful scripts
    for managing pkg_summary files. I've been developing it since 2007
    or so and I think now it is ready to be a foundation for package
    manager.

  - I've got distbb, very powerful and flexible bulk build tool.  For
    several years I've been using it for running bulk builds on Linux
    and NetBSD and I consider it rather stable.

  - I've got pkg_status, small tool for checking status of
    installed packages against pkg_bin_summary.txt or pkgsrc source tree.
    It also provides other features usually implemented by
    full-featured package management tools. It is very small and
    stable.

  - I've got pkg_digger and pkg_online_find, very powerful and quality
    tools for searching on packages. They are also small and stable.

  - NIH = pkg_summary-utils + distbb + pkg_status + pkg_digger

Plans:
  - To provide features implemented in pkgchk, pkgin, pkg_comp,
    pkg_leaves, pkgfind, pkg_status, pkg_online-client and
    pkg_rolling-replace.
  - Support for both binary and sources-based upgrade
  - Less than 4000 lines of code
  - No sqlite or other databases.
  - Support for PKG_OPTIONS and multivariant packages
    (Python, Apache, PHP, Ruby)
  - No dependencies other than
      a) pkg_summary-utils, runawk and pipestatus for basic functionality
      b) paexec and libmaa for running things in parallel
         using all available CPUs
      c) distbb (plus paexec and libmaa) for building packages from sources
      d) dict-client (plus libmaa) and netcat for searching
         via pkg_online server
  - Shell, AWK, RunAWK, UNIX tools and nothing else.
  - No libnih.a
