Skip to content
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

The plan for 1.0 #2564

Closed
odow opened this issue Apr 20, 2021 · 21 comments
Closed

The plan for 1.0 #2564

odow opened this issue Apr 20, 2021 · 21 comments
Milestone

Comments

@odow
Copy link
Member

odow commented Apr 20, 2021

We're now at a point where the "big" points on our Roadmap are complete, so it's time to start actively planning the release of JuMP 1.0.

We should prioritize our attention on things that need to be fixed before JuMP 1.0. Things that can be fixed afterwards can wait.

Step: Release MOI 0.10.0

There are a bunch of MOI breaking changes that have been piling up. We should:

Step: Update all packages to MOI 0.10.0

Once MOI 0.10.0 is released, we need to go through (almost) every solver and update any breakages.

To help update, read the MOI release notes.

The new test suite will likely expose some bugs in the solver wrappers. For now it's okay to skip these failing tests. The main emphasis is to get things mostly working. We can fix previously undetected bugs at a later date.

Step: Release JuMP 0.22.0

Solvers which require MOI and JuMP

These packages have a dependency on MOI and JuMP. That makes it hard to update them sequentially. We may be better off waiting until MOI and JuMP are both at v1.0.

Step: Release MOI 1.0.0

  • This should be non-breaking compared to 0.10.0, just with deprecations removed.

Step: Update all solvers to MOI 1.0.0

Updating checklist

  • Update minimum Julia 1.6
  • Drop all support for BinaryProvider and custom binaries via ENV overloads
  • Optimizer has a docstring, and that docstring goes on the mutable struct, not the inner constructor
  • Optimizer doesn't accept kwargs
  • All deprecation warnings removed
  • Uses JuliaFormatter
  • Follows JuMP style guide
    • _private names are particularly important to allow breakages in the post 1.0 world

Tag 1.0 releases of all solvers:

Step: Release JuMP 0.23.0

  • With some minor breaking changes compared to v0.22

Solvers which require MOI and JuMP v0.23

These packages have a dependency on MOI and JuMP. That makes it hard to update them sequentially. We may be better off waiting until MOI and JuMP are both at v1.0.

Step: Release JuMP 1.0.0

Solvers which require MOI and JuMP v1.0

These packages have a dependency on MOI and JuMP.

@odow odow added the Status: Needs developer call This should be discussed on a monthly developer call label Apr 20, 2021
@odow odow added this to the 1.0 milestone Apr 20, 2021
@odow odow removed the Status: Needs developer call This should be discussed on a monthly developer call label Sep 7, 2021
@matbesancon
Copy link
Contributor

I would add SCIP: scipopt/SCIP.jl#203

Hypatia: jump-dev/Hypatia.jl#754 to add to the list blocked by JuMP

@matbesancon
Copy link
Contributor

OSQP is done by @blegat in osqp/OSQP.jl#97

Side-note: should it remove MPB?

@odow
Copy link
Member Author

odow commented Oct 4, 2021

Yes, feel free to remove MathProgBase support at any time.

@matbesancon
Copy link
Contributor

Tulip now works, the tests requiring Convex.jl are removed for now, will be @mtanneau's call on either to wait or not
ds4dm/Tulip.jl#105

@odow odow modified the milestone: 1.0 Oct 20, 2021
@matbesancon
Copy link
Contributor

PolyJuMP: jump-dev/PolyJuMP.jl#66

@ericphanson
Copy link
Contributor

ericphanson commented Nov 16, 2021

Convex v0.14.17+ supports MOI v0.9 and v0.10: jump-dev/Convex.jl#467, jump-dev/Convex.jl#468

@guilhermebodin
Copy link
Contributor

Dualization: jump-dev/Dualization.jl#127

@chriscoey
Copy link
Contributor

Also MOIPajarito works, though it isn't yet tested on large problems and it has various assertions that are likely to error sometimes (but are fixable)

@matbesancon
Copy link
Contributor

Seems we forgot COSMO.jl here, there is an issue but no PR yet:
oxfordcontrol/COSMO.jl#143

@joaquimg
Copy link
Member

There are other cases like: PSORLab/EAGO.jl#100

I imagine the main focus here was on JuMP-dev repos.

@joaquimg
Copy link
Member

joaquimg commented Jan 26, 2022

@migarstka
Copy link
Contributor

Added support for COSMO today in v0.8.3

@odow
Copy link
Member Author

odow commented Feb 15, 2022

It's taken a lot longer than expected, but we're prepping for a 1.0 release of MOI: jump-dev/MathOptInterface.jl#1745

I'll aim to keep it pretty low-key. We still need to update all of the solvers and JuMP, so we'll delay any large announcements for the JuMP 1.0 release.

@chriscoey
Copy link
Contributor

might be worth adding to the list: jump-dev/PiecewiseLinearOpt.jl#45

@joaquimg
Copy link
Member

joaquimg commented Mar 13, 2022

Note: I emailed EAGO developers about this yesterday.
I'd remove EAGO from solvers list if it is not updated before releasing 1.0
Of course, we would add it back as soon as its supported.

update: EAGO folks responded they are finishing the update...

@odow
Copy link
Member Author

odow commented Mar 15, 2022

EAGO folks responded they are finishing the update

Yeah I think we're fine to leave the table as-is. I'm just finishing up the last bits of Alpine, and then we're essentially good to go.

@odow
Copy link
Member Author

odow commented Mar 15, 2022

Alpine is working with JuMP 0.23 on its master, so I don't think it's a blocker for a JuMP 1.0 release.

@odow
Copy link
Member Author

odow commented Mar 28, 2022

Closing as done. (The only remaining checkbox is jump-dev/PiecewiseLinearOpt.jl#47, which isn't critical.)

What a mammoth process! I didn't think it would take a year from when I first opened the issue... but I think the final product was worth the extra time we spent doing things like refactoring our entire MOI.Test system.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

8 participants