Repo2docker: Update default Julia version and/or allow customization

Created on 7 Sep 2018  路  6Comments  路  Source: jupyterhub/repo2docker

Hi! Currently, repo2docker chooses julia v0.6.0 by default, but there are several newer versions of julia that would be better choices.

The default is set here:
https://github.com/jupyter/repo2docker/blob/7552361c2b51bea73f3c2fba5e290d6b834b7f36/repo2docker/buildpacks/julia.py#L38

Better default values would be any of:

  • v0.6.4 (the last 0.6 release)
  • v0.7.0 (the "compatibility" release, which is mostly compatible with code written for 0.6 and code written for 1.0)
  • v1.0 (the latest stable release. However lots of code and packages still aren't 1.0 ready yet.)

I personally think setting v0.7.0 as the default makes the most sense.


As a separate thing, it would be nice if we allowed the user to choose a julia version in the REQUIRE file, as is commonly done in julia REQUIRE files:
https://github.com/JuliaLang/IJulia.jl/blob/master/REQUIRE#L1
https://github.com/JuliaPlots/StatPlots.jl/blob/master/REQUIRE#L1

This way, the user can choose between julia 0.6, 0.7, and 1.0.

If you think these should be two separate Issues, let me know and I'll split them up! :)

All 6 comments

Maybe 1.0 would be the best default at this point? But I almost would prefer that one _must_ specify a julia version somehow. Whatever default we pick will be outdated soon, but updating a default here will break a lot of stuff everytime we do. So not support a default in the first place might be a good idea...

Alright, scrap that :)

I think the right approach is this:

if there is a Project.toml (or JuliaProject.toml, then generally ignore any REQUIRE file. If there is no julia version info inside Project.toml, then use the latest released version of julia. If there is julia version info inside Project.toml, then use the highest version that is compatible with the constraint that is in the Project.toml.

If there is _no_ Project.toml or JuliaProject.toml, _and_ there is no julia version info inside REQUIRE, use the highest julia 0.6.x version.

Sounds like a good plan.

For Python we do have a default version and bump it occasionally. The assumption is that those who don't specify a version don't care beyond "it is Python 3". I think people would be surprised if the default Python was 2.7 hence 3 is the default.

There was some discussion around when to make Julia 1.0 the default over 0.6.x in one of the PRs that added support for 1.0. My guiding principle would be "do what is least surprising to a typical Julia user". repo2docker as a project doesn't have a lot of Julia expertise and relies on the Julia community to tell us what to do. We should take into account "don't unnecessarily break people's stuff". One thing we shuoldn't forget is to update the documentation and maybe add an entry to the FAQ "my Julia repo has stopped working, what do I do now?" or some such.

Alright, scrap that :)

I think the right approach is this:

if there is a Project.toml (or JuliaProject.toml, then generally ignore any REQUIRE file. If there is no julia version info inside Project.toml, then use the latest released version of julia. If there is julia version info inside Project.toml, then use the highest version that is compatible with the constraint that is in the Project.toml.

If there is _no_ Project.toml or JuliaProject.toml, _and_ there is no julia version info inside REQUIRE, use the highest julia 0.6.x version.

Yes, I completely agree! This is what Kristoffer and I came up with as well (here: https://github.com/jupyter/repo2docker/pull/393#issuecomment-419558127)

I believe we sorted this one out as well and can close?

Was this page helpful?
0 / 5 - 0 ratings

Related issues

choldgraf picture choldgraf  路  4Comments

Morisset picture Morisset  路  5Comments

choldgraf picture choldgraf  路  4Comments

sje30 picture sje30  路  3Comments

choldgraf picture choldgraf  路  5Comments