David A. Wheeler's Blog

Mon, 13 Apr 2009

Releasing FLOSS Software

If you’ve written (or started to write) some Free/Libre/Open Source Software (FLOSS), please follow the time-tested community standards for releasing FLOSS software when you want people to be able to install it from source code. Unfortunately, a lot of people don’t seem to be aware of what these conventions are. This really hit me in my recent OpenProofs work; we’re trying to make it easy to install programs by pre-packaging them, and we’ve found that some programs are a nightmare to package or install because their developers did not follow the standard conventions.

So I’ve released a brief article: Releasing Free/Libre/Open Source Software (FLOSS) for Source Installation, to help people learn about them. For the details, I point to the GNU Coding Standards (especially the release process chapter) and the Software Release Practice HOWTO. I also point out some of the most important conventions that will make building and installing your software much easier for your users:

  1. Pick a good, simple, Google-able name.
  2. Identify the version (using simple version numbers or ISO dates), and include that in the release filename as NAME-VERSION.FORMAT.
  3. Use a standard, widely-used, GPL-compatible FLOSS license — and say so.
  4. Follow good distribution-making practice, in particular, make sure tarballs always unpack into a single new directory named NAME-VERSION.
  5. Use the standard invocation to configure, build, and install it: ./configure; make; make install.
  6. Support the standard ./configure options like —prefix, —exec-prefix, —bindir, —libdir, and so on.
  7. Create a makefile that can rebuild everything and uses makefile variables (including applicable standard makefile variable names and targets).
  8. Have “make install” support DESTDIR.
  9. Document the external tools/libraries needed for building and running, and make it easy to separate/reuse them.
  10. If you patch an external library/tool, get the patch upstream.
  11. Use standard user interfaces. For command line tools, use “-” single-letter options, “—” long-name options, and “—” by itself to signal “no more options”. For GUI tools, provide a .desktop file.

To learn more, see the whole article: Releasing Free/Libre/Open Source Software (FLOSS) for Source Installation.

path: /oss | Current Weblog | permanent link to this entry