owned this note
owned this note
Published
Linked with GitHub
# OSCAR Meeting November: Thoughts and results
## Developer Guidelines for Julia code
OSCAR developer guidelines (brief)
#### Naming functions and variables
variables: CamelCase
functions: small_letters, words_separated_by ‘_’
#### Named arguments
Use named arguments if:
- many optional arguments
- optional arguments might change in the future
#### Documenting Code
For details:
https://docs.julialang.org/en/v1/manual/documentation/index.html
- All user functions need to be documented in Julia’s markdown format:
https://docs.julialang.org/en/latest/stdlib/Markdown/
- Example:
@doc Markdown.doc"""
parent(a::AbstractAlgebra.PolyElem)
> Return the parent of the given polynomial.
"""
parent(a::PolynomialElem) = a.parent
- Can also include:
* example of usage
* explanation of algorithms (including reference to literature)
- To build documentation automatically on GitHub, see:
https://github.com/JuliaDocs/Documenter.jl
https://pages.github.com/
- Example
https://github.com/Nemocas/Nemo.jl/blob/master/.travis.yml
https://github.com/Nemocas/Nemo.jl/blob/master/docs/make.jl
### Food for thought:
#### Advantages of GAP-doc
1. Cross referencing between modules
2. Possibility of documenting description, algorithms and interface of the function in different places.
- cleaning up repositories in oscar-system on github
## Status of the Oscar components
TODO (today, on the train)
### Polymake.jl
- improvement of maintainability
- binary builder allows us to use [Travis.ci](https://travis-ci.org/)
- "list_properties" works now, not on master yet
## Next things to do for Oscar components
- oscar-dev needs to be public, if used much reconsider the communication [notes](https://hackmd.io/_uIlbM8FSE6CjttGMoGm7w?both#Future-options-for-enhancing-communication) below, add information how to sign up on oscar page, make sure it works (email Hans)
- Write more news articles
### Polymake.jl
- Problem: polymake counts from 0, Julia from 1.
- Solution: Stick to Julia convention, solve problem on level 1 and 0.
- Properties that need to be converted will be tagged on level 0.
## Continuous integration (CI)
Various formats of tests
* Unit tests & Regression tests
Short tests, can be run for every commit/PR
* Integration tests
Longer tests, for stability and compatibility of the whole ecosystem
* Monitoring of performance: Monitor test times
When should tests be run?
* Short tests should be run on Travis
* Integration tests should be run in fixed intervals, if anything has changed
* Make Jenkins check for changes every hour
* Only rebuild changed software
* If something has changed, run tests
* While tests run, do not check for updates
Which versions of software should be used?
* Fixed versions of Julia? Master?
* New/fixed versions of Cornerstones
Where/How should test failures reported?
* Travis -> Github
* Jenkins: Emails? Webpage board? GitHub post?
* Idea: Post daily status to a mailing list
* Notify all people from new commits per mail (only if test fails two times)
* Add badge to Readme's
How to filter test output to make the error message readable?
* Try to get the error as precise as possible
## Handling large fans
For tropical varieties, GIT fans, Groebner fans and secondary fans we are currently dealing with very large datasets, e.g. the secondary fan of the hypersimplex(2,7) contains >30'000'000 triangulations and to save it takes at least 1GB of memory (compressed). We have several datasets that are orders of magnitude larger. We do not want to recompute them, since this often takes several weeks/months, so the question is how we can provide them to everyone who needs them in a practical manner.
- Save fans as collection of cones in [polyDB](https://polymake.org/doku.php/data)
- Use property RAY_LABELS to identify combinatorial structure of fan
- For [mptopcom](https://polymake.org/doku.php/mptopcom) it is necessary to output the rays of the secondary fan, which is currently not done
## Communication
### What we have
#### [Link to mailing lists on the wiki](https://github.com/oscar-system/OSCAR-private/wiki/Mailing-Lists)
[website](https://oscar.computeralgebra.de/), [blog](https://oscar.computeralgebra.de/blog/)
[github](https://github.com/oscar-system)
email
slack
### Future options for enhancing communication
Email: discussions with individuals/very private discussions
Private: oscar-private (TRR organisation only, not public, no archive)
Announcements: oscar (public subscription, archive)
Public: Options
- Discourse ($100 month/open source, maintained)
- PhPBB(free/open source, we maintain)
GitHub: issue tracking, wiki
Website: starting points, blog
Slack: informal discussion with whoever is online
trr195-members: announcements to trr participants
Other forum options: Flarum, MyBB, vBulletin, NodeBB, YaBB
Other examples:
sage-devel (Google Group)
ODK GitHub issues (even for discussions)
Pelles C (PhPBB)
Julia Discourse/GitHub
## Plan for future (next few weeks), apparently also wishes
### General discussion
- Make interfaces that are available public, even if we get negative feedback
- Public webpage with preliminary results marked as "for internal use"
- Make benchmarks public
- Make central place where install instructions are stored
-
### Yue Ren
- initial ideals (most general)
- Singular.jl / Polymake.jl
### Frank Luebeck
- Work out what releases should be, managing expectations
- People should not get the wrong impression
- Maybe just release the subprojects
- Maybe not call it "Oscar.jl"
- Only advertise what we have
### Fredrik Johansson
- Work on Nemo and Flint
### William Bruce Hat
- Get interface Nemo-Singular to work again
- Get Singular libraries to work
- Improve code
- Commutative algebra
### Sascha Timme
- Needs documentation, to use polynomials and polynomial rings
- OSCAR should interact nicely with existing stuff
- HomotopyContinuation.jl should not end up with binary dependency
### Andreas Steenpass
- Extend prototype of ideal
- Implement Groebner walk with Yue
- Update PrymGreen.jl package for use with Julia 1.0 and CxxWrap. Requires to get Nemo coefficients to work in Singular again.
### Lars Kastner
- get_schedule should work
- write tests
- fix various bugs discovered in polymake
- graded injective resolutions
### Sebastian Gutsche
- Get Singular generic rings working again
- General maintenance, cleanup after workshop
### Thomas Breuer
- Deal with pull requests for Gap
- Add algorithms for invariant theory
- Once Singular works with number fields, many algorithms become available
### Reimer Behrends
- Fix bug in Julia garbage collector
- Continuous integration, use jenkins
### Michael Joswig
- Work with Claus
- Make notebook to show what we can already do