Planet GNU

Aggregation of development blogs from the GNU Project

May 22, 2022

parallel @ Savannah

GNU Parallel 20220522 ('NATO') released

GNU Parallel 20220522 ('NATO') has been released. It is available for download at: lbry://@GnuParallel:4

Quote of the month:

  It's amazing how fast you can get with bash pipelines and GNU Parallel.
    -- Eric Pauley @EricPauley_

New in this release:

  • --latest-line shows only the latest line of running jobs.
  • --color colors output in different colors per job (this obsoletes --ctag).
  • xargs compatibility: --process-slot-var foo sets $foo to jobslot-1.
  • xargs compatibility: --open-tty opens the terminal on stdin (standard input).
  • 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 a 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 883c667e01eed62f975ad28b6d50e22a
    12345678 883c667e 01eed62f 975ad28b 6d50e22a
    $ md5sum install.sh | grep cc21b4c943fd03e93ae1ae49e28573c0
    cc21b4c9 43fd03e9 3ae1ae49 e28573c0
    $ sha512sum install.sh | grep ec113b49a54e705f86d51e784ebced224fdff3f52
    79945d9d 250b42a4 2067bb00 99da012e c113b49a 54e705f8 6d51e784 ebced224
    fdff3f52 ca588d64 e75f6033 61bd543f d631f592 2f87ceb2 ab034149 6df84a35
    $ 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 May, 2022 01:25PM by Ole Tange

May 18, 2022

www @ Savannah

The History of GNU

Richard Stallman at the First Hackers Conference

The first Hackers Conference was held in Sausalito, California, in November 1984. The makers of the documentary Hackers: Wizards of the Electronic Age interviewed Richard Stallman at the event. They included only parts of the interviews in the film, but made some other footage available. Stallman's statements at the conference went beyond what he had written in the initial announcement of GNU.

It was at this conference that Richard Stallman first publicly and explicitly stated the idea that all software should be free, and makes it clear that "free" refers to freedom, not price, by saying that software should be freely accessible to everyone. This was probably the first time he made that distinction to the public.

Stallman continues by explaining why it is wrong to agree to accept a program on condition of not sharing it with others. So what can one say about a business based on developing nonfree software and luring others into accepting that condition? Such things are bad for society and shouldn't be done at all. (In later years he used stronger condemnation.)

Here are the things he said:

Video
Video
Video

18 May, 2022 08:50AM by Dora Scilipoti

May 16, 2022

Luca Saiu

Hackers getting married

