[Haskell-cafe] The Future of MissingH

John Goerzen jgoerzen at complete.org
Fri Nov 24 11:32:55 EST 2006


Josef Svenningsson posted a comment on my blog today that got me to
thinking.  He suggested that people may be "intimidated by the size of
MissingH, confused by the undescriptive name, and don't quite know what's
in there."  And I think he's right.

I've been passively thinking about what MissingH should be for awhile now,
and wonder if you all would have some suggestions.

First, let me back up and describe a bit of what MissingH is.  It gets its
name because I think that it has useful functions that are "missing" from
the standard Haskell libraries.  But I can see how it's not very

The major features are:

 * A general-purpose modular logging infrastructure

 * A virtual filesystem component (similar to VFS in Gnome, but written in

 * A configuration file parser, compatible with Python's and Perl's, which
   can also modify and generate config files and do variable interpolation

 * A bunch of tools for setting up pipes to/from processes

 * Tools to format numbers as quantities, with default configs for
   the SI system (1000-based) and binary system (1024-based)

 * Tools to track the progress of long-running actions and display a
   status bar on the terminal

 * Pure-Haskell un-gzip code, *DBM infrastructure, etc

 * Assorted list, string, regexp, bit, pointer, etc. utilities

 * MIME and email parsers.

I wrote most of the code myself, but did pull some large chunks from
others where licenses were compatible.

The API reference is at http://gopher.quux.org:70/devel/missingh/html/index.html

So, some of the questions are:

Should this all be one library?

  I initially wrote it that way to make resolving dependencies easier
  for end users.  Also, it still has utility because modules make use
  of each other's features.  The list and string functions are used
  almost everywhere, for instance.  HVFS support is also
  fairly pervasive.

Should the module naming scheme be changed?

  Modules are currently named things like MissingH.List, MissingH.IO.HVFS,
  MissingH.ProgressMeter, etc.

  I guess these could go to System.ListExt, System.IO.HVFS,
  System.Console.ProgressMeter, etc.

Could, and should, any of this be integrated into the Haskell libraries

  (That set of libraries formerly known as fptools)

  A few bits of code have already found their way into them.  But
  I bet there could be a lot more.  Maybe even the majority of it.

How could greater community participation be encouraged, while still
encouraging quality control?

  I have received some very good contributions to MissingH from people,
  and that's been great.  I've also received some that just aren't that
  great -- they don't have Haddock docs, the code is opaque, they
  don't come with unit tests, etc.  

  But by and large, I've been maintaining it mostly myself.  Whenever I
  write some code, I think about whether this is generic code that
  could be useful in other projects.  If so, I consider whether it would
  be appropriate for MissingH (and it usually is).

  It would be wonderful if others would be interested in contributing code
  that solves some need as well.

  There is a public darcs repo already, and I have received some darcs
  patches from people (thanks!)

  I'm not trying to rid myself of MissingH, but I think that it could
  be a nice resource for small tools from the entire community, if we can
  maintain a structure and QA footprint to it.

What else should be done to make this a valuable resource for Haskell
programmers?  And a showcase for what is possible with Haskell?

  The floor's open...


-- John

More information about the Haskell-Cafe mailing list