nmon – distributing open source software done wrong

Recently, IBM have open sourced a Linux version of their ncurses-based performance monitor called nmon. Seeing the screeshots, I thought I might take a look..but I guess nmon is a nice example on how to not release an open source project.

Take a look:

  • there is no VCS
  • there are no tarballs. You have to download one huge source file and makefile separately
  • typing "make" results in building binary named nmon_power_rhel3
  • the makefile does not honor CFLAGS and since there is no configure, you have no way to tell what packages are you missing
  • there is a bunch of makefile targets in the form of:

    nmon_x86_64_opensuse11: $(FILE)
          cc -o nmon_x86_64_opensuse11 $(FILE) $(CFLAGS) $(LDFLAGS)
    nmon_x86_sles9: $(FILE)
          cc -o nmon_x86_sles9 $(FILE) $(CFLAGS) $(LDFLAGS)
    nmon_x86_rhel45: $(FILE)
          cc -o nmon_x86_rhel45 $(FILE) $(CFLAGS) $(LDFLAGS)
    nmon_x86_rhel52: $(FILE)
          cc -o nmon_x86_rhel52 $(FILE) $(CFLAGS) $(LDFLAGS)

  • makefile expects nmon.c but the file is actually called nmon-${version}.c, you have to manually rename it
  • bullet point No. 6 of their How to compile says "Yes, it’s that easy"

FAIL.

I don’t want to bash them for doing the right thing (kudos for opensourcing the tool!) but there’s certainly room for improvement…and I think one can see the closed source past of the project, where the project was not distributed in source form but rather binaries only.