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:
- Pick a good, simple, Google-able name.
- Identify the version (using simple version numbers or ISO dates),
and include that in the release filename as NAME-VERSION.FORMAT.
- Use a standard, widely-used, GPL-compatible FLOSS license — and say so.
- Follow good distribution-making practice, in particular,
make sure tarballs always unpack into a single new directory named NAME-VERSION.
- Use the standard invocation to configure, build, and install it:
./configure; make; make install.
- Support the standard ./configure options like —prefix,
—exec-prefix, —bindir, —libdir, and so on.
- Create a makefile that can rebuild everything and
uses makefile variables (including applicable
standard makefile variable names and targets).
- Have “make install” support DESTDIR.
- Document the external tools/libraries needed for building and running,
and make it easy to separate/reuse them.
- If you patch an external library/tool, get the patch upstream.
- 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