Hi, Jörgen ! Le jeudi 18 mai 2023 à 17:17 +0200, Dr. Jürgen Sauermann a écrit : > Hi Emmanuel, > > I believe your efficiency formula is incorrect. > > when I said: > > 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. > > I did not mean that the work moved from the user to the maintainer > is essentially the same for both. After maintaining GNU APL for more > than > 10 years I can tell you that saving 1 minute per user in the build > system can > easily take weeks for the maintainer.
That, assuming my initial estimate, would put a threshold of about ×/7 24 60 = 10080 Gnu APL users to justify maintainance. Worldwide, that's not much... But I think that the kind of restructuring I had in mind has probably a steeper bill... > > My computation would be this: > > 1. from the feedback on bug-apl@gnu.org I would assume that there are > less that 10 libapl users in this world (most use the GNU APL > interpreter). That's where we differ : what I had in mind was putting libapl at the *core* of the package, the interpreter being but one ppplication using that core. Therefore making a libapl user af all and any gnu-apl user... Under* your* assumption, the rest of your reasoning looks perfec correct to me. > 2. running configure --with-libapl ; make ; sudo make install > takes less than 2 minutes. > > 3. This amounts to a total of 20 minutes for all users. > > 4. Your proposed packaging scheme will take 20 hours of my time > (at least - I am not at all familiar with Debian packagintly. > > 5. Apart from that, GNU APL handles the presence or non-presence > of a package in the source code. For example ⎕FFT will produce a > SYNTAX ERROR, generate the )MORE command information related > to the SYNTAX ERROR, etc. if libfftw3 is missing. I severely doubt > that > such fine-tuning can be managed with package managing alone, at > least not in 20 hours. > > 5a. Debian would simply fetch libfftw3 if missing. However, I had > several > cases in the past where the automatic loading of packages crashed > my > entire machine badly (the last event of that sort was only a few > weeks ago, > and I still have not fully recovered from that crash). I therefore > want > GNU APL to be as little intrusive as possible, That's interesting ! Did you report this to Debian ? This might reveal a *Debian* bug... What I had in mind was the work necessary to compensate for the introduction *in the system directories* of libraries unknown to the package management system (apt, friends, cousins, nephews twice removed and other distant relatives :-). In >20 years of Debian use, I became wary of messing with this holy mafia... Intrducing unknown libraries implies that manual maintainance operations *have* to be done at each change of configuration of the APL packages *or change in the client programs configuration !* The latter may become a pain... Sincerely, -- Emmanuel Charpentier > Best Regards, > Jürgen > > > On 5/17/23 13:29, Emmanuel Charpentier wrote: > > > > > 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, callinglibapl.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 (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. > > > 1. put the desired libraries into a tar file > > > 2. 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$ 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 of your (eagerly awaited) replies. > > > You only need to subscribe: > > > https://lists.gnu.org/mailman/listinfo/bug-apl > > I'm a special case : since my (almost) homonym, 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, > > -- > > Emmanuel Charpentier >