Hi all,

https://trac.sagemath.org/ticket/34152 needs help to decide what solution
we implement going forward.

The ticket is concerned with updating the bootstrap process by removing the
current need for gettext and replacing it with gnulib (
https://www.gnu.org/software/gnulib). gnulib is not a regular software
library but a collection of bits and pieces to help portability across
platforms.

The issue at hand is how do we include and use gnulib in sagemath.
Matthias Koeppe and Dima Pasechnik have been arguing for several weeks and
across most of the ~250 comments of the ticket about the way to proceed. At
some point it became clear that they would not agree and would need
arbitration. This is what this post is about, I am inviting the sagemath
community to weigh in and decide the issue.

The ticket summary has been updated with summaries of the problem and of
both options along with links to branches implementing them. I would not
recommend diving in the comment section.

There are 3 (three) options to choose from, one from Matthias, one from
Dima and a hybrid approach they tried to create.

-- copy files --

   - Follows approach 3 of the Gnulib manual section 'Integration with
   Version Control Systems'
   <https://www.gnu.org/software/gnulib/manual/html_node/VCS-Issues.html>.
   - 5 files, in config/ and m4/, total 112 KB, have been imported by
using `gnulib-tool
   import iconv`
   <https://www.gnu.org/software/gnulib/manual/html_node/Initial-import.html>
and
   committed to the branch.
   - Matches our practice with imported files `m4/ax_*.m4`
   <https://github.com/sagemath/sage/tree/develop/m4> from autoconf-archive
   <https://www.gnu.org/software/autoconf-archive/The-Macros.html>.
   Different from our practice with SPKGs because the files are needed to
   generate the configure script.
   - Introduces no new dependency.
   - Burden on a developer who authors an update ticket for these files:
   Obtain gnulib by cloning the repo, then re-run gnulib-tool import,
   remove unneeded files (that's where #29549
   <https://trac.sagemath.org/ticket/29549> went wrong), commit the
   changes. (Updates are expected to be necessary only very rarely.)
   - Burden on users and other developers: None.
   - dimpase's criticism of this approach: "gnulib's code is not Sage's
   code, it has no place in Sage git tree; this way, updating the imported
   gnulib files is tricky and error-prone by design".

-- sage pseudo package --

   - Follows approach 2(C) of the Gnulib manual section 'Integration with
   Version Control Systems'
   <https://www.gnu.org/software/gnulib/manual/html_node/VCS-Issues.html>,
   but instead of using Gnulib's Programs for developing in Git checkouts
   <https://www.gnu.org/software/gnulib/manual/html_node/Developer-tools.html>,
   implements its own script (making checkout much faster, as full
gnulib checkout
   is 250 MB).
   - Introduces a new (although one can't really do Sage development
   without git installed) dependency on git and on availability of internet
   connection at the first run of ./bootstrap in a tree, to pull 83 MB
   (fair to say that internet is needed for Sage development a lot, anyway).
   - Burden on a developer who authors an update ticket for these files:
   Edit the bootstrap file to change the commit hash, verify that the list
   of files removed by make bootstrap-clean is still correct, commit this
   change
   - Burden on other users: a pseudo-package needs to be installed once
   (and updated, automatically)
   - mkoeppe's criticism of this approach: "Having bootstrap operate a
   multi-megabyte git clone (on the 1st install and when there's a change of
   the gnulib commit hash) in the upstream/ directory increases complexity
   for no benefit."

-- hybrid --

   - Resolves the criticism on the "copy files" approach: "updating the
   imported gnulib files" is now assisted by the spkg-src script (adapted
   from dimpase's branch)
   - Resolves the criticism on the "Sage pseudo-package" approach: "operate
   a multi-megabyte git clone (on the 1st install and when there's a change of
   the gnulib commit hash)" is only done by authors of tickets that update
   gnulib, not by general users of bootstrap.

Vote is open now and will close - tentatively - on the 29th of August at
12pm New Zealand time [my time zone] when I will do the tally. If no option
gets a majority, the voting period may be extended by a few days.
Please vote!
[ ] copy files
[ ] sage pseudo package
[ ] hybrid

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sage-devel/CAP1Dv6a4xp5a1y-idOms4yHKCG1sv%2BzO771rQ0MUxrmAfL%2BLRQ%40mail.gmail.com.

Reply via email to