Comment 0 for bug 1841654

Revision history for this message
amano (jyaku) wrote : Replace mawk with gawk in main

For POSIX compatibility reasons ships with mawk in main. There is an awk-symlink to mawk, thus mawk is the official awk implementation

==Reasons against mawk==

*The mawk package is synced from debian and it is heavily undermaintained: Debian (and thus Ubuntu) still ships version 1.3.3-17, the same version at least since oldoldstable: https://packages.debian.org/search?searchon=names&keywords=mawk

*part-time maintainer Thomas E. Dickey (https://invisible-island.net/mawk/) called officially out that Debian "neglected" mawk in 2014 ("As noted, mawk has been neglected by some packagers (see for example this http://bugs.debian.org/cgi-bin/pkgreport.cgi?package=mawk)". As Debian (and Ubuntu) still ship the same version five years later

*Most other distributions ship mawk at least in its last official incarnation 1.3.4 in their repositories. Dickey lists AIX, Fedora, FinkPorts (Mac OS X), FreeBSD port, Gentoo, HPUX, MacPorts (Mac OS X), NetBSD pkgsrc/lang, OpenCSW (Solaris). But even that version is from 2014 and doesn't seem to be developed anymore: https://github.com/ThomasDickey/mawk-20140914/commits/master

*A planned rewrite mawk2 was planned by original author Mike Brennan ("Mike's awk" = mawk) in 2016 but obviously came to nothing: https://github.com/ploxiln/mawk-2/commits/master

*Thus mawk sits in Ubuntu main in a version published upstream in 2009 and celebrates its 10th anniversary of negligence. A state that Debian was called out for negligence 5 years ago.

*This year it is 10 years unmaintained and largely untouched. At the end of the next LTS-support-cycle we can celebrate 15 years of not supporting it.

*awk is included in Linux for POSIX standard compliance. Mawk is known to be fast and small but it is the implementation that is farthest from being POSIX compliant, missing things like named character classes like [[:space:]] within its EREs.

==Reasons for gawk as a replacement==
*It is the official GNU awk implementation and known to work well with the rest of the GNU userland.

*It is actively maintained with the last version 5.01 shipping in June, 2019 (even if Ubuntu will obviously still ship 4.2 for EOAN.

*It is mostly compliant with the POSIX standard.

*Most other distributions ship it as the standard POSIX implementation, with a awk symlink. So it had security reviews already by Red Hat and others.

==Possible problems with switching to gawk in time for Ubuntu 20.4==
- It might need to be MIRed by the Ubuntu security team. It took them 2 years to review Rygel and they have just an early preliminary review for gnome-remote-desktop ready. Thus a review might take time (years).

- It is much larger than mawk, the Ubuntu package is 1600 kB in size, while mawk is only about 190KB in size. Thus some might want to split out basic POSIX functionality if this is possible to save size.

ProblemType: Bug
DistroRelease: Ubuntu 19.04
Package: mawk 1.3.3-17ubuntu3
ProcVersionSignature: Ubuntu 5.0.0-27.28-generic 5.0.21
Uname: Linux 5.0.0-27-generic x86_64
ApportVersion: 2.20.10-0ubuntu27.1
Architecture: amd64
CurrentDesktop: ubuntu:GNOME
Date: Tue Aug 27 20:12:11 2019
Dependencies:
 gcc-9-base 9.1.0-2ubuntu2~19.04
 libc6 2.29-0ubuntu2
 libgcc1 1:9.1.0-2ubuntu2~19.04
 libidn2-0 2.0.5-1
 libunistring2 0.9.10-1ubuntu2
InstallationDate: Installed on 2018-02-23 (550 days ago)
InstallationMedia: Ubuntu 18.04 LTS "Bionic Beaver" - Alpha amd64 (20180214)
ProcEnviron:
 LANGUAGE=de_AT:de
 PATH=(custom, no user)
 XDG_RUNTIME_DIR=<set>
 LANG=de_AT.UTF-8
 SHELL=/bin/bash
SourcePackage: mawk
UpgradeStatus: No upgrade log present (probably fresh install)