Planet GNU

Aggregation of development blogs from the GNU Project

January 16, 2021

libsigsegv @ Savannah

libsigsegv 2.13 is released

libsigsegv version 2.13 is released.

New in this release:

  • Added support for macOS/arm64.
  • Added support for Solaris OpenIndiana.
  • Added support for catching stack overflow on Solaris 11/SPARC.
  • Added support for catching stack overflow on 64-bit Haiku.
  • Provide a correct value for SIGSTKSZ on 64-bit Solaris/x86. The one defined by this system is too small.
  • Improved support for Linux/RISC-V, Linux/nds32.
  • Improved support for Android.
  • Improved support for FreeBSD/x86, FreeBSD/x86_64, FreeBSD/arm, FreeBSD/arm64.
  • Improved support for 64-bit ABI on Solaris/x86_64.
  • NOTE: Support for Cygwin and native Windows is currently not up-to-date.

Download: https://ftp.gnu.org/gnu/libsigsegv/libsigsegv-2.13.tar.gz

16 January, 2021 11:14PM by Bruno Haible

January 15, 2021

FSF Blogs

January 13, 2021

gnulib @ Savannah

Gnulib provides versatile bit-set implementations

Gnulib features bitset, a module to support operations on lists of bits.

Its API is rich, and includes:

  • all the expected operations on single bit (set, toggle, test, etc.);
  • all the traditional binary bitwise operators (and, or, xor), often in two flavors (return new values, or perform in place);
  • some useful ternary operations, such as ((a ∧ b) ∨ c), ((a ∧ ¬b) ∨ c), etc.  Also in two flavors;
  • many predicates (empty, equal, intersects, disjoint, subset and so forth);
  • and of course, object creation, destruction, printing, iteration, reverse iteration, etc.

The following example, taken from Bison, shows the bitset module in action.  It's a fix-point computation of `N`, a bitset of the "useful" symbols (a symbol is useful if it can actually correspond to a piece of text.  Think for instance of `a: a b; b: a;`, `a` and `b` are useless).

static void
useless_nonterminals (bitset N, bitset P)
{
  /* N is the bitset as built.  Np is set being built this iteration.
     P is bitset of all productions which have a RHS all in N.  */
  bitset Np = bitset_create (nnterms, BITSET_FIXED);
  while (true)
    {
      bitset_copy (Np, N);
      for (rule_number r = 0; r < nrules; ++r)
        if (!bitset_test (P, r)
            && useful_production (r, N))
          {
            bitset_set (Np, rules[r].lhs->number);
            bitset_set (P, r);
          }
      if (bitset_equal_p (N, Np))
        break;
      bitset_swap (N, Np);
    }
  bitset_free (N);
  N = Np;
}

Like several other gnulib modules, bitset's API actually sits on top of several implementations, with different performance profiles.  Indeed bitsets can have a fixed size, or being resizable; they can be tailored for dense sets (think of an array of bits), or sparse (think of list of bits, or alternatively an table of segments of dense bits).  The module also includes a dedicated implementation for small bitsets, fitting in machine words, which is automatically selects when appropriate.  It even features another implementation, stats, which wraps a "genuine" implementation to gather statistical data about the use of the bitsets, to help you tune your use of bitset.

All this in a very transparent manner: an argument provided to the constructor (see `BITSET_FIXED` in the example above).

Gnulib hosts another module, bitsetv, which uses the bitset module to provide support for matrices of bits.

Both modules were crafted in 2002 by Michael Hayes for GCC, but, to the best of our knowledge, it was never adopted there.  However, the Bison team imported into Bison and maintained it over the years, and later contributed it to gnulib.

13 January, 2021 12:17PM by Akim Demaille

January 12, 2021

FSF Blogs

January 11, 2021

Watch "Fight to Repair," demand the right to repair

"Fight to Repair" is an animated video from the Free Software Foundation (FSF) about two free software engineers rushing to fix a life-threatening problem in a vehicle's autopilot code.

11 January, 2021 11:05PM

January 09, 2021

findutils @ Savannah

GNU findutils 4.8.0 released

This is to announce findutils-4.8.0, a stable release.
See the NEWS below for more details.

GNU findutils is a set of software tools for finding files that match
certain criteria and for performing various operations on them.
Findutils includes the programs "find", "xargs" and "locate".
More information about findutils is available at:
  https://www.gnu.org/software/findutils/

Please report bugs and problems with this release via the the
GNU Savannah bug tracker:
  https://savannah.gnu.org/bugs/?group=findutils

Please send general comments and feedback about the GNU findutils
package to the mailing list (<mailto:bug-findutils@gnu.org):
  https://lists.gnu.org/mailman/listinfo/bug-findutils

There have been 96 commits by 8 people in the 71 weeks since 4.7.0:
  Andreas Metzler (5)             James Youngman (7)
  Bernhard Voelker (78)           Kamil Dudka (1)
  Bjarni Ingi Gislason (2)        Kim Thor (1)
  Hugo Gabriel Eyherabide (1)     Peter Frost (1)

This release was bootstrapped with the following tools:
   Autoconf 2.69
   Automake 1.16.2
   M4 1.4.18
   Gnulib v0.1-4349-g8ed1d1f9f

Please consider supporting the Free Software Foundation in its fund
raising appeal; see <https://www.fsf.org/appeal/>.

Thanks to everyone who has contributed!

Have a nice day,
Bernhard Voelker [on behalf of the GNU findutils maintainers]

================================================================================

Here are the compressed sources:
  https://ftp.gnu.org/pub/gnu/findutils/findutils-4.8.0.tar.xz

Here are the GPG detached signatures[*]:
  https://ftp.gnu.org/pub/gnu/findutils/findutils-4.8.0.tar.xz.sig

Use a mirror for higher download bandwidth:
  http://www.gnu.org/order/ftp.html

Here is the SHA1 checksum:

  b702a37d3a33038102659777ba1fe99835bb19fe  findutils-4.8.0.tar.xz

[*] Use a .sig file to verify that the corresponding file (without the
.sig suffix) is intact.  First, be sure to download both the .sig file
and the corresponding tarball.  Then, run a command like this:

gpg --verify findutils-4.8.0.tar.xz.sig

If that command fails because you don't have the required public key,
then run this command to import it:

gpg --keyserver keys.gnupg.net --recv-keys A5189DB69C1164D33002936646502EF796917195

and rerun the 'gpg --verify' command.

================================================================================

NEWS

  • Upcoming changes

For consistency with planned changes to POSIX, the semantics of 'find -mount'
may be different from that of 'find -xdev' in future releases.

  • Noteworthy changes in release 4.8.0 (2020-01-09) [stable]
    • Changes in xargs

