Subject: [bug#31307] [PATCH] Add MAT, the Metadata Anonymisation Toolkit from Boum

From: Nils Gillmann <[email-masked]>
Date: Sat, 28 Apr 2018 22:11:04 +0000

Chris Marusich transcribed 5.9K bytes:
> Hi Guix,
> 
> This patch adds MAT, the Metadata Anonymisation Toolkit from Boum.  I've

Nice! This one has been a "low-hanging fruit" on my roadmap for a very long time.
Good to see it.

> successfully used its CLI tool to purge metadata from JPEG image files;
> I verified using exiftool that it works for this purpose.  However, not
> all of its features work (see the TODO for details), and more
> importantly, the website says people shouldn't use it.  For these
> reasons, I'm not sure if we should add it, so I'd like to ask for your
> opinion.
> 
> The author state on their website:
> 
>   https://mat.boum.org/
> 
>   Current status
> 
>   The MAT maintenance and development is currently on hold, mostly for
>   health reasons. I might go back to it at some point in the future.
> 
>   The current version might have bugs, and doesn't work on Python3: Please
>   avoid using it.
> 
> However, packages exist for some distributions.  For example, here's a
> MAT package for Debian:
> 
>   https://packages.qa.debian.org/m/mat.html
> 
> And like I said, the CLI tool does seem to work.
> 
> Should we refrain from adding this package simply because the author is
> not maintaining it any more?  I'm inclined to say "no", but one also has
> to consider whether it is a a good idea to encourage people to use an
> unmaintained tool for protecting their privacy/anonymity.  I'm not sure.
> 
> In addition, I notice that the license is GPL 2, but it seems the author
> did not specify whether "any later version" can be used.  Therefore, I
> have listed this as gpl2, instead of gpl2+.

The tails people (iirc it is a tails project, who are hosted on boum.org infra)
are generally okay with questions, I think you should ask about wether it's GPL2 or GPL2+.

We could also ask them about the state of MAT, as once upon a time they used to
include it in Tails. No idea if they stil do.

> What do you think?
> -- 
> Chris

> From c30a26364fdf919deb9bc6bd907b75de58a17a7b Mon Sep 17 00:00:00 2001
> From: Chris Marusich <[email-masked]>
> Date: Sat, 28 Apr 2018 14:03:47 -0700
> Subject: [PATCH] gnu: Add mat.
> 
> * gnu/packages/photo.scm (mat): New variable.
> ---
>  gnu/packages/photo.scm | 52 ++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 52 insertions(+)
> 
> diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm
> index 2c0c2313f..a6380cc63 100644
> --- a/gnu/packages/photo.scm
> +++ b/gnu/packages/photo.scm
> @@ -26,6 +26,7 @@
>    #:use-module (guix build-system cmake)
>    #:use-module (guix build-system gnu)
>    #:use-module (guix build-system perl)
> +  #:use-module (guix build-system python)
>    #:use-module (guix download)
>    #:use-module ((guix licenses) #:prefix license:)
>    #:use-module (guix packages)
> @@ -52,6 +53,7 @@
>    #:use-module (gnu packages llvm)
>    #:use-module (gnu packages man)
>    #:use-module (gnu packages maths)
> +  #:use-module (gnu packages music)
>    #:use-module (gnu packages perl)
>    #:use-module (gnu packages pkg-config)
>    #:use-module (gnu packages popt)
> @@ -521,3 +523,53 @@ workflow by facilitating the handling of large numbers of images.  Most raw
>  formats are supported, including Pentax Pixel Shift, Canon Dual-Pixel, and those
>  from Foveon and X-Trans sensors.")
>      (license license:gpl3+)))
> +
> +;; TODO: Add inputs for PDF support (e.g., Poppler, python-pdfrw).
> +;; TODO: Add inputs for GUI support (e.g., gi).
> +;; TODO: Fix some hard-coded paths.  For example, get_datafile_path embeds
> +;; paths like "/usr/local/share/mat", which we should probably rewrite so that
> +;; they point to mat's output directory in the store.  This specific example
> +;; causes "mat --list" to fail with an exception.

I'm all for making it less hard for a package to get initially into Guix, but
shouldn't at least hardcoded paths that make an often used function(?) be fixed
first? On the other hand it is functional as you wrote.

> +(define-public python2-mat
> +  (package
> +    (name "python2-mat")

Since people will expect this as "MAT" or "mat" and not "python2-mat", and to my
knowledge there is no python3 variant, we should name it just mat.

> +    (version "0.6.1")
> +    (source (origin
> +              (method url-fetch)
> +              (uri (string-append
> +                    "https://mat.boum.org/files/mat-" version ".tar.xz"))
> +              (sha256
> +               (base32
> +                "1faiiq7cjspafjjf4kmm7bbn8m506qgcijbizpgdvlaaapdyg0h7"))))
> +    (build-system python-build-system)
> +    (arguments
> +     `(#:python ,python-2
> +       #:use-setuptools? #f))
> +    (propagated-inputs
> +     `(("python2-pycairo" ,python2-pycairo)
> +       ("python2-mutagen" ,python2-mutagen)
> +       ("perl-image-exiftool" ,perl-image-exiftool)))
> +    (native-inputs
> +     `(("python2-distutils-extra" ,python2-distutils-extra)
> +       ("intltool" ,intltool)))
> +    (synopsis "Anonymize/remove metadata from files")
> +    (description
> +     "MAT (Metadata Anonymisation Toolkit) is a toolbox composed of a GUI
> +application, a CLI application and a library, to anonymize/remove metadata
> +from files.  It supports the following file formats:
> +
> +@itemize @bullet
> +@item Portable Network Graphics (.png)
> +@item Joint Photographic Experts Group (.jpg, .jpeg, etc.)
> +@item Tagged Image File Format (.tif, tiff, etc.)
> +@item Open Documents (.odt, .odx, .ods, etc.)
> +@item Office OpenXml (.docx, .pptx, .xlsx, etc.)
> +@item Portable Document Fileformat (.pdf)
> +@item Tape Archives (.tar, .tar.bz2, etc.)
> +@item Moving Picture Experts Group (MPEG) (.mp3, .mp2, .mp1, etc.)
> +@item Ogg Vorbis (.ogg, etc.)
> +@item Free Lossless Audio Codec (.flac)
> +@item Torrent (.torrent)
> +@end itemize")
> +    (home-page "https://mat.boum.org")
> +    (license license:gpl2)))
> -- 
> 2.17.0
>