On May 14th E. and I got married, here in Zürich. I do not normally share very personal information here; but people who knew me before January 2021 will remember me before and since that time. How she changed me for the better. E. is my joy. [Hugging photo] E. and I hugging under the cloister next to the Stadthaus. Photo by Gloria Bressan (http://www.byphotoz.com) For the occasion we invited our friends and relatives, most of whom live as émigrés in one country or another, like us. We had several of our old-time friends from the GNU Project, and some ... [Read more]

16 May, 2022 08:05PM by Luca Saiu (positron@gnu.org)

May 15, 2022

libiconv @ Savannah

libiconv 1.17 released

GNU libiconv 1.17 is released.

New in this release:

  • The libiconv library is now licensed under the LGPL version 2.1, instead of the LGPL version 2.0. The iconv program continues to be licensed under GPL version 3.
  • Added converters for many single-byte EBCDIC encodings: IBM-{037,273,277,278,280,282,284,285,297,423,424,425,500,838,870,871,875}, IBM-{880,905,924,1025,1026,1047,1097,1112,1122,1123,1130,1132,1137,1140}, IBM-{1141,1142,1143,1144,1145,1146,1147,1148,1149,1153,1154,1155,1156,1157}, IBM-{1158,1160,1164,1165,1166,4971,12712,16804}. They are available through the configure option '--enable-extra-encodings'.

15 May, 2022 03:31PM by Bruno Haible

May 10, 2022

FSF News

May 04, 2022

GNUnet News

Messenger-GTK 0.7.0

Messenger-GTK 0.7.0 released

We are pleased to announce the release of the Messenger-GTK application.
The application is a convergent GTK messaging application using the GNUnet Messenger service. The goal is to provide private and secure communication between any group of devices. The interface is also designed in a way to scale down to mobile and small screen devices like phones or tablets.

The application provides the following features:

  • Creating direct chats and group chats
  • Managing your contacts and groups
  • Invite contacts to a group
  • Sending text messages
  • Sending voice recordings
  • Sharing files privately
  • Deleting messages with any custom delay
  • Renaming contacts
  • Exchanging contact details physically
  • Verifying contact identities
  • Switching between different accounts

The application utilizes the previously released library "libgnunetchat" in a convergent graphical user interface. More information about that can be found here .

It is also possible to install and try the application as flatpak. The application is already available on flathub.org . Otherwise you will find the source code ready to compile below as well.

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.7.0

  • The version iteration will be inherited by cadet-gtk as logical successor.
  • It is possible to create direct chats and group chats via physical or virtual exchange.
  • Groups and contacts can be named, left, verified or deleted.
  • Existing contacts can be invited to any private or public group.
  • Chats allow sending text messages, voice recordings or files.
  • Messages can be deleted with a custom delete or automatically.
  • Switching between different accounts can be done during runtime.

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

Known Issues

  • It is still difficult to get reliable chats between different devices. This might change with the upcoming changes on the GNUnet transport layer though.
  • It might happen that the FS service is not connected which might stop any file upload or stall it forever.
  • The webcam/camera to scan QR codes might not get picked up properly (for example it doesn't work yet with the Pinephone).
  • The application might crash at times. So consider it still being in development.

In addition to this list, you may also want to consult our bug tracker at bugs.gnunet.org .

04 May, 2022 10:00PM

May 03, 2022

education @ Savannah

Along: an app to collect students' data for marketing purposes

The nonfree app Along, developed by a company controlled by Zuckerberg, leads students to reveal to their teacher personal information about themselves and their families. Conversations are recorded and the collected data sent to the company, which grants itself the right to sell it.

03 May, 2022 08:08PM by Dora Scilipoti

FSF Blogs

May 02, 2022

FSF Events

May 01, 2022

www @ Savannah

Along: an app to collect students' data for marketing purposes

The nonfree app Along, developed by a company controlled by Zuckerberg, leads students to reveal to their teacher personal information about themselves and their families. Conversations are recorded and the collected data sent to the company, which grants itself the right to sell it.

01 May, 2022 10:55AM by Dora Scilipoti

April 29, 2022

New free program needed

The world urgently needs a free program that can subtract background music from a field recording.

The purpose is to prevent censorship of people's video recordings of how cops treat the public.

29 April, 2022 05:59AM by Ineiev

April 27, 2022

FSF News

FSF job opportunity: Licensing and compliance manager

The Free Software Foundation (FSF), a Massachusetts 501(c)(3) charity with a worldwide mission to protect computer user freedom, seeks a motivated and talented Boston-based individual to be our full-time licensing and compliance manager.

27 April, 2022 07:06PM

April 23, 2022

remotecontrol @ Savannah

parallel @ Savannah

GNU Parallel 20220422 ('Буча') released

GNU Parallel 20220422 ('Буча') has been released. It is available for download at: lbry://@GnuParallel:4

Quote of the month:

  Immensely useful which I am forever grateful that it exists.
    -- AlexDragusin@ycombinator

New in this release:

  • sash is no longer supported as shell.
  • --retries 0 is an alias for --retries 2147483647.
  • --shell-completion returns shell completion code.
  • --ssh-login-file reloads every second.
  • --parset is replaced with --_parset because it is only used internally.
  • sem --pipe passes STDIN (standard input) to the command.
  • Bug fixes and man page updates.

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 a 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 883c667e01eed62f975ad28b6d50e22a
    12345678 883c667e 01eed62f 975ad28b 6d50e22a
    $ md5sum install.sh | grep cc21b4c943fd03e93ae1ae49e28573c0
    cc21b4c9 43fd03e9 3ae1ae49 e28573c0
    $ sha512sum install.sh | grep ec113b49a54e705f86d51e784ebced224fdff3f52
    79945d9d 250b42a4 2067bb00 99da012e c113b49a 54e705f8 6d51e784 ebced224
    fdff3f52 ca588d64 e75f6033 61bd543f d631f592 2f87ceb2 ab034149 6df84a35
    $ 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.GNU Parallel 20220422 ('Буча') has been released. It is available for download at: lbry://@GnuParallel:4

Quote of the month:

  Immensely useful which I am forever grateful that it exists.
    -- AlexDragusin@ycombinator

 

New in this release:

  • sash is no longer supported as shell.
  • --retries 0 is an alias for --retries 2147483647.
  • --shell-completion returns shell completion code.
  • --ssh-login-file reloads every second.
  • --parset is replaced with --_parset because it is only used internally.
  • sem --pipe passes STDIN (standard input) to the command.
  • Bug fixes and man page updates.

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 a 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 883c667e01eed62f975ad28b6d50e22a
    12345678 883c667e 01eed62f 975ad28b 6d50e22a
    $ md5sum install.sh | grep cc21b4c943fd03e93ae1ae49e28573c0
    cc21b4c9 43fd03e9 3ae1ae49 e28573c0
    $ sha512sum install.sh | grep ec113b49a54e705f86d51e784ebced224fdff3f52
    79945d9d 250b42a4 2067bb00 99da012e c113b49a 54e705f8 6d51e784 ebced224
    fdff3f52 ca588d64 e75f6033 61bd543f d631f592 2f87ceb2 ab034149 6df84a35
    $ 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.

23 April, 2022 11:19AM by Ole Tange

April 21, 2022

FSF Blogs

April 19, 2022

health @ Savannah

The Free Software community mourns the loss of Pedro Francisco (MasGNULinux)

Dear friends

These are very sad days for the Free Software and Social Justice movements. Our beloved friend Pedro Francisco has passed away.
Pedro fought relentlessly for equity in our society. He was also a Free/Libre Software activist.

Pedro created and managed MasGNULinux, a Spanish blog with news about Free Software and GNU/Linux. MasGNULinux was the best reference in the latest Free Software projects for the Spanish speaking community.

Thank you for your integrity, your honesty and your dedication to make this world a better place for this and future generations. Pedro's legacy will live on forever, in every line of code of each Free Software project.

From the GNU Health community, we send our deepest condolences to his family and friends.

PS: Rumor has it that God has switched to GNU/Linux.

19 April, 2022 08:27AM by Luis Falcon

April 18, 2022

parted @ Savannah

parted-3.5 released [stable]

I have released parted v3.5, the only change from the previous alpha was
updating gnulib to the current version.

Here are the compressed sources and a GPG detached signature[*]:
  https://ftp.gnu.org/gnu/parted/parted-3.5.tar.xz
  https://ftp.gnu.org/gnu/parted/parted-3.5.tar.xz.sig

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

Here are the SHA256 checksums:

4938dd5c1c125f6c78b1f4b3e297526f18ee74aa43d45c248578b1d2470c05a2  parted-3.5.tar.xz
1b4a381f344435baf69616a985fac6f411d740de9eebd91e4cccdf046332366a  parted-3.5.tar.xz.sig

[*] 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.5.tar.xz.sig

If that command fails because you don't have the required public key,
or that public key has expired, try the following commands to update
or refresh it, and then rerun the 'gpg --verify' command.

  gpg --locate-external-key bcl@redhat.com

  gpg --recv-keys 117E8C168EFE3A7F

  wget -q -O- 'https://savannah.gnu.org/project/release-gpgkeys.php?group=parted&download=1' | gpg --import -

This release was bootstrapped with the following tools:
  Autoconf 2.71
  Automake 1.16.5
  Gettext 0.21
  Gnulib v0.1-5201-g0cda5beb79
  Gperf 3.1

NEWS

  • Noteworthy changes in release 3.5 (2022-04-18) [stable]
    • New Features

  Update to latest gnulib for 3.5 release

  • Noteworthy changes in release 3.4.64.2 (2022-04-05) [alpha]
    • Bug Fixes

  usage: remove the mention of "a particular partition"

  • Noteworthy changes in release 3.4.64 (2022-03-30) [alpha]
    • New Features

  Add --fix to --script mode to automatically fix problems like the backup
  GPT header not being at the end of a disk.

  Add use of the swap partition flag to msdos disk labeled disks.

  Allow the partition name to be an empty string when set in script mode.

  Add --json command line switch to output the details of the disk as JSON.

  Add support for the Linux home GUID using the linux-home flag.

    • Bug Fixes

  Decrease disk sizes used in tests to make it easier to run the test suite
  on systems with less memory. Largest filesystem is now 267MB (fat32). The
  rest are only 10MB.

  Add aarch64 and mips64 as valid machines for testing.

  Escape colons and backslashes in the machine output. Device path,
  model, and partition name could all include these. They are now
  escaped with a backslash.

  Use libdevmapper's retry remove option when the device is BUSY. This
  prevents libdevmapper from printing confusin output when trying to
  remove a busy partition.

  Keep GUID specific attributes when writing the GPT header. Previously
  they were set to 0.

18 April, 2022 08:26PM by Brian C. Lane

GNU Guix

10 years of stories behind Guix

It’s been ten years today since the very first commit to what was already called Guix—the unimaginative name is a homage to Guile and Nix, which Guix started by blending together. On April 18th, 2012, there was very little to see and no actual “project”. The project formed in the following months and became a collective adventure around a shared vision.

Ten years later, it’s amazing to see what more than 600 people achieved, with 94K commits, countless hours of translation, system administration, web design work, and no less than 175 blog posts to share our enthusiasm at each major milestone. It’s been quite a ride!

What follows is a series of personal accounts by some of the contributors who offered their time and energy and made it all possible. Read their stories and perhaps you too will be inspired to join all the nice folks on this journey?

10 year anniversary artwork

Alice Brenon

As a conclusion, Guix is a really neat system and I hope you enjoy it as much as I do!

My story with Guix is a bit topsy-turvy so I thought I might as well start by the end :) I first ranked it last among systems I wanted to test, then was a bit puzzled by it when I had the chance to test it after all the others had disappointed me, and we finally got to know each other once I installed it on my work laptop, because when you need a good, stable system you know you can rely on, why not use the most surprising one? Strangely, the alchemy worked and it has never let me down so far.

Like all good computer things, it looked way scarier from a distance than it really was, and seemed to be very much about ethics and theory while it's actually very pragmatic. I had struggled for years with the myriad of incompatible package formats for systems, then for each specific languages, and was flushed to discover at last what seemed to be a reasonable universal format. That's probably what I like best about it: the ability to use potentially any software I want without trashing my system. The welcoming community eager to help and valuing my contributions made it even better, and submitting patches came naturally. I mostly use it for development, and to keep my sanity in spite of all the data science tools I have to use for work. I sometimes wish it were easier to tweak the core of the system, but I blame my lack of free time at least as much as its design. I would absolutely love to see my Guix system using the runit init system one day but it just works and I finally learnt that it was all that mattered if you wanted to get things done in the end.

Andreas Enge

When I think of Guix, I always kid myself into believing that I had the idea — I remember chatting with Ludovic around a GNU hackers' meeting about Nix; I joked that since Guile is the GNU language, Nix should be rewritten in Guile. But it turned out that Ludovic had already started such a project in earnest... Luckily there is the git history to refresh our memories. Apparently I installed Guix, at the time only the package manager, with Ludovic's help in December 2012, and immediately reported a few bugs. My next action was to update the package for my own software. Learning Scheme was quite difficult, but I fondly remember discussing quotes and quasiquotes with Ludovic. After that, I mostly added packages to Guix, which was possible without knowing much of functional programming; the most tricky packages that stayed in my mind were ImageMagick and TeX Live. I came to appreciate the GNU Autotools — with all their shortcomings, having a uniform (and usually reliable) way of compiling and installing a software makes creating a Guix package almost trivial.

The most compelling feature of Guix was (and still is, I think) the ability to roll back package installations, and now complete system installations — no more fear of updating a package to a non-working state! And on a completely different level, the nice and welcoming atmosphere in the community, in no small part thanks to Ludovic's initial efforts of creating an inclusive environment.

Many formidable adventures are attached to working on Guix. Buying our first server for the build farm was difficult, since we wanted to use a machine with Libreboot that would work well with the GNU system. Eventually we succeeded, and it is still hosted with the non-profit Aquilenet in Bordeaux, so we managed to start our own infrastructure in accordance with our values.

Writing the bylaws of the Guix Europe non-profit was another exciting adventure; again we tried to create a structure in line with our values, where the decisions were taken as collectively as possible.

And personally I have fond memories of taking part in Guix meetings at FOSDEM and co-organising the Guix Days in Brussels; these are such nice occasions to meet people passionate about Guix and free software! I will never forget the Guix Days 2020 when I had just returned from a Reproducible Build Summit where I admired their way of facilitating the workshop, which I then tried to copy for our own meeting.

The Guix system meets all my daily needs now, so I have no technical wishes for the future — but I trust the many creative minds working on advancing the project to come up with nice new ideas. And I wish the human adventure and community building around Guix to continue!

Andrew Tropin

It's all lisp, no distraction, pure consistency! Every few years I migrate to a different workhorse and it has always been a pain to bring my software setup with me: forgot a pam/udev rule here, package here and some tiny hack here and everything is messed up, easier to reinstall everything from ground up. With declarative and reproducible nature of Guix System, Guix Home and rde project it's just a pure pleasure: write the configuration once, use it everywhere! Daemon configurations, package build phases, cron tasks, everything described in Guile Scheme. The one language to rule them all! I look forward for a little more: wider adoption of Guix for managing development environments and infrastructures.

GNU Guix respects you and your freedoms: anyone can explore and study, tweak and adjust, and share everything they want, every program available. Moreover every package is bootstrapped, what a miracle! Yes, some hardware isn't supported, but for a good reason, for this price you get a lot. I look forward for a little more: decentralized substitutes and RISC-V laptops running GNU Guix.

Thank you the community for all the hard work, already enjoy Guix for more than an year and look forward for more exciting things to appear!

Arun Isaac

I was introduced to Guix in 2016. That was around the time I was learning lisp and having my mind blown. As soon as I heard that Guix was written in a lisp and that it was a FSDG compliant distro, I knew that this was going to be the best distro ever and immediately jumped ship.

While I was immediately smitten by the perfection and elegance of Guix, I have stayed this long not for the technical excellence but for the people. The Guix community is the warmest and most caring free software community I have ever been a part of. I honestly did not believe such people could exist online until I saw Guix. In the future, I would love for this community to grow and thrive with a smoother issue tracking and contribution process so that potential contributors, especially newcomers, don't turn away frustrated.

Björn Höfling

In 2016, I searched a GNU/Linux distribution for a friend's laptop and chose GuixSD (now Guix System), inspired by a LibrePlanet video from MediaGoblin. The laptop failed to digest this OS, as it demanded binary, non-free drivers. In contrast, my wetware is 100% GNU FSDG-compatible, and so, generation 1 of Guix burned successfully into my brain, without any headaches. Or at least, they went away with the help from the very friendly, supportive, tolerant (only to the tolerant, thanks to the code of conduct) community.

My contributions started with not understanding Guix, and asking stupid questions on the mailing lists. Sometimes during that process I found bugs and analyzed them further, which helped Ludovic and other developers to fix them. I reviewed mostly Java packages and added some on my own. I very much enjoyed co-mentoring for Outreachy, and learned more on automated video/screencast generation. I should be really more active in the community again!

For the future of Guix, I would like to see more Java and Go packages (hem, this comes not from alone, I should review and contribute more). Internally I wish a more intuitive bug- and patch-tracker instead of Debbugs+Mumi. Externally I wish a much bigger awareness in the commercial "Open Source" world about software freedom, bootstrapping your environment and dependencies from free source code in a real reproducible way, instead of relying on opaque, binary containers. I wish people would much more take care of their dependencies (with Guix, of course!), put much more thoughts in their usage of dependencies, break-up dependency hell and support third parties in building their sources with free software (instead of relying on binary dependencies and opaque containerized dev-environments).

Blake Shaw

New media artists and designers suffer from following dilemma: our work, with its primary medium being code, is at once perhaps the simplest medium to distribute — requiring little more than copying a directory of text files from one hard drive to another — yet the works themselves remain a total nightmare to faithfully reproduce across varying machines at different points in time. Among other reasons, this is because our works are often composed of disparate parts with accompanying technical debt: an audio-visual installation may use the C++ library openFrameworks for high-performance interactive graphics, Haskell's TidalCycles for realtime sequencing, the fantastic FAUST signal processing language for zero-delay audio DSP, plus the usual dependencies; openCV, libfreenect, cairo, gstreamer, ffmpeg and so on. Time and its corresponding ABI changes intensify our predicament; not only is it often an error-prone and laborious task to get all of this running correctly across many machines, the nature of technical debt means that getting an installation from 2014 up and running in 2022 is often more trouble than its worth. Sadly, these seemingly immaterial works of art that are the simplest to copy are simultaneously some of the most difficult to reproduce and the quickest to depreciate.

Guix, on the other hand, offers its users provenance-preserving bit-reproducible builds of their entire operating systems: using Guix's implementation of the functional software deployment model, I should be able to reproduce, bit-for-bit, the exact same results across equivalent hardware. Suddenly our artworks can be deterministically produced not only at the level of the source code's changelog but also as the level of the build, offering the guarantee that our usually glued-together towers of systems that power our installations can be revisited and reproduced in the future, and the deployment processes becomes as simple as packing your system into a container to be deployed to a remote target. These guarantees means that the scaling of our works become simplified: if you want to do an installation that involves 100 Raspberry Pis communicating with one another in a dynamic system, you can focus on working on just a small parameterized subset, and then generate their varying configurations using the infrastructure that Guix provides. I'm currently in the early phases of developing re::producer, a "creative plumber's toolkit" that seeks to simplify this process for artists, tailoring the tools provided by Guix to the domain-specific needs of media art and allowing artists to declaratively define complex media art systems using one of the greatest programming language of all time, Scheme.

This is still new terrain, so there is plenty of work to do. But that’s no excuse to keep up with your old habits, so roll up your sleeves and come hack the good hack!

Cyril Roelandt

Back in early 2013, I was lucky enough to be unemployed for a few months. This gave me a lot of time to try out GNU Guix. Ludovic had told me about it a few months earlier, while we were still working at the same place. It was so easy to add new packages that I naturally ended up submitting a few patches and quickly trolled the whole project by adding my editor of choice, vim. Debugging package definitions was also very simple since the builds were reproducible by default.

I also had some fun writing the first version of the linter and improving the importer/updater for Python packages. I even hacked tox to make it use Guix instead of virtualenv and gave a talk about this at FOSDEM. Even though I left the project a few years ago, I'm glad to see it's doing well and is used in science and has joined forces with Software Heritage.

Efraim Flashner

Back in 2015 or so I had been using GNU/Linux on the desktop for a number of years and I wanted to contribute somehow. I had just finished a course in University using Lisp and Prolog and then I heard about Guix having its 0.8.3 (or so) release and it looked like something that I could try to contribute to. I certainly made a number of mistakes in the beginning; I didn't know that git revert was an actual command and I tried to revert a commit by hand, leaving a dangling parenthesis and breaking the repo. Another time I added Java as a dependency to an image library and broke the graphics stack for half the architectures until I reverted that! I even had a stint as a failed GSoC student. I was working on Bournish, a Gash/Gash-utils like utility to make debugging in the early boot process far easier by providing common CLI utilities. I had some issues with time management and ended up spending more time than I should have updating packages in the repository, as a result I didn't spend enough time working on Bournish and it's languished since then.

Currently, I enjoy working on troublesome packages and expanding the number of packages available on non-popular architectures. Sometimes it's removing compiler flags or ‘ifdef gating’ architecture-specific includes and other times certain parts of programs need to be disabled. Then everything needs to be double-checked for cross-compiling. Right now I'm working on riscv64-linux support in Guix, it has a lot of potential but powerful boards are hard to come by. Also there are some lingering bugs with guix show showing different supported-systems for packages depending on which architecture you run it from; on x86_64-linux only two are shown, from aarch64-linux all 9 architectures are shown.

Ekaitz Zarraga

A friend of mine introduced me to Nix and Guix a while ago but I was hesitant to try it because I hate configuring stuff and this didn't look as an easy distribution to use. Once I discovered we could have separate environments and how easy is to write a package (despite all other difficulties Guix has) I was completely into it. I installed Guix in my laptop and never looked back. In the 10 years I've been using a GNU/Linux distribution I never interacted that directly with my packages: creating custom ones, sending them upstream, making fixes… That's also freedom! Now, a couple of years later, I am working on improving the bootstrap process for RISC-V and using Guix as a mechanism that provides reproducible builds and an easy way to manage all the actors I have to deal with: very old software with old dependencies, colliding libraries, environment variables, custom patches in source code… This would be a pain to build in any other environment, but Guix makes hard things easy. Guix also makes easy things hard sometimes, but we are working on that!

Eric Bavier

As a young(ish) computer programmer, I had been running GNU/Linux systems for about 7 years but wanted to find a project I could contribute back to. Fortunately, I came upon a release announcement for Guix after having poked around the GNU Hurd and Guile spheres. To me at the time Guix had the exact mix of upstart energy, optimism, and long-term vision that I was hoping to find. Over the years I've been able to contribute packages I use in both my personal and work lives, and I'm proud to have implemented the first version of guix refresh --list-dependents. I've really loved how Guix allows me to easily move my environments around to different systems, and "rollback" gives me much peace of mind knowing that I can tinker with the system and recover should something go wrong. But probably my favorite part of Guix is the fantastic community I've seen grow around the project. It exemplifies the sort of caring, kind, supportive group I wish many other projects had. Together I know we'll be able to make advances on many fronts. In particular, I'd like to see further work on peer-to-peer substitutes delivery, a native build daemon, additional tools for managing relocatable pack collections, and continued leadership in bootstrapping.

Florian Pelz (pelzflorian)

GNU Guix to me is a group that cares about its software and about the people involved. I’ve got to know Guix by reading discussions on how to do sandboxing properly. But actually, Guix convinced me with its clarity and approachability and principles. Guix opened my eyes on how parts of GNU fit together. Thanks to all who give us this freedom to understand and decide. By contributing to the translation, I hope to make it reach more users and developers.

Guillaume Le Vaillant

Before I started using Guix in 2019, I was using Gentoo because I liked how I could easily package software and make package variants with some custom patches. However one day an upgrade didn't go well and many packages ended in a bad state. I realized I would have to reinstall the whole system to get things to work again. Before recompiling the whole system, I tried Nix and Guix, because I had read somewhere that they used functional package management, which gives the possibility to roll back to a working state when an upgrade causes problems. I chose Guix because I thought it was going in the right direction by using only free software and trying to get reproducible builds. The fact that package definitions use the Scheme language was a bonus point as I like Lisp languages. And there was even a build system for Common Lisp packages, which is rarely the case in the GNU/Linux distributions I tried over time. So I started using Guix, and packaging software I wanted that were not in Guix yet. One day someone asked me if I would be interested in having commit access, and I accepted. I also found a way to improve the build system for Common Lisp packages that simplified package definitions. In the future, I think it would be nice to add an importer fetching information from Quicklisp, as it would make packaging Common Lisp software even easier.

Hartmut Goebel

Christian Grothoff (GNU Taler) pointed me to Guix early 2016, saying “This will become the new Debian!” and asking me to look at it for GNU Taler. Well, quickly I was attracted by the ideas of reproducible build and the ease of packaging software. I also love the one-time usage of programs without littering my system.

Curiously, even as I'm a Python developer, my first contributions have been about Java packaging. And I spend quite some time trying to build maven. This challenge I gave up after two (or three? can't remember) attempts. Glad Julien Lepiller continued the endeavor and created the Maven build system.

