Partial answer to soime of your points (most of them being well taken ! ). More 
later...

Le mardi 16 mai 2023 à 13:45 +0200, Dr. Jürgen Sauermann a écrit :

>  Hi Emmanue;  
>  
> On 5/15/23 23:23, Emmanuel Charpentier wrote:
>  
> 
> >
Dear list,

> > after a 37 years (!) hiatus, I have the opportunity to come back to
APL. Gnu apl appears to be the easiest way to do that, at least
partially due to emacs' gnu-apl-mode package, which appears to be a
great interface.
>
>  Thank you very much for your interest in GNU APL.  
>  
> 
> > However, I wondered why the Debian package distributed by Gnu comes
without support for libapl.so and lib_gnu_apl.so libraries,which would
allow to use APL from other interface.
>
>
>  Actually GNU APL has 8 at least primary build options (see the script  
>  **build/build_all** line **309**) :  
>    
>    configs="standard develop tar git libxcb rational \  
>             libapl parallel_bench erlang python"  
>    
>  The most common options are standard (the interpreter) and libapl.  
>    
>  Each of these options has maybe 10 or so variants which differ  
>  depending on which libraries are installed on the build system.  
>    
>  And then there are 3 or more packaging systems (debian, rpm,  
>  yum, ...).  
>    
>  And finally there are different platforms (i386, amd64, arm, apple, ...).  
>    
>  So in order to be fair we would need to produce several millions of  
>  binary packages.

The same is true for most development environments. I'll take the example of R 
in Debian :

There is :

- a base package `r-base-core`, which contains the very core of the interpreter 
;

- the basic interpreter, `r-base`, which uses `r-base-core`, and therefore 
*depends* on it :

- about 138 packages (in Debian testing) depending on `r-base` including 
various documentation presentation packagings), therefore indirectly depending 
on `r-base-core` ;

- 1121 packages wrapping CRAN R packages, all depending more or less directly 
from `r-base[-core]?` and possibly other.

The dependencies avoid Debian to have to produce `2^159` packages... 
Furthermore, other packages (e. g. `ess` might `recommend` or `suggest` `R` 
packages and/or other `R`-related packages.

I thought that such a combination
could be created for APL packages. That would be :

- `gnu-apl-base-core` : essentially `libapl.so`, containing the core of the 
interpreter ;

- gnu-apl-base` : the "vanilla" user interface, essentially emulating a 70's 
terminal,
      calling `libapl.so` functions for all the APL computations ;

- various `gnu-apl-xxx` wrappers, depending of either `gnu-apl-core` or 
`gnu-apl-base`
      and calling (directly or not) `libapl.so` for APL computation, allowing 
APL to interface with
      either :

  + service processors, such as various SQL interface to databases (sqlite3, 
mysql, postgresql, etc...)

  + interface to other languages/services (C, Python, erlang, possibly emacs, 
etc...).

    Each of them might depend also on distribution-specific packages 
guatranteeing a known configuration for each of them. For example, 
`gnu-apl-python` could depend on `gnu-APL-base-core` *and* `python3`, as well 
as any `python3-xxx` packages providing a useful service.

These dependencies avoid the necessity to create a zillion packages 
representing the various combinations you decsribed. In other words, 
`gnu-apl-base-core` does *nothing* **by itself** but enables other 
functionalities *without duplication*.

I *suppose* that the same can be done in `rpm` and `yum` packaging systems.

[ Hypothetical Debian `gnu-apl` package : Snip... ]

> > Furthermore, keeping a *packaged* version of APL makes its maintenance
much easier.

>  Au contraire. It merely moves the work from the user to the  
>  package maintainer, and the work for the maintainer is bigger  
>  than the work for the user.  

That's the point ;-)... Don't yell too fast :

This restructuration is indeed more work (say `W_m`) for *one* (or `n`) 
maintainer(s),
and *less* work (`W_u`) for any of the `N` users.

**This is efficient if `W_m/W_u≤N/n`.**

In other words, managing these dependencies is worthy if you believe that "easy 
management" will attract more potential APL users...

In (yet) other words, that's an *investment*.

This restructuration *might* also have long-term benefits in terms of 
cleanliness of the code v=base, but I'll refrain to exress any opinion about 
this : while I'm (relatively) competent enough in C to be able to fix a bung in 
a lbrary, my C++ is rudimentary to the *extreme*. For about 30 years, I've 
worked almost exclusively with higher order languages, such as R, perl, bash, 
and (more recently) Python and [Sage](https://www.sagemath.org/) (throw in 
enough emacs-lisp to survive heavy  daily usage of emacs...), and that's no 
happenstance...

> >So I'm looking for hints and advice on how to recompile and repackage
APL for Debian(-like) systems with libraries support (I am aware that
this possibly could result in the creation of distinct packages, at
least for lib_gnu_apl.so : libapl.so could be part of the main apl
package, where the binary apl could be a user front end calling it for
computation).
> 
>  This should be quite simple:  
>    
>  1. ./configure GNU APL to build libapl (see README-2-configure).  
>  2. make  
>  3. sudo make install  
>    
>  This should have created some /usr/local/lib/apl/libapl.* (static  
>  library libapl.a and/or dynamic library libapl.so; the exact names  
>  depend on your platform.  
>    
>  4. put the desired libraries into a tar file  
>  5. convert the tar file into a deb file (e.g. dpkg-buildpackage).  
>    
>  After all, a **deb** file is simply an **ar** archive that contains a 
> **tar**  
>  archive  and some meta information (**control.tar.zst**, you may  
>  use **debian/*** for a start):  
>    
>  
> **[eedjsa@server68:~/apl-1.8/debian_tmp$](mailto:eedjsa@server68:~/apl-1.8/debian_tmp$)
>  ar tvf apl_1.8-1_amd64.deb  
>  rw-r--r-- 0/0      4 Jan  4 13:14 2014 debian-binary  
>  rw-r--r-- 0/0   5162 Jan  4 13:14 2014 control.tar.zst  
>  rw-r--r-- 0/0 2973074 Jan  4 13:14 2014 data.tar.zst**  

I need to experiment with the Debian build package before answering this.

> 
> > Secondary question : it appears that this part of Ubuntu, but not of
Debian. Do you know why ?
> 
>  See above. Ubuntu is Debian based but also includes non-Debian  
>  packages, Some Ubuntus include GNU APL, some do not.  
>  
> 
> > BTW : I'm not (yet) on the list, so I would appreciate a Cc:
[emm.charpent...@free.fr](mailto:emm.charpent...@free.fr) of your (eagerly 
awaited) replies.
>
>  You only need to subscribe:  
>    
>  
> [https://lists.gnu.org/mailman/listinfo/bug-apl](https://lists.gnu.org/mailman/listinfo/bug-apl)
>   

I'm a special case : since my (almost) homonym, [Emmanuelle 
Charpentier](https://en.wikipedia.org/wiki/Emmanuelle_Charpentier) was awarded 
a Nobel prize, my mail feeds (especially the professional ones) are *flooded* 
with spam. I tend to be extremely cautious about subscribing to mailing lists...

Sincerely,

--<br>
Emmanuel Charpentier

Reply via email to