owned this note
owned this note
Published
Linked with GitHub
---
tags: OpenDreamKit, Cernay, Sage, GAP, workshop
---
# Sage-GAP Days 101
Cernay, June 17-21 2019
## [About Sage Days 101](https://wiki.sagemath.org/days101)
Where to post your photos of the event:
* [This Google photos album](https://photos.app.goo.gl/CjU1TtWuYSA1rKD68)
## [Schedule](/-ujYo8jaRSS2C-7xZB3a6w)
## Themes
### [Packaging (conda, ...) for Sage, GAP, cppyy...](/zatG6NwtTWKF5asn_fmcIw)
- conda packaging for cppyy (Julian, Isuru): mostly done
- Python 3 based SageMath docker images (Julian, Samuel)
- Aim at building docker images for all ODK components, compatible with binder, jupyterhub, ... (Luca). Similar to Jupyter's Docker stack which binder uses in the absence of a dockerfile.
https://github.com/jupyter/docker-stacks
- SageMath gives problems with Jupyter Lab, Jupyter Hub
- conda packaging for sage 8.8.rc1 (Isuru, Julian)
### [Importing .sage files as Python modules](https://trac.sagemath.org/ticket/27074)
important for the random new user; recently a new user was struggling to
properly package their code, which had lots of `load`, `attach`, ...
- we need a ux deputee, only concerned with user experience
- maybe the documentation could say stop using `attach` and instead either
- use reload module
- pickle all the globals, restart sage, ...
One pain point is the startup time of Sage. We should work on that.
### OpenDreamKit
### Continuous integration with conda: demo by Julian
every ci setup is some script that pulls some tarball from somewhere
i found it a bit annoying that there was no standard approach
the result of the ci is basically "works" or "fails"
and you want people to try the things
so need another ci to make docker images
idea: use a robust ci
conda-forge idea: write a recipe
- list dependencies
- say what it is: a library, a python package
If I do this anyway because I want it to be on conda in the end,
there's a tool called "conda-smithy"
that reads the yaml file
and creates scripts that build packages for
windows, linux, osx, ...
it's powerful and it creates all these scripts by itself
you can say if you prefer azure or circle-ci
the cool things is it builds conda packages and runs your
actual tests on this conda package
as a side effect you get conda packages for free
you get nightly builds
so you can tell people
- one way to use mysoftware is to run `configure` and `make`
- another way is to run `conda install mysoftware`
it gives people access to your nightly builds
you can get nightly builds for linux, macos, windows
i found it an interesting approach to do ci,
it removes the duplication; especially the two tend to be broken a lot
because you don't test them so much
it is also the only sane way i found to provide binaries for Windows
### Conda
What caused the big breakage in maintaing SageMath up to date in Conda?
Will it repeat?
The change of default compiler (from gcc 7.4 to gcc 8.2?)
caused a lot of breakage.
Roughly half the ~350 tests that are failing in SageMath are due to
SageMath using Singular 4.1.1 while Conda has 4.1.2.
When SageMath uses latest releases of everything, all goes well.
When SageMath uses old versions of some of its dependencies,
things get hard.
Using custom Docker files for binder is more effort usually to maintain
than writing a good `requirements.txt`.
For example, see
https://flatsurf/flatsurf/binder/environment.yml
Luca says: before you pushed SageMath 8.8.rc1 to conda, ... 8GB
and now 11 GB.
### Interfaces between systems
- Sage-GAP interfaces: libgap, semantic-gap, ...
Extracted sage-semantic-annotations out of sage-gap-semantic-interface
Experimented with using Sage-Explorer to explore GAP objects through sage-gap-semantic interface
- Recursive Monkey Patch: analyzed a bug (Julian, Nicolas)
- [Awali](http://vaucanson-project.org/AWALI/Awali.html): packaging is done https://trac.sagemath.org/ticket/28004
- Kenzo
- fast and reliable computations with real/complex numbers
- [e-antic](https://github.com/videlec/e-antic) (C library with C++ interface and Python bindings)
- [exact-real](https://github.com/flatsurf/exact-real) (C++ library and Python bindings)
- improve cppyy interfaces to Python
- distribution: conda, SageMath, ... (?)
- [GAP interface to PARI/GP](https://github.com/gap-packages/PARIInterface) (in order to compute Galois group of polynomials)
(Vincent D, James)
- Finish the position paper started last year
The paper is at overleaf at https://www.overleaf.com/15996604kpskgdsgjhww
Anybody is invited to contribute. The idea is to survey the varius technologies for interfacing high-level with low-level systems for computational mathematics.
- Sage-Matplotlib interface: [Trac #27865](https://trac.sagemath.org/ticket/27865), [Trac #27866](https://trac.sagemath.org/ticket/27866)
- Sage-Normaliz interface ([PyNormaliz](https://github.com/Normaliz/PyNormaliz))
- Properly resolve the Digraphs package [Issue 177](https://github.com/gap-packages/Digraphs/issues/177) with James and Erik (and finish edge-colored digraph automorphisms [Issue 183](https://github.com/gap-packages/Digraphs/issues/183) Finn, James, Vicente D)
- [giacpy](http://webusers.imj-prg.fr/~frederic.han/xcas/giacpy/) (Python interface to giac) and SageMath integration
- [cppyy](http://cppyy.readthedocs.io/) to interface C(++) and Python, [demo](https://github.com/saraedum/notebooks/tree/cppyy)
### Jupyter widgets for Mathematics
- sage-combinat-widgets
- francy: packaging, explored how to make a Jupyter lab extension
- [JupyterViz](https://nathancarter.github.io/jupyterviz/) and Group Explorer ([web app](https://nathancarter.github.io/group-explorer/index.html), [GAP package](https://nathancarter.github.io/gap-pkg-groupexplorer/))
- Demo [RISE](https://rise.readthedocs.io/en/stable/)
- [flatsurf](https://github.com/flatsurf/flatsurf-widgets), or how to use hot module reloading and Vue.js in Jupyter
- ...
- Check [GroupNames](https://people.maths.bris.ac.uk/~matyd/GroupNames/) by Tim Dokchitser (not sure about the license).
### Sage-Explorer (Odile, Nathan, Nicolas, Julian)
Brainstorm and early experiments for future evolutions
Explored the use of ipyvuetify-widgets for a flexible UI library.
### Book Calcul Mathématique avec Sage et traduct
ions
See http://sagebook.gforge.inria.fr/
Vincent K and Nicolas: worked on upgrading to Python 3 the examples, backporting changes from the copy of the examples in the Sage documentation.
### General development
- generic division free linear algebra in SageMath
[#15160](https://trac.sagemath.org/ticket/15160)
[#27869](https://trac.sagemath.org/ticket/27869)
(
might work on this if other people are interested)
- Porting the `surface_dynamics` external SageMath package to Python3
Samuel and Vincent D: good progress. Almost done.
https://gitlab.com/videlec/surface_dynamics
- Packaged `coq-jupyter` for Conda
### Add your theme here!!!!
## [Participants](/HVpxsYZWQ9ykIWS0fm_J-w)
## [Local organization](/4b8zBeKLS6i9w84G0ChanA)
## [Arrivals and departures](/RDK2QSeSTXOnbinU-pq9lA)
## [Meals](/MehgK8q8T5-Q68hB_u0mLA)