-
Notifications
You must be signed in to change notification settings - Fork 162
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Revised list of packages loaded by default #1135
base: master
Are you sure you want to change the base?
Revised list of packages loaded by default #1135
Conversation
Codecov Report
@@ Coverage Diff @@
## master #1135 +/- ##
==========================================
- Coverage 57.11% 57.08% -0.03%
==========================================
Files 434 433 -1
Lines 224798 224574 -224
==========================================
- Hits 128391 128202 -189
+ Misses 96407 96372 -35
Continue to review full report at Codecov.
|
9d79334
to
c0e8316
Compare
Travis tests pass without LAGUNA, Sophus and ResClasses. Next commit also removes Crisp, Polenta and Polycyclic. |
Because Alnuth needs polycyclic and Irredsol suggests Crisp, the visible effect of c0e8316 only includes Polenta package:
|
So, now we know that Travis tests pass with
with the actual list of packages loaded due to dependencies is
Gone from the packages loaded by default, due to dependencies, are: AClib, Cryst, CrystCat, LAGUNA, Polenta, RadiRoot, ResClasses, Sophus and Utils. |
The failure in the test of manual examples is harmless - they could be updated to the new output, However, not all chapter have been tested. I've submitted issue #1138 to suggest that this test should run through all chapters. |
After the last commit (removing Alnuth) I've run the test of manual examples locally, and indeed the diffs are harmless (see below), and manual examples could be updated. With
the list of packages loaded at startup is:
If we agree about that, I will make one more commit to adjust manual examples, and this will be ready for merge.
|
As far as I recall, CRISP has badly interfered for several times with other code. The SpinSym package (a suggested package of CTblLib) is quite special-purpose. -- I wouldn't consider loading such special-purpose package by default. |
Just to emphasise that there are no CRISP and SpinSym in this list:
CRISP is suggested by irredsol and SpinSym by CTblLib, so if |
What about loading only needed packages, but not suggested packages when packages are loaded by default? -- The rule that also suggested packages are loaded basically discourages suggesting packages in packages loaded by default (or else, the number of packages loaded by default could explode for basically no reason once a new version of a package loaded by default is released). |
There is no easy way of doing this: The scope of this PR is just to change the value of the |
In that case I'd suggest to remove CTblLib and irredsol from the list. -- In the end, CTblLib is interesting only for people who work on representation theory of finite groups, and irredsol is only interesting for people who are working on finite solvable linear groups -- both of these being quite narrow subtopics within the broad range of possible applications of GAP. In the same spirit, I'd then suggest to remove tomlib from the list as well. I see loading the libraries of character tables and of tables of marks by default mainly as a relic from history. This leaves only AutPGrp, FactInt and FGA, and none of these 3 packages has any dependencies besides GAPDoc and GAP itself. |
I think Stefan may well be right -- ultimately we should only load packaged needed by GAP and packages that contain better methods for library operations such as the three listed. We would need to think very carefully about how to manage the transition though -- we don't want people suddenly finding familiar and long-established functionality missing and not knowing how to restore it. So as a first step. making sure that tests pass with a minimal set of packages is good, but we shoyld have a very clear plan for any change in the release |
But perhaps setting
I've committed this change to see how CI tests will respond. |
We can separate the problems users will get with missing packages into two sets:
This second one is much easier to fix, we could adjust the normal GAP error (for example)
To something like (just a first attempt)
This would be very easy in principle, as we already have this stuff in the manual! The only thing stopping me from doing it is I don't know how to tell if something in the manual is actually the name of a function/method, or just a random documented word. |
I've run a test of manual examples locally to test all chapters (Travis currently terminates the tests after the first chapter with diffs, see #1138). It went OK. Besides the same diffs as above, the only new one is
because for finite soluble groups CRISP provides an efficient method to compute
takes 83 ms with CRISP and 6635 ms without it. So perhaps CRISP should stay too. I am not aware of any present problems of CRISP, and it is now hosted at https://github.com/bh11/crisp, so hopefully should any problems arise they may be resolved efficiently (I am more worried about other packages from the |
So CRISP's methods may be notably faster, at least in special situations. On the other hand, CRISP contains much very special-purpose code. -- Wouldn't this suggest either to split up CRISP into 2 packages, one of them containing the methods improving Library functionality (to be loaded by default) and the other one containing the special-purpose functionality (not to be loaded by default) -- or to move the methods which improve Library functionality into the Library? |
Concerning ctbllib and tomlib: There are able documented examples of GAP that use the character table library without explicitly loading it. Many people consider this a core functionality of GAP, and while it is not fundamentally hard to load a package, this is another hurdle for a beginner. tomlib is fundamentally used by the subgroup lattice and maximal subgroups calculations to obtain subgroups of simple groups -- without having it available such calculations default to the much slower cyclic extension method. Calculations will still run but some tests will be notably slower. I thus believe very strongly that both packages should remain autoload. |
Practically, what is the advantage for users of us removing packages from the current autoload? If some package only improves the user's experience when using GAP, then not autoloading it seems silly. |
@ChrisJefferson but then this package should be listed in the
which is a relic from times when package authors were self-nominating packages to be autoloaded. Now we want to revise it properly. |
@hulpke Well -- there are so many possible applications of GAP for which loading a character table library by default looks like loading a flight simulator in an office software package ... . |
I do not support to merge this pull request. In general I agree with the goal to be able to start GAP with as little functionality as possible. (Optimally, just with the basic builtin data types, the language and the tools to load further functionality. For this it would be good to move almost everything in the library into packages.) Therefore, it is a sensible step to think about reducing the number of packages loaded by default. The current list of default packages was decided for historical reasons. These are the packages which had set the AutoLoad flag when this was still possible, and the default list ensured backward compatibility with older versions of GAP. Note that every user can easily overwrite the default list via a user preference. What are reasons for not loading a package by default?
What are reasons for loading a package by default?
The last point is the same in both cases but with opposite interpretations. Just the first point for loading a package is somewhat random because it has also mainly historic reasons what functionality is in the library and what is in packages; in my opinion the first and second point for loading a package by default should be considered together. We have to decide if we rate higher the reasons for and against loading packages by default. If we rate the points for not loading a package higher, then I think we should empty the list of default packages completely; no package functionality is useful for everyone. In this case we have to communicate this change very well to the users (because previous default functionality may be missing or is less efficient). It essentially means that we urge every user to think about her/his personal list of sensible default packages and to configure this in their gap.ini file. Maybe some users will be annoyed by this. On the other hand users become much better aware which packages they (want to) use. If we rate the points for loading a package higher, we should completely forget the (somehow accidental) list of current default packages. In this case every available package should be considered and decided if it enhances some functionality or adds new functionality for some GAP users. The result of this consideration is probably a default list that is close to the effect of My personal preference would be towards an emtpy list of default packages. But before putting this into practice we could think about possibilities to help users to find out about available functionality. For example, GAP could know a list of hints; if a function is called that is not yet defined but available in a package, GAP could give a hint; or if an operation is called for the first time and GAP knows that some not loaded packages have additional methods a hint could be given. The currently suggested list of default packages in this pull request looks pretty random to me and does not make sense. The gain of having just a few packages less in the default list is too small to bother all users with lengthy explanations about the change (and I really cannot see convincing reasons why the current list is more sensible than any other subset of packages). |
@frankluebeck thank you for detailed feedback. The list But I think that you're right that we need to think about better ways to help users to discover functionality in packages first. The idea of @ChrisJefferson to tweak |
Update: this is not planned for GAP 4.9.0 and may be revisited later if there is a progress with #1173. |
This PR comes from issue #906 and is submitted to check how continuous integration tests respond if some packages are excluded from the list of packages loaded by default when GAP starts. To start with, I've removed LAGUNA, Sophus and ResClasses.