Subject: Re: [bug#35423] [PATCH] gnu: Add julius.

From: Tobias Geerinckx-Rice <[email-masked]>
Date: Thu, 25 Apr 2019 05:29:19 +0200

nly,

Thanks for the patch!  Unfortunately, the indentation's buggered. 
How did you create/send it?

[email-masked] wrote:
> Julius is a speech recognition tool. Package uses a custom 
> license.
>
> From e01acf44822c57cf2af4678007ddd6a70b61ce1e Mon Sep 17 
> 00:00:00 2001
> From: Amar Singh <[email-masked]>
> Date: Sun, 21 Apr 2019 19:37:37 +0530
> Subject: [PATCH] gnu: Add julius.
>
> * gnu/packages/speech.scm (julius): New variable.
> ---
>  gnu/packages/speech.scm | 39 
>  +++++++++++++++++++++++++++++++++++++++
>  1 file changed, 39 insertions(+)
>
> diff --git a/gnu/packages/speech.scm b/gnu/packages/speech.scm
> index 2d6c63e3f9..a99be8a0aa 100644
> --- a/gnu/packages/speech.scm
> +++ b/gnu/packages/speech.scm
> @@ -33,9 +33,11 @@
>  #:use-module (gnu packages gcc)
>  #:use-module (gnu packages glib)
>  #:use-module (gnu packages linux)
> + #:use-module (gnu packages perl)
>  #:use-module (gnu packages pkg-config)
>  #:use-module (gnu packages pulseaudio)
>  #:use-module (gnu packages python)
> + #:use-module (gnu packages sdl)
>  #:use-module (gnu packages textutils))
>  (define-public espeak
> @@ -119,6 +121,43 @@ It is based on the eSpeak engine and 
> supports spectral and Klatt formant
>  synthesis, and the ability to use MBROLA voices.")
>  (license license:gpl3+)))
> +(define-public julius
> + (package
> + (name "julius")
> + (version "8c60cb8c")

Package versions must be monotonically increasing over time so 
Guix (and users) can determine which is newer.  Git commits 
aren't.

We also prefer to package upstream releases whenever possible, and 
I see there's a 4.5 release on GitHub.  Would that do?

If not, can you use GIT-VERSION (with "4.5" as the first argument) 
instead?  Examples abound in (gnu packages).

> + (source
> + (origin
> + (method git-fetch)
> + (uri
> + (git-reference
> + (url "https://github.com/julius-speech/julius")
> + (commit version)))
> + (file-name
> + (git-file-name name version))

This can remain unchanged even if you'd switch to GIT-VERSION.

> + (sha256
> + (base32
> + "11qbp9kid251lx6li4fv1r6l0pixxcs1m00sax1z057bhcv4jc7a"))))
> + (build-system gnu-build-system)
> + (arguments
> + `(#:phases
> + (modify-phases %standard-phases
> + (delete 'check))))
> + (inputs
> + `(("alsa-lib" ,alsa-lib)
> + ("zlib" ,zlib)
> + ("sdl2" ,sdl2)
> + ("perl" ,perl)))

Nitpick: might as wel sort these before they go in.

> + (home-page "https://github.com/julius-speech/")

According to the README, the ‘official’ home page is just

  https://github.com/julius-speech/julius

> + (synopsis "Open-Source Large Vocabulary Continuous Speech
> +Recognition Engine")

Everything in Guix is ‘Open Source’ (not a term we should be 
promoting anyway :-) so we don't mention it in synopses or 
descriptions.

I don't think the capitalisation is helpful (even if ‘LVCSR’ were 
a common initialism, ‘Engine’ wouldn't be capitalised).

> + (description
> + "Julius is a high-performance, small-footprint large 
> vocabulary continuous
> + speech recognition (LVCSR) decoder software for speech-related 
> researchers and
> +developers.")

Here you can use @acronym{LVCSR, large vocabulary continuous 
speech recognition} if you like.

This description is awfully short.  Since you're familiar with the 
software, would you mind expanding it?  You can re-use the most 
relevant parts of the README or other documentation.

> + (license
> + (license:non-copyleft "http://julius.osdn.jp/LICENSE.txt"
> + "Julius-Modified-BSD-4Clause"))))

Hmm.  I'm not sure if clauses 3 and 5 could be problematic.  Has 
this licence been previously discussed elsewhere in the FSDG 
world?

Thanks!

T G-R