@miles.lubin Only to make some things clear:
When I said “If I could go back in time I would have not used it in that specific moment […]”, I meant exactly that. Given I had the foresight to see the problems I would encounter, I would not have used JuMP at that particular moment. I am not saying JuMP is a bad idea, that I will not use it in the future, that I do not want it to succeed, or even that I will not contribute to it again (I finally submitted the paper and next week is vacation to me, so I was thinking if I would try to contribute with something small enough this week).
The root of the problem is that I started using JuMP in the worst possible moment. [RANT MODE STARTED] I wrote JuMP code for the version 0.18, then I adapted it for 0.19, then I found 0.19 abandoned some features, then I go back, then I discover that a feature I would need in the future were not implemented in 0.18 (nor will be now, obviously), I have to make choices of what I will implement for the paper, I decide to keep with 0.19 because of some feature it has, and discover that, for example, variable deletion is implemented in a way that makes it worse than useless to me, not only I cannot use it but it also lured me to use 0.19 version and made me lose quite some time trying to understand what was happening, then I discover the problem is Gurobi specific, great, no problem, I will use CPLEX, for the final version of the paper it is even better to me to use CPLEX, then CPLEX.jl gives strange errors that I try to fix, “uh, strange, why it reverted to a super old version of the package, did I do something wrong?”, no, JuMP 0.19 does not work with current CPLEX.jl (but it is CPLEX.jl fault that the old version was installed, making me confused), it is very probable that CPLEX.jl compatibility will be fixed only after I submit the paper, hmmm, reverting to 0.18 makes me lose the possibility to warm-start (what I would have expected to be kinda of a basic feature, but maybe there are hidden complexities to it), well, fuck my NP-Hard problem, the real problem I should be studying is what is the maximal set of JuMP features I can get working to write my paper.[RANT MODE FINISHED]
I am not blaming JuMP more than I am blaming myself. I did know JuMP have not reached version 1.0 yet, and used it anyway. I should have given more consideration to the zero in front of the version number. My advisor was very impressed with JuMP (because of what she heard about it in conferences, but it is a long time since she touched any code) and wanted me to try it. Another professor I admire was using JuMP to teach some classes. I tried it, it worked at first, and I then maybe overcommited to it. Part of my bitterness comes from the fact I then became an evangelist, got two friends at the lab to use it and my co-advisor to at least try it. But our lab needs to use advanced features of solvers, and we discovered that, for us, in the current state, JuMP is more like a toy. It is fun to use, but it is not able to keep with we need from it. So did not I end up falling into a hole, but I brought at least one of my friends from the lab with me (he had ported a lot of his code to Julia before starting to hit walls).
I am very grateful to you, in particular, for your suggestions in the gitter channel. You took your time to describe the root of my problem when I asked (the way the state was handled in Gurobi.jl+JuMP internals), and gave me suggestions of workarounds when I gave up on my patch to solve the root of my problems “the right way”.