chocoteam / choco-solver

An open-source Java library for Constraint Programming
http://choco-solver.org/
BSD 4-Clause "Original" or "Old" License
683 stars 137 forks source link

Roadmap #276

Open si14 opened 9 years ago

si14 commented 9 years ago

Hi there, Choco team! I'm only familiarising myself with Choco now, but it looks like an awesome piece of work. Thanks a lot for an amazing job!

I would love to have Choco as my go-to CP tool and I hope that it will be so. However, one thing bothers me, namely the lack of public roadmap or plans. Excuse me if I overlooked it, but is there any? Are you going to compete with Gecode hegemony and/or participate in competitions? What do you have in mind for Choco4? Are you interested in particular contributions?

Sorry for erroneous submission of incomplete issue and mail spam that could follow.

cprudhom commented 9 years ago

Hi Dmitry,

Honestly, we do not have long-term roadmap. We are a short team, almost all on the same place, from now on we did not feel the need to publish the roadmap we have in mind... That is certainly a mistake :/ For the moment, we plan things in a 6-month sliding term: when a release is ready to be done, we discuss what can be done in the next one. We already participated to competitions: we got 5 medals in the two last MiniZinc Challenges. The new challenge is approaching, we will certainly focus on this in the next months.

We are interested in contributions, the question is: what do you like to do ?

Thank you for helping us improving choco, CP

si14 commented 9 years ago

Hello, thanks for the reply and sorry that it took me so long to comment here.

Thank you for the link to MiniZinc, I've missed it somehow. Glad to see that Choco did it well! Best wishes for the upcoming competition.

Let me digress a bit. To be honest, I don't use Choco or other CP solver on my job yet (but will be happy to if tasks would fit). My main interest in Choco in particular and OR/optimization software in general stems from Cousera's Discrete Optimization course, some classic AI exposure and a history of ad-hoc heuristic solutions that, as I now understand, could be solved by e.g. Choco easily. However, there seems to be a very wide gap between "average industrial programmer" and academia community. On one hand, I didn't hear at all about CP until that Coursera course; on the other, Coin-OR website evokes (not pleasant) memories from 2000s, it's hardly "developer-friendly". I honestly believe that both communities would benefit from each other (e.g. ML community exploded recently), but it's a chicken-and-egg situation.

Given that digression, Choco is an amazing project: very well-written, maintained, evolving, with good looking website, documented, code is on Github, developers are very responsive and, not the least, the CP model itself is kinda intuitive (MIP is harder). Almost every of these qualities distinguish Choco from other OR projects :) I would be happy to help by sharing what I know about opensource projects that I, as developer, like or by writing code or prose in my spare time (sadly, there isn't that much of it, but anyway). However, for an "external" developer like me "internals" of the project aren't very clear:

Yeah, one more thing: I reread my first post and I want to apologise if it's a bit harsh, I didn't want to offend.

jgFages commented 9 years ago

Hi Dmitry,

Thank you very much for your kind support. Thank you for your questions which have pointed out important aspects of the project. I will try to provide you a few answers:

1) Yes we know that CP is not that famous and any help to popularize it is welcome! 2) The core developers are: Charles Prud'Homme (academic research engineer) and myself (entrepreneur). Choco used to be founded with grants. As Charles now has a permanent position, the solver will live long (unless Charles dies^^). In addition to this long-term support, my company can provide quick professional assistance : consulting, specific developments, maintenance, etc. 3) The philosophy of choco 3 is to improve the solver (code) quality (more flexibility and easier maintenance). Choco 2 was used in a lot of universities. It was really easy to use for a beginner but it was less easy to get into the solver. In particular, it was developed by many (temporal) contributors who left the project after the end of their phd, leading to hard-to-maintain code and some architectural inconsistencies... This is why we built a third distribution (from scratch). In addition to this quality gain, we also achieved significantly better performances. However some components of choco 2 have been lost. As an entrepreneur, my personal great plan is of course to develop business based on choco (consultancy and software development for decision making). The great plan of choco 3 is to become the reference CP solver and to be acknowledged for being a both reliable and efficient solver. 4) We are currently working on improving performances (mainly for the next minizinc challenge). We would typically appreciate contributions to make the use of choco easier. As we have coded the solver, it has become hard for us to think like a beginner. There is also another thing: we have a connection to the Ibex continuous solver. We would love having it embedded as a .jar file because some user issue installing the Ibex C++ library (someone told me this should be possible). 5) No, unfortunately we haven't planned to participate to the summer of code (lack of time).

Have you worked on IntelliJ IDEA? We really enjoy this IDE !

Best,