From: Bruno Haible <bruno@clisp.org>
Date: Thu, 2 May 2024 18:10:14 +0000 (+0200)
Subject: doc: Add appendix about Gnulib history.
X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=8d42dedb15b94c1b10aaa34f5b21243ef225893b;p=gnulib.git

doc: Add appendix about Gnulib history.

* doc/gnulib-history.texi: New file.
* doc/gnulib.texi: Include it.
---

diff --git a/ChangeLog b/ChangeLog
index 2257857847..8192b43aa7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2024-05-02  Bruno Haible  <bruno@clisp.org>
+
+	doc: Add appendix about Gnulib history.
+	* doc/gnulib-history.texi: New file.
+	* doc/gnulib.texi: Include it.
+
 2024-05-02  Collin Funk  <collin.funk1@gmail.com>
 
 	gnulib-tool.py: Don't leave temporary directories on exit.
diff --git a/doc/gnulib-history.texi b/doc/gnulib-history.texi
new file mode 100644
index 0000000000..ed8e0ac3ee
--- /dev/null
+++ b/doc/gnulib-history.texi
@@ -0,0 +1,64 @@
+@c Gnulib history
+
+@c Copyright 2024 Free Software Foundation, Inc.
+
+@c Permission is granted to copy, distribute and/or modify this document
+@c under the terms of the GNU Free Documentation License, Version 1.3 or
+@c any later version published by the Free Software Foundation; with no
+@c Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.  A
+@c copy of the license is at <https://www.gnu.org/licenses/fdl-1.3.en.html>.
+
+In the beginning, Richard Stallman maintained the regular expression engine
+of GNU and made it available to other GNU packages, such as
+@code{sed}, @code{awk}, @code{grep}, so that they could use the same engine.
+Recall that there was no GNU C library at the time.
+
+A couple of years later, Jim Meyering, who was maintaining
+the shell utilities, the file utilities, and the text processing utilities,
+collected the common parts of these three packages in the same repository.
+Paul Eggert joined in, with code coming from a few GNU packages that he
+maintained,
+and so did Bruno Haible, with reusable code from the GNU gettext package.
+
+As they cared for portability, many changes in the C code were accompanied
+by changes in the build infrastructure.
+Copying these changes into packages --- it was all done manually --- became
+cumbersome.  So they wrote a program, called @samp{gnulib-tool}, that does
+this job of copying the requested shared code into a particular package.
+This was in 2002.
+
+Providing a substitute / override for a system function was relatively easy.
+Providing a substitute / override for a system header file was significantly
+harder, but was done successively:
+for @code{stdint.h} in 2004,
+for @code{stdarg.h}, @code{sys/socket.h}, @code{sys/stat.h} in 2006,
+for @code{sys/time.h}, @code{wchar.h} in 2007,
+and the development of the corresponding idioms took until 2010.
+
+Unicode string modules (that make up GNU libunistring) were added in 2007--2009.
+
+Modules for numeric functions (@code{<math.h>}) were added in 2010--2011.
+
+Modules for container data structures were added between 2006 and 2018.
+
+Versatile bit-set modules were added in 2018.
+
+POSIX threads on non-POSIX platforms, as well as ISO C threads on all
+platforms, were added in 2019.
+
+The @code{posix_spawn} facility was brought to completion on native Windows
+in 2022, providing the world's first @code{posix_spawn} implementation for
+this platform.
+
+Support for Android was added in 2023 and immediately used by GNU Emacs
+for Android.
+
+Functions for working with Unicode characters in multibyte representation,
+based on @code{mbrtoc32}, were added in 2023.
+
+Modules for manipulating the floating-point environment (@code{fenv.h}) were
+added in 2023.
+
+The @samp{gnulib-tool} rewrite in Python, that was started by Dmitry Selyutin
+in 2012 but lay unfinished for many years, was completed by Collin Funk and
+Bruno Haible in 2024.
diff --git a/doc/gnulib.texi b/doc/gnulib.texi
index aa0eb57f62..55cf6ebcc9 100644
--- a/doc/gnulib.texi
+++ b/doc/gnulib.texi
@@ -89,6 +89,7 @@ Documentation License''.
 * Build Infrastructure Files::      Non-modules files for the build system.
 * Release Management Files::        Non-modules files for preparing releases.
 * GNU Free Documentation License::  Copying and sharing this manual.
+* Gnulib history::
 * Index::
 @end menu
 
@@ -7364,6 +7365,12 @@ This is a helper program that mimics the @code{ncftpput} program used by
 @include fdl-1.3.texi
 
 
+@node Gnulib history
+@appendix Gnulib history
+
+@include gnulib-history.texi
+
+
 @node Index
 @unnumbered Index