'xargs -t' no longer outputs a trailing blank to stderr after the last argument
of each constructed command line to be executed.  [#57291]

xargs now warns when more than one of the conflicting options --max-lines (-L,
-l), --replace (-i/-I) and --max-args (-n) are specified on the command line.
[#52137]

    • Bug Fixes

find no longer crashes when an XFS filesystem is heavily changed during the run.
Discussed at: <https://lists.gnu.org/r/bug-gnulib/2020-04/msg00068.html>

find -used works again.  This predicate was not working properly since adding
the support for sub-second timestamp resolution for various predicates in
FINDUTILS_4_3_3-1 back in 2007.
Discussed at: <https://lists.gnu.org/r/bug-findutils/2019-11/msg00010.html>

    • Improvements

'find -D exec' now diagnoses all -exec, -execdir, -ok and -okdir runs including
the call arguments and the exit code of the launched process. [#59083]

    • Documentation Changes

The documentation of 'find -printf %Ak' has been improved: it now refers to the
strftime(3) documentation for a complete list of supported conversion
specifiers, and documents the 'F' conversion specifier ('yyyy-mm-dd').

The man pages (find.1, locate.1, locatedb.5, updatedb.1, and xargs.1) now
consistently end with the sections "REPORTING BUGS", "COPYRIGHT" and "SEE ALSO",
with the latter referring to the online page on the GNU web server.

The "EXAMPLES" section in the find.1 man page now shows the examples in a better
structure and uses consistent formatting.

Various man page fixes - syntax issues and typos.
[#59745, #59330, #59012, #58193, #57807, #57775]

Other documentation changes:

#58654: doc: clarify that 'find -perm +MODE' is unrelated to umask

#58458: doc: improve section 'Hard links', especially fix the description
        regarding 'find -L -samefile FILE'.

#58205: find.1: clarify double dash '--' option

#58149: 'xargs --help' now mentions that --replace (-I, -i) splits the input
        at newline characters.

#57025: doc: enhance description of tests accepting numeric arguments in find.1
        [see also #49640].

#54730: Add additional valuable example of find -quit

#48135: Fix testsuite error on Hurd and BSD related to ln

#35253: Clarify descriptions of -printf %f, %h.

    • Changes to the build process

The configure option --without-fts has been removed.  The attempt to use
it stopped configure with an error message since 4.5.18 (2015) anyway.

-eof-

09 January, 2021 07:09PM by Bernhard Voelker

wget @ Savannah

GNU Wget 1.21.1 Released

Noteworthy changes in this release:

  • Fix compilation on MacOS and Solaris 9
  • Remove bashism from configure.ac
  • Fix a compilation warning on 32-bit systems

09 January, 2021 10:36AM by Darshit Shah

GNU Wget 1.21 Released

Noteworthy changes in this release:

  • Improve the number of translated strings
  • Remove all uses of alloca. In some places the length of untrusted strings has been used, e.g. strings from the command line or from remote.
  • Fix buffer overflows in progress bar code in some locales
  • Fix two null pointer accesses
  • Amend cookie file header to be recognized by the 'file' command
  • Post Handshake Authentication for OpenSSL
  • Require gettext version 0.19.3+
  • Add configure flags --enable-fsanitize-ubsan, --enable-fsanitize-asan and --enable-fsanitize-msan for gcc and clang
  • Make several smaller fixes, enhance fuzzing, enhance building

09 January, 2021 10:34AM by Darshit Shah

January 07, 2021

tar @ Savannah

Version 1.33

Version 1.33 of GNU tar is available for download.  Summary of changes in this version:

  • POSIX extended format headers do not include PID by default.
  • --delay-directory-restore works for archives with reversed member ordering.
  • Fix extraction of a symbolic link hardlinked to another symbolic link.
  • Wildcards in exclude-vcs-ignore mode don't match slash.
  • Fix the --no-overwrite-dir option.
  • Fix handling of chained renames in incremental backups.
  • Link counting works for file names supplied with -T
  • Accept only position-sensitive (file-selection) options in file list files.

07 January, 2021 03:05PM by Sergey Poznyakoff

GNU Guile

GNU Guile 3.0.5 released

We are delighted to announce the release of GNU Guile 3.0.5. This release adds optimizations that can turn chains of repeated comparisons, such as those produced by the case and (sometimes) the match macros, into efficient O(1) table dispatches. For full details, see the NEWS entry. See the release note for signatures, download links, and all the rest. Happy hacking!

07 January, 2021 12:50PM by Andy Wingo (guile-devel@gnu.org)

January 05, 2021

gnucobol @ Savannah

Release of GnuCOBOL 3.1.2

New GnuCOBOL features

  • XML GENERATE statement

   (note: runtime support needs additional library libxml2)

  • JSON GENERATE statement

   (note: runtime support needs additional library cJSON or JSON-C)

  
  • CONTINUE AFTER statement (COBOL 202x) implemented, also handle fractions

   of seconds in C$SLEEP now

  
  • TYPEDEF and SAME AS (COBOL 2002) implemented, including the MicroFocus

   and RM/COBOL variants

  • >>TURN (COBOL 2002) directive implemented, allowing some exception checks

   to be turned on/off per source as desired

  • Improved support for different compiler extensions (ACUCOBOL, IBM,

   Fujitsu, MicroFocus COBOL, Microsoft COBOL, RM/COBOL, CA Realia and more)

  • file handling: include support for a callable EXTFH interface also provided

   by several compilers including Micro Focus
   This allows users to insert an external file handler while retaining
   all of the normal COBOL I/O functions with a possible callback to libcob.
   To have the compiled program call `yourfh()` for file I/O use:
   `cobc -fcallfh=yourfh`
   In turn `yourfh()` may call `EXTFH()` to use I/O functions from GnuCOBOL.
   The external file handler can also be directly invoked from COBOL, too,
   using `CALL "EXTFH"`.
    * Note: Not each flag contained in the FCD3 is handled already  *

  • file handling: added support for [RE]WRITE FILE file FROM source
  • file handling: name mapping adjusted (improved MF and ACU-compatibility):

   entries starting with a period or number are not resolved any more,
   periods in the external identifier are always replaced by underscore
    -> MY.FILE is resolved by DD_MY_FILE, dd_MY_FILE, MIFILE now;
   prefixes "-F " and "-D " are removed from external names;
   if filename is not absolute after translation, COB_FILE_PATH is now
   still applied;
   File name mapping now applies both to COBOL statements and CALLable
   CBL_ and C$ file routines.

  
  • Screen I/O: initial mouse support (for details see runtime.cfg),

   use of CURSOR clause in SPECIAL-NAMES for positioning on ACCEPT

  • on abort a stack trace will be genereated, this can be suppressed by

   runtime configuration option COB_STRACK_TRACE

  • the dump that is generated on abort (depending on -fdump at compile-time)

   was heavily improved and combines consecutive identical OCCURS items,
   leading to smaller dump files

  • changes in handling COPY statement:

   * copybook names that contain an extension aren't searched with additional
     extensions [as post-rc1-change this may be set to old behaviour by
     defining COB_MULTI_EXTENSION when building GnuCOBOL/cobc]
   * library names are now tested for environment "COB_COPY_LIB_libname",
     allowing the directory to specified externally (also as no-directory
     by exporting with empty value) and has a fallback (with a warning) to
     be effectively ignored (as previous versions did this)

Removed functions

  • SCREEN SECTION, REPORT-WRITER module: removed non-standard extension

   "LINE / COL signed-integer" (inadvertently available since 2.2/3.0rc1);
   which will now raise an error "unsigned integer expected";
   if used replace by standard "LINE / COL +/- integer"

Obsolete features

(will be removed in the next version if no explicit user requests are raised)

  • support for Borland C compiler and linker
  • -fif-cutoff flag for cobc (currently disabled, see entry below in 3.0rc1)
  • old OpenCOBOL-only-EXTFH

Changes to the COBOL compiler (cobc) options

  • new options:

   -f[no]-ec=exception-name to tune the exception checks similar to the >>TURN
       directive, you may also leave out the "EC-" prefix here, example to
       enable all checks but disable all bound checks but OCCURS DEPENDING ON:
       cobc -debug -fno-ec=bound -fec=bound-odo

  • adjustments to warning options:

   -Wextra "new" option to enable every possible warning that is not dialect
       specific (this option used to be called -W)
   -Wadditional  new warning group for all warnings that don't have a group
       on their own
   -Wno-error and -Wno-error=<warning> to treat (specific <warning>s) not as error
   -Wdangling-text for raising the warning "source text after program area",
       not included in -Wall any more
   -Wno-ignored-error allows to suppress messages that normally would be an
       error and are only allowed because they are never executed
   -Wcorresponding is now enabled by default

   -f[no]-diagnostics-show-option, enabled by default, shows the
    command line option responsible for the diagnostic message

   extra information to a warning (or error) is now marked as "note:"

  • the interal Xref got a huge speedup, has all references in ascending order

   now and includes the total amount of direct references

  • the interal listing got a speedup and has all error references in

   ascending order now

  • cobc -g (and configure --enable-debug) use the most expressive

   debugging options available on the system

  • cobc -g now auto-includes references to the COBOL source file and to

   all ENTRY and SECTION elements to ease source level debugging

  

Changes in the COBOL runtime (libcob)

  • Messages from the COBOL runtime are also translated now (if installed).

   To prevent this disable translations in general with using the configure
   option --disable-nls (or by deactivating ENABLE_NLS in config.h).

  • libcob.h does no longer auto-include gmp.h (behavior since 2.x), if you link

   against libcob and need cob_decimal include gmp.h/mpir.h yourself before;
   otherwise you do not need it in your include path any more

  • execution times of INSPECT and INITIALIZE with OCCURS were heavily cut down
  • convenience functions for direct C access to COBOL fields and for debugging

   were added, see new C-API documentation

  • first-time file-locking under Win32
  • Breaking change: previously the return-code of registered error handlers

   (by CBL_ERROR_PROC) were ignored. This was changed according to the
   documentation for CBL_ERROR_PROC -> a RETURN-VALUE of ZERO skips further
   error handlers to be called, including the internal one.

New build features

  • Running the internal tests by make check now fails if the testsuite has any

   unexpected result.

  • The modules and test programs in the NIST COBOL-85 test suite (tests/cobol85)

   may now be build and/or tested and/or the test results checked separately.
   You now may also run the tests with a previous installed version of GnuCOBOL
   (or a version specified by a manual temporary setup).
   For details see tests/cobol85/README.

  • new configure option --with-math=ARG to specify which math multiple precision

   library is to be used, where ARG may be: check (default), gmp, mpir

  • new configure options --with-xml2 / -without-xml2 to explicit force/disable

   XML runtime support, otherwise it will be included if found as working

  • new configure option --with-json / -without-json to explicit force/disable

   JSON runtime support, otherwise it will be included if found as working
   Note: As a special case you may built-in cJSON by placing its source in
   the folder "libcob". If it is included there, this version will be compiled
   into libcob. It may be enforced with --with-json=local,
   like --with-json=cjson and --with-json=json-c enforce the given library.

  • To adjust the build system for GMP/MPIR you may use the new variables

   GMP_CFLAGS / MPIR_CFLAGS and GMP_LIBS / MPIR_LIBS.
   If unset configure will try pkg-config.

  • To adjust configure to use libxml2 you may use the new variables XML2_CFLAGS

   and XML2_LIBS. If unset configure will use pkg-config / xml2-config.

  • To adjust configure to use libcjson you may use the new variables CJSON_CFLAGS

   and CJSON_LIBS, similar JSON_C_CFLAGS and JSON_C_LIBS for libjson-c.
   If unset configure will use pkg-config.

  • new configure option --enable-hardening to either enable GNU C's

   hardening options or leave as-is, or disable (which previous versions
   effectively did)

  • build system: defaults.h is not created or included any more, all configure

   provided defines are now found in the single header config.h

  • Any time after `make` you can call `pre-inst-env` script to use the still-

   uninstalled binaries. Samples:
   pre-inst-env cobc -xj prog.cob
   pre-inst-env cobcrun -M prog start
   pre-inst-env may also be called without parameters to start a new shell
   session with the environment adjusted to use the uninstalled version.

General

  • Too much bug fixes to list here (please check ChangeLogs for full details),

  includes the following CVEs:

 

   compiler (may be triggered with special crafted source files)
   CVE-2019-14468, CVE-2019-14486, CVE-2019-14528, CVE-2019-14541,
   CVE-2019-16396, CVE-2019-16395

  • GnuCOBOL's getopt implementation honors POSIXLY_CORRECT now:

  if set to any value the option parsing in cobc, cobcrun and CBL_GC_GETOPT
  stops at the first nonoption, otherwise it stays with the old behaviour and
  re-orders nonoptions to the end)

Known issues in 3.1

  • testsuite:

  * if built with vbisam, cisam or disam, depending on the version used, some
    tests will lead to UNEXPECTED PASS, while others may fail
  * possibly failing tests (false positives):
    * temporary path invalid
    * compiler outputs (assembler)
    * compile from stdin
  * NIST: OBNC1M.CBL false positive (the test runner uses a nonportable way of
    emulating a program kill)

  • the recent additions of ">> TURN" and "variable LIKE variable" may not work

   as expected in all cases

  • features that are known to not be portable to every environment yet

   (especially when using a different compiler than GCC)
    * function with variable-length RETURNING item
    * USAGE POINTER, which may need to be manually aligned

05 January, 2021 06:24PM by Simon Sobisch

mailutils @ Savannah

Version 3.11.1

Version 3.11.1 of GNU mailutils is available for download.  This version fixes a bug in the library function mu_url_create_hint that caused MH inc to coredump when called without explicit -file option. It also includes updated localizations.

05 January, 2021 02:14PM by Sergey Poznyakoff

January 04, 2021

FSF Blogs

January 03, 2021

www-zh-cn @ Savannah

2020 summary

Dear www-zh-cn-translators:

Thank you all for the great effort in 2020.

Despite the difficulties from many directions, we as a team have achieved something proudly.

1. This year, the total number of new translations was more than
in 2019.  The Turkish team made an impressive progress, both
in terms of new translations and in terms of updating the existing
ones.  Other notably good teams are Chinese ("Simplified"),
Spanish and French.  The Japanese team considerably reduced
the amount of outdated translations throughout the year.

The table below shows the number and size of newly translated
articles and the translations to convert to the PO format
in important directories (as of 2020-12-31).

+--team--+------new-------+---to convert---+-*-outdated-+
|  cs    |   0 (  0.0Ki)  |   0 (  0.0Ki)  |  32 (66%)  |
+--------+----------------+----------------+------------+
|  es    |  20 (256.4Ki)  |   0 (  0.0Ki)  | 1.2 (0.6%) |
+--------+----------------+----------------+------------+
|  fa    |   1 ( 12.4Ki)  |   1 (  9.4Ki)  |  24 (89%)  |
+--------+----------------+----------------+------------+
|  fr    |  12 (101.4Ki)  |   0 (  0.0Ki)  | 0.3 (0.1%) |
+--------+----------------+----------------+------------+
|  it    |   0 (  0.0Ki)  |   0 (  0.0Ki)  |  50 (38%)  |
+--------+----------------+----------------+------------+
|  ja    |   0 (  0.0Ki)  |   0 (  0.0Ki)  |  25 (17%)  |
+--------+----------------+----------------+------------+
|  ml    |   2 ( 27.3Ki)  |   0 (  0.0Ki)  |  14 (47%)  |
+--------+----------------+----------------+------------+
|  pl    |   1 ( 11.3Ki)  |   1 (181.0Ki)  |  48 (33%)  |
+--------+----------------+----------------+------------+
|  pt-br |   4 ( 18.9Ki)  |   0 (  0.0Ki)  |  6.2 (4%)  |
+--------+----------------+----------------+------------+
|  ru    |   4 ( 32.1Ki)  |   0 (  0.0Ki)  | 1.1 (0.4%) |
+--------+----------------+----------------+------------+
|  sq    |   8 ( 69.7Ki)  |   0 (  0.0Ki)  |  1.7 (5%)  |
+--------+----------------+----------------+------------+
|  tr    |  57 (662.3Ki)  |   0 (  0.0Ki)  | 0.6 (1.1%) |
+--------+----------------+----------------+------------+
|  zh-cn |  36 (425.8Ki)  |   0 (  0.0Ki)  | 1.8 (1.3%) |
+--------+----------------+----------------+------------+
|  zh-tw |   5 ( 41.2Ki)  |  16 (232.6Ki)  |  4.8 (15%) |
+--------+----------------+----------------+------------+
+--------+----------------+----------------+
| total  | 150 (1658.9Ki) |  68 (1763.3Ki) |
+--------+----------------+----------------+

2. We have 3 new members joining us as contributors, namely
hahawang
shankangke
nios34

Warmly welcome and thank you.

Happy GNU year, and thank you for your contributions!
wxie

03 January, 2021 03:10AM by Wensheng XIE

January 02, 2021

alive @ Savannah

GNU Alive 2.0.3 available

GNU Alive 2.0.3 is available.  Full announcement:

GNU Alive is a keep-alive program for internet connections.

02 January, 2021 12:25AM by Thien-Thi Nguyen

December 31, 2020

Riccardo Mottola

ArcticFox now on Raspberry 3 - ARM support is back!

Just completed these days... ArcticFox now runs fine on Raspberry PI 3, it also compiled natively on it on Raspbian!

Coming from PaleMoon which had dropped ARM support, it took quite some time, but it is kicking again and the classic browser is a good companion on the Raspberry!

It runs surprisingly good and you can even watch youtube videos. Obligatory screenshot as proof:


In fact, this same post was written on my RPI3. While I was able to fix neon support in graphics, I have issues doing a cortex-a53 optimized build. I also have issues compiling on the newer RPI3 which as a newer Raspbian/RpiOS, with similar errors. However, seeing ARM support back is a good feeling .

31 December, 2020 07:12PM by Riccardo (noreply@blogger.com)

libredwg @ Savannah

libredwg-0.12 released

New add API to easily create new DWGs (or DXFs) from scratch, for CAD programs.
New dwgadd helper.
Removed deprecated old API functions.

New features:
  * Add a new experimental dwg_add_ENTITY/OBJECT API for easier CAD write support,
    starting with GauchoCAD and SolveSpace. Most entities and some objects.
    Similar to the VBA interface and object model, just with our names.
  * cmake support enhanced to programs and LTO. Should be usable now by its own,
    but MSVC is untested.
  * Add a new experimental dwgadd helper, to create fresh DWG's easily from scratch.
  * Added support for many more object/entity types:
    Now stable: ACSH_CONE_CLASS ACSH_TORUS_CLASS BLOCKALIGNMENTPARAMETER
      BLOCKALIGNMENTGRIP BLOCKLOOKUPGRIP BLOCKROTATIONGRIP
    Now unstable:
      ALDIMOBJECTCONTEXTDATA ASSOC2DCONSTRAINTGROUP ASSOCACTIONPARAM
      ASSOCARRAYACTIONBODY ASSOCARRAYMODIFYPARAMETERS
      ASSOCARRAYPATHPARAMETERS ASSOCARRAYPOLARPARAMETERS
      ASSOCARRAYRECTANGULARPARAMETERS ASSOCASMBODYACTIONPARAM
      ASSOCCOMPOUNDACTIONPARAM ASSOCDIMDEPENDENCYBODY ASSOCFACEACTIONPARAM
      ASSOCOBJECTACTIONPARAM ASSOCOSNAPPOINTREFACTIONPARAM
      ASSOCPATHACTIONPARAM ASSOCPOINTREFACTIONPARAM ASSOCVARIABLE
      ASSOCVERTEXACTIONPARAM BLKREFOBJECTCONTEXTDATA
      BLOCKALIGNEDCONSTRAINTPARAMETER BLOCKANGULARCONSTRAINTPARAMETER
      BLOCKARRAYACTION BLOCKDIAMETRICCONSTRAINTPARAMETER
      BLOCKHORIZONTALCONSTRAINTPARAMETER BLOCKLINEARCONSTRAINTPARAMETER
      BLOCKLOOKUPACTION BLOCKLOOKUPPARAMETER BLOCKPARAMDEPENDENCYBODY
      BLOCKPOINTPARAMETER BLOCKPOLARGRIP BLOCKPOLARPARAMETER
      BLOCKPOLARSTRETCHACTION BLOCKRADIALCONSTRAINTPARAMETER
      BLOCKREPRESENTATION BLOCKSTRETCHACTION BLOCKUSERPARAMETER
      BLOCKVERTICALCONSTRAINTPARAMETER BLOCKXYGRIP DATALINK EVALUATION_GRAPH
      FCFOBJECTCONTEXTDATA GRADIENT_BACKGROUND GROUND_PLANE_BACKGROUND
      IBL_BACKGROUND IMAGE_BACKGROUND LEADEROBJECTCONTEXTDATA
      MTEXTOBJECTCONTEXTDATA PARTIAL_VIEWING_FILTER PARTIAL_VIEWING_INDEX
      PLANESURFACE POINTCLOUD POINTCLOUDCOLORMAP POINTCLOUDDEF
      POINTCLOUDDEFEX POINTCLOUDDEF_REACTOR POINTCLOUDDEF_REACTOR_EX
      POINTCLOUDEX RENDERENTRY RENDERENVIRONMENT RENDERGLOBAL
      SKYLIGHT_BACKGROUND SOLID_BACKGROUND TEXTOBJECTCONTEXTDATA
    Debugging changes: Renamed ATEXT to ARCALIGNEDTEXT,
      Added POLARGRIPENTITY.
  * Added dwg_obj_generic_handlevalue(), dwg_obj_generic_dwg(),
API breaking changes:
  * Disable old deprecated functional API, all object-specific field getters
    and setters. Re-enable with -DUSE_DEPRECATED_API
  * Renamed UNDERLAY to {PDF,DGN,DWF}UNDERLAY and likewise PDFDEFINITION, ...
  * Disable static for Windows. This shrinks the released Windows zip file
    from 41MB to 24MB. The 0.10.1 had 20MB, 0.6.1 15MB.
Minor features:
  * fix more C++ compatiblity: restrict is __restrict, disable __nonnull.
    Now successfully used in SolveSpace.
  * Add gperf hash tables for all objects and dxfclasses, for faster lookup
    dxfnames to create classes, and object names with most properties.
    Previously lookup was linear, now constant. Needs also less memory.
  * Simplified API: dwg_obj_generic_parent(), dwg_ent_generic_parent() to take void*.
  * Added public geometry helpers: dwg_geom_angle_normalize(), dwg_geom_normalize(),
    dwg_geom_cross(), dwg_geom_transform_OCS()
Major bugfixes:
  * Enable python shared lib, add -no-undefined and PYTHON_LIBS.

Here are the compressed sources:
  http://ftp.gnu.org/gnu/libredwg/libredwg-0.12.tar.gz   (17.4 MB)
  http://ftp.gnu.org/gnu/libredwg/libredwg-0.12.tar.xz   (9 MB)

Here are the GPG detached signatures[*]:
  http://ftp.gnu.org/gnu/libredwg/libredwg-0.12.tar.gz.sig
  http://ftp.gnu.org/gnu/libredwg/libredwg-0.12.tar.xz.sig

Use a mirror for higher download bandwidth:
  https://www.gnu.org/order/ftp.html

Here are more binaries:
  https://github.com/LibreDWG/libredwg/releases/tag/0.12

Here are the SHA256 checksums:

fe35c931529c1bdbc2d5d1d7ca3dff2d70615271f8f7b77318b9a20873e7fe0e  libredwg-0.12.tar.gz
a85573cd100d303e01b7e75bb80d7b87d927a4c7c017848c0998aa11ffa3aa7c  libredwg-0.12.tar.xz

[*] Use a .sig file to verify that the corresponding file (without the
.sig suffix) is intact.  First, be sure to download both the .sig file
and the corresponding tarball.  Then, run a command like this:

  gpg --verify libredwg-0.12.tar.gz.sig

If that command fails because you don't have the required public key,
then run this command to import it:

  gpg --keyserver keys.gnupg.net --recv-keys B4F63339E65D6414

and rerun the 'gpg --verify' command.

31 December, 2020 05:16PM by Reini Urban

Riccardo Mottola

DataBasin 1.1 S released

DataBasin 1.1S and DataBasinKit have finally been released, after a long time-span.

This release is dedicated to my late friend and colleague Steven Rovelli (hence the "S" in the release name) who parted from us too young. He was an enthusiastic user of DataBasin and used and supported it inside our company, for countless AMS tasks. COVID-19 carried him away and he will be sorely missed.

This release is marks also the move from the GAP svn repository, to standalone projects on GitHub.

DataBasin sports some interesting news:

  • Improved interface with ComboBoxes to select update/insert objects and preferences to filter out more system objects
  • remember last successful login username
  • getUpdated / getDeleted
  • Undelete
  • Improved support for sub-objects and lists and unpacking (from DataBasinKit), this allows for example to use sub-queries, provided the related object is one (LIMIT 1)
  • support for enabling Assignment Rules in create/update

The core DataBasinKit has also many improvements,, some of them are not completely appreciated from the GUI interface, but useful for other programs wishing to use the API:

  • enhanced and rewritten handling of sub-objects and object-lists in query results: this allows to have SObject lists interpreted as such when using subqueries.
  • getUpdated and getDeleted
  • undelete
  • possiblity trigger Assignment Rules in create & update

31 December, 2020 01:14PM by Riccardo (noreply@blogger.com)

December 30, 2020

FSF Blogs

gnulib @ Savannah

Gnulib supports portable multithreading

There are three main motivations for using multiple threads in a program:

  • To get computational tasks done is less time, by using more than one CPU core at once.
  • For event handling. The older approach with signals and/or file descriptors in non-blocking mode leads to brittle and racey programs. Using separate threads that use read() or write() produces more reliable programs with simpler and thus more maintainable code.
  • To otherwise simplify the logic of background tasks.

For the first case, the OpenMP standard and its implementation in GCC, libgomp, provide all you need. It uses multiple threads under the hood. Use the Autoconf macro AC_OPENMP for portability.

For the other cases, or when you want to control the threads yourself, you'll need to choose a multithreading API. Two such APIs are available across all platforms, through Gnulib:

POSIX multithreading and ISO C multithreading are similar. ISO C multithreading contains only the essential APIs, whereas POSIX multithreading has more features. For example, while both have locks/mutexes, only POSIX has spin-locks. And when creating a thread, only POSIX allows to specify thread attributes, such as its stack size or its scheduling priority. Also, lock initialization is straightforward in POSIX, but clumsy in ISO C.

Without Gnulib, none of these two APIs can be used across platforms:

  • The POSIX API is generally available on all Unix platforms for the last ten years, with some bugs on older platforms such as HP-UX. On native Windows, there is a buggy implementation called 'winpthreads' for mingw (and mingw only — not usable with MSVC).
  • The ISO C API is available only starting with glibc 2.28, FreeBSD 10, and NetBSD 9. Buggy implementations are also available in AIX 7 and Solaris 11.4.

With Gnulib, you can use either of these APIs across platforms:

  • For the POSIX API, Gnulib adds an implementation for native Windows and fixes for the known bugs on Unix systems.
  • For the ISO C API, Gnulib adds an implementation or fixes, as needed to make things work right.

My personal recommendation is:

  • Use the POSIX API, except possibly for teaching computer science. If, at some point, you need thread attributes or spin-locks, you would be stuck with the ISO C API.
  • On native Windows, use the POSIX API together with the configure option '--enable-threads=windows'. This option avoids the buggy 'winpthreads' library and instead uses the Gnulib implementation of the POSIX threads.

30 December, 2020 03:10PM by Bruno Haible

December 24, 2020

unifont @ Savannah

Unifont 13.0.05 Released

24 December 2020 Unifont 13.0.05 is now available.  This is a minor release with adjustments to existing glyphs and completion of the Under ConScript Unicode Registry (UCSUR) Braille Extended script.  See http://unifoundry.com/unifont/ for further details.

Download this release from GNU server mirrors at:

     https://ftpmirror.gnu.org/unifont/unifont-13.0.05/

or if that fails,

     https://ftp.gnu.org/gnu/unifont/unifont-13.0.05/

or, as a last resort,

     ftp://ftp.gnu.org/gnu/unifont/unifont-13.0.05/

These files are also available on the unifoundry.com website:

     https://unifoundry.com/pub/unifont/unifont-13.0.05/

Font files are in the subdirectory

     https://unifoundry.com/pub/unifont/unifont-13.0.05/font-builds/

24 December, 2020 01:10PM by Paul Hardy

www-zh-cn @ Savannah

Welcome our new member - hahawang

Dear www-zh-cn-translators:

It's a good time to welcome our new member:

User Details:
-------------
Name:    王哈哈
Login:   hahawang
Email:   hahwang@yandex.com

We thank hahawang for his commitment for contributing to GNU Chinese Translation.
We wish hahawang has a wonderful and successful free journey.

24 December, 2020 09:28AM by Wensheng XIE

December 23, 2020

mailutils @ Savannah

Version 3.11

Version 3.11 of GNU mailutils is available for download.

See the NEWS file entry for a list of noteworthy changes in this release.

23 December, 2020 02:31PM by Sergey Poznyakoff

gnulib @ Savannah

Gnulib helps you write efficient algorithms

When writing algorithmic code, the classical approach is to define the data structures, write the algorithm, debug it, and then profile it. It often occurs that you notice that a certain list, set, or map can get large and that this costs CPU time. Then, you change the data structure, adapt the code (often substantial changes), debug it again, and finally profile it again.

Gnulib has a set of container types, that you can use for your data structures, and that can make this process easier. With these types, changing the data structure is a one-liner change, no second debugging is needed, and you can proceed to the final profiling right away.

How does this work? The Gnulib container types have the same API across different implementations, each with different performance characteristics. Since 2018, the available container types are:

  • Lists (array, circ. array, link, tree, hash)
  • Set (array, hash, linkedhash)
  • Ordered set (array, tree)
  • Map (array, hash, linkedhash)
  • Ordered map (array, tree)

The performance characteristics are documented. So, a typical change replaces

  result->entries_reversed =
    gl_list_create_empty (GL_LINKEDHASH_LIST, entry_equals, entry_hashcode,
                          NULL, true);

with

  result->entries_reversed =
    gl_list_create_empty (GL_RBTREEHASH_LIST, entry_equals, entry_hashcode,
                          NULL, true);

and the corresponding commit message was: Speed up from O(n²) to O(n).

23 December, 2020 01:42PM by Bruno Haible

gdbm @ Savannah

Version 1.19

Version 1.19 is available for download.  New in this version:

  • Pre-read the memory mapped regions on systems that support it.
  • gdbmtool: tagged initialization of structured data.
  • Preserve locking type during database reorganization.

23 December, 2020 12:59PM by Sergey Poznyakoff

December 21, 2020

Christopher Allan Webber

Vote for Amy Guy on the W3C TAG (if you can)

My friend Amy Guy is running for election on the W3C TAG (Technical Architecture Group). The TAG is an unusual group that sets a lot of the direction of the future of standards that you and I use everyday on the web. Read their statement on running, and if you can, ie if you're one of those unusual people labeled as "AC Representative", please consider voting for them. (Due to the nature of the W3C's organizational and funding structure, only paying W3C Members tend to qualify... if you know you're working for an organization that has paying membership to the W3C, find out who the AC rep is and strongly encourage them to vote for Amy.)

So, why vote for Amy? Quite simply, they're running on a platform of putting the needs of users first. Despite all the good intents and ambitions of those who have done founding work in these spaces, this perspective tends to get increasingly pushed to the wayside as engineers are pressured to shift their focus on the needs of their immediate employers and large implementors. I'm not saying that's bad; sometimes this even does help advance the interest of users too, but... well we all know the ways in which it can end up not doing so. And I don't know about you, but the internet and the web have felt an awful lot at times like they've been slipping from those early ideals. Amy's platform shares in a growing zeitgeist (sadly, still in the wispiest of stages) of thinking and reframing from the perspective of user empowerment, privacy, safety, agency, autonomy. Amy's platform reminds me of RFC 8890: The Internet Is For End Users. That's a perspective shift we desperately need right now... for the internet and the web both.

That's all well and good for the philosophical-alignment angle. But what about the "Technical" letter in TAG? Amy's standing there is rock-solid. And I know because I've had the pleasure of working side-by-side with Amy on several standards (including ActivityPub, of which we are co-authors.

Several times I watched with amazement as Amy and I talked about some changes we thought were necessary and Amy just got in the zone, this look of intense hyperfocus (really, someone should record the Amy Spec Editing Zone sometime, it's quite a thing to see), and they refactored huge chunks of the spec to match our discussion. And Amy knows, and deeply cares, about so many aspects of the W3C's organization and structure.

So, if you can vote for, or know how to get your organization to vote for, an AC rep... well, I mean do what you want I guess, but if you want someone who will help... for great justice, vote Amy Guy to the W3C TAG!

21 December, 2020 09:07PM by Christopher Lemmer Webber

Riccardo Mottola

LCD Display on RaspberryPI with Objective-C

Since many years there are ways to display Data on the Raspberry PI by using small LCD Displays connected to the GPIO pins. Most of these small projects however use Python, an interpreted language which I dislike. There are C projects using the wiringpi library and which are inspired by Arduino versions, I have looked at this nice work by binerry which concentrates on the PCD8544 (aka known as the Nokia 3310 display!).

I studied it but wanted to use the Objective-C language which I like much more and which will enable me in the near future to leverage existing Kits. I had some doubts about speed and interoperability, so I started by "wrapping" the C functions with an Objective-C class. The proof of concept worked fine, so I went on to write more native library.

SPIDisplayKit is thus born - requiring GNUstep Base only and providing an AppKit inspired interface to the Display - e.g. Coordinates to the methods are passed with a struct, similar to NSSize or NSRect, but simpler, since they are direct integer without any transformation, scaling or other support and thus eliminating the need of floating point:

Look in this video the result running on an original Raspberry PI 1:



Objective-C + GNUstep + Raspberry PI + PCD8544, the code of this trivial Pong example is full Objective-C and very easy too!

This opens the road to a lot of nice examples, since Data Management and Connection Management supplied by GNUstep Foundation is so convenient, but the speed of Objective-C (here with the GNU GCC runtime) are more than enough!


21 December, 2020 01:52PM by Riccardo (noreply@blogger.com)

parallel @ Savannah

GNU Parallel 20201222 ('Vaccine') released

GNU Parallel 20201222 ('Vaccine') has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/

Please help spreading GNU Parallel by making a testimonial video like Juan Sierra Pons: http://www.elsotanillo.net/wp-content/uploads/GnuParallel_JuanSierraPons.mp4

It does not have to be as detailed as Juan's. It is perfectly fine if
you just say your name, and what field you are using GNU Parallel for.

Quote of the month:

  GNU Parallel is my single favourite tool for batch processing data from the command line.
    -- Jeff Wintersinger @jwintersinger

New in this release:

  • --pipe engine changed making --pipe alpha quality.
  • --results -.json outputs results as JSON objects on stdout (standard output).
  • --delay 123auto will auto-adjust --delay. If jobs fail due to being spawned too quickly, --delay will exponentially increase.
  • --plus sets {hgrp} that gives the intersection of the hostgroups of the job and the sshlogin that the job is run on.
  • Bug fixes and man page updates.

News about GNU Parallel:

Get the book: GNU Parallel 2018 http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html

GNU Parallel - For people who live life in the parallel lane.

If you like GNU Parallel record a video testimonial: Say who you are, what you use GNU Parallel for, how it helps you, and what you like most about it. Include command that uses GNU Parallel if you feel like it.

About GNU Parallel

GNU Parallel is a shell tool for executing jobs in parallel using one or more computers. A job can be a single command or a small script that has to be run for each of the lines in the input. The typical input is a list of files, a list of hosts, a list of users, a list of URLs, or a list of tables. A job can also be a command that reads from a pipe. GNU Parallel can then split the input and pipe it into commands in parallel.

If you use xargs and tee today you will find GNU Parallel very easy to use as GNU Parallel is written to have the same options as xargs. If you write loops in shell, you will find GNU Parallel may be able to replace most of the loops and make them run faster by running several jobs in parallel. GNU Parallel can even replace nested loops.

GNU Parallel makes sure output from the commands is the same output as you would get had you run the commands sequentially. This makes it possible to use output from GNU Parallel as input for other programs.

For example you can run this to convert all jpeg files into png and gif files and have a progress bar:

  parallel --bar convert {1} {1.}.{2} ::: *.jpg ::: png gif

Or you can generate big, medium, and small thumbnails of all jpeg files in sub dirs:

  find . -name '*.jpg' |
    parallel convert -geometry {2} {1} {1//}/thumb{2}_{1/} :::: - ::: 50 100 200

You can find more about GNU Parallel at: http://www.gnu.org/s/parallel/

You can install GNU Parallel in just 10 seconds with:

    $ (wget -O - pi.dk/3 || lynx -source pi.dk/3 || curl pi.dk/3/ || \
       fetch -o - http://pi.dk/3 ) > install.sh
    $ sha1sum install.sh | grep 3374ec53bacb199b245af2dda86df6c9
    12345678 3374ec53 bacb199b 245af2dd a86df6c9
    $ md5sum install.sh | grep 029a9ac06e8b5bc6052eac57b2c3c9ca
    029a9ac0 6e8b5bc6 052eac57 b2c3c9ca
    $ sha512sum install.sh | grep f517006d9897747bed8a4694b1acba1b
    40f53af6 9e20dae5 713ba06c f517006d 9897747b ed8a4694 b1acba1b 1464beb4
    60055629 3f2356f3 3e9c4e3c 76e3f3af a9db4b32 bd33322b 975696fc e6b23cfb
    $ bash install.sh

Watch the intro video on http://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

Walk through the tutorial (man parallel_tutorial). Your command line will love you for it.

When using programs that use GNU Parallel to process data for publication please cite:

O. Tange (2018): GNU Parallel 2018, March 2018, https://doi.org/10.5281/zenodo.1146014.

If you like GNU Parallel:

  • Give a demo at your local user group/team/colleagues
  • Post the intro videos on Reddit/Diaspora*/forums/blogs/ Identi.ca/Google+/Twitter/Facebook/Linkedin/mailing lists
  • Get the merchandise https://gnuparallel.threadless.com/designs/gnu-parallel
  • Request or write a review for your favourite blog or magazine
  • Request or build a package for your favourite distribution (if it is not already there)
  • Invite me for your next conference

If you use programs that use GNU Parallel for research:

  • Please cite GNU Parallel in you publications (use --citation)

If GNU Parallel saves you money:

About GNU SQL

GNU sql aims to give a simple, unified interface for accessing databases through all the different databases' command line clients. So far the focus has been on giving a common way to specify login information (protocol, username, password, hostname, and port number), size (database and table size), and running queries.

The database is addressed using a DBURL. If commands are left out you will get that database's interactive shell.

When using GNU SQL for a publication please cite:

O. Tange (2011): GNU SQL - A Command Line Tool for Accessing Different Databases Using DBURLs, ;login: The USENIX Magazine, April 2011:29-32.

About GNU Niceload

GNU niceload slows down a program when the computer load average (or other system activity) is above a certain limit. When the limit is reached the program will be suspended for some time. If the limit is a soft limit the program will be allowed to run for short amounts of time before being suspended again. If the limit is a hard limit the program will only be allowed to run when the system is below the limit.

21 December, 2020 09:58AM by Ole Tange

December 16, 2020

gnulib @ Savannah

Gnulib can help your C++ programs

Typically you test your programs on glibc systems.  Gnulib helps you to have the same program compile and work fine on other platforms, such as musl libc systems, macOS, FreeBSD, NetBSD, OpenBSD, AIX, Solaris, Cygwin, mingw, MSVC, Haiku, and even Minix and Android.

To do so, Gnulib implements many functions specified by POSIX or found in glibc if the platforms lacks them, and adds workarounds for bugs in the platform implementations.  These substitutes are now (since 2019, actually) available also to C++ programs, if your program accesses these functions directly.

This does, however, not mean that if the libstdc++ or some boost library use the libc functions, they will benefit from the same workarounds; this is outside the scope of what Gnulib can provide.

Also, portability problems in the libstdc++ library itself are outside of the scope of Gnulib as well.

Despite these limitations: enjoy!

16 December, 2020 08:31PM by Bruno Haible

GNU Health

GNUHealthCon 2020. Social Medicine in a time of pandemic

It was not easy… we’re so used to celebrate the GNU Health Conference (GHCon) and the International Workshop on eHealth in Emerging Economies (IWEEE) in a physical location, that changing to a virtual conference was challenging. At the end of the day, we are about Social Medicine, and social interaction is a key part of it.

The pandemic has changed many things, including the way we interact. So we decided to work on a Big Blue Button instance, and switch to virtual hugs for this year. Surprisingly, it work out very well. We had colleagues from Gabon, Brazil, Japan, Austria, United States, Argentina, Spain, Germany, Chile, Belgium, Jamaica, England, Greece and Switzerland. We didn’t have any serious issues with the connectivity, and all the live presentations went fine. Time zone difference among countries was a bit challenging, specially to our friends from Asia, but they made it!

Social Medicine, health literacy and patient activation

The non-technical talks covered key aspects in Social Medicine, Citizens, health literacy, patient activation and Global digital health records, given by Dr. Richard Fitton, Steve and Oliver, two of his patients. Armand Mpassy talked about the challenges about GNU Health for IT illiterate Case study: Patient workflow at the outpatient service.

Individual privacy and crypto

On privacy and cryptography subjects, we had talks from Isabela Bagueros from Tor, Surviving the surveillance pandemic, Ricardo Morte Ferrer on A proposal for the implementation of a Whistleblower Channel in GNU Health, and Florian Dold on GNU Taler: A payment system by the GNU Project.

openSUSE Leap, packaging GNU Health and Orthanc

On operating systems, Doug Demaio from openSUSE talked about The big Change for openSUSE Leap 15.3, the new features on the upcoming release of this great distribution, bringing sources of SUSE Linux Enterprise (SLE) closer to the community distribution. I can not stress enough the importance of getting professional support on your GNU Health installations. Health informatics should not be taken lightly, and is key to have a solid implementation of the underlying operating system components, to get the highest levels of of security, availability and performance in GNU Health.

Axel Braun, board member openSUSE and core team member of GNU Health, focused on packaging GNU Health and the openSUSE Open Build Service (OBS). The presentation Hidden Gems – the easy way to GNU Health, put the stress on making GNU Health installation even easier, in a self-contained environment.

Sébastien Jogdone, leader of the Orthanc project, presented Using WebAssembly to render medical images, an open standard that allows to run C/C++ code on a web browser. This is great news since GNU Health integrates with Orthanc PACS server.

Qt and KDE projects in the spotlight

If we think about innovation in computing, we think about Qt and KDE. GNU Health integrates this bleeding edge technology in MyGNUHealth, the GNU Health Personal Health Record for desktop and mobile devices that uses Qt and Kirigami frameworks.

Aleix Pol, president of KDE e.V., presented Delivering Software like KDE, putting emphasis on delivering code that would be valid for many different platforms, specially mobile devices.

Cristián Maureira-Fredes, leader of the Qt for Python project, in his presentation Qt for Python: past, present, and future!, talked about the history and the upcoming developments in the project, such as PySide6, the latest Python package and development environment for Qt6. MyGNUHealth is a PySide application, so we’re very happy to have Cristián and Aleix on the team!

Dimitris Kardarakos, presented a key concept on modern applications, that is convergence, the property of the application to adapt to different platforms and geometries. His talk Desktop/mobile convergent applications with Kirigami explained how this framework KDE framework, that implements the KDE Human Interface Guidelines, helps the developers create convergent, consistent applications from the same codebase. MyGNUHealth is an example of a convergent application, to be used both in the desktop as in a mobile device.

I did go into details on MyGNUHealth design in my talk, MyGNUHealth The GNU Health Personal Health Record (PHR).

Argentina leading Public Health implementations with Libre Software

Many years of methodical and intense hard work in the areas of health informatics and public health have paid off. The team lead by Dr. Fernando Sassetti, head of the Public Health department of the National University of Entre Rios, has become a reference in the world of public health, Libre Software in the public administration, and implementations of GNU Health in many primary care centers and public hospitals in Argentina.

The National Scientific and Technological Promotion Bureau (Agencia Nacional de Promoción Científica y Tecnológica), chose Dr. Sassetti project based on GNU Health as the system for management of epidemics in municipalities. Health professionals were trained in GNU Health epidemiological surveillance system, as well as the contact tracing functionality.


Ingrid Spessotti and Fiorella de la Lama on their talk Outpatient follow-up and home care of patients with suspected or confirmed COVID-19, explained some of the functionality and benefits of these GNU Health packages, for instance:

  • Real-time observatory and epidemiological surveillance
  • Automatic notification of notifiable disease to the National Ministry of Health
  • Reporting on cases and contacts
  • Calls registry, monitoring of signs and symptoms.
  • Risk factors on each individual (eg, chronic diseases, socioeonomic status…)
  • Geolocalization of suspected or confirmed cases
  • Clinical management and followup for both inpatient and outpatient cases.

Carli Scotta and Mario Puntin, presented the Design, development and implementation of a Dentistry module for GNU Health: experience at the Humberto D’Angelo Primary Care Center in Argentina, a package that will be the base for the upcoming dentistry functionality in GNU Health 3.8 series.

The GNU Health Social Medicine Awards 2020

GNU Health is a social project. In every GHCon, we recognize the people and organizations that work to deliver dignity to those who need it most around the world.

Our biggest congratulations to Prof. Angela Davis, Proactiva Open Arms and Diamante Municipality!

As you can see, we still can do great conferences in the context of the pandemic. I hope to see you and hug you in person at GHCon2021.

In the meantime, stay safe!

For this and past editions of GNUHealthCon, you can visit www.gnuhealthcon.org

16 December, 2020 12:22PM by Luis Falcon

December 14, 2020

parted @ Savannah

parted-3.3.52 released [alpha]

I've built a 3.3.52 alpha, this will become the stable 3.4 release in a
few weeks if nothing critical is found. I'll be on vacation for a bit, I
may not do this until mid-January.

Here are the compressed sources and a GPG detached signature[*]:
  http://alpha.gnu.org/gnu/parted/parted-3.3.52.tar.xz
  http://alpha.gnu.org/gnu/parted/parted-3.3.52.tar.xz.sig

Use a mirror for higher download bandwidth:
  https://www.gnu.org/order/ftp.html

[*] Use a .sig file to verify that the corresponding file (without the
.sig suffix) is intact.  First, be sure to download both the .sig file
and the corresponding tarball.  Then, run a command like this:

  gpg --verify parted-3.3.52.tar.xz.sig

If that command fails because you don't have the required public key,
then run this command to import it:

  gpg --keyserver keys.gnupg.net --recv-keys 117E8C168EFE3A7F

and rerun the 'gpg --verify' command.

This release was bootstrapped with the following tools:
  Autoconf 2.69
  Automake 1.16.1
  Gettext 0.21
  Gnulib v0.1-4130-g8183682cc
  Gperf 3.1

NEWS

  • Noteworthy changes in release 3.3.52 (2020-12-14) [alpha]
    • New Features

  Add a new partition type flag, chromeos_kernel, for use with ChromeOS
  machines. This is a GPT-only flag and sets the type GUID to
  FE3A2A5D-4F32-41A7-B725-ACCC3285A309.

  Add a new partition flag for Linux Boot Loader Specification /boot
  partitions. The bls_boot flag will set the msdos partition type to 0xea
  and the GPT partition type GUID to bc13c2ff-59e6-4262-a352-b275fd6f7172.

14 December, 2020 07:49PM by Brian C. Lane

December 11, 2020

GNU Health

GNU Health pioneers the adoption of WHO ICD-11 and ICHI standards

GNU Health and the World Health Organization

The GNU Health project believes in coding standards, specially in those that can be widely used. In 2011, the United Nations University (UNU) adopted the GNU Health Hospital Management Information System (HMIS) component, in part because of its strong focus in social medicine and environmental health, but also because it complied with most of the World Health Organization standards.

Using WHO standards is key for global health. The GNU Health federation provides timely and accurate health information to citizens and health professionals globally. We are able to generate this large, distributed networks of information thanks to protocols and standards, that permit the aggregation of data from thousands and even millions of nodes.

GNU Health at the United Nations – International Institute for Global Health

GNU Health HMIS provides many WHO standards and UN models, such as:

  • ICD-10, International Classification of Diseases, tenth revision
  • ICD-9, Volume 3, for coding procedures
  • ICF, International Classification of Functioning, Disability & Health
  • ICPM, International Classification of Procedures in Medicine (to be replaced by ICHI)
  • WHO List of Essential Medicines
  • Pediatric growth charts
  • Vaccination schedules
  • MDG / SDG (Millennium Development Goals / Sustainable Development Goals, such as the MDG6 to tackle HIV, Malaria and Tuberculosis

Health professionals, institutions and governments around the world can trust GNU Health as the WHO compliant Hospital Management and Health information system.

GNU Health training for WHO Africa Regional Officers

Throughout these years, GNU Health and WHO have been cooperating in areas of Universal Health access, Mother and Child health or campaigns to fight HIV/AIDS, Malaria and Tuberculosis.

It has been nearly a decade of work, at the technical, functional and community level. The training of WHO regional officials, as well as to the health professionals have had a quite positive impact. Proper coding using WHO standards in GNU Health, both for health conditions and procedures / interventions result in good quality, epidemiological reports, better management of the internal resources and improved health promotion and disease prevention campaigns.

First newborn registration in the GNU Health implementation at Cameroon district hospital

Moving forward: ICD-11 and ICHI

The current International Classification of Diseases, tenth revision (ICD10) has been of great help to standardize coding health conditions, but it has its limitations and it definitely needs a review in both the coding system itself as well as the need of specific health areas.

To overcome these limitations, the World Health Organization started ICD-11, the latest revision that includes many more health conditions, the much needed areas of mental health and sexual health, as well as a great method to combine conditions, called cluster coding or postcordination. Cluster coding allows the combination of two terms in for the condition. This concept brings much more flexibility and contextualization.

In terms of health procedures, the International Classification of Health Interventions (ICHI) is estimated to be released by the end of this month. ICHI will replace the International Classification of Procedures in Medicine (ICPM).

The International Classification of Health Interventions will become the standard coding system for reporting and analyzing health procedures. In words from WHO, “the classification provides Member States, service providers, managers, and researchers with a common tool for reporting and analyzing health interventions for statistical, quality and reimbursement purposes.“.

ICHI delivers a coding method based on three axes: Target, Action and Means. It is valid for all context of health (primary care, surgical, dental, nursing, community health). It contains over 7000 interventions that can deliver at an individual or population basis.

GNU Health leads the integration of WHO References

Depending on the individual and environment, a particular pathology can have different clinical representations of the disease. Diabetes mellitus (DM) can be controlled or can have devastating consequences for the individual. Most of the times the socioeconomic determinants play a key role on the epidemiology, clinical outcomes and disease progression, and assessing health as a whole – from the molecular basis to the socioeconomic determinants – is one of the areas where GNU Health excels.

GNU Health provides the WHO International Classification of Functioning, Disability and Health, that has been key in many context, to assess the impact of the environment in many patients. This was studied in the GNU Health implementation in Laos (see my post “GNU Health: Helping Laos Heal from UXO physical and emotional trauma.“).

WHO diagram on relations among reference classifications

GNU Health is ICD-11 ready, and waiting for you

The upcoming release 3.8 for the GNU Health HMIS component includes de ICD-11 Morbidity and Mortality Statistics (MMS) linearization, as well as the existing ICF package. We are waiting for WHO to release the stable version of ICHI.

The ICD-11 will officially come into effect on 1 January 2022, so we have a year to train and get used to it. The GNU Health HMIS community server can be your perfect training companion. It’s online 24×7 and you can test the new codings in this server.

At this point, you can already start testing the ICD-11 functionality, and how it interacts with the other references as the ICF. Of course, you can become part of the GNU Health team, either as an end-user of as a member of our development and research team, and provide feedback and improvements!

These new additions will be of great help to achieve our common mission towards Universal Health Coverage and Sustainable Development Goals. At the end of the day, GNU Health is a social project that uses really cool Libre technology. I am positive that the immense majority of our health related problems, both at individual and population level, can be solved by means of Social Medicine.

As Dr. Rudolf Virchow said, Medicine is a social science, and politics is nothing else but medicine at a larger scale.

11 December, 2020 09:12PM by Luis Falcon

FSF News

December 09, 2020

Christopher Allan Webber

Identity is a Katamari, language is a Katamari explosion

I said something strange this morning:

Identity is a Katamari, language is a continuous reverse engineering effort, and thus language is a quadratic explosion of Katamaris.

This sounds like nonsense probably, but has a lot of thought about it. I have spent a lot of time in the decentralized-identity community and the ocap communities, both of which have spent a lot of time hemming and hawing about "What is identity?", "What is a credential or claim?", "What is authorization?", "Why is it unhygienic for identity to be your authorization system?" (that mailing list post is the most important writing about the nature of computing I've ever written; I hope to have a cleaned up version of the ideas out soon).

But that whole bit about "what is identity, is it different than an identifier really?" etc etc etc...

Well, I've found one good explanation, but it's a bit silly.

Identity is a Katamari

There is a curious, surreal, delightful (and proprietary, sorry) game, Katamari Damacy. It has a silly story, but the interesting thing here is the game mechanic, involving rolling around a ball-like thing that picks up objects and grows bigger and bigger kind of like a snowball. It has to be seen or played to really be understood.

This ball-like thing is called a "Katamari Damacy", or "soul clump", which is extra appropriate for our mental model. As it rolls around, it picks up smaller objects and grows bigger. The ball at the center is much like an identifier. But over time that identifier becomes obscured, it picks up things, which in the game are physical objects, but these metaphorically map to "associations".

Our identity-katamari changes over time. It grows and picks up associations. Sometimes you forget something you've picked up that's in there, it's buried deep (but it's wiggling around in there still and you find out about it during some conversation with your therapist). Over time the katamari picks up enough things that it is obscured. Sometimes there are collisions, you smash it into something and some pieces fly out. Oh well, don't worry about it. They probably weren't meant to be.

Language is reverse engineering

Shout out to my friend Jonathan Rees for saying something that really stuck in my brain (okay actually most things that Rees says stick in my brain):

"Language is a continuous reverse engineering effort, where both sides are trying to figure out what the other side means."

This is true, but its truth is the bane of ontologists and static typists. This doesn't mean that ontologies or static typing are wrong, but that the notion that they're fixed is an illusion... a useful, powerful illusion (with a great set of mathematical tools behind it sometimes that can be used with mathematical proofs... assuming you don't change the context), but an illusion nonetheless. Here are some examples that might fill out what I mean:

  • The classic example, loved by fuzzy typists everywhere: when is a person "bald"? Start out with a person with a "full head" of hair. How many hairs must you remove for that person to be "bald"? What if you start out the opposite way... someone is bald... how many hairs must you add for them to become not-bald?

  • We might want to construct a precise recipe for a mango lassi. Maybe, in fact, we believe we can create a precise typed definition for a mango lassi. But we might soon find ourselves running into trouble. Can a vegan non-dairy milk be used for the Lassi? (Is vegan non-dairy milk actually milk?) Is ice cream acceptable? Is added sugar necessary? Can we use artificial mango-candy powder instead of mangoes? Maybe you can hand-wave away each of these, but here's something much worse: what's a mango? You might think that's obvious, a mango is the fruit of mangifera indica or maybe if you're generous fruit of anything in the mangifera genus. But mangoes evolved and there is some weird state where we had almost-a-mango and in the future we might have some new states which are no-longer-a-mango, but more or less we're throwing darts at exactly where we think those are... evolution doesn't care, evolution just wants to keep reproducing.

  • Meaning changes over time, and how we categorize does too. Once someone was explaining the Web Ontology Language (which got confused somewhere in its acronym ordering and is shortened to OWL (update: it's a Winnie the Pooh update, based on the way the Owl character spells his name... thank you Amy Guy for informing me of the history)). They said that it was great because you could clearly define what is and isn't allowed and terms derived from other terms, and that the simple and classic example is Gender, which is a binary choice of Male or Female. They paused and thought for a moment. "That might not be a good example anymore."

  • Even if you try to define things by their use or properties rather than as an individual concept, this is messy too. A person from two centuries ago would be confused by the metal cube I call a "stove" today, but you could say it does the same job. Nonetheless, if I asked you to "fetch me a stove", you would probably not direct me to a computer processor or a car engine, even though sometimes people fry an egg on both of these.

Multiple constructed languages (Esperanto most famously) have been made by authors that believed that if everyone spoke the same language, we would have world peace. This is a beautiful idea, that conflict comes purely from misunderstandings. I don't think it's true, especially given how many fights I've seen between people speaking the same language. Nonetheless there's truth in that many fights are about a conflict of ideas.

If anyone was going to achieve this though, it would be the Lojban community, which actually does have a language which is syntactically unambiguous, so you no longer have ambiguity such as "time flies like an arrow". Nonetheless, even this world can't escape the problem that some terms just can't be easily pinned down, and the best example is the bear goo debate.

Here's how it works: both of us can unambiguously construct a sentence referring to a "bear". But when it is that bear no longer a bear? If it is struck in the head and is killed, when in that process has it become a decompositional "bear goo" instead? And the answer is: there is no good answer. Nonetheless many participants want there to be a pre-defined bear, they want us to live in a pre-designed universe where "bear" is a clear predicate that can be checked against, because the universe has a clear definition of "bear" for us.

That doesn't exist, because bears evolved. And more importantly, the concept and existence a bear is emergent, cut across many different domains, from evolution to biology to physics to linguistics.

Sorry, we won't achieve perfect communication, not even in Lojban. But we can get a lot better, and set up a system with fewer stumbling blocks for testing ideas against each other, and that is a worthwhile goal.

Nonetheless, if you and I are camping and I shout, "AAH! A bear! RUN!!", you and I probably don't have to stop to debate bear goo. Rees is right that language is a reverse engineering effort, but we tend to do a pretty good job of gaining rough consensus of what the other side means. Likewise, if I ask you, "Where is your stove?", you probably won't lead me to your computer or your car. And if you hand me a "sugar free vegan mango lassi made with artificial mango flavor" I might doubt its cultural authenticity, but if you then referred to the "mango lassi" you had just handed me a moment ago, I wouldn't have any trouble continuing the conversation. Because we're more or less built to contextually construct language contexts.

Language is a quadratic explosion of Katamaris

Language is composed of syntax partly, but the arrangement of symbolic terms mostly. Or that's another way to say that the non-syntactic elements of language are mostly there as identifiers substituted mentally for identity and all the associations therein.

Back to the Katamari metaphor. What "language is a reverse-engineering effort" really means is that each of us are constructing identities for identifiers mentally, rolling up katamaris for each identifier we encounter. But what ends up in our ball will vary depending on our experiences and what paths we take.

Which really means that if each person is rolling up a separate, personal identity-katamari for each identifier in the system, that means that, barring passing through a singularity type event-horizon past which participants can do direct shared memory mapping, this is an O(n^2) problem!

But actually this is not a problem, and is kind of beautiful. It is amazing, given all that, just how good we are at finding shared meaning. But it also means that we should be aware of what this means topologically, and that each participant in the system will have a different set of experiences and understanding for each identity-assertion made.

Thank you to Morgan Lemmer-Webber, Stephen Webber, Corbin Simpson, Baldur Jóhannsson, Joey Hess, Sam Smith, Lee Spector, and Jonathan Rees for contributing thoughts that lead to this post (if you feel like you don't belong here, do belong here, or are wondering how the heck you got here, feel free to contact me). Which is not to say that everyone, from their respective positions, have agreement here; I know several disagree strongly with me on some points I've made. But everyone did help contribute to reverse-engineering their positions against mine to help come to some level of shared understanding, and the giant pile of katamaris that is this blogpost.

09 December, 2020 07:00PM by Christopher Lemmer Webber

recutils @ Savannah

Recutils, GOOPS and virtual slots

Writing Guile bindings for C libraries is seriously fun. As recutils is becoming popular in GNU, I thought it would be a fun idea to write Guile bindings for librec, the library powering recutils. Consequently, we are also thinking about adding Guile scripting to recutils.

Guile's design as an extension language is present in all of its features. Here and there you will find little gems that have very clearly been designed to help dealing with C code. Even GOOPS, the Guile implementation of GOOPS, has such features. In the article below I explain how I leverage a feature called virtual slots when writing bindings for recutils.

https://ane.github.io/programming/lisp/goops-virtual-slots-and-ffi.html

09 December, 2020 10:53AM by Antoine Kalmbach

behistun @ Savannah

The Official Gnu Package Behistun - Renamed behistun (previously gbehistun)

Greetings and Felicitations.

Gnu Behintun (gbehistun) was originally planned as a tool for geophysical analysis.  Major decisions about Gnu Behistun have been made since that time.  The first change was the development of the Gunga Din Software, that has today been incorporated into
the Official Behistun Package. 

The Gunga Din Software provides a set of powerful tools for  configuring a Gnu System.  The whole package has been renamed "behistun", with "gbehistun" beinf its previous name.

Christopher Dimech
General Administrator

09 December, 2020 03:02AM by Christopher Dimech

December 08, 2020

autoconf @ Savannah

Autoconf 2.70 [stable]

Autoconf 2.70 has been released, see the release announcement:
https://lists.gnu.org/archive/html/autotools-announce/2020-12/msg00001.html

08 December, 2020 07:23PM by Zack Weinberg

gnulib @ Savannah

Gnulib helps you avoid integer overflow vulnerabilities

Gnulib's intprops module has new macros INT_ADD_OK, INT_SUBTRACT_OK, and INT_MULTIPLY_OK that support portable overflow checking while doing integer arithmetic. On GNU platforms the macros typically use only a single machine instruction more than ordinary integer arithmetic would.

08 December, 2020 01:47AM by Paul Eggert

December 04, 2020

GNU Guix

Add a subcommand showing GNU Guix history of all packages

Hello, everyone! I'm Magali and for the next three months, I'll be an Outreachy intern in the GNU Guix community. As part of my Outreachy application process, I made my first ever contribution to Free Software adding a package to Guix, and since then I'm eager to begin contributing even more.

My task for this three-month period is to add a subcommand showing the history of all packages. Although Guix makes it possible to install and have an older version of a package, it isn't as easy to find, for example, the commit related to these versions.

The subcommand I'll implement will be something like guix git log. The idea is that, for instance, when the user invokes guix git log --oneline | grep msmtp, a list with all the commits, one per line, related to msmtp, will be shown.

In order to accomplish my task, I have to sharpen up my Scheme skills, learn more about the guile-git, which is a Guile library that provides bindings to libgit2. So, to begin with, I'll dive into the Guix code and see how commands are built.

By the end of this internship, I hope to learn much more than just programming. I also expect to gain meaninful experience and improve my communication skills.

About GNU Guix

GNU Guix is a transactional package manager and an advanced distribution of the GNU system that respects user freedom. Guix can be used on top of any system running the kernel Linux, or it can be used as a standalone operating system distribution for i686, x86_64, ARMv7, and AArch64 machines.

In addition to standard package management features, Guix supports transactional upgrades and roll-backs, unprivileged package management, per-user profiles, and garbage collection. When used as a standalone GNU/Linux distribution, Guix offers a declarative, stateless approach to operating system configuration management. Guix is highly customizable and hackable through Guile programming interfaces and extensions to the Scheme language.

04 December, 2020 12:00PM by Magali Lemes

health @ Savannah

Argentina chooses GNU Health for COVID19 observatory and contact tracing

In the context of the GNU Health International Conference, GHCon2020, Bioengineer Ingrid Spessotti, Dr Fiorella de la Lama and health professionals from Diamante Municipality presented the use of GNU Health as a COVID-19 observatory and contact tracing tool.

The Government of Argentina, through the National Scientific and Technological Promotion Bureau (Agencia Nacional de Promoción Científica y Tecnológica), chose GNU Health as the system for management of epidemics in municipalities. This project is lead by Dr. Fernando Sassetti, head of the Public Health office at the National University of Entre Rios.

Health professionals were trained in GNU Health epidemiological surveillance system, as well as the contact tracing functionality.

Spessotti explained some of the functionality and benefits of these GNU Health packages, for instance:

  • Real-time observatory and epidemiological surveillance
  • Automatic notification of notifiable disease to the National Ministry of Health
  • Reporting on cases and contacts
  • Calls registry, monitoring of signs and symptoms.
  • Risk factors on each individual (eg, chronic diseases, socioeonomic status...)
  • Geolocalization of suspected or confirmed cases
  • Clinical management and followup for both inpatient and outpatient cases.

We're very proud and grateful to the Government of Argentina for choosing Libre Software in the public administration, particularly in the public health system. Choosing Libre software is choosing open science and digital sovereignty for the sake of the people of Argentina and the rest of the world.

The presentation can be downloaded from the GHCon2020 conference.

04 December, 2020 11:15AM by Luis Falcon

November 30, 2020

behistun @ Savannah

Development of Behistun - The Gungadin Software Tools

Development has now proceed at a good pace.  The initial focus has been the development of configuration tools for setting up a Gnu System, in the form of the Gungadin Software Tools.

That is:

1. Setup for bashrc
2. Definitions of fstab, Xmodmap, and dircolors
3. Various tools for emacs
4. Abbreviated User Guide for Gnu Systems
5. Abbreviated Development Guide for Elisp

30 November, 2020 09:32PM by Christopher Dimech

denemo @ Savannah

Version 2.5 is imminent. Please test!

New Features

    MusicXML export
        Supports export of multi-movement scores

    Support for Musical Sketches
        Cut selection as sketch

    Support for LilyPond 2.20.0

    Menu Navigation from Keyboard enabled

    Comments in Lyric verses

Bug Fixes

    Various fixes in MusicXML import
    Wrong Keyboard Shortcuts on MacOS

30 November, 2020 05:20PM by Richard Shann

GNU Guix

Welcome our intern for the Outreachy 2020-2021 round

We are thrilled to announce that Magali L. Sacramento (IRC: lemes) will join Guix as an Outreachy intern over the next few months.

Outreachy logo

Magali will work on adding a subcommand to Guix showing the history of all packages. This will facilitate the use of guix time-machine and inferiors, as it will add support to easily search for a given package version on all the defined channels.

Simon Tournier will be the primary mentor, with Gábor Boskovits co-mentoring, and the whole community will undoubtedly help and provide guidance, as it has always done.

Welcome, and looking forward to work together!

About GNU Guix

GNU Guix is a transactional package manager and an advanced distribution of the GNU system that respects user freedom. Guix can be used on top of any system running the Hurd or the Linux kernel, or it can be used as a standalone operating system distribution for i686, x86_64, ARMv7, and AArch64 machines.

In addition to standard package management features, Guix supports transactional upgrades and roll-backs, unprivileged package management, per-user profiles, and garbage collection. When used as a standalone GNU/Linux distribution, Guix offers a declarative, stateless approach to operating system configuration management. Guix is highly customizable and hackable through Guile programming interfaces and extensions to the Scheme language.

30 November, 2020 03:30PM by Gábor Boskovits, Simon Tournier

November 28, 2020

health @ Savannah

Reorganization and migration of Mercurial repositories

Dear community

Since Richard Stallman adopted GNU Health in 2011, the development environment has been hosted at GNU Savannah, which generously provided a mercurial (hg) repository, that has been in use since then.

Many years have passed, and GNU Health is today a Libre digital health ecosystem made of different components.

In the last couple of years, GNU Health has been facing a tremendous growth, both in the community and in the development environment, yet, the hosting facilities at Savannah has remained pretty much the same.

One of the issues I have faced is not being able to have multiple mercurial repositories to match all the new components. To give you an idea, this is a list of the GNU Health ecosystem components from 2011 and 2020.

2011 components:

  • HIS
  • HIS-client

2020 components:

  • HIS
  • HIS-client
  • HIS-client plugins (camera, crypto, FRL)
  • PyWEBDAV server
  • MyGNUHealth
  • FHIR server
  • Thalamus
  • Federation Portal

As you can imagine, having a single mercurial repository to hold all these components, with their own development and release process, is not feasible. I've spent quite a bit of time trying and asking to find a solution to modernize GNU Savannah, but this change has not happen. As a result, I have taken the decision to move part of the development environment from Savannah to OSDN.

There are many reasons behind why I've chosen OSDN among other platforms. Some of them:

  • Freedom to create and manage our mercurial repositories and packages
  • Support of Mercurial
  • Only Libre Software projects allowed
  • Anybody in the world can access. There is no ban on countries.
  • OSDN has mirrors in many regions / countries in the world.

Currently all the components (except the HIS server) have now their own mercurial repo at OSDN. The HIS repository will be migrated in the coming days, once we establish the connection from the Weblate translation server.

Of course, GNU Health will continue to be hosted at GNU.org, as well as the mailing lists and news. The official packages will be published at GNU.org. All these packages are also now hosted at OSDN.

Let me take this opportunity to thank both GNU and OSDN for their
generosity and support for the GNU Health and the Libre
Software community around the globe!

Happy and healthy hacking!

--
Dr. Luis Falcon, MD, MSc
President, GNU Solidario
GNU Health: Freedom and Equity in Healthcare
http://www.gnuhealth.org
Fingerprint: ACBF C80F C891 631C 68AA 8DC8 C015 E1AE 0098 9199

28 November, 2020 01:35PM by Luis Falcon

November 26, 2020

GNU Guix

Music Production on Guix System

The recent release of Guix 1.2.0 was accompanied by a release song (lyrics). Let me tell you how this happened and how you can use Guix System for your own music productions!

Collage of cables, a rack-mounted USB audio interface, a Chapman Stick, and a screenshot of Ardour

It all started only three days before the 1.2.0 release when someone on the #guix IRC channel brought up the tradition of OpenBSD people to write, record, and publish at least one song alongside their system releases.

A wistful look at my neglected instruments later I felt compelled to take this as a challenge: with less than three days to go could we actually compose, record, and publish a song using nothing but free software despite a jam-packed weekend schedule? I wanted to find out.

Inspiration and Planning

The working title “Ode to One Two Oh” was an obvious choice, being a quasi-palindrome, and its five syllables suggested a time signature of 5/4. Where to from here?

As I stared at my Emacs session with a Guile REPL (read, eval, print, loop) buffer I tried to recall what the letters “REPL” stand for. Clearly, in my case the “P” was for “Procrastination”, but what about the others? I had stumbled upon the chorus: a description of the Guix development process. Contribute as others before us have shared their contributions (Reciprocation), review patches and discuss (Evaluation), hack on something else (Procrastination), and repeat (Loop).

The words suggested a simple descending melody, which would need to be elevated by a somewhat less simple chord progression. After trying out a few harmonies on the Grand Stick I remembered how terrible my memory was and decided that I would need to scatter the harmonies onto a canvas, listen to the whole progression, and adjust the lines as needed — all without having to build up muscle memory for harmonies and progressions I may very well end up discarding in the process.

This is where my composition workflow probably deviates from most other people. Many would use a MIDI sequencer for that kind of approach, whereas I decided to hone in on the exact harmonies with an unlikely tool: the unparalleled music engraving application Lilypond. Lilypond sports a versatile language that covers primitive note input, the means of combining them to larger phrases and musical ideas, and the means of abstraction — it allows for musical ideas to be named and recombined in different shapes. For everything the language doesn’t account for with specialized syntax I can simply switch to Guile Scheme. No other notation software is as flexible and malleable as Lilypond. I let it generate both sheet music and a MIDI file — the sheet music is displayed in a PDF viewer in Emacs and the MIDI file sent to fluidsynth (because I trust my ears over my eyes).

lilypond draft.ly && \
  fluidsynth -r 48000 -i -n -a alsa \
    ~/soundfonts/FluidR3GM.sf2 draft.midi

I always try to keep the duration of my stay in the MIDI world at a minimum, because a composition workflow that is firmly rooted in MIDI tends to result in music that sounds sterile or robotic, an undesirable quality that can be hard to eradicate later. So I put them aside and focused on another part of the song. Mirroring the quasi-palindrome of the title, the song’s structure would be A B C B A. With the smooth chords of the B section locked down I walked up to the Grand Stick (I mounted it on a modified microphone stand for more flexibility) and tapped out a contrasting two-handed funky bass line to the click of a metronome.

Time to record!

Audio Recording

How does the signal of my stringed instrument make it into a file on my computer’s disk? The Stick’s stereo signal feeds into two daisy-chained Axoloti boards with hand-crafted signal processing tuned to the peculiarities of my instrument; the stereo output of the DSP boards is connected to two inputs on my USB audio interface (the Tascam US16x08, though any class-compliant audio interface will work just fine), which presents itself to the system as a 16 channel input sound card.

Exposed Axoloti boards feeding on a Chapman Stick audio signal

The computer runs JACK 1 to shuffle the incoming signals on all channels to other JACK clients (audio applications and plugins). I use patchage to conveniently wire up inputs and outputs in an interactive graphical signal flow diagram.

audio and MIDI signal flow in patchage

The center piece of my recording session is the venerable Ardour, an incredibly flexible and polished digital audio workstation (DAW) that natively supports JACK and also serves as an LV2 audio plugin host.

Okay, the Stick is ready to be recorded, but I prefer to record a drum track first instead of playing to the click of a metronome. But wait, I really can’t record the drums now! This is an apartment and the neighbors are asleep. Oh, and I’m a lousy funk drummer. Let’s cheat!

Custom drum patterns in Hydrogen

My drum machine of choice is Hydrogen. It lets me create any number of arbitrarily long patterns, combine them, and — that’s crucially important — sync up with other JACK applications such as Ardour. I toggled a button in Ardour to let it take control of the JACK transport, meaning that when I start recording in Ardour the drum machine starts playing in sync — perfect! Let’s roll!

Rough Processing

After frustrating minutes had turned into exhausting hours of recording the bass line (eventually resorting to punching in and out instead of re-recording everything whenever I made an audible mistake) I put my arranger’s hat on and tried to get a sense for what might still be missing. The recorded track sounded rather “flat”; after all this was the “raw” signal straight from the instrument’s pre-amplifier. Time to spruce it up and approximate the final sound!

Over the years the selection of audio plugins that I’m using to process my recordings has narrowed down to few more than the Calf suite of LV2 plugins. I will admit to being an extremely superficial person, so a big factor in choosing the Calf plugins is the consistent, very pretty and intuitive user interface they present. What made me stick to the Calf plugins, though, is that they also sound really good. Furthermore, they make it easy to tweak the many parameters and come with helpful diagnostics (such as listening only to the changed frequencies, or spectral visualizations, etc).

Selection of Calf plugins

First thing I do is to use light compression to even out slight variations in dynamics. Calf Mono Compressor does the job here. The principle is simple: a compressor lowers the volume when a sound gets loud and it raises the volume of the resulting signal according to the dialed in makeup gain. It has a bunch of other knobs to control how far ahead it will look to watch out for loud sounds, another to prevent “pumping” (too rapid activation and deactivation), another to smooth out the “knee” of the threshold curve, etc — but what it really comes down to is: at what level should the signal be reduced, by how much, and what’s the gain to make up for the overall loss in volume.

One piece of advice: resist the temptation of overdoing this! Compression may make the sound punchier, but don’t throw away all dynamics here or you’ll risk draining the life from your hard-earned waveforms. So I stick with a ratio of no more than two, keep the makeup gain fairly low, and the threshold somewhat high to only trigger the compressor in the upper fifth of the dynamic range.

Next: equalization. This is to scoop out an unpleasant character by attenuating certain frequency ranges. Again, the Calf suite has got me covered. A five band EQ is sufficient as I don’t want to be tempted to make sharp cuts in the frequency spectrum of the signal. As a general rule I don’t boost any frequencies but primarily cut. Here, too, the key is to be gentle. Don’t cut more than two or three decibels or you’ll end up with a comically filtered sound. (Exceptions apply for drum recordings, but thankfully we dodged that bullet by using Hydrogen.) If you find that you need to cut or boost more than that, chances are that there are problems with your recording. Don’t try to compensate for problems with post-processing that could have been avoided by improving the recording quality. I scoop out the mids a tiny bit and cut out the very low bass frequencies that don’t contribute anything more than a rumble.

MIDI Resurgence

With the bass line and the drums in place it was time to revisit the harmonies for part B. I really did want to record them with my very red virtual analog hardware synthesizer, but when I brought it into my tiny work room I realized that I had ran out of space on my lap — I had run out of space on my desk months ago, and with all those audio cables piling up on the floor even that was no option.

Lilypond generated a MIDI file earlier, so I sighed and told Ardour to import it. I assigned the ancient electric piano plugin mdaEPiano as a synthesizer to the track, and expanded the track vertically to drag around every MIDI note event by hand, refining the notes and adding tiny timing and velocity imperfections to make it seem as if a human played them. To paper over the clearly audible undesirable imperfections of the plugin’s sound generation I added some Calf Reverb (for the graphics people: adding reverb is roughly equivalent to using the blur tool in a graphics application). I could have picked one of the many better synthesizers and emulators, but we go way back, this plugin and I.

MIDI support in Ardour is really well thought-out as you don’t need to ever leave the main window, so you are always surrounded by audio context. You just expand the track vertically and have as much access to the events as you want. This approach may be a little unusual for those who are used to MIDI sequencers, but for my purposes it is close to perfect.

Audio and MIDI tracks in Ardour

Lyrics and Vocals: Human vs Machine

At this point things were coming together nicely, but we only had lyrics (a handful of words, really) for the chorus. Not enough for a song, but just a little too much for a laundry list. So I turned to IRC again where our resident Debian ambassador and assuredly human person Vagrant Cascadian happened to volunteer a stroke of genius: what if the lyrics were composed entirely of typos in package descriptions that had been fixed since the last release? Vagrant carefully reordered the words to a poignant poem, bringing them alive as the voice of the adversarial machine, a symbol of the waning hold of the bugs and errors on our way to the next release. What would be more fitting than to let the machine croak these words in the release song?

I started up the Festival speech synthesis software and a few Scheme expressions later the inimitable monotone of none other than the entity known only as cmu_us_fem_cg droned the words into an audio file that I promptly imported into Ardour, and processed with the GxDetune plugin, Calf Vintage Delay, and some reverb.

I did my best between bites of a Monday pre-release lunch to perform the role of the human contemplating this cycle of creation through hacking by recording three vocal lines (two low, one high) for the chorus.

Final touches

With about half an hour or so left before the release announcement it became clear that there would be no “audio mastering” in the traditional sense. I put on my monitoring headphones (flat frequency response for an “objective” mixing experience) and adjusted the volume levels, plugin settings, and faded in and out the noisy edges of each take. I also added a few more effects: a phaser on the Chapman Stick track to emphasize that this is supposed to be funk; a crossover (Calf X-Over 2 Band) and three audio busses to first process the low bass frequencies separately from the high frequencies (e.g. to use different amplifier simulations) and then to rejoin them; and a limiter on the master bus to avoid any volume spikes above 0dB and to compress the mix.

Mixing tracks in Ardour

I exported the final mix as a Vorbis OGG audio file and sent it off to Ludovic to have it included in the release announcement.

Concluding Thoughts

Some of the tools used in the production

So what’s the verdict? Is the result perfect? Absolutely not! But I do want to point out that any and all mistakes and imperfections are entirely due to my own lack of skill and time — they are not the result of the limitations of free software. A more skilled audio engineer would certainly not be limited by a system like the one I used, a system composed entirely of freedom-respecting software that is made extra reliable by the user-empowering and liberating features of Guix System.

About GNU Guix

GNU Guix is a transactional package manager and an advanced distribution of the GNU system that respects user freedom. Guix can be used on top of any system running the Hurd or the Linux kernel, or it can be used as a standalone operating system distribution for i686, x86_64, ARMv7, and AArch64 machines.

In addition to standard package management features, Guix supports transactional upgrades and roll-backs, unprivileged package management, per-user profiles, and garbage collection. When used as a standalone GNU/Linux distribution, Guix offers a declarative, stateless approach to operating system configuration management. Guix is highly customizable and hackable through Guile programming interfaces and extensions to the Scheme language.

26 November, 2020 03:30PM by Ricardo Wurmus

November 23, 2020

GNU Guix 1.2.0 released

Image of a flight of the Guix.

We are pleased to announce the release of GNU Guix version 1.2.0, right in time to celebrate the eighth anniversary of Guix!

The release comes with ISO-9660 installation images, a virtual machine image, and with tarballs to install the package manager on top of your GNU/Linux distro, either from source or from binaries. Guix users can update by running guix pull.

It’s been almost 7 months since the last release, during which 200 people contributed code and packages, and a number of people contributed to other important tasks—code review, system administration, translation, web site updates, Outreachy mentoring, you name it!

There’s been more than 10,200 commits in that time frame and it is the challenge of these release notes to summarize all that activity.

Before reading any further, sit back and play this very special release tune, Ode to One Two Oh (lyrics) brought to you by your friendly Guix team—see credits below!

Security

A major highlight in this release is the ability to authenticate channels, which probably makes Guix one of the safest ways to deliver complete operating systems today. This was the missing link in our “software supply chain” and we’re glad it’s now fixed. The end result is that guix pull and related commands now cryptographically authenticate channel code that they fetch; you cannot, for instance, retrieve unauthorized commits to the official Guix repository. We detailed the design and implementation back in July. The manual explains what you need to know as a user and as a channel author. There’s also a new guix git authenticate command to use this authentication mechanism for arbitrary Git repositories!

Example commit graph.

Coupled to that, guix pull and guix system reconfigure now detect potential system downgrades or Guix downgrades and raise an error. This ensures you cannot be tricked into downgrading the software in your system, which could potentially reintroduce exploitable vulnerabilities in the software you run.

With these safeguards in place, we have added an unattended upgrade service that, in a nutshell, runs guix pull && guix system reconfigure periodically. Unattended upgrades and peace of mind.

Another important change from a security perspective that we’re proud of is the reduction of binary seeds to 60 MiB on x86_64 and i686, thanks to tireless work on GNU Mes, Gash, and related software.

On the same security theme, the build daemon and origin programming interface now accept new cryptographic hash functions (in particular SHA-3 and BLAKE2s) for “fixed-output derivations”—so far we were unconditionally using SHA256 hashes for source code.

User experience

We want Guix to be accessible and useful to a broad audience and that has again been a guiding principle for this release. The graphical system installer and the script to install Guix on another distro have both received bug fixes and usability improvements. First-time users will appreciate the fact that guix help now gives a clear overview of the available commands, that guix commands are less verbose by default (they no longer display a lengthy list of things that they’ll download), and that guix pull displays a progress bar as it updates its Git checkout. guix search, guix system search, and similar commands now invoke a pager automatically (less by default), addressing an oft-reported annoyance.

Performance improved in several places. Use of the new “baseline compiler” that landed in Guile 3.0.4 leads to reduced build times for Guix itself, which in turn means that guix pull is much less resource-hungry. Performance got better in several other areas, and more work is yet to come.

We’re giving users more flexibility on the command line, with the addition of three package transformation options: --with-debug-info (always debug in good conditions!), --with-c-toolchain, and --without-tests. Transformations are now recorded in the profile and replayed upon guix upgrade. Furthermore, those options now operate on the whole dependency graph, including “implicit” inputs, allowing for transformations not possible before, such as:

guix install --with-input=python=python2 python-itsdangerous

Last, the new (guix transformations) module provides an interface to the transformation options available at the command line, which is useful if you want to use such transformations in a manifest.

The reference manual has been expanded: there’s a new “Getting Started” section, the “Programming Interface” section contains more info for packagers. We added code examples in many places; in the on-line copy of the manual, identifiers in those code snippets are clickable, linking to the right place in the Guix or Guile manuals.

Last but not least, the manual is fully translated into French, German, and Spanish, with partial translations in Russian and Chinese. Guix itself is fully translated in those three languages and partially translated in eleven other languages.

Packs, GNU/Hurd, disk images, services, …

But there’s more! If you’re interested in bringing applications from Guix to Guix-less machines, guix pack -RR now supports a new ‘fakechroot’ execution engine for relocatable packs, and the ability to choose among different engines at run time with the GUIX_EXECUTION_ENGINE variable. The fakechroot engine improves performance compared to the proot engine, for hosts that do not support unprivileged user namespaces.

Support for whole-system cross-compilation—as in guix system build --target=arm-linux-gnueabihf config.scm—has been improved. That, together with a lot of porting work both for packages and for the Guix System machinery, brings the hurd-vm service—a cross-compiled Guix GNU/Hurd system running as a virtual machine under GNU/Linux. This in turn has let us start work on native GNU/Hurd support.

Related to this, the new (gnu image) module implements a flexible interface to operating system images; from the command line, it is accessible via guix system disk-image --image-type=TYPE. Several image types are supported: compressed ISO-9660, qcow2 containing ext4 partitions, ext2 with Hurd options, and so on. This is currently implemented using genimage.

In addition to those already mentioned, a dozen of new system services are available, including services for Ganeti, LXQt, R Shiny, Gemini, and Guix Build Coordinator.

2,000 packages have been added, for a total of more than 15K packages; 3,652 were upgraded. The distribution comes with GNU libc 2.31, GCC 10.2, GNOME 3.34, Xfce 4.14.2, Linux-libre 5.9.3, and LibreOffice 6.4.6.2 to name a few. There’s also a new build system for packages built with Maven (bootstrapping Maven in Guix was the topic of a talk at the Guix Days last week).

The NEWS file lists additional noteworthy changes and bug fixes you may be interested in.

Try it!

You can go ahead and download this new version and get in touch with us.

Speaking of which, our Debian ambassador told us that you will soon be able to apt install guix if you’re on Debian or a derivative distro!

Enjoy!

Credits

Ricardo Wurmus (grand stick, synthesizer, drums, vocals, lyrics) — Luis Felipe (illustration) — Vagrant Cascadian (Debian packaging, lyrics) — Festival (back vocals)

About GNU Guix

GNU Guix is a transactional package manager and an advanced distribution of the GNU system that respects user freedom. Guix can be used on top of any system running the Hurd or the Linux kernel, or it can be used as a standalone operating system distribution for i686, x86_64, ARMv7, and AArch64 machines.

In addition to standard package management features, Guix supports transactional upgrades and roll-backs, unprivileged package management, per-user profiles, and garbage collection. When used as a standalone GNU/Linux distribution, Guix offers a declarative, stateless approach to operating system configuration management. Guix is highly customizable and hackable through Guile programming interfaces and extensions to the Scheme language.

23 November, 2020 03:45PM by Ludovic Courtès

November 22, 2020

parallel @ Savannah

GNU Parallel 20201122 ('Biden') released [stable]

GNU Parallel 20201122 ('Biden') [stable] has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/

No new functionality was introduced so this is a good candidate for a stable release.

Please help spreading GNU Parallel by making a testimonial video like Juan Sierra Pons: http://www.elsotanillo.net/wp-content/uploads/GnuParallel_JuanSierraPons.mp4

It does not have to be as detailed as Juan's. It is perfectly fine if you just say your name, and what field you are using GNU Parallel for.

Quote of the month:

  GNU parallel should be taught in class, it is one of the best tools to run grids of experiments
    -- no love deep learning @tetraduzione@twitter

New in this release:

  • Bug fixes and man page updates.

News about GNU Parallel:

Get the book: GNU Parallel 2018 http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html

GNU Parallel - For people who live life in the parallel lane.

If you like GNU Parallel record a video testimonial: Say who you are, what you use GNU Parallel for, how it helps you, and what you like most about it. Include command that uses GNU Parallel if you feel like it.

About GNU Parallel

GNU Parallel is a shell tool for executing jobs in parallel using one or more computers. A job can be a single command or a small script that has to be run for each of the lines in the input. The typical input is a list of files, a list of hosts, a list of users, a list of URLs, or a list of tables. A job can also be a command that reads from a pipe. GNU Parallel can then split the input and pipe it into commands in parallel.

If you use xargs and tee today you will find GNU Parallel very easy to use as GNU Parallel is written to have the same options as xargs. If you write loops in shell, you will find GNU Parallel may be able to replace most of the loops and make them run faster by running several jobs in parallel. GNU Parallel can even replace nested loops.

GNU Parallel makes sure output from the commands is the same output as you would get had you run the commands sequentially. This makes it possible to use output from GNU Parallel as input for other programs.

For example you can run this to convert all jpeg files into png and gif files and have a progress bar:

  parallel --bar convert {1} {1.}.{2} ::: *.jpg ::: png gif

Or you can generate big, medium, and small thumbnails of all jpeg files in sub dirs:

  find . -name '*.jpg' |
    parallel convert -geometry {2} {1} {1//}/thumb{2}_{1/} :::: - ::: 50 100 200

You can find more about GNU Parallel at: http://www.gnu.org/s/parallel/

You can install GNU Parallel in just 10 seconds with:

    $ (wget -O - pi.dk/3 || lynx -source pi.dk/3 || curl pi.dk/3/ || \
       fetch -o - http://pi.dk/3 ) > install.sh
    $ sha1sum install.sh | grep 3374ec53bacb199b245af2dda86df6c9
    12345678 3374ec53 bacb199b 245af2dd a86df6c9
    $ md5sum install.sh | grep 029a9ac06e8b5bc6052eac57b2c3c9ca
    029a9ac0 6e8b5bc6 052eac57 b2c3c9ca
    $ sha512sum install.sh | grep f517006d9897747bed8a4694b1acba1b
    40f53af6 9e20dae5 713ba06c f517006d 9897747b ed8a4694 b1acba1b 1464beb4
    60055629 3f2356f3 3e9c4e3c 76e3f3af a9db4b32 bd33322b 975696fc e6b23cfb
    $ bash install.sh

Watch the intro video on http://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

Walk through the tutorial (man parallel_tutorial). Your command line will love you for it.

When using programs that use GNU Parallel to process data for publication please cite:

O. Tange (2018): GNU Parallel 2018, March 2018, https://doi.org/10.5281/zenodo.1146014.

If you like GNU Parallel:

  • Give a demo at your local user group/team/colleagues
  • Post the intro videos on Reddit/Diaspora*/forums/blogs/ Identi.ca/Google+/Twitter/Facebook/Linkedin/mailing lists
  • Get the merchandise https://gnuparallel.threadless.com/designs/gnu-parallel
  • Request or write a review for your favourite blog or magazine
  • Request or build a package for your favourite distribution (if it is not already there)
  • Invite me for your next conference

If you use programs that use GNU Parallel for research:

  • Please cite GNU Parallel in you publications (use --citation)

If GNU Parallel saves you money:

About GNU SQL

GNU sql aims to give a simple, unified interface for accessing databases through all the different databases' command line clients. So far the focus has been on giving a common way to specify login information (protocol, username, password, hostname, and port number), size (database and table size), and running queries.

The database is addressed using a DBURL. If commands are left out you will get that database's interactive shell.

When using GNU SQL for a publication please cite:

O. Tange (2011): GNU SQL - A Command Line Tool for Accessing Different Databases Using DBURLs, ;login: The USENIX Magazine, April 2011:29-32.

About GNU Niceload

GNU niceload slows down a program when the computer load average (or other system activity) is above a certain limit. When the limit is reached the program will be suspended for some time. If the limit is a soft limit the program will be allowed to run for short amounts of time before being suspended again. If the limit is a hard limit the program will only be allowed to run when the system is below the limit.

22 November, 2020 03:29PM by Ole Tange

November 19, 2020

automake @ Savannah

automake-1.16.3 released [stable]

This is to announce automake-1.16.3, a stable release.

There have been 62 commits by 15 people in the 35 weeks since 1.16.2.
Special thanks to Karl Berry and Zack Weinberg for doing so much of the work.

See the NEWS below for a brief summary.

Thanks to everyone who has contributed!
The following people contributed changes to this release:

  Akim Demaille (1)
  Colomban Wendling (1)
  Felix Yan (1)
  Issam E. Maghni (1)
  Jim Meyering (12)
  Karl Berry (23)
  Miro Hron\v{c}ok (1)
  Paul Eggert (4)
  Reuben Thomas (3)
  Robert Menteer (1)
  Robert Wanamaker (1)
  Samuel Tardieu (1)
  Samy Mahmoudi (1)
  Vincent Lefevre (1)
  Zack Weinberg (10)

Jim [on behalf of the automake maintainers]
==================================================================

Here is the GNU automake home page:
    http://gnu.org/s/automake/

For a summary of changes and contributors, see:
  http://git.sv.gnu.org/gitweb/?p=automake.git;a=shortlog;h=v1.16.3
or run this command from a git-cloned automake directory:
  git shortlog v1.16.2..v1.16.3

Here are the compressed sources:
  https://ftp.gnu.org/gnu/automake/automake-1.16.3.tar.xz (1.6MB)
  https://ftp.gnu.org/gnu/automake/automake-1.16.3.tar.gz (2.3MB)

Here are the GPG detached signatures[*]:
  https://ftp.gnu.org/gnu/automake/automake-1.16.3.tar.xz.sig
  https://ftp.gnu.org/gnu/automake/automake-1.16.3.tar.gz.sig

Use a mirror for higher download bandwidth:
  https://www.gnu.org/order/ftp.html

[*] Use a .sig file to verify that the corresponding file (without the
.sig suffix) is intact.  First, be sure to download both the .sig file
and the corresponding tarball.  Then, run a command like this:

  gpg --verify automake-1.16.3.tar.xz.sig

If that command fails because you don't have the required public key,
then run this command to import it:

  gpg --keyserver keys.gnupg.net --recv-keys 7FD9FCCB000BEEEE

and rerun the 'gpg --verify' command.

Please report bugs and problems to <bug-automake@gnu.org>,
and send general comments and feedback to <automake@gnu.org>.

==================================================================
NEWS

* New features added

  - In the testsuite summary, the "for $(PACKAGE_STRING)" suffix
    can be overridden with the AM_TESTSUITE_SUMMARY_HEADER variable.

* Bugs fixed

  - Python 3.10 version number no longer considered to be 3.1.

  - Broken links in manual fixed or removed, and new script
    contrib/checklinkx (a small modification of W3C checklink) added,
    with accompany target checklinkx to recheck urls.

  - install-exec target depends on $(BUILT_SOURCES).

  - valac argument matching more precise, to avoid garbage in DIST_COMMON.

  - Support for Vala in VPATH builds fixed so that both freshly-generated and
    distributed C files work, and operation is more reliable with or without
    an installed valac.

  - Dejagnu doesn't break on directories containing spaces.

* Distribution

  - new variable AM_DISTCHECK_DVI_TARGET, to allow overriding the
    "make dvi" that is done as part of distcheck.

* Miscellaneous changes

  - install-sh tweaks:
    . new option -p to preserve mtime, i.e., invoke cp -p.
    . new option -S SUFFIX to attempt backup files using SUFFIX.
    . no longer unconditionally uses -f when rm is overridden by RMPROG.
    . does not chown existing directories.

  - Removed function up_to_date_p in lib/Automake/FileUtils.pm.
    We believe this function is completely unused.

  - Support for in-tree Vala libraries improved.

19 November, 2020 04:47AM by Jim Meyering

November 16, 2020

libredwg @ Savannah

libredwg-0.11.1 released (bugfixes)

out_dxf bugfixes mostly. 0.11 failed to produce dxf files which could
be imported into AutoCAD.  This bugfix release improves DXF importing
from 10% to about 90%. But beware: Some dwg2dxf DXF files still can
silently crash AutoCAD, so be sure to save your DWG before DXFIN.
Most 3DSOLID's still cannot be imported via DXF, but some can now.

Major bugfixes:
  * Fixed decode of Unicode string streams (GH #279)
  * Fixed UCS-2 to UTF-8 conversion for the chars 128-255.
  * Fixed DXF output of many objects: VISUALSTYLE, HATCH, DIMENSION*, ATTDEF,
    ATTRIB, TEXT, VIEWPORT, INSERT, SEQEND, VERTEX, BLOCK, STYLE, MULTILEADER,
    DICTIONARY, XRECORD INT64 type, MLINESTYLE angles, SPATIAL_FILTER.origin,
    SPATIAL_INDEX class appname, duplicate STYLE eed, ACDBPLACEHOLDER for r13-r14,
    LAYER.name with |, LAYER.plotflag for Defpoints, LTYPE.shape_flag, STLYE.flag,
    PDFUNDERLAY group 170,
    ACSH_CHAMFER_CLASS, ACSH_FILLET_CLASS, ACSH_BOOLEAN_CLASS, BLOCKBASEPOINTPARAMETER,
    PROXY_OBJECT, PROXY_ENTITY.
    HEADER.DIMSAV.
    Common: lineweight, shadow_flags (GH #275)
  * Moved PSPACE entities from BLOCKS to ENTITIES (GH #277)
  * Fixed \r\n quoting in DXF texts (GH #275)
  * Generalize and fix DXF text splitup into 255 chunks and quoting, add basic
    shift-jis quoting support for Katagana and Hiragana letters
    (Japanese \M+1xxxx => Unicode \U+XXXX)
  * Added indxf dwg_has_subclass check to avoid buffer overflows when writing to
    wrong subclasses. (GH #295)
  * Fixed dwg_dim_blockname calculation, esp. for anonymous blocks.
  * Improved SAB 2 to SAT 1 conversion: Split overlarge blocks into block_size of max 4096.
    Add "^ " quoting rule.
  * Fixed decode of empty classes section, esp. for r13c3 and r14.
  * Keep IDBUFFER for old DXFs (r13-r14)
  * Fixed SummaryInfo types from T to TU16, relevant for DXF headers also (GH #275)
  * Add missing UTF-8 conversion in geojson for TEXT, MTEXT, GEOPOSITIONMARKER. (GH #271)
  * Fixed and improved some Dockerfile, added a check-docker target.
  * Drop unneeded perl/LibreDWG.xs, we rather use the generated c directly.
Minor features:
  * Add CMake basic library support, so the library can be included into cmake projects.
    (no programs)
  * Improved header C++ compat.
  * Promoted ACSH_HISTORY_CLASS to stable. Needed for ACIS entities in DXF.
  * Added to examples: filt_sat.pl and dec_sat.pl to compare and decode DXF sat parts.

Here are the compressed sources:
  http://ftp.gnu.org/gnu/libredwg/libredwg-0.11.1.tar.gz   (15.7MB)
  http://ftp.gnu.org/gnu/libredwg/libredwg-0.11.1.tar.xz   (8MB)

Here are the GPG detached signatures[*]:
  http://ftp.gnu.org/gnu/libredwg/libredwg-0.11.1.tar.gz.sig
  http://ftp.gnu.org/gnu/libredwg/libredwg-0.11.1.tar.xz.sig

Use a mirror for higher download bandwidth:
  https://www.gnu.org/order/ftp.html

Here are more binaries:
  https://github.com/LibreDWG/libredwg/releases/tag/0.11.1

Here are the SHA256 checksums:

269629b0a4e5dc54e86790501200e4a6917eddb51f9303f75657adb088931690  libredwg-0.11.1.tar.gz
b6dd03ff30c3fcfb5b82a00176bd184b58965d7198228f2cc5bf923a99f1a6f7  libredwg-0.11.1.tar.xz

[*] Use a .sig file to verify that the corresponding file (without the
.sig suffix) is intact.  First, be sure to download both the .sig file
and the corresponding tarball.  Then, run a command like this:

  gpg --verify libredwg-0.11.1.tar.gz.sig

If that command fails because you don't have the required public key,
then run this command to import it:

  gpg --keyserver keys.gnupg.net --recv-keys B4F63339E65D6414

and rerun the 'gpg --verify' command.

16 November, 2020 08:39PM by Reini Urban

GNU Guix

Online Guix Day Conference: schedule released!

The Guix hackers are very happy to announce the first online Guix Day Conference on Sunday November, 22nd. This conference is open to everyone (no registration fee) and will be held entirely online. Want to know the schedule, read on!

There will be no presentation on the 22nd! Please watch the talks beforehand.

Guix Days logo

Join us live on the 22nd to participate in the various sessions!

Live discussions will take place on Sunday, November 22nd, and the agenda is the following (UTC+1):

(break)

(long break)

(break)

Chinese users will find a mirror hosted at https://guix.org.cn. You will also find alternative links below for different formats, and downloading through IPFS.

Each session will be question/answer and discussion related to the topic via the BigBlueButton instance generously hosted by Fosshost. Warm thanks to them!

The slots are short so please watch the videos beforehand to better enjoy the discussions. The term BoF means open discussion to address prospects. The last discussion may be longer depending on what you have to share.

The main channel for the day will be the video chat and questions will be asked via the chat hosted there or––because we love it––via #guix on irc.freenode.net then the floor might be shared, opening more mics. The discussions will not be recorded because we would like to keep them informal––where people are less impressed to share their point of views.

The Code of Conduct applies for all the channels of communication.

GNU Guix in psychology research and teaching

Presented by Lars-Dominik Braun. (video webm, video mp4, doi, slide, ipfs)

The Leibniz Institute for Psychology supports psychologists in adopting open science practices by providing them with free infrastructure services. One of these services is PsychNotebook, a web platform providing access to shareable and reproducible R and Python programming environments, using RStudio and JupyterLab in particular. PsychNotebook is used by researchers for analyzing research data and by instructors to teach psychology students script-based analyses.

The session covers why psychology among other research field needs this platform, how it is designed and what role GNU Guix plays in all of this. In particular, four challenges are addressed: user management, project management, web app deployment/proxying; as well as usability and how GNU Guix supports or provide reproducible environments.

Fixing the CI

Presented by Mathieu Othacehe. (video webm, video mp4, ipfs)

The session covers the following points:

Nix and Guix: similarities and differences

Presented by Andrew Tropin. (video, video mp4, ipfs)

The session covers an high-level overview and comparison of Nix and GNU Guix package managers or NixOS and Guix System distributions. The comparison had been initiated to understand the differences between those two great projects. It may inspire people from both communities to implement missing features or help someone to decide, which package manager or operating system to pick.

From v1.2 to release process

Chaired by Simon Tournier.

The session covers a proposal to smooth the release process; ironic for a rolling-release project, isn’t it? Make a release means:

  1. how and what to do: tools
  2. schedule / track
  3. who do: people

The #1 is roughly described in the file maintenance/doc/release.org. Even if a non-negligible part is based on experience and cannot be documented; see #3. However, tools are still missing: going further than guix weather --coverage or --display-missing.

The #2 means track what is going on between 2 releases. It seems easier to write down important changes when they happen than parse all the log history one week before releasing in order to publish the NEWS file. More importantly, #2 means stay on track with the schedule: release when it is ready? at fixed date? what must be in? does it make sense to synchronize with staging merges? how to synchronize with the branch core-updates?

The #3 means who take the responsibility to do the job. And it appears easier to divide the workload. More importantly, how to share the skill? Guix could take inspiration from Nix or GNU Glibc or your-name-it.

Porting Guix to modern PowerPC

Presented by Tobias Platen. (video webm, video mp4, ipfs)

The sessions covers how to port of Guix to modern 64-bit Little Endian, since that one is best supported by the Talos II and its graphics card, the AST2500. The final aim would be a self hosting version of Guix that runs on the Talos II, the Blackbird and the upcoming Libre-SOC. Such port may also be useful to support older PowerMacs including the G4 and G5.

Just build it with Guix

Presented by Efraim Flashner. (video webm, video mp4, ipfs)

The session covers how to use Guix as build plateform. Creating custom packages is ubiquitous with Guix and packaging with Guix is fairly straightforward. But what about working with packages where you want to package a non-release version? Or if you're hacking on another package which either isn't packaged or you want to test your changes before sending off a patch set or a pull request? The file guix.scm is the unofficial filename for Guix build instructions for this case. It provides a target for creating an environment for hacking on the package, and it creates a recipe to build what's currently in that repository; meaning you can use the power of Guix for builds even while working on other projects. A combination of a little bit of boiler-plate for building “this here repository” and standard package definitions allow for easy building and rebuilding without dirtying the source tree. And also for building multiple versions of the package in one go.

Progress so far on the Guix Build Coordinator

Presented by Chris Baines. (video webm, video mp4, ipfs)

The session looks at the Guix Build Coordinator, a tool for building lots of derivations, potentially across many machines, and doing something useful with the results. This is a new tool that might be able to help with patch review, quality assurance as well as substitute availability. The talk will cover the motivation, design, implementation and future, along with a small demo of the Guix Build Coordinator.

Peer-to-peer substitutes and sources

Chaired by David Dashyan.

The session covers the status of the peer-to-peer substitutes distribution. Especially the almost 2 years old first draft adding support to distribute and retrieve substitutes over IPFS; see the wip-ipfs-substitutes branch. Moreover the branches wip-ipfs and wip-ipfs2 are attempts to add the Go part of IPFS. The discussion will address the next steps to merge the branch wip-ipfs-substitutes or how to add decentralized substitutes distribution.

Guile Hacker Handbook

Presented by Jérémy Korwin-Zmijowski. (video webm, video mp4, ipfs)

The sessions covers Guile Hacker Handbook (GHH). The purpose of the GHH is to show Guile the way modern programming languages are shown, i.e., demonstrating its tools and following development approach we often stick to professionally.

Lengthy manuals are often hard to grasp at first; especially when learning new materials from scratch. Instead, it seems easier to rely first on tutorials or blog posts. Writing style and direct application sometimes helps to understand the underlying concepts). Then reads the reference manual feels more comfortable. GHH is an attempt to address this. For example, GHH is about Guile, not Scheme.

GHH is also about Test Driven Development and focuses on tests as first-class citizen.

(BoF) Rust and Cargo

Chaired by John Soo.

The session covers the various issues with the Rust ecosystem in Guix. The discussion is about:

  • packaging efforts
  • build systems
  • incremental compilation/shared libraries
Bootstrapping the Java Ecosystem

Presented by Julien Lepiller. (video webm, video mp4, ipfs)

The session covers the Maven bootstrap and the Maven Build System and how this Maven story may inspire directions to implement similar bootstrap stories for other ecosystems.

Ensuring that software is built entirely from source is an essential practice to ensure user Freedom, as well as for auditability and security. Unfortunately, the Java ecosystem is very complex and presents some interesting challenges when building from source.

One of these challenges is Maven, a build tool and package manager that is used by many if not most of the Java developers nowadays. One key challenge is that Maven is itself a Java package, that is built with Maven and has a lot of dependencies, that themselves use Maven.

The discussion presents the current state of the bootstrap and how we break the various dependency cycles that occur. The recent addition to Guix of the maven build system is a major step towards a good support of the Java ecosystem in Guix. We will discuss how Maven works, what it expects, and how Guix can accommodate it to build offline, reproducibly, with no trusted binary.

The ways forward (roadmap and beyond)

Chaired by GNU Guix maintainers.

The session covers the medium- and long-term goals that may or may not look realistic. Pragmatic dream!

Code of Conduct

This online conference is an official Guix event. Therefore, the Code of Conduct applies. Please be sure to read it beforehand!

If you witness violations of the code of conduct during the event, please email guix-days@gnu.org, a private email alias that reaches the organizers (Simon zimoun Tournier and Julien roptat Lepiller) and the GNU Guix maintainers.

About GNU Guix

GNU Guix is a transactional package manager and an advanced distribution of the GNU system that respects user freedom. Guix can be used on top of any system running the Hurd or the Linux kernel, or it can be used as a standalone operating system distribution for i686, x86_64, ARMv7, and AArch64 machines.

In addition to standard package management features, Guix supports transactional upgrades and roll-backs, unprivileged package management, per-user profiles, and garbage collection. When used as a standalone GNU/Linux distribution, Guix offers a declarative, stateless approach to operating system configuration management. Guix is highly customizable and hackable through Guile programming interfaces and extensions to the Scheme language.

16 November, 2020 12:00AM by Guix Hackers

November 15, 2020

Applied Pokology

GNU poke development news

The development of GNU poke is progressing well, and we keep hopes for a first release before the end of the year: we are determined for something good to happen in 2020! ;)

This article briefly reviews the latest news in the development of the program, like changes in certain syntax to make the language more compact, support for lambda expressions, support for stream-like IO spaces and how they can be used to write filters, support for using assignments to poke complex data structures, improvements in data integrity, annoying bugs fixed, and more.

15 November, 2020 12:00AM

November 13, 2020

GNUnet News

GNUnet 0.14.0

GNUnet 0.14.0 released

We are pleased to announce the release of GNUnet 0.14.0.
This is a new major release. It breaks protocol compatibility with the 0.13.x versions. Please be aware that Git master is thus henceforth INCOMPATIBLE with the 0.13.x GNUnet network, and interactions between old and new peers will result in issues. 0.13.x peers will be able to communicate with Git master or 0.13.x peers, but some services - in particular GNS - will not be compatible.
In terms of usability, users should be aware that there are still a large number of known open issues in particular with respect to ease of use, but also some critical privacy issues especially for mobile users. Also, the nascent network is tiny and thus unlikely to provide good anonymity or extensive amounts of interesting information. As a result, the 0.14.0 release is still only suitable for early adopters with some reasonable pain tolerance.

Download links

The GPG key used to sign is: 3D11063C10F98D14BD24D1470B0998EF86F59B6A

Note that due to mirror synchronization, not all links might be functional early after the release. For direct access try http://ftp.gnu.org/gnu/gnunet/

Noteworthy changes in 0.14.0 (since 0.13.3)

  • GNS:
    • Aligned with specification LSD001.
    • Crypto agility: The GNS protocol now supports other zone types besides ECDSA-based PKEYs. However, the alternative EdDSA-based EDKEY crypto is not yet implemented. #6485
    • PKEY zones: ECDSA zone record sets are now encrypted using AES-CTR. #6487
  • IDENTITY: Identities can now be created either as ECDSA (default) or EdDSA key pairs.
  • POSTGRESQL: Allow NULL value returns and fix test cases. #6524
  • UTIL: String time conversion functions no longer localized to preserve reversibility. #6615
  • Buildsystem: README updates to clarify runtime/compile/optional dependencies
  • (NEW) MESSENGER: New messenger component (experimental)

A detailed list of changes can be found in the ChangeLog and the 0.14.0 bugtracker.

Known Issues

  • There are known major design issues in the TRANSPORT, ATS and CORE subsystems which will need to be addressed in the future to achieve acceptable usability, performance and security.
  • There are known moderate implementation limitations in CADET that negatively impact performance.
  • There are known moderate design issues in FS that also impact usability and performance.
  • There are minor implementation limitations in SET that create unnecessary attack surface for availability.
  • The RPS subsystem remains experimental.
  • Some high-level tests in the test-suite fail non-deterministically due to the low-level TRANSPORT issues.

In addition to this list, you may also want to consult our bug tracker at bugs.gnunet.org which lists about 190 more specific issues.

Thanks

This release was the work of many people. The following people contributed code and were thus easily identified: Christian Grothoff, Daniel Golle, t3sserakt, TheJackiMonster and Martin Schanzenbach.

13 November, 2020 11:00PM

November 12, 2020

www-zh-cn @ Savannah

LibrePlanet 2021: join us online on March 20 & 21 with keynote Julia Reda

Dear CTT members:

Mark your calendars: LibrePlanet 2021: Empowering Users will be held on March 20 and 21, 2021. For those of you who haven't been to the LibrePlanet conference before: expect a friendly, social, community-focused event with two days of inspiring talks and workshops from some of the most active and inspiring people in the free software community.

Participate in LibrePlanet 2021

Submit a session

Just like in 2020, LibrePlanet 2021: Empowering Users will be an online event. We're preparing to translate the enjoyment of real life interaction and catching up with everyone in the community in person to an online event in which we can create a space for people to enjoy talks, interact with other community members, exchange ideas, and get to know organizations through an exhibitor space. In the meantime, if you want to be a speaker at LibrePlanet 2021, you now just have a few more days to submit a session. Submissions will close right after this weekend, Monday at 12:00 EST (17:00 UTC).

Register for the event

Registration for the event will open soon for all attendees. Like for the previous edition, anyone will be able to watch the event online through libreplanet.org/2021. However, if you register for the conference, you will be able to enjoy an added level of participation in the event and with the free software community. For anyone who can spare a bit more, we have a special LibrePlanet 2021 gift waiting as well. Want to receive all the details? Subscribe to the LibrePlanet announcement list via libreplanet.org/2021

Volunteer

Volunteers are essential to help make the event a success, and this doesn't change for an online event. We can't do this without you. Tasks include moderation of IRC chat channels, coordination of program elements, writing, or just bringing us great ideas to make the event even better. If you are interested, please contact resources@fsf.org.

Get excited

If you want to know more about how the event is organized, and how we stream and record the event, fully free and online, you can read more in our blog post about the 2020 edition's technical challenges. You can also browse through the video archive of past LibrePlanet conference sessions on our MediaGoblin instance to get inspired.

Support LibrePlanet by becoming an exhibitor or sponsor

LibrePlanet is organized by the FSF, a 501(c)(3) charity. Your contribution will allow us to create a truly valuable event for many people all over the globe by by funding the equipment and staff time necessary to produce, stream, and document the event using only free software.

We also offer unique opportunities for businesses and other organizations to connect to a community that is dedicated to free software. Early bird pricing for exhibitors starts now, and will be available until February 15th, 2021. For information on how your company can be represented in our virtual exhibit hall, or to further sponsor the LibrePlanet conference, please email campaigns@fsf.org.

We can't wait to welcome you at the event!

best regards,
from FSF

12 November, 2020 01:30AM by Wensheng XIE

November 11, 2020

FSF Events

International Day Against DRM (IDAD) 2020

International Day Against DRM (IDAD) 2020

11 November, 2020 11:55PM

FSF News

PRESS: Copyright reform activist Julia Reda to keynote FSF's LibrePlanet, March 20 & 21, 2021

BOSTON, Massachusetts, USA -- November 11, 2020 -- The Free Software Foundation (FSF) today announced Julia Reda as its first confirmed keynote speaker for LibrePlanet 2021. The annual technology and social justice conference will be held online on March 20 and 21, 2021, with the theme "Empowering Users." Registration will open soon.

11 November, 2020 09:20PM

education @ Savannah

Teachers: Help Your Students Resist Zoom

New article published by the GNU Education Team.
Read and share at https://www.gnu.org/education/teachers-help-students-resist-zoom.html

Teachers: Help Your Students Resist Zoom

In the wake of the global COVID-19 emergency, the urgency of ensuring the continuity of classes left little to no space for a healthy debate on how to favor software that empowers students to learn. As a consequence, freedom-denying and privacy-violating software has seen widespread adoption in education.

Zoom, a proprietary online conferencing program that is becoming more and more dangerously popular, is an example of such harmful technology. No educational institution should ever use it.

Please don't force students to install Zoom on their computers, or to use its web version.

To all those teaching remote classes with Zoom

It is unfortunate that you are using Zoom, a nonfree program that spies on users and takes away your students' computer freedom, along with your own. By using Zoom, students are dependent on a software they cannot inspect, study or change. Their freedom to learn about technology and how it works is destroyed.

If you use Zoom, some students might decide to continue using it beyond your classes, effectively surrendering their privacy over communication, and would hence miss on the opportunity to learn how to keep control of their data and computing.

There are better programs you can use for teaching remote classes, free/libre programs like Jitsi or BigBlueButton. By choosing these and other free programs for education, you are enabling motivated students to learn about the software they use everyday, and some of them one day will be able to adapt it to their needs, serving a larger community. Those who will not pursue such curiosity, will still benefit from using a software that respects their freedoms and doesn't spy on them.

Choosing free software for your classes will positively impact life-long learning, a crucial skill for any student. In fact, students will learn that it is in their power to run, study, modify and share any free software they wish, according to their own curiosity and needs. In contrast, by adopting proprietary software, students are taught to become mere consumers of a user interface, with no power over the technology they are using.

If you independently opted for using Zoom in your classes, we urge you to switch to software that respects your students' and your freedom.

If Zoom was imposed on you by your school's administration, we recommend you to contact them and ask to drop Zoom in favour of a free program. Ask other teachers for help, and explain why software freedom is paramount for education.

Last resort

If you really can't remove Zoom, we propose this temporary workaround only as a last resort to help your students avoid using Zoom in the short term. We do not recommend it as a stable, long-term solution.

  • A day or two before the class, post the visual materials for each day in some freedom-respecting way, so students can download them.Any simple old-fashioned web site is suitable for this.
  • Encourage students to phone the Zoom server; tell them the phone number and the code for the conversation. That way they can listen to the audio of the session, while they follow the visual materials alongside.

life.) You could take this opportunity and talk about free software, and why software freedom is even more important today.

  • Make a recording of the Zoom conversation for each session, and post it in a freedom-respecting way soon after that session ends.

If there were situations in which this solution is not feasible, such as examinations, and students refuse to use Zoom, then you, as a teacher, could set up a different meeting in parallel or an alternative exam session using one of the free programs mentioned above. Another possibility is to provide a computer in your school with Zoom installed, and let the student join the exam using that computer. That way, the student won't be forced to install non-free software on their computer, and the use of Zoom will be limited to the exam. If you opt for this choice, we recommend the school computer to run a free software distribution.

Simply by telling students about this possibility, which you can do more than once, you will help inspire resistance
to Zoom and other freedom-trampling programs, and avoid inculcating surrender.

You will still be using Zoom, which is deleterious for your freedom. Some of your students will probably still be using Zoom, which is deleterious for their freedom. But, thanks to your efforts, some of them will avoid using Zoom.

Please note that the workarounds we suggest here are only meant as a short-term solution to help teachers react quickly to oppose the use of nonfree software for remote lectures rather than deferring to the new academic year. In the long-term, it is crucial to migrate to free/libre software and online conferencing programs like Jitsi and BigBlueButton.

All software and technology as a whole must be free, and this is a small step towards that goal. Saying NO to unjust computing even once is progress.

See examples of how people are successfully resisting nonfree software.

11 November, 2020 06:25PM by Dora Scilipoti

November 10, 2020

GNUnet News

GNS Specification Milestone 4/4 and Packaging 1+2

GNS Technical Specification Milestone 4/4 and Packaging 1+2

We are happy to announce the completion of the fourth and last milestone for the GNS Specification. The fourth milestone consists of involving a broader community for feedback and improvements:

Based on this and private feedback received, we updated the draft and the implementation. Most notably, GNS now supports alternative cryptographic schemes for zone keys ("crypto agility") which allows alternative zone types. The (protocol breaking) changes will be released as part of GNUnet 0.14.0. The specification document LSD001 can be found at:

Further, work on packaging has been done on Alpine (Packaging 1) and Debian (Packaging 2) packages. The packaging for Alpine is complete, the Debian package is in progress as review and final integration is out of our hands. For reference see also:

We will continue to engage with IETF/IRTF as much as possible (online or in-person) including future presentations and discussions at IETF/IRTF. There is still a packaging task open for Fedora (3) which is still work in progress. This work was (and other aspects still are) generously funded by NLnet as part of their Search and discovery fund.

10 November, 2020 11:00PM

November 09, 2020

grep @ Savannah

grep-3.6 released [stable]

This is to announce grep-3.6, a stable release.

There have been 18 commits by 3 people in the 6 weeks since 3.5.

This release has two important changes, a fix for a bug introduced in
grep-3.2 (from late 2018) and the removal of support for the long-deprecated
GREP_OPTIONS envvar.  See the NEWS below for more detail.

Thanks again to Norihiro Tanaka and Paul Eggert,
and to everyone else who has contributed.
The following people contributed changes to this release:

  Jim Meyering (9)
  Norihiro Tanaka (3)
  Paul Eggert (6)

Jim [on behalf of the grep maintainers]
==================================================================

Here is the GNU grep home page:
    http://gnu.org/s/grep/

For a summary of changes and contributors, see:
  http://git.sv.gnu.org/gitweb/?p=grep.git;a=shortlog;h=v3.6
or run this command from a git-cloned grep directory:
  git shortlog v3.5..v3.6

To summarize the 65 gnulib-related changes, run these commands
from a git-cloned grep directory:
  git checkout v3.6
  git submodule summary v3.5

==================================================================
Here are the compressed sources:
  https://ftp.gnu.org/gnu/grep/grep-3.6.tar.gz   (2.6MB)
  https://ftp.gnu.org/gnu/grep/grep-3.6.tar.xz   (1.6MB)

Here are the GPG detached signatures[*]:
  https://ftp.gnu.org/gnu/grep/grep-3.6.tar.gz.sig
  https://ftp.gnu.org/gnu/grep/grep-3.6.tar.xz.sig

Use a mirror for higher download bandwidth:
  https://www.gnu.org/order/ftp.html

[*] Use a .sig file to verify that the corresponding file (without the
.sig suffix) is intact.  First, be sure to download both the .sig file
and the corresponding tarball.  Then, run a command like this:

  gpg --verify grep-3.6.tar.gz.sig

If that command fails because you don't have the required public key,
then run this command to import it:

  gpg --keyserver keys.gnupg.net --recv-keys 7FD9FCCB000BEEEE

and rerun the 'gpg --verify' command.

This release was bootstrapped with the following tools:
  Autoconf 2.69c
  Automake 1.16b
  Gnulib v0.1-3992-gbd90572c0

==================================================================
NEWS

* Noteworthy changes in release 3.6 (2020-11-08) [stable]

** Changes in behavior

  The GREP_OPTIONS environment variable no longer affects grep's behavior.
  The variable was declared obsolescent in grep 2.21 (2014), and since
  then any use had caused grep to issue a diagnostic.

** Bug fixes

  grep's DFA matcher performed an invalid regex transformation
  that would convert an ERE like a+a+a+ to a+a+, which would make
  grep a+a+a+ mistakenly match "aa".
  [Bug#44351 introduced in grep 3.2]

  grep -P now reports the troublesome input filename upon PCRE execution
  failure.  Before, searching many files for something rare might fail with
  just "exceeded PCRE's backtracking limit".  Now, it also reports which file
  triggered the failure.

09 November, 2020 05:33AM by Jim Meyering

November 08, 2020

Parabola GNU/Linux-libre

[From Arch 32] plasma-workspace needs manual intervention

plasma-workspace-5.20.1.1-1.1 cannot be installed with:

...
plasma-workspace: /usr/share/locale/zh_TW/LC_MESSAGES/kfontinst.mo exists in filesystem (owned by plasma-desktop)
plasma-workspace: /usr/share/locale/zh_TW/LC_MESSAGES/krdb.mo exists in filesystem (owned by plasma-desktop)
plasma-workspace: /usr/share/polkit-1/actions/org.kde.fontinst.policy exists in filesystem (owned by plasma-desktop)

use this to overwrite those duplicate files:

pacman -Sy --overwrite='*' plasma-workspace

08 November, 2020 04:17PM by David P.

November 05, 2020

autoconf @ Savannah

Autoconf 2.69d [beta], help needed

Zack Weinberg has released another beta, Autoconf 2.69d has been released, see the release announcement: <https://lists.gnu.org/archive/html/autoconf/2020-11/msg00003.html>

As written there: if you have time to help by developing and testing patches for the release blockers, please do.

05 November, 2020 05:36PM by Karl Berry