gettext: History

1 
1 16.1 History of GNU ‘gettext’
1 =============================
1 
1    Internationalization concerns and algorithms have been informally and
1 casually discussed for years in GNU, sometimes around GNU ‘libc’, maybe
1 around the incoming ‘Hurd’, or otherwise (nobody clearly remembers).
1 And even then, when the work started for real, this was somewhat
1 independently of these previous discussions.
1 
1    This all began in July 1994, when Patrick D’Cruze had the idea and
1 initiative of internationalizing version 3.9.2 of GNU ‘fileutils’.  He
1 then asked Jim Meyering, the maintainer, how to get those changes folded
1 into an official release.  That first draft was full of ‘#ifdef’s and
1 somewhat disconcerting, and Jim wanted to find nicer ways.  Patrick and
1 Jim shared some tries and experimentations in this area.  Then, feeling
1 that this might eventually have a deeper impact on GNU, Jim wanted to
1 know what standards were, and contacted Richard Stallman, who very
1 quickly and verbally described an overall design for what was meant to
1 become ‘glocale’, at that time.
1 
1    Jim implemented ‘glocale’ and got a lot of exhausting feedback from
1 Patrick and Richard, of course, but also from Mitchum DSouza (who wrote
1 a ‘catgets’-like package), Roland McGrath, maybe David MacKenzie,
1 François Pinard, and Paul Eggert, all pushing and pulling in various
1 directions, not always compatible, to the extent that after a couple of
1 test releases, ‘glocale’ was torn apart.  In particular, Paul Eggert –
1 always keeping an eye on developments in Solaris – advocated the use of
1 the ‘gettext’ API over ‘glocale’’s ‘catgets’-based API.
1 
1    While Jim took some distance and time and became dad for a second
1 time, Roland wanted to get GNU ‘libc’ internationalized, and got Ulrich
1 Drepper involved in that project.  Instead of starting from ‘glocale’,
1 Ulrich rewrote something from scratch, but more conforming to the set of
1 guidelines who emerged out of the ‘glocale’ effort.  Then, Ulrich got
1 people from the previous forum to involve themselves into this new
1 project, and the switch from ‘glocale’ to what was first named
1 ‘msgutils’, renamed ‘nlsutils’, and later ‘gettext’, became officially
1 accepted by Richard in May 1995 or so.
1 
1    Let’s summarize by saying that Ulrich Drepper wrote GNU ‘gettext’ in
1 April 1995.  The first official release of the package, including PO
1 mode, occurred in July 1995, and was numbered 0.7.  Other people
1 contributed to the effort by providing a discussion forum around Ulrich,
1 writing little pieces of code, or testing.  These are quoted in the
1 ‘THANKS’ file which comes with the GNU ‘gettext’ distribution.
1 
1    While this was being done, François adapted half a dozen of GNU
1 packages to ‘glocale’ first, then later to ‘gettext’, putting them in
1 pretest, so providing along the way an effective user environment for
1 fine tuning the evolving tools.  He also took the responsibility of
1 organizing and coordinating the Translation Project.  After nearly a
1 year of informal exchanges between people from many countries,
1 translator teams started to exist in May 1995, through the creation and
1 support by Patrick D’Cruze of twenty unmoderated mailing lists for that
1 many native languages, and two moderated lists: one for reaching all
1 teams at once, the other for reaching all willing maintainers of
1 internationalized free software packages.
1 
1    François also wrote PO mode in June 1995 with the collaboration of
1 Greg McGary, as a kind of contribution to Ulrich’s package.  He also
1 gave a hand with the GNU ‘gettext’ Texinfo manual.
1 
1    In 1997, Ulrich Drepper released the GNU libc 2.0, which included the
1 ‘gettext’, ‘textdomain’ and ‘bindtextdomain’ functions.
1 
1    In 2000, Ulrich Drepper added plural form handling (the ‘ngettext’
1 function) to GNU libc.  Later, in 2001, he released GNU libc 2.2.x,
1 which is the first free C library with full internationalization
1 support.
1 
1    Ulrich being quite busy in his role of General Maintainer of GNU
1 libc, he handed over the GNU ‘gettext’ maintenance to Bruno Haible in
1 2000.  Bruno added the plural form handling to the tools as well, added
1 support for UTF-8 and CJK locales, and wrote a few new tools for
1 manipulating PO files.
1