Nowadays I still use Guix on a foreign distro only, as KDE desktop and some of my main applications are still not here. Guix keeps my main system tidy, while I can have different development environments without dependency conflicts.

As you can imagine, I'd like to see KDE desktop in Guix as well as some guix compose for managing compound containers.

Jan (janneke) Nieuwenhuizen

At FOSDEM 2016 there were seven talks about GNU Guix: A talk about the Hurd by Manolis Ragkousis, about functional package management by Ricardo Wurmus and that was just what I needed to hear: Finally a viable promise for the GNU System and much more innovative than I could have hoped for. At the time I also worked on a project where building binary releases was becoming more unmanageable with every release because of conflicting requirements. We were slowly migrating away from C++ to GNU Guile, so while not directly applicable the talk “Your distro is a Scheme library” by Ludovic Courtès also made me feel: Go Guix!

Using Guix, my intricate dependency problems building binary packages quickly and easily disappeared. That gave me the confidence that I needed and I wanted to get involved. My first contributions where a programming game called Laby and its dependencies and a few more packages that I missed. After running Guix on top of Debian GNU/Linux for three months I switched to what we now call Guix System. Guix did not have log rotation yet in those days, so I created a package.

This is how I found how amazingly helpful and friendly the community was. I created the MinGW cross build for Guile 2.0 and then "found out" about the bootstrap binaries: The only packages in Guix that are not built from source. Something just did not feel right. The manual said: “These big chunks of binary code are practically non-auditable which breaks the source to binary transparency that we get in the rest of the package dependency graph.” So, I wrote GNU Mes and started working on solving this problem. Twice we halved the size of the bootstrap binaries and the work is still ongoing.

What possibly started somewhat as a April fools joke in 2020 about the Hurd—this is still unclear—was (mis?)taken by some as a real project and led to a fun hacking frenzy of several months finally producing the "Childhurd": A Guix Shepherd service that gives access to the GNU/Hurd in a VM. My wish for the near future would be see an up-to-date Hurd including the Debian rumpkernel patches that may finally enable running the Hurd on real hardware again.

John Kehayias

All I wanted to do was to try out a new status bar, but the author only officially supported Nix for building. That started me to finally look at Nix after hearing about it in passing before. I was intrigued by the focus on reproducible and declarative builds. The language, not so much. My brother mentioned another project in the same vein but built on a Lisp. As a lover of all things Lisp, that was basically enough for me to dive right in. Beyond the banner features of the powerful package and system management, reproducible builds, system configuration, and, of course, Guile, I quickly found perhaps the biggest and most important: the GNU Guix community. They have been nothing short of amazing: helpful, intelligent, supportive, and fun to hang out with on the #guix channel. In less than a year, my journey so far has taken me through the (is it infamous yet?) recent big core-updates branch and merge, submitting patches for random libraries and key desktop features I use, and participating in the motivating Guix Days 2022. Looking to the future, I hope we can better harness the energy and resources of the growing Guix community. It is already a great project to get involved with and make your own, but with better and quicker patch review, further building out and using our development tools and ecosystem, and continuing to smooth out the rough edges for new users/contributors, I'm sure the next 10 years of GNU Guix will be very bright indeed.

Konrad Hinsen

In my work as a computational scientist, my first encounter with reproducibility issues happened in 1995, when a quantum chemistry package produced different results on two almost identical Silicon Graphics workstations. This was the beginning of a long quest for better computational reproducibility, in the course of which I discovered in 2014 Nix and Guix as two implementations of the same promising idea: the fully automated construction of a complete reproducible software stack. Of the two, Guix was more aligned with my lispy past, and already had a burgeoning computational science user community. I started playing with Guix in 2016, in a virtual machine under macOS, but only fully adopted Guix for my everyday work in 2021, when I left macOS for Linux. During those five years, I also learned to appreciate the Guix community, which is friendly, competent, and refreshingly low-ceremony in spite of continuous growth. That makes for an easy transition from newbie to contributor (mostly contributing packages, but also the time-machine command that matters for reproducibility). The anniversary is a good occasion to express my thanks to all those who answered my many questions, ranging from conceptual to technical, and to the maintainer team that does an important but not very visible work by critically examining all submitted packages and code enhancements. My main wish for the future is a lower barrier to adoption for my colleagues in computational science, and I hope to contribute to making this happen.

Lars-Dominik Braun

Around the end of 2019 we were looking for a way to provide reproducible software environments to researchers in(?) psychology and I was researching software to accomplish that. Binder/repo2docker was the obvious and most mature solution at that time and a colleague of mine had set up a proof of concept server already. But it could only handle public projects out-of-the-box and setting up an entire Kubernetes cluster didn’t seem particularly appealing at that time, because no other project was moving in that direction yet. So I set out to look for alternatives. Another idea was based around OpenStack and one virtual machine per project with preinstalled software, which we would keep for eternity. Also not ideal and OpenStack is very hard to master too. So I looked further at Nix, which – at that time – lacked an obvious way to spawn ad-hoc environments with a certain set of packages. Thankfully I stumbled upon GNU Guix by mere accident, which had exactly that feature. And so in December 2019 my first code contribution was merged.

Prior to that I had never written a single line of Scheme or Lisp and even now it’s still a steep hill. GNU Guix still powers our project and allows us to easily share software environments while providing excellent application startup times. I also started contributing software that I run on my own machines, but I’m not running Guix System, because compared to systemd, Shepherd is quite limited on the desktop and Guix’ lack of first-class support for non-free drivers/firmware, which I need to even boot my machine.

Ludovic Courtès

It all started as a geeky itch-scratching experiment: a tiny bit of Guile code to make remote procedure calls (RPCs) to the Nix build daemon. Why? As I was involved in and excited about Guile and Nix, it felt natural to try and bridge them. Guile had just had its 2.0.0 release, which broadened its scope, and I wanted to take advantage of it. Whether to go beyond the mere experiment is a decision I made sometime after a presentation at the 2012 GNU Hackers Meeting.

It was far from obvious that this would lead us anywhere—did the world really need another package manager? The decisive turn of event, for me, was to see that, at the time Guix officially became part of GNU in November 2012, it had already become a group effort; there was, it seems, a shared vision of why such a crazy-looking project made sense not just technically but also socially—for GNU, for user freedom. I remember Nikita Karetnikov as the first heroic contributor at a time when Guix could barely install packages.

One of my “ah ha!” moments was when I built the first bootable image a year later. G-expressions, the service framework, and checkout authentication are among my favorite hacks. What’s mind-blowing to me though is what others have achieved over the years: the incredible bootstrapping work, Disarchive, Emacs-Guix, the installer, Hurd support, Guix Home, supporting tools like Cuirass, the Data Service, and mumi. There’s also the less visible but crucial work: Outreachy and GSoC mentoring, support on IRC and the mailing lists, build farm administration, translation, dealing with the occasional incident on communication channels, organizing events such as the Guix Days or FOSDEM, and more.

As much as I love hacking the good hack, I think Guix’s main asset is its community: a friendly, productive, and creative group with a sense of attention to the other. I started clueless about what it means “to build a community” and learned a lot from everyone met on the way. We did it, we built this! Thumbs up, Guix!

Luis Felipe

When I found that Guix existed, I saw it could make it easier for GNU to release its Operating System and reach a wider audience. I intended to propose some graphic designs related to this, and sent a message to GNU in order to test the waters. Things didn't go as I expected, so, instead, I decided to direct my contributions towards GNU Guix and its distribution of GNU.

Since then, I've contributed with graphics (Guix and Guile logos and website designs, desktop backgrounds, release and promotional artwork), testing, bug reporting, packaging, and Spanish translations.

It's been about 8 years of Guix for me (the heck!). I started using the package manager on Debian, gradually switched the provenance of my software from Debian to Guix, and, once GNOME became available, I moved to Guix’s distribution of the GNU operating system, which I've been using as my main system for about 3 years now (and I don't see that changing anytime soon).

Right now, I'm enjoying developing software using Guix's reproducible environments and containers, and using one single package manager for every dependency.

I hope this system reaches a wider audience and brings science to home computing along the way. Homes should be capable of producing scientific work too.

Manolis Ragkousis

When I think how I started with Guix, I use one word to describe it, luck! It was early 2014 when I encountered Guix by luck, while I was still a student at Crete, Greece. I remember there was a strike during that time and I had plenty of free time for a week, so I decided that I will try to start working on this. Then an idea came in mind, why not try porting Guix to GNU/Hurd and build a system with it? One thing led to another and it also became a GSoC project in 2015 and 2016. In 2016 I also gave a FOSDEM talk about this, which somehow ended up being the start of me helping out with the GNU Guile devroom in 2017 and 2018, and then what became the Minimalistic Languages until today. When I am thinking about Guix is like thinking about the story of me growing up and the people I met through all these years I consider family! Guix is a big part of my life, I use it everywhere and even though I am not able to help much nowadays I am following the project as much as I can. Here's hoping to another 10 year!

Marius Bakke

I originally got interested in Guix after facing shortcomings in traditional configuration management tools. A fully declarative and immutable system which cleans out old user accounts and packages, that also offers reproducibility, rollbacks, and the ability to generate virtual machines and containers from the same code. Where do I sign up?

It turns out, signing up was easy, and I soon found myself contributing the pieces I needed to make it a daily driver. Watching the community grow from a handful of contributors to 100 monthly has been astonishing. I have learned a lot from this community and am proud to be a part of it. Can't wait to see what the next decade brings. Happy birthday Guix!

Mathieu Othacehe

I was introduced to GNU Guix by a colleague, Clément Lassieur in 2016. At first I found the concept overwhelming. Writing Guile wrappers for each and every Linux service out there and keeping them up to date seemed like impossible. However, I quickly fell in love with the package manager, the distribution and the community behind. A few months later, GNU Guix was running on all my machines and I started hacking on the continuous integration tool: Cuirass.

Since then GNU Guix has been an important part of my life. I wrote most of the Guix System installer while traveling by bike to China in 2018. During the 2020 lockdown, I worked with janneke on the new image API and the Hurd port. At that time, I was proposed a co-maintainer position of the project. In 2021, thanks to an NGI sponsorship, I dedicated 6 months to improving our continuous integration process and overall substitutes coverage.

Recently it has been harder to dedicate as much efforts on the project but I'm sure this is a transient phase. I can't wait to start working again with the incredibly talented people making this piece of software so special to me.

Paul Garlick

I began using and contributing to the Guix project in 2016. I had been searching for a way to preserve software environments that are used for numerical simulation. The applications that run in these environments often comprise a combination of specialised code and building blocks drawn from an underlying framework. There are many moving parts and changes to a low-level library can block the operation of the high- level application. How much better things would be if one could specify the exact components of the environment and re-create it whenever it is needed. I discovered that Guix provides the machinery to do just that. Scheme was new to me then so I had some learning to do before contributing. This included a detour via Vonnegut/Cat's Cradle, of course, to discover the meaning of ice-9. Suitably informed I returned to add a number of finite volume and finite element frameworks to the Guix package collection. Keeping these packages up- to-date and welcoming new simulation-related packages is the next target. Looking ahead to the next ten years, an important task is to popularise the use of the Guix tools. Many more engineers and scientists stand to benefit from the use of the dependable software environments that are now made possible.

Ricardo Wurmus

In 2014 I became responsible for building and installing scientific software at the Max Delbrück Centre, a research institute in Berlin. We used CentOS, so I built custom RPMs, installing applications to ad-hoc prefix directories. After a few weeks I took a minute to consider the horrific implications of maintaining a growing collection of custom software with RPM. As I tried to remember what life choices had led me to this moment, I recalled an announcement email of a quirky GNU package manager written in Scheme. A short web search later I was playing around with Guix.

After an encouraging chat on IRC I realized that I could probably replace our custom RPM repository and build different variants of scientific software on much more solid ground—all the while contributing to a project that felt like a new and exciting take on GNU. We're building the GNU system!

Guix only had very few of the packages I needed, so I got busy. I packaged and bootstrapped the JDK because I was under the mistaken assumption that I would need it for R (turns out Java is optional). Many more foolish adventures followed, and some of them have actually been useful for others.

I had found my tribe of fellow hackers who cared about the vision of the GNU system, encouraged playful experimentation, and were rooting for each other to succeed in building a better system that made software freedom a practical reality, blurring the lines between developers and users. In the decades to come I hope many more people will get to experience what I did and end up calling this community their home.

Simon Tournier

Back in 2014, I watched the video “Growing a GNU with Guix” at FOSDEM but the real revelation had been in 2015 with “GNU Guix: The Emacs of Distros”, again at FOSDEM. Then, I was following the development but not using Guix yet. 2016, new job where I was spending my time to fight against dependencies and Modulefiles. Then I have totally jumped in Guix in December 2018. My first interaction with the project — and not yet running Guix — was a in-person event in Paris before the Reproducible Builds workshop. Back to home, I proofread cover to cover the French manual — my first contribution — and installed Guix on the top of my Debian GNU/Linux system. So amazing! Guix fixes many issues I had at work — and introduce new ones^W challenges. Plus, thanks to people around, I am learning a lot, both about technical details and about inter-personal interactions. My wish for the near future is a community more structured: more events and meetups, more process for smoothing the contributions (“teams” for improving the reviewing by sharing the load, RFC for discussing new features, regular releases, etc.), and more materials for using Guix in various configurations.

In scientific context, transparency — being able to audit the whole computational environment from the source codes to the production of binaries — is one of the keys for a true reproducible research. Since Guix is transparent by design, it appears to me one part for a solution in tackling the computational side of the replication crisis. For the near future, I wish more scientific practitioners will employ Guix.

Thiago Jung Bauermann

I learned about Guix when I was looking for alternative, safe ways of installing an up-to-date Rust toolchain on my machine (at the time rustup didn't verify signatures of downloaded binaries, and it still doesn't do the full job). Guix is a great way to have the latest and greatest software on top of your slower-moving Linux distribution. I love how easy it makes to create instant, ad hoc environments with the packages you need for a specific task. Or to temporarily try out some new app or tool, leaving Guix to garbage-collect it and its dependencies. The Guix community is amazing as well! It's a pleasure to participate on the mailing lists. And I've been enjoying learning Scheme! For the future, I hope Guix can get even better test coverage so that every update of the master branch is guaranteed to not introduce regressions. And that the project gets more committers, to help with the constant influx of patches.

raingloom

There are multiple reasons I started using Guix. On the tech side, I'd been playing around with 9front for a while at that time, but kept running into issues where the imperative structure of namespaces was getting in my way. I like Haskell a lot and heard about the many benefits of a pure functional approach to build systems, et cetera. I ran Guix on top of Arch for a while and liked it a lot. Using package transformations still feels magical. But yall already know about this cool stuff from Ambrevar's blog post. On the social side, I saw that one of my favorite compsci people — Christine Lemmer Webber — was involved with the project, so I knew it probably has a nice community, which turned out to be very true. This is one of the best communities centered around a piece of tech that I've been in and yall inspire me to be better with each interaction. Huge thank you for that. My favorite Guix memory is when someone CC'd me in a patch for the egg importer, which was built on top of the Chicken Scheme build system I contributed. Seeing others build on top of my work is an amazing feeling. For the future, I hope the service management improvements will keep coming, but what I'd like to see the most is Guix running on old and slow devices. There is a lot of work to be done to make it more bandwidth and space efficient and to support development on systems with little RAM. If I could use it instead of PostmarketOS/Alpine, I'd be elated. On the human side, I hope we can keep contributors from burnout, while increasing the software's quality. I think the way Blender development is structured could be a source of inspiration. On that note, using Guix for reproducible art workflows would be rad. Okay that's it, bye yall lovely people.

Vagrant Cascadian

I think I first heard of Guix in 2016, triggering a late-night session trying to wrap my head around the crazy symlink farms at the heart of Guix. By late 2017 I was filing bug reports and eventually patches!

I am deeply fascinated that Guix has Reproducible Builds built right in, with normalized, containerized build environments and the "guix challenge" tool to verify reproducibility. I had heard of Nix as an interesting model, but valued the strong commitment to Free Software with Guix.

Eventually I even grew crazy enough to package Guix in Debian... which indirectly lead to one of my most creative contributions to a Free Software project, a typo poem embedded in!

I really appreciate the community around Guix and the process, values and thoughtfulness that work proactively to maintain a healthy community, even in the face of inevitable and occasional conflict. Guix balances formal and informal in a way that works for me.

I look forward to the day when Guix has a full source bootstrap!

10 Years of Guix artwork by Luis Felipe.

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, AArch64 and POWER9 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.

18 April, 2022 06:45PM by Guix Hackers

April 17, 2022

unifont @ Savannah

Unifont 14.0.03 Released

17 April 2022 Unifont 14.0.03 is now available.  This release adds the new hex2otf program, which can convert Unifont .hex format files into OpenType fonts, as well as TrueType and other formats.  See the hex2otf documentation for details.

The font files just add several new Under ConScript Unicode Registry (UCSUR) scripts: Xaîni (U+E2D0..U+E2FF), Ophidian (U+E5E0..U+E5FF), Niji (U+ED40..U+ED5F), Sitelen Pona (U+F1900..U+F19FF), and Shidann (U+F1B00..U+F1C3F).

Download this release from GNU server mirrors at:

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

or if that fails,

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

or, as a last resort,

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

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

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

Font files are in the subdirectory

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

A more detailed description of font changes is available at

      https://unifoundry.com/unifont/index.html

and of utility program changes at

      http://unifoundry.com/unifont/unifont-utilities.html

17 April, 2022 08:13PM by Paul Hardy

mailutils @ Savannah

Version 3.15

Version 3.15 is released today. New in this version:

  • mbox format: don't count terminating empty line as part of the message
  • Improve performance of the Sieve fileinto action
  • Improve efficiency of operations on flat mailboxes in append mode
  • Bugfixes in quoted-printable and fromrd filters
  • Variois fixes in mbox and dotmail format libraries
  • Fix compilation with flex version 2.6.1

17 April, 2022 07:22PM by Sergey Poznyakoff

April 15, 2022

coreutils @ Savannah

coreutils-9.1 released [stable]

This is to announce coreutils-9.1, a stable release.
See the NEWS below for details.

Thanks to everyone who has contributed!
There have been 210 commits by 10 people in the 29 weeks since 9.0

  Bernhard Voelker (3)            Max Filippov (1)
  Bruno Haible (1)                Paul Eggert (136)
  Christian Hesse (1)             Pádraig Brady (64)
  Daniel Knittl-Frank (1)         Rohan Sable (1)
  Jim Meyering (4)                Ville Skyttä (1)

Pádraig [on behalf of the coreutils maintainers]

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

Here is the GNU coreutils home page:
    https://gnu.org/software/coreutils/

For a summary of changes and contributors, see:
    https://git.sv.gnu.org/gitweb/?p=coreutils.git;a=shortlog;h=v9.1
or run this command from a git-cloned coreutils directory:
    git shortlog v9.0..v9.1

To summarize the 259 gnulib-related changes, run these commands
from a git-cloned coreutils directory:
    git checkout v9.1
    git submodule summary v9.0

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

Here are the compressed sources:
  https://ftp.gnu.org/gnu/coreutils/coreutils-9.1.tar.gz   (14MB)
  https://ftp.gnu.org/gnu/coreutils/coreutils-9.1.tar.xz   (5.5MB)

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

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

Here are the SHA1 and SHA256 checksums:

cab498ddc655fd3c7da553d80436d28bc9b17283  coreutils-9.1.tar.gz
YFXfkmhgPoI5pcnB1kyyW5qZJTDfZuM7jXimYO2zezU  coreutils-9.1.tar.gz
aa7bf0be95eef29d98eb5c76d4455698b3b705b3  coreutils-9.1.tar.xz
YaH0ENeLp+fzelpPUObRMgrKMzdUhKMlXt3xejhYBCM  coreutils-9.1.tar.xz

The SHA256 checksum is base64 encoded, instead of the
hexadecimal encoding that most checksum tools default to.

[*] 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 coreutils-9.1.tar.gz.sig

If that command fails because you don't have the required public key,
or that public key has expired, try the following commands to update
or refresh it, and then rerun the 'gpg --verify' command.

  gpg --locate-external-key P@draigBrady.com

  gpg --recv-keys DF6FD971306037D9

  wget -q -O- 'https://savannah.gnu.org/project/release-gpgkeys.php?group=coreutils&download=1' | gpg --import -

This release was bootstrapped with the following tools:
  Autoconf 2.71
  Automake 1.16.4
  Gnulib v0.1-5194-g58c597d13
  Bison 3.7.4

NEWS

* Noteworthy changes in release 9.1 (2022-04-15) [stable]

** Bug fixes

  chmod -R no longer exits with error status when encountering symlinks.
  All files would be processed correctly, but the exit status was incorrect.
  [bug introduced in coreutils-9.0]

  If 'cp -Z A B' checks B's status and some other process then removes B,
  cp no longer creates B with a too-generous SELinux security context
  before adjusting it to the correct value.
  [bug introduced in coreutils-8.17]

  'cp --preserve=ownership A B' no longer ignores the umask when creating B.
  Also, 'cp --preserve-xattr A B' is less likely to temporarily chmod u+w B.
  [bug introduced in coreutils-6.7]

  On macOS, 'cp A B' no longer miscopies when A is in an APFS file system
  and B is in some other file system.
  [bug introduced in coreutils-9.0]

  On macOS, fmt no longer corrupts multi-byte characters
  by misdetecting their component bytes as spaces.
  [This bug was present in "the beginning".]

  'id xyz' now uses the name 'xyz' to determine groups, instead of xyz's uid.
  [bug introduced in coreutils-8.22]

  'ls -v' and 'sort -V' no longer mishandle corner cases like "a..a" vs "a.+"
  or lines containing NULs.  Their behavior now matches the documentation
  for file names like ".m4" that consist entirely of an extension,
  and the documentation has been clarified for unusual cases.
  [bug introduced in coreutils-7.0]

  On macOS, 'mv A B' no longer fails with "Operation not supported"
  when A and B are in the same tmpfs file system.
  [bug introduced in coreutils-9.0]

  'mv -T --backup=numbered A B/' no longer miscalculates the backup number
  for B when A is a directory, possibly inflooping.
  [bug introduced in coreutils-6.3]

** Changes in behavior

  cat now uses the copy_file_range syscall if available, when doing
  simple copies between regular files.  This may be more efficient, by avoiding
  user space copies, and possibly employing copy offloading or reflinking.

  chown and chroot now warn about usages like "chown root.root f",
  which have the nonstandard and long-obsolete "." separator that
  causes problems on platforms where user names contain ".".
  Applications should use ":" instead of ".".

  cksum no longer allows abbreviated algorithm names,
  so that forward compatibility and robustness is improved.

  date +'%-N' now suppresses excess trailing digits, instead of always
  padding them with zeros to 9 digits.  It uses clock_getres and
  clock_gettime to infer the clock resolution.

  dd conv=fsync now synchronizes output even after a write error,
  and similarly for dd conv=fdatasync.

  dd now counts bytes instead of blocks if a block count ends in "B".
  For example, 'dd count=100KiB' now copies 100 KiB of data, not
  102,400 blocks of data.  The flags count_bytes, skip_bytes and
  seek_bytes are therefore obsolescent and are no longer documented,
  though they still work.

  ls no longer colors files with capabilities by default, as file-based
  capabilties are very rarely used, and lookup increases processing per file by
  about 30%.  It's best to use getcap [-r] to identify files with capabilities.

  ls no longer tries to automount files, reverting to the behavior
  before the statx() call was introduced in coreutils-8.32.

  stat no longer tries to automount files by default, reverting to the
  behavior before the statx() call was introduced in coreutils-8.32.
  Only `stat --cached=never` will continue to automount files.

  timeout --foreground --kill-after=... will now exit with status 137
  if the kill signal was sent, which is consistent with the behavior
  when the --foreground option is not specified.  This allows users to
  distinguish if the command was more forcefully terminated.

** New Features

  dd now supports the aliases iseek=N for skip=N, and oseek=N for seek=N,
  like FreeBSD and other operating systems.

  dircolors takes a new --print-ls-colors option to display LS_COLORS
  entries, on separate lines, colored according to the entry color code.

  dircolors will now also match COLORTERM in addition to TERM environment
  variables.  The default config will apply colors with any COLORTERM set.

** Improvements

  cp, mv, and install now use openat-like syscalls when copying to a directory.
  This avoids some race conditions and should be more efficient.

  On macOS, cp creates a copy-on-write clone if source and destination
  are regular files on the same APFS file system, the destination does
  not already exist, and cp is preserving mode and timestamps (e.g.,
  'cp -p', 'cp -a').

  The new 'date' option --resolution outputs the timestamp resolution.

  With conv=fdatasync or conv=fsync, dd status=progress now reports
  any extra final progress just before synchronizing output data,
  since synchronizing can take a long time.

  printf now supports printing the numeric value of multi-byte characters.

  sort --debug now diagnoses issues with --field-separator characters
  that conflict with characters possibly used in numbers.

  'tail -f file | filter' now exits on Solaris when filter exits.

  root invoked coreutils, that are built and run in single binary mode,
  now adjust /proc/$pid/cmdline to be more specific to the utility
  being run, rather than using the general "coreutils" binary name.

** Build-related

  AIX builds no longer fail because some library functions are not found.
  [bug introduced in coreutils-8.32]

15 April, 2022 10:34PM by Pádraig Brady

April 13, 2022

FSF Events

LibrePlanet workshop - May 16 - Software localization (translation) of Web-based projects

13 April, 2022 05:45PM

LibrePlanet workshop - May 09 - IRCNow: Of the users, by the users, for the users

13 April, 2022 05:45PM

LibrePlanet workshop - May 02 - Translators and free software, a practical introduction to OmegaT

13 April, 2022 05:45PM

April 11, 2022

FSF Blogs

GNUnet News

libgnunetchat 0.1.0

libgnunetchat 0.1.0 released

We are pleased to announce the release of the client side library libgnunetchat 0.1.0.
This library brings an abstraction layer using the client API from different GNUnet services to provide the functionality of a typical messenger application. The goal is to make developing such applications easier and independent of the GUI toolkit. So people can develop different interfaces being compatible with eachother despite visual differences, a few missing features or differences in overall design.
The library relies on multiple services from GNUnet to implement its features. More information about that can be found here .

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.1.0

  • This release requires the GNUnet Messenger Service 0.1!
  • It allows account management (creation, listing and deletion).
  • Clients are able to switch between accounts during runtime.
  • The client can rename an account or update its key.
  • Contact exchange is possible via lobbies in form of URIs to be shared as text form or potentially QR encoded.
  • Each resource allows handling a user pointer for the client application.
  • Contacts and groups can be managed individually and given a custom nick name.
  • It is possible to request and open a direct chat with any contact.
  • Groups allow listing their members with custom user pointers related to the group memberships.
  • Chats can be left explicitly.
  • Each chat will be represented as context resource abstracting the variant of chat.
  • It is possible to send text messages, send files, share files and send read receipts explicitly.
  • Received messages allow checking for a read receipt status.
  • Messages can be deleted with a custom delay.
  • Files in a chat can be fully managed (they can be uploaded, downloaded, unindexed and provide a decrypted temporary preview if necessary) while being encrypted individually.
  • The status of each operation (upload, download, unindex) regarding files can be tracked.
  • Received invitations to new chats can be accepted.

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

Known Issues

  • The test cases are not fully complete and they may fail because of timeouts erratically.

In addition to this list, you may also want to consult our bug tracker at bugs.gnunet.org .

11 April, 2022 10:00PM

April 07, 2022

gzip @ Savannah

gzip-1.12 released [stable]

Thanks to Paul Eggert and Lasse Collin for all the work
on fixing the exploitable zgrep bug, and to Paul for
handling most of the other changes.

Here are the compressed sources:
  https://ftp.gnu.org/gnu/gzip/gzip-1.12.tar.gz   (1.3MB)
  https://ftp.gnu.org/gnu/gzip/gzip-1.12.tar.xz   (808KB)

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

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

Here are the SHA1 and SHA256 checksums:

91fa501ada319c4dc8f796208440d45a3f48ed13  gzip-1.12.tar.gz
W0+xTTgxTgny/IocUQ581UCj6g4+ubBCAEa4LDv0EIU  gzip-1.12.tar.gz
318107297587818c8f1e1fbb55962f4b2897bc0b  gzip-1.12.tar.xz
zl4D5Rn2N+H4FAEazjXE+HszwLur7sNbr1+9NHnpGVY  gzip-1.12.tar.xz

The SHA256 checksum is base64 encoded, instead of the
hexadecimal encoding that most checksum tools default to.

[*] 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 gzip-1.12.tar.gz.sig

If that command fails because you don't have the required public key,
or that public key has expired, try the following commands to update
or refresh it, and then rerun the 'gpg --verify' command.

  gpg --locate-external-key jim@meyering.net

  gpg --recv-keys 7FD9FCCB000BEEEE

  wget -q -O- 'https://savannah.gnu.org/project/release-gpgkeys.php?group=gzip&download=1' | gpg --import -

This release was bootstrapped with the following tools:
  Autoconf 2.71
  Automake 1.16d
  Gnulib v0.1-5194-g58c597d13b

NEWS

* Noteworthy changes in release 1.12 (2022-04-07) [stable]

** Changes in behavior

  'gzip -l' no longer misreports file lengths 4 GiB and larger.
  Previously, 'gzip -l' output the 32-bit value stored in the gzip
  header even though that is the uncompressed length modulo 2**32.
  Now, 'gzip -l' calculates the uncompressed length by decompressing
  the data and counting the resulting bytes.  Although this can take
  much more time, nowadays the correctness pros seem to outweigh the
  performance cons.

  'zless' is no longer installed on platforms lacking 'less'.

** Bug fixes

  zgrep applied to a crafted file name with two or more newlines
  can no longer overwrite an arbitrary, attacker-selected file.
  [bug introduced in gzip-1.3.10]

  zgrep now names input file on error instead of mislabeling it as
  "(standard input)", if grep supports the GNU -H and --label options.

  'zdiff -C 5' no longer misbehaves by treating '5' as a file name.
  [bug present since the beginning]

  Configure-time options like --program-prefix now work.

07 April, 2022 05:07PM by Jim Meyering

April 05, 2022

FSF Blogs

Antitrust Day: Tech monopolies shouldn't be allowed to control app stores

05 April, 2022 12:50AM

April 04, 2022

GNU Health

GNU Health declared Digital Public Good

We are very proud to announce that the GNU Health project has been declared a Digital Public Good by the Digital Public Goods Alliance (DPGA). GNU Solidario received the announcement this Sunday, April 3rd 2022.

The Digital Public Goods Alliance is a multi-stakeholder initiative endorsed by the United Nations Secretary-General, working to accelerate the attainment of the Sustainable Development Goals in low-and middle-income countries by facilitating the discovery, development, use of, and investment in digital public goods.

Current Digital Public Good Alliance board members (2022) . German Federal Ministry for Economic Cooperation and Development (BMZ), the Government of Sierra Leone, the Norwegian Agency for Development Cooperation (Norad), iSPIRT, United Nations Development Program (UNDP) , and the United Nations Children's Fund (UNICEF).
Digital Public Good Alliance board members (2022)

Current board members of the DPGA include the German Federal Ministry for Economic Cooperation and Development (BMZ), the Government of Sierra Leone, the Norwegian Agency for Development Cooperation (Norad), iSPIRT, United Nations Development Program (UNDP) , and the United Nations Children’s Fund (UNICEF).

The goal of the DPGA and its registry is to promote digital public goods in order to create a more equitable world. Being recognized as a DPG increases the visibility, support for, and prominence of open projects that have the potential to tackle global challenges.

GNU Health is now at the Digital Public Goods registry

After its nomination to become a Digital Public Good project, GNU Health had to pass the requirements of the DPGA standards. As the DPGA states :

The Digital Public Goods Standard is a set of specifications and guidelines designed to maximise consensus about whether a digital solution conforms to the definition of a digital public good: open-source software, open data, open AI models, open standards, and open content that adhere to privacy and other applicable best practices, do no harm by design and are of high relevance for attainment of the United Nations 2030 Sustainable Development Goals (SDGs). This definition stems from the UN Secretary-General’s Roadmap for Digital Cooperation.

Digital Public Good Standards

At GNU Solidario and GNU Health we are humbled and very happy with this recognition, and accept it with profound commitment, responsibility and determination. It makes us work even harder to keep on fighting for the advancement of Social Medicine, and to give voice to the voiceless around the world.

About GNU Health

GNU Health is a Libre, community driven project from GNU Solidario, a non-profit humanitarian organization focused on Social Medicine. Our project has been adopted by public and private health institutions and laboratories, multilateral organizations and national public health systems around the world.

The GNU Health project provides the tools for individuals, health professionals, institutions and governments to proactively assess and improve the underlying determinants of health, from the socioeconomic agents to the molecular basis of disease. From primary health care to precision medicine.

The following are the main components that make up the GNU Health ecosystem:

  • Social Medicine and Public Health
  • Hospital Management (HMIS)
  • Laboratory Management (Occhiolino)
  • Personal Health Record (MyGNUHealth)
  • Bioinformatics and Medical Genetics
  • Thalamus and Federated health networks
  • GNU Health embedded on Single Board devices

GNU Health is a Free/Libre, community-driven project from GNU Solidario, that counts with a large and friendly international community. GNU Solidario celebrates GNU Health Con and the International Workshop on e-Health in Emerging Economies (IWEEE) every year, that gathers the GNU Health and social medicine advocates from around the world.

GNU Health is a GNU (www.gnu.org) official package, awarded with the Free Software Foundantion award of Social benefit, among others. GNU Health has been adopted by many hospitals, governments and multilateral organizations around the globe.

See also:

GNU Solidario : https://www.gnusolidario.org

Digital Public Good Alliance: https://digitalpublicgoods.net/

Source : https://my.gnusolidario.org/2022/04/04/gnu-health-declared-digital-public-good/

04 April, 2022 09:12PM by Luis Falcon

April 02, 2022

health @ Savannah

GNU Health Hospital Management 4.0.3 patchset released

Dear community

GNU Health 4.0.3 patchset has been released !

Priority: High

Table of Contents

  • About GNU Health Patchsets
  • Updating your system with the GNU Health control Center
  • Summary of this patchset
  • Installation notes
  • List of other issues related to this patchset

About GNU Health Patchsets

We provide "patchsets" to stable releases. Patchsets allow applying bug fixes and updates on production systems. Always try to keep your
production system up-to-date with the latest patches.

Patches and Patchsets maximize uptime for production systems, and keep your system updated, without the need to do a whole installation.

NOTE: Patchsets are applied on previously installed systems only. For new, fresh installations, download and install the whole tarball (ie,
gnuhealth-4.0.3.tar.gz)

Updating your system with the GNU Health control Center

Starting GNU Health 3.x series, you can do automatic updates on the GNU Health HMIS kernel and modules using the GNU Health control center
program.

Please refer to the administration manual section (https://en.wikibooks.org/wiki/GNU_Health/Control_Center )

The GNU Health control center works on standard installations (those done following the installation manual on wikibooks). Don't use it if you use an alternative method or if your distribution does not follow the GNU Health packaging guidelines.

Summary of this patchset

Update Python dependencies

  • vobject: We have removed the version pinning on this library, using the current, latest version.
  • Update gnuhealth-control and gnuhealth-setup
  • Fixed issue on stock and nursing due to an old method on default health professional.
 

Installation Notes

You must apply previous patchsets before installing this patchset. If your patchset level is 4.0.2, then just follow the general instructions. You can find the patchsets at GNU Health main download site at GNU.org (https://ftp.gnu.org/gnu/health/)

In most cases, GNU Health Control center (gnuhealth-control) takes care of applying the patches for you.

Pre-requisites for upgrade to 4.0.3: None

Now follow the general instructions at

 

After applying the patches, make a full update of your GNU Health database as explained in the documentation.

When running "gnuhealth-control" for the first time, you will see the following message: "Please restart now the update with the new control center" Please do so. Restart the process and the update will continue.

  • Restart the GNU Health server

List of other issues and tasks related to this patchset

  • bug #62240: trytond-console: ValueError due to old vobject version
  • bug #62235: Traceback on default health professional

 Detailed information about each issue: https://savannah.gnu.org/bugs/?group=health

 Information about each task: https://savannah.gnu.org/task/?group=health

 For detailed information you can read about Patches and Patchsets

Happy and healthy hacking !

02 April, 2022 02:48PM by Luis Falcon

Amin Bandali

LibrePlanet 2022: The Net beyond the web

Today I gave a talk at LibrePlanet 2022 about the internet and the web, giving a brief account of the web's past, its current state, and ideas for better futures.

In this talk I go over the old web (of 1990s and early 2000s) and how websites looked back then, fast-forwarding to the present day and the sad current state of the web, and some possibilities on where we could go from here if we would like to have a better net/web in the future for user freedom, privacy, and control.

Here is the abstract for my talk, also available on the LibrePlanet 2022's speakers page:

The modern web is filled to the brim with complexity, no shortage of nonfree software, and malware. Many, many people have written and spoken at length on these issues and their implications and negative effects on users' freedom, privacy, and digital autonomy. With the advent of technologies like WebAssembly, the modern day web browser has effectively become an operating system of its own, along with all the issues and complexities of operating systems and then some. Opening arbitrary websites with a typical web browser amounts to downloading an executing [mostly nonfree] software on your machine. But is all of this complexity really necessary? Is all of this needed to achieve the web's original purpose, an information system for relaying documents (and now media)? What if there was a way to do away with all of these complexities and go back to the basics?

In this talk we will examine the Internet beyond the modern web, some possibilities of what that might look like with concrete examples from protocols like Gopher from time immemorial, and more recent experiments and reimaginations of it in today's world, such as Gemini and Spartan. The talk will give a brief tour of these protocols and their histories, what they have to offer, and why one might want to use them in the 21st century.

Presentation slides: txt | pdf | bib
Speaker notes: txt

I will add the presentation video once the conference recordings have been processed and published by the Free Software Foundation. You can watch the presentation video below:

02 April, 2022 04:30AM

LibrePlanet 2021: Jami and how it empowers users

I am giving my very first LibrePlanet talk today on March 20th. I will be talking about Jami, the GNU package for universal communication that respects the freedoms and privacy of its users. I'll be giving an introduction to Jami and its architecture, sharing important and exciting development news from the Jami team about rendezvous points, JAMS, the plugin SDK, Swarm chats, and more; and how these features each help empower users to communicate with their loved ones without sacrificing their privacy or freedom.

Here is the abstract for my talk, also available on the LibrePlanet 2021's speakers page:

Jami is free software for universal communication that respects the freedoms and privacy of its users. Jami is an official GNU package with a main goal of providing a framework for virtual communications, along with a series of end-user applications for audio/video calling and conferencing, text messaging, and file transfer.

With the outbreak of the COVID-19 pandemic, working from home has become the norm for many workers around the world. More and more people are using videoconferencing tools to work or communicate with their loved ones. The emergence of these tools has been followed by many questions and scandals concerning the privacy and freedom of users.

This talk gives an introduction to Jami, a free/libre, truly distributed, and peer-to-peer solution, and explains why and how it differs from all other existing solutions and how it empowers users.

I have been an attendee of LibrePlanet for some years, and am very excited to be giving my first ever talk at LibrePlanet 2021 this year! You can watch my talk and other speakers' talks live this weekend, from the LibrePlanet 2021 - Live page. Attendance is gratis (no cost), and you can register at https://u.fsf.org/lp21-sp.

Presentation slides: pdf (with notes) | bib
LaTeX sources: tar.gz | zip
Video: webm

You can watch the presentation video below:

02 April, 2022 04:30AM

March 31, 2022

poke @ Savannah

GNU poke 2.3 released

I am not that happy to announce a new release of GNU poke, version 2.3.

This fixes a little bug in diagnostics that broke the 32-bit
testsuite, making 2.2 the shortest lived poke release to date.

See the file NEWS in the distribution tarball for a list of issues fixed in this release.

The tarball poke-2.3.tar.gz is now available at
https://ftp.gnu.org/gnu/poke/poke-2.3.tar.gz.

  GNU poke (http://www.jemarch.net/poke) is an interactive,
  extensible editor for binary data.  Not limited to editing
  basic entities such as bits and bytes, it provides a full-
  fledged procedural, interactive programming language designed
  to describe data structures and to operate on them.

Happy poking!

--
Jose E. Marchesi
Frankfurt am Main
31 March 2022

31 March, 2022 06:22AM by Jose E. Marchesi

March 30, 2022

parted @ Savannah

parted-3.4.64 released [alpha]

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

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

Here are the SHA256 checksums:

parted-3.4.64.tar.xz = 00b686e9cb536a14b5a2831077903fb573f0e7d644d1ba8bbb1b255b767560af
parted-3.4.64.tar.xz.sig = b309bcb6630d004e76452e2dcaf71e0f84d41f19abe7564a39f14d55bc9d9ee9

[*] 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.4.64.tar.xz.sig

If that command fails because you don't have the required public key,
or that public key has expired, try the following commands to update
or refresh it, and then rerun the 'gpg --verify' command.

  gpg --locate-external-key bcl@redhat.com

  gpg --recv-keys 117E8C168EFE3A7F

  wget -q -O- 'https://savannah.gnu.org/project/release-gpgkeys.php?group=parted&download=1' | gpg --import -

This release was bootstrapped with the following tools:
  Autoconf 2.71
  Automake 1.16.5
  Gettext 0.21
  Gnulib v0.1-5192-gc386ed6eb0
  Gperf 3.1

NEWS

  • Noteworthy changes in release 3.4.64 (2022-03-30) [alpha]
    • New Features

  Add --fix to --script mode to automatically fix problems like the backup
  GPT header not being at the end of a disk.

  Add use of the swap partition flag to msdos disk labeled disks.

  Allow the partition name to be an empty string when set in script mode.

  Add --json command line switch to output the details of the disk as JSON.

  Add support for the Linux home GUID using the linux-home flag.

    • Bug Fixes

  Decrease disk sizes used in tests to make it easier to run the test suite
  on systems with less memory. Largest filesystem is now 267MB (fat32). The
  rest are only 10MB.

  Add aarch64 and mips64 as valid machines for testing.

  Escape colons and backslashes in the machine output. Device path,
  model, and partition name could all include these. They are now
  escaped with a backslash.

  Use libdevmapper's retry remove option when the device is BUSY. This
  prevents libdevmapper from printing confusin output when trying to
  remove a busy partition.

  Keep GUID specific attributes when writing the GPT header. Previously
  they were set to 0.

30 March, 2022 05:01PM by Brian C. Lane

March 29, 2022

poke @ Savannah

[VIDEO] Introduction to GNU poke at LP2022

The good Libreplanet people have just published the recordings of the presentations made at the Libreplanet 2022 conference earlier in March.  (kudos to them.)

One of the talks was an introduction to GNU poke, that may be useful to watch.  The video can be watched here:

https://framatube.org/w/eMXntiH1syB81a2Tk2zhJX

and downloaded from here:

https://media.libreplanet.org/u/libreplanet/tag/libreplanet-2022-video/

PS: The video also shows the very new (and still very experimental) Emacs interface to poke ;)

29 March, 2022 10:02PM by Jose E. Marchesi

GNU poke 2.2 released

I am happy to announce a new release of GNU poke, version 2.2.

This is a bugfix release in the 2.x series.

See the file NEWS in the distribution tarball for a list of issues fixed in this release.

The tarball poke-2.2.tar.gz is now available at
https://ftp.gnu.org/gnu/poke/poke-2.2.tar.gz.

  GNU poke (http://www.jemarch.net/poke) is an interactive,
  extensible editor for binary data.  Not limited to editing
  basic entities such as bits and bytes, it provides a full-
  fledged procedural,interactive programming language designed
  to describe data structures and to operate on them.

Happy poking!

--
Jose E. Marchesi
Frankfurt am Main
29 March 2022

29 March, 2022 07:01PM by Jose E. Marchesi

March 28, 2022

GNUnet News

GNUnet 0.16.3

GNUnet 0.16.3

This is a bugfix release for gnunet 0.16.2.

Download links

The GPG key used to sign is: 3D11063C10F98D14BD24D1470B0998EF86F59B6A

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

Noteworthy changes in 0.16.3 (since 0.16.2)

  • GNS : Fix record processing in DHT.
  • Buildsystem : Fix portability issues.

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

28 March, 2022 10:00PM

March 25, 2022

remotecontrol @ Savannah

March 22, 2022

parallel @ Savannah

GNU Parallel 20220322 ('Маріу́поль')

GNU Parallel 20220322 ('Маріу́поль') has been released. It is available for download at: lbry://@GnuParallel:4

Quote of the month:

  My favorite software, ever. Keep the good work.
    -- Federico Alves @federicoalves@twitter

New in this release:

  • --sshlogin user:password@host is now supported by using sshpass.
  • 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 a 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 883c667e01eed62f975ad28b6d50e22a
    12345678 883c667e 01eed62f 975ad28b 6d50e22a
    $ md5sum install.sh | grep cc21b4c943fd03e93ae1ae49e28573c0
    cc21b4c9 43fd03e9 3ae1ae49 e28573c0
    $ sha512sum install.sh | grep ec113b49a54e705f86d51e784ebced224fdff3f52
    79945d9d 250b42a4 2067bb00 99da012e c113b49a 54e705f8 6d51e784 ebced224
    fdff3f52 ca588d64 e75f6033 61bd543f d631f592 2f87ceb2 ab034149 6df84a35
    $ 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 March, 2022 10:29PM by Ole Tange

www-zh-cn @ Savannah

Welcome our new member - wind

Dear www-zh-cn-translators:

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

User Details:

Real Name: 燕卫博
Login Name: wind
Id: #302134
Email Address: Linyar.WindForest@gmail.com

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

22 March, 2022 06:26AM by Wensheng XIE

March 21, 2022

GNU Guix

Keeping one’s home tidy

How much effort to recreate your work environment when you switch to a new machine? What would it take to roll back to your previous environment once you’ve noticed a program no longer behaves as expected? What about sharing your environment with friends of yours? These are some of the things that Guix Home, which landed in Guix as a “technology preview” in September 2021, aims to make effortless, reliable, and fun.

In a nutshell, Guix Home brings the fully declarative configuration of Guix System to home directories. With Guix System, users and administrators provide a configuration file that defines the operating system configuration; with Guix Home, users provide a configuration file that defines the configuration of their work environment in their home directory—their home environment. That configuration is meant to stand alone, to describe all the relevant aspects of your work environment. But what exactly goes in a home environment?

“Dot files” don’t live in a vacuum

Among seasoned Unix-style users, we often equate “home environment” with “dot files”—configuration files in our home directory, from ~/.bashrc and ~/.ssh/config to ~/.emacs and everything under ~/.config. These files are precious and many store them under version control, to keep track of changes made to their configuration. That’s a good idea, but is that all it takes to describe the home environment? To roll back to a previous version?

Of course not. Dot files don’t exist in a vacuum; at the very least, your home environment is not just a set of dot files, but also a set of installed packages. They work together: if you upgrade a package, the corresponding dot file might need to be adjusted; if a package is missing, its dot file is not of any use. Sometimes a home environment contains additional things: daemons (programs that run in the background), or periodically executed jobs.

Guix Home goes beyond dot files: it lets you declare and instantiate all these aspects that make up your home environment.

Genesis

Guix Home was initially developed by Andrew Tropin as part of the rde project; it was integrated in Guix proper six months ago. I am writing this as an adopter and contributor, but there were a number of earlier adopters and earlier contributors. In fact, despite being still very much under development, the tool has already attracted a number of excited users eager to find a way to keep their home tidy!

The idea of writing down a declaration of your home environment that you can reproduce anytime is a natural followup to everything Guix does—you could already declare a package set in a manifest or even a complete operating system. It had been floating around, in Nix land with Home Manager and in Guix land with the now-defunct Guix Home Manager by Julien Lepiller. The latter was similar to today’s Guix Home, but went one step further by making your home directory read-only—yes, read-only! The main advantage is that it would ensure statelessness—you’d be sure that absolutely all your home configuration is under Guix Home Manager’s control; sub-directories containing mutable data would have to be explicitly declared. The downside is that it raised the barrier to entry: you’d have to either switch entirely, or not use it at all. Guix Home takes a more pragmatic approach and happily coexists with configuration managed “the old way”.

Getting started

To get started, you need a Home configuration file. There’s documentation, but as always, starting from a blank page is a bit intimidating. So instead of starting from a blank page, you can let guix home import generate an initial config for you:

guix home import ~/src/guix-config

This will create the ~/src/guix-config directory and populate it with a bunch of files among which home-configuration.scm along these lines:

(use-modules (gnu home)
             (gnu packages)
             (gnu services)
             (guix gexp)
             (gnu home services shells))

(home-environment
 (packages
  (map (compose list specification->package+output)
       (list "emacs-geiser-guile"
             "emacs-geiser"
             "pinentry-emacs"
             "emacs-exwm"
             "gnome-maps"
             "pipe-viewer"
             "emacs"
             "pavucontrol"
             "git"
             "xterm"
             "qemu"
             "openssh")))
 (services
  (list (service home-bash-service-type
                 (home-bash-configuration
                  (aliases
                   '(("grep" . "grep --color=auto")
                     ("ll" . "ls -l")
                     ("ls" . "ls -p --color=auto")
                     ("qemu" . "qemu-system-x86_64 -enable-kvm -m 512")
                     ("rm" . "rm --one-file-system")))
                  (bashrc
                   (list (local-file "/home/charlie/src/guix-config/.bashrc" 
                                     "bashrc")))
                  (bash-profile
                   (list (local-file
                          "/home/charlie/src/guix-config/.bash_profile"
                          "bash_profile"))))))))

guix home import automatically added the packages of ~/.guix-profile to the packages field. Because I’m using Bash, it also added an instance of home-bash-service-type with aliases extracted from my ~/.bashrc; it also made copies of ~/.bashrc and ~/.bash_profile and refers to them.

Now that I have an initial configuration, I can first test it in an isolated container:

guix home container ~/src/guix-config/home-configuration.scm

This command gives an interactive shell in a container where my home environment, as declared in home-configuration.scm, is deployed. There I can see my home directory as it would look like if I deploy my home environment “for real”: I can see my ~/.bashrc and co., I can check that all the packages declared are in $PATH and visible in ~/.guix-home, and so on. And all this is safe: my actual home directory has been left unchanged!

Once satisfied with my configuration, I can instantiate it:

guix home reconfigure ~/src/guix-config/home-configuration.scm

At that point, my actual home directory corresponds to that configuration. Some of my dot files are now provided by Guix Home, and thus they’re symbolic links (“symlinks”) to their read-only copy in /gnu/store:

$ ls -l ~/.bashrc ~/.bash_profile
lrwxrwxrwx 1 charlie users 56 Mar  7 15:46 /home/charlie/.bash_profile -> /gnu/store/lpdydssyyxx9n0xvp2jmv7yqgyr2pcg3-bash_profile
lrwxrwxrwx 1 charlie users 50 Mar  7 15:46 /home/charlie/.bashrc -> /gnu/store/kxc0j4i05sib04vf92nr8xxkb8isdfn7-bashrc

But don’t worry: before creating those symlinks, guix home reconfigure created backups of existing files under ~/TIMESTAMP-guix-home-legacy-configs-backup, where TIMESTAMP is a Unix-style timestamp.

And voilà, I have my first Guix Home generation!

$ guix home describe
Generation 1    Mar 07 2022 15:46:20   (current)
  file name: /var/guix/profiles/per-user/charlie/guix-home-1-link
  canonical file name: /gnu/store/qr1c5jpfrj815ncv6yr2lfdgs8nq8kkn-home
  channels:
    guix:
      repository URL: https://git.savannah.gnu.org/git/guix.git
      branch: master
      commit: 3ac1366648f933f7244c2d0b9926f7ba5d92a113
  configuration file: /gnu/store/xfgasfms9rhhigyj7i8za77zpqx6zbhn-configuration.scm

guix home describe shows provenance tracking we know and love from Guix System: all the info we need to redeploy the same home environment elsewhere, or at a different point in time. It’s also information guix home reconfigure relies on to make sure you never accidentally downgrade you home environment to an older Guix revision.

Going further

Alright, at this point, you might be thinking that it’s a lot of fuss but the “only” benefit over dot files under version control is that guix home also takes care of installing packages. Guix Home really shines once you use higher-level services, and when you start composing services together.

To the example above, in the services field, we can add a service declaration that runs Redshift, a program that adjusts the display color temperature according to the time of day:

(service home-redshift-service-type
         (home-redshift-configuration
          (location-provider 'manual)
          (latitude 35.81)    ;northern hemisphere
          (longitude -0.80))) ;west of Greenwich

The effect is that, as soon as we log in, under Xorg, Redshift will be started in the background as a Shepherd service. The Home-generated ~/.profile takes care of spawning shepherd, which in turn spawns the redshift service:

$ herd status
Started:
 + root
 + redshift

We gained another thing here: a consistent, unified configuration language. Instead of learning Redshift’s configuration file format, we define a home-redshift-configuration record, right in Scheme. Under the hood, that configuration is converted into Redshift’s file format; any error is caught at configuration time, when running guix home reconfigure, and we can be sure that Redshift is passed a valid configuration file.

We can similarly define a periodic mcron job, for example one that updates a GNU Idutils search database (that’s a pretty convenient and speedy way to look for code or documents!):

(simple-service 'idutils home-mcron-service-type
                ;; Every day at 12:15 and 19:15.
                (list #~(job '(next-minute-from (next-hour '(12 19)) '(15))
                             (string-append #$idutils "/bin/mkid \
-o $HOME/.idutils/src.db $HOME/src"))))

Again, guix home creates a Shepherd service that start mcron with a configuration file containing definitions for periodic jobs, which we can inspect via herd:

$ herd schedule mcron | head -5
Sun Mar 20 19:15:00 2022 +0000
/gnu/store/2d026nan309qkci968k8gpa8fcv9q4mv-idutils-4.6/bin/mkid -o $HOME/.idutils/src $HOME/src

Mon Mar 21 12:15:00 2022 +0000
/gnu/store/2d026nan309qkci968k8gpa8fcv9q4mv-idutils-4.6/bin/mkid -o $HOME/.idutils/src $HOME/src

Services, composed

If you already use Guix System, all the above certainly looks familiar: Guix Home builds upon the service framework that powers Guix System; Home services are defined in the (gnu home services …) module tree.

That framework lets us define relations among “services”, in a broad sense, and how services extend each other—in the example above, redshift and mcron both extend shepherd by giving it a daemon to take care of. We can see those relations at play by running:

guix home extension-graph home-configuration.scm

… which, for the configuration described above, gives a graph that looks like this:

Extension graph for home services.

We see redshift, mcron, and shepherd, but we also see lower-level services that guix home instantiates for us, such as the profile service which takes care of deploying packages listed in the packages field under ~/.guix-home/profile. Each arrow denotes a service extension. You can read more (and view more!) about service composition. To satisfy our math and functional-programming geek audience, we should mention that service types and their extension operation form a monoid.

What’s next?

Let’s be clear: Guix Home is pretty new and chances are that guix home search—the command to search for services by keyword—won’t give you the service you’re looking for. There’s also a bunch of open questions left, such as how to reuse services initially defined for Guix System in cases where they could be equally useful in Guix Home—Syncthing, for example.

But while it’s still a “technology preview”, it’s already a tool that tinkerers can play with and benefit from. Patches adding new services have already been proposed; maybe your favorite service is next? Consider contributing.

With a new release and ten-year anniversary coming up, we’re happy to celebrate with a tool that extends the reach of declarative and reproducible deployment!

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, AArch64 and POWER9 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.

21 March, 2022 03:30PM by Ludovic Courtès

March 20, 2022

remotecontrol @ Savannah

Cost of living: Calls for targeted help to cut energy bills

https://www.bbc.com/news/business-60796131
"Millions of households are facing a 54% rise in the cost of a typical annual gas and electricity bill..."

We discussed deeply when we designed GNU remotecontrol the reality of rising energy costs pushing consumer purchasing decisions to the point of genuine consumer pain. All energy costs have perhaps the most direct impact seen in food production costs. The choice between enough food and enough energy in 2022 is a decision many could not fathom only five years ago.

The Ukraine matter in play now is convenient for economic sanctions. There was no winter in Europe when the sanctions were launched. The sanctions will not last after September when cold returns and the need for more fossil fuels return to heat homes.

Energy suppliers do not want energy efficiency as consumption efficiency decreases all sales. It is clear commercialization is not going to solve the energy management needs of the world today. The answer is found in using new tools to help the logic system that is not working logically now.

Now is the time for free and open-source software to be used in helping consumers reduce their energy costs to heat their homes, their businesses, and public dwellings.

20 March, 2022 04:34PM by Stephen H. Dawson DSL

gnuastro @ Savannah

Gnuastro 0.17 released

The 17th release of GNU Astronomy Utilities (Gnuastro) is now available. See the full announcement for all the new features in this release and the many bugs that have been found and fixed: https://lists.gnu.org/archive/html/info-gnuastro/2022-03/msg00002.html

20 March, 2022 03:29PM by Mohammad Akhlaghi

March 19, 2022

FSF News

March 18, 2022

GNUnet News

GNUnet 0.16.2

GNUnet 0.16.2

This is a bugfix release for gnunet 0.16.1.

Download links

The GPG key used to sign is: 3D11063C10F98D14BD24D1470B0998EF86F59B6A

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

Noteworthy changes in 0.16.2 (since 0.16.1)

  • DHT : Fix path signature handling.
  • GNS : Fix BOX handling in zone apex.
  • NAMESTORE : Prevent storing under invalid labels.
  • Buildsystem : Fix build on *BSD and Guix.

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

18 March, 2022 11:00PM

March 17, 2022

libtool @ Savannah

libtool-2.4.7 released [stable]

Howdy, Libtoolers!

After a long hiatus, the Libtool Team is pleased to announce the release of
libtool 2.4.7.


GNU Libtool hides the complexity of using shared libraries behind a
consistent, portable interface. GNU Libtool ships with GNU libltdl, which
hides the complexity of loading dynamic runtime libraries (modules)
behind a consistent, portable interface.

Here are the compressed sources:
  https://ftpmirror.gnu.org/libtool/libtool-2.4.7.tar.gz   (1.9MB)
  https://ftpmirror.gnu.org/libtool/libtool-2.4.7.tar.xz   (996KB)

Here are the GPG detached signatures[*]:
  https://ftpmirror.gnu.org/libtool/libtool-2.4.7.tar.gz.sig
  https://ftpmirror.gnu.org/libtool/libtool-2.4.7.tar.xz.sig

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

Here are the SHA1 and SHA256 checksums:

d3f2d5399f4bf5cbd974b812ebaca28d6492ca65  libtool-2.4.7.tar.gz
BOlsJATqcMWQxUbrpCAqThJyLGQAFsErmy8c49SB6ag  libtool-2.4.7.tar.gz
0c90f1b046ea9cd7b32a4b5a6a9df4b46ddb637a  libtool-2.4.7.tar.xz
T38hfwV85lX/IlWa0iGg/Y74StH8X8tpkM7MMzqhY10  libtool-2.4.7.tar.xz

The SHA256 checksum is base64 encoded, instead of the
hexadecimal encoding that most checksum tools default to.

[*] 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 libtool-2.4.7.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 6EAC957F8EEB55C0

and rerun the 'gpg --verify' command.

This release was bootstrapped with the following tools:
  Autoconf 2.69
  Automake 1.16.3
  Gnulib a5218207e5

NEWS

* Noteworthy changes in release 2.4.7 (2022-03-16) [stable]

** New features:

  - Libtool script now supports (configure-time and runtime) ARFLAGS
    variable, which obsoletes AR_FLAGS.  This is due to naming conventions
    among other *FLAGS and to be consistent with Automake's ARFLAGS.

  - Gnulib testsuite is enabled and run during 'make check'.

  - Support the Windows version of the Intel C Compiler (icl) in
    libtool script.

  - Pass '-fsanitize=*' flags for GCC and LLVM, and '-specs=*' for GCC
    to linker.

  - Pass '-Xassembler=*' and '-Wa,*' flag to compilers and linkers.

  - The variable 'FILECMD' with default value of '/usr/bin/file' was used to
    replace existing hard coded references to '/usr/bin/file'.

  - Add MidnightBSD support.

** Important incompatible changes:

  - Libtool changed ARFLAGS/AR_FLAGS default from 'cru' to 'cr'.

  - Do not pass '-pthread' to Solaris linker.

  - 'libtool' and 'libtoolize' scripts now use '#! /usr/bin/env sh' shebang.
    Previously '#! /bin/sh' was used, which presents challenges for
    containerized environments.

** Bug fixes:

  - Fix significant slowdown of libtoolize for certain projects (regression
    introduced in 2.4.3 release) caused by infinite m4 macro recursion.

  - Mitigate the slowdown of libtool script (introduced in v2.4.3) caused by
    increased number of calls to '$SED $sed_quote_subst' (bug#20006).

  - Properly parse and export TLS symbols on AIX.

  - Various bug fixes surrounding use of 'sed'.

  - Darwin systems set proper "allow undefined" flag on OSX 11, and
    PowerPC 10.5.

  - Removed some deprecated tests related to 'Makefile.inc' files.


Enjoy!

17 March, 2022 04:32AM by Alex Ameen

March 12, 2022

denemo @ Savannah

Version 2.6 released

Version 2.6 of Denemo has been released
New Features for release 2.6
    Pitches First note entry method
        Notes are visualized on a special MIDI track
        Entering rhythms inserts notes from MIDI track
        Recorded MIDI is re-synchronized as each bar is entered
        Facilities to play, backup, advance, delete, restart recording
    Support all system/markup spacing controls
    Easy setting of conditional behavior of Denemo Directives
        Directives attached all objects (notes, chords, time/key signatures etc)
        Use e.g. for changes of clef only for certain instruments
    Editing the LilyPond for individual objects
        Applies to all objects (notes, chords, time/key signatures etc)
        Use e.g. to create editions with chords for smaller hands
    Support creating score/paper/header Directives at startup from Score Properties Editor
        Directives are created only where absent
    Allow easy toggling between listening/playing-in pitches via Shift key.
    Create Score and Parts in one PDF
    Allow setting transposition on playback easily
    Allow recording and attaching musical audio fragments to a score while composing
    Easier setting of Movement Tempo
    Improvements to Playback Controls
        Better control over playback volume
        Simplify setting playback start/end markers
        Better use of colors
    Improve Legibility
        Paler Denemo Cursor
        Allow alteration of brightness of playback start/end markers
    View Menu Improvements
        Turn various windows on/off by shortcut
        Switch back to Main Window with Esc or Ctrl-w
    Staff Display Spacing Control
        Ctrl-Drag to loosen/tighten spacing in display
        Auto/Manual spacing available
        Allows tight spacing for small screens
    Allow trailing staff lines at end of movement
    Bug Fixes
        Fix setting of movement tempo in playback controls
        Fix Inserting Breve and Longa
        Fix display of dotted Breve and Longa after reload
        Fix spurious 0xffffff keypress on windows
        Fix setting/following links to source files esp. on Windows
        Fix display of key signatures for tenor and baritone clefs
        Prevent staff braces being attached to Marks/Dynamics staffs
        Fix sounding duration of grace notes on dotted notes
        Check part lists are same in all movements on Check Score.
        Fix Performance for case where there is an upbeat at the start
        Fix Performance View for LilyPond version 2.22
        Fix Hide Movement as Sketch
        Fix Duplicated Titles
        Fix staff heights in display not resetting
        Fix lyric pane not showing sometimes
        Fix lyrics clashing with beaming in display
        Hidden staff markers avoid clashes
        Arrow at right of display now reliably shifts the displayed measures
        Improvements in restoring window sizes on re-starting Denemo
        Playback Fixes
            Pause no longer hangs notes
            Reset places end play at end
            Initial Playbutton icon change when pausing fixed
            Playback markers in display now follow notes accurately
            Fix clutter in display at Playback Start marker
            Fix Pause for Windows version

12 March, 2022 04:19PM by Richard Shann

March 11, 2022

FSF News

Contract opportunity: Bookkeeper

The Free Software Foundation (FSF), a Massachusetts 501(c)(3) charity with a worldwide mission to protect computer user freedom, seeks a motivated and talented Boston-based individual to provide bookkeeping and financial operations support. This is a temporary, part-time contract opportunity with potential for additional hours and/or extension.

11 March, 2022 11:05PM

March 10, 2022

GNU Taler news

Central Bank Accounts are Dangerous and Unnecessary: A critique of two papers

In December 2021, the European Central Bank (ECB) published a report on ``Central Bank Digital Currency: functional scope, pricing and controls'' in its Occasional Paper Series, detailing various challenges for the Digital Euro. While the authors peripherally acknowledge the existence of token-based payment systems, the notion that a Digital Euro will somehow require citizens to have some kind of central bank account is pervasive in the paper. We argue that an account-based design cannot meet the ECB's stated design goals and that the ECB needs to fundamentally change its mindset when thinking about its role in the context of the Digital Euro if it wants the project to succeed. Along the same lines, the French National Council for Digitalization published a report on ``Notes and Tokens, The New Competition of Currencies''. Here, the authors make related incorrect claims about inevitable properties of Central Bank Digital Currencies (CBDCs), going as far as stating that a CBDC is no [...]

10 March, 2022 11:00PM

Luca Saiu

GNU Jitter and GCC: the fun of playing with fire

A few days ago on March 6 I participated in the Binary T00ls Summit online event () organised by José Marchesi (); a video recording is now available. My presentation had the ridiculous title GNU Jitter and the illusion of simplicity or Copying, patching and combining compiler-generated code in executable memory or The Anarchist’s guide to GCC or The fun of playing with fire — or, in shortened form, GNU Jitter and GCC: the fun of playing with fire. This is the official abstract: GNU Jitter is a generator of portable and efficient language virtual machines; a Jittery VM lies ... [Read more]

10 March, 2022 08:32PM by Luca Saiu (positron@gnu.org)

March 09, 2022

poke @ Savannah

Binary Tools Summit 2022 slides and videos are now available

The Binary Tools Summit 2022 online event was held last weekend, and we had lots of fun.  We also learned a lot.

The slides for the presentations and video recordings of the talks are now available at the event website: https://binary-tools.net/summit

Thanks again to all the presenters and participants!

09 March, 2022 09:40PM by Jose E. Marchesi

March 08, 2022

FSF News

FSF job opportunity: program manager

The Free Software Foundation (FSF), a Massachusetts 501(c)(3) charity with a worldwide mission to protect computer user freedom, seeks a motivated and talented Boston-based individual to be our full-time program manager.

08 March, 2022 09:55PM

health @ Savannah

GNU Health HMIS 4.0.1 patchset released!

Dear community

GNU Health 4.0.1 patchset has been released !

Priority: High

Table of Contents

  • About GNU Health Patchsets
  • Updating your system with the GNU Health control Center
  • Summary of this patchset
  • Installation notes
  • List of other issues related to this patchset

About GNU Health Patchsets

We provide "patchsets" to stable releases. Patchsets allow applying bug fixes and updates on production systems. Always try to keep your
production system up-to-date with the latest patches.

Patches and Patchsets maximize uptime for production systems, and keep your system updated, without the need to do a whole installation.

NOTE: Patchsets are applied on previously installed systems only. For new, fresh installations, download and install the whole tarball (ie,
gnuhealth-4.0.1.tar.gz)

Updating your system with the GNU Health control Center

Starting GNU Health 3.x series, you can do automatic updates on the GNU Health HMIS kernel and modules using the GNU Health control center
program.

Please refer to the administration manual section (https://en.wikibooks.org/wiki/GNU_Health/Control_Center)

The GNU Health control center works on standard installations (those done following the installation manual on wikibooks). Don't use it if you use an alternative method or if your distribution does not follow the GNU Health packaging guidelines.

Summary of this patchset

Update Python dependencies

We needed to pin some underlying python libraries dependencies. We also included defusedxml library, included in a trytond security patch

  • progressbar
  • defusedxml
  • pycountry

GNU Health control center (gnuhealth-control) and gnuhealth-setup packages have also been updated to 4.0.1 and ready at GNU.org

Installation Notes

You must apply previous patchsets before installing this patchset. If your patchset level is 4.0.0, then just follow the general instructions. You can find the patchsets at GNU Health main download site at GNU.org (https://ftp.gnu.org/gnu/health/)

In most cases, GNU Health Control center (gnuhealth-control) takes care of applying the patches for you. 

Pre-requisites for upgrade to 4.0.1: None

Now follow the general instructions at

After applying the patches, make a full update of your GNU Health database as explained in the documentation.

When running "gnuhealth-control" for the first time, you will see the following message:
"Please restart now the update with the new control  center"
Please do so. Restart the process and the update will continue.

  • Restart the GNU Health server

List of other issues and tasks related to this patchset

For detailed information about each issue, you can visit https://savannah.gnu.org/bugs/?group=health

For detailed information about each task, you can visit https://savannah.gnu.org/task/?group=health

For detailed information you can read about Patches and Patchsets

Happy and healthy hacking !

Luis

08 March, 2022 05:05PM by Luis Falcon

New community server for GNU Health HMIS and Thalamus in Germany

Dear community

We're very happy to announce the new community server for GNU Health, Thalamus and the GH Federation hub / demo servers!

Thanks to our friends and sponsors from Kontent in Germany (www.kontent.com), the server has now plenty of RAM and resources to meet the requirements of an ever-increasing GNU Health community.

This is a fresh installation with Debian GNU/Linux 11. The host name is the same (federation.gnuhealth.org). The box provides the demo GNU Health Hospital Management System, Thalamus (GH Federation message and authentication server) and the demo for the GH Federation Health and demographics Database.

As we just installed it, please check that all deps are in place and everything goes smoothly :)

Thank you again to Kontent for sponsoring us, and for providing this wonderful service to the GNU Health community!

Happy and healthy hacking!
Luis

08 March, 2022 01:01AM by Luis Falcon

March 07, 2022

unifont @ Savannah

Unifont 14.0.02 Released

6 March 2022 Unifont 14.0.02 is now available.  This release makes modifications to several glyphs in Plane 0 and Plane 1.  It is a stable release.

Download this release from GNU server mirrors at:

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

or if that fails,

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

or, as a last resort,

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

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

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

Font files are in the subdirectory

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

07 March, 2022 12:58AM by Paul Hardy

March 06, 2022

health @ Savannah

Welcome to GNU Health HMIS 4.0!

Dear community:

I am very proud to announce the release of series 4.0 from the GNU Health Hospital Management Information System (HMIS) component!

Thanks to our community, GNU Health is now a leading Hospital Management Information System, with implementations in many countries around the world. The 4.0 series improves the navigation, introduces many more language teams, new packages and much better integration of evaluation, laboratory and Dx Imaging services.

What is new in GNU Health 4.0 series

  • Improved ergonomics on the GTK client
  • New HELP command that allows offline and contextualized documentation
  • WebDAV and CalDAV packages are fully integrated in GH (no links)
  • Weblate now holds 34 language teams!
  • Removed obsoleted binary ODT (except for some charts)
  • Improved integration with OpenStreetMap (OSM)
  • Improved surgery and patient evaluation flows
  • New health service Dx imaging package
  • Update person gender list
  • Add medical evaluations to health services
  • Include (optional) expiration date on the person ID
  • Add context field for Dx Imaging and Lab tests

Upgrading from GNU Health 3.8

  • Make a FULL BACKUP your kernel, database and attach directories !!!
  • Follow the instructions on the Wikibooks.
  • Don't forget to run the "before" and "after" sql scripts

Development focus

In addition of the GH HMIS server, we will focus the development in the following  areas of the GNU Health ecosystem:

  • MyGNUHealth: The GNU Health app for desktop and mobile devices
  • The Documentation Portal and HELP command documentation packages
  • Thalamus and the Federation Portal

The GNU Health Federation integrates information from many health institutions and people from a region or country. The GH Federation portal will allow to manage resources, as well as the main point for **analytics** and **reporting** of massive demographics and epidemiological data generated nationwide. People, health centers and research institutions (eg genomics) can benefit from the GNU Health Federation and the GNU Health ecosystem in general.

As always, no matter how hard we try to avoid them, there will be bugs, so please test the new system, upgrade process, languages, and give us your feedback via them via health@gnu.org

The community server has been already migrated to 4.0.0, so you just need to download the GNU Health HMIS client and enjoy it.

Happy and Healthy Hacking !

--
Dr. Luis Falcon, M.D.
President, GNU Solidario
Advancing Social Medicine
https://www.gnuhealth.org

06 March, 2022 01:20AM by Luis Falcon

March 04, 2022

GNUnet News

GNUnet 0.16.1

GNUnet 0.16.1

This is a bugfix release for gnunet 0.16.0.

Download links

The GPG key used to sign is: 3D11063C10F98D14BD24D1470B0998EF86F59B6A

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

Noteworthy changes in 0.16.1 (since 0.16.0)

  • GNS : There was a bug where private records were published.
  • NAMESTORE : CLI now handles Tombstones better. There is also a warning for problematically short relative expiration times (<15 minutes) when adding new records.
  • Buildsystem :
    • Fix libsodium detection. #7153
    • Fix for facilitating autoreconf with the released tarball.

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

04 March, 2022 11:00PM

February 23, 2022

parallel @ Savannah

GNU Parallel 20220222 ('Donetsk Luhansk')

GNU Parallel 20220222 ('Donetsk Luhansk') has been released. It is available for download at: lbry://@GnuParallel:4

This release has a major change in the remote code. This makes this release beta quality.

Quote of the month:

  I also prefer gnu parallel. Mainly because it makes embarrassingly
  parallel tasks embarrassingly easy to run on the command line.
    -- Vincent D. Warmerdam @fishnets88@twitter

New in this release:

  • Encoding of remote commands has changed. This limits the length of remote commands to less than half. It also requires $REMOTE_TMPDIR to be writable.
  • Time functions hh_mm_ss() hhmmss() hh_mm() hhmm() are now available for {= =}.
  • parallel_options_map.pdf is a map showing which options other options relate to.
  • {uniq} added to --plus to only run jobs with unique values.
  • Bug fixes and man page updates: Many options now have a 'See also' section.

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 a 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 883c667e01eed62f975ad28b6d50e22a
    12345678 883c667e 01eed62f 975ad28b 6d50e22a
    $ md5sum install.sh | grep cc21b4c943fd03e93ae1ae49e28573c0
    cc21b4c9 43fd03e9 3ae1ae49 e28573c0
    $ sha512sum install.sh | grep ec113b49a54e705f86d51e784ebced224fdff3f52
    79945d9d 250b42a4 2067bb00 99da012e c113b49a 54e705f8 6d51e784 ebced224
    fdff3f52 ca588d64 e75f6033 61bd543f d631f592 2f87ceb2 ab034149 6df84a35
    $ 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.

23 February, 2022 06:32PM by Ole Tange