-
Notifications
You must be signed in to change notification settings - Fork 249
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
Link to igraph #790
base: main
Are you sure you want to change the base?
Link to igraph #790
Conversation
There should still be a very easy way to use a specific commit of the C core. I regularly update the submodule in this repo to test changes I make to the C core. Can we make it so that this functionality is not lost, or not made too complicated to use? Furthermore, it is important to point to a specific version of the C core. We cannot guarantee compatibility with more than a single specific C core version due to experimental functions. For this reason, I don't think it's a good idea to stop vendoring the C core. Making it easier to link to an external C core is good, but that doesn't have to involve removing the vendored version. While experimental functions cause some difficulties with linking to an external C core, they are important (I would say essential) to maintaining the quality of igraph while keeping our workload manageable. I should also link here: igraph/igraph#2643 |
Yes, it is easy to link to a specific commit or version when building wheels. I now included a specific build script, but this can always be done in one way or another in However, I think it sort of defeats the purpose of not allowing any other version when linking to an external version. Why then bother at all? I understand your desire to include experimental functions (although I disagree it is essential), but if this would prevent linking to any other external library, I'm not sure if this would work. Couldn't we make those experimental functions optional, and simply throw an "unimplemented" exception? |
I am not asking to make it impossible to link to a different C core. I am asking not to break the current setup. This needs to be preserved:
As for experimental functions: as the person working the most on the C core, I maintain that this setup is essential for me to be able to continue my work. Your comments indicates that we are not on the same page about what experimental functions are and why they are necessary. It's best to clarify this in person at the next meeting. |
With all due respect, I don't think that saying "I fix most bugs therefore things cannot change" is a valid argument. This is actually a great example of a problem that has plagued igraph for a long time: we are too afraid to break anything that we end up stifling innovation to a trickle. In my view, and that is as important as yours @szhorvat , experimental functions are definitely optional. That might make us reconsider a few things and that's good: I don't think having functions that are essential but also probably broken is a great practice. |
I am making it clear what I need to continue working on this project, which I am actually doing, but only for as long as the conditions make it possible. You did not respond to several requests for feedback in the past few months on any communication channel (here, chat or email), @iosonofabio, nor did you keep up with development, yet now you make an uncalled for attack, clearly without an understanding of the issue at hand. That is anything but "respect". |
This is a PR about a specific topic, and I feel the discussion is going off the rails. To stay on topic, which is not intended as an attack of any sort, having experimental functions as optional seems like a pretty innocuous change and I'm simply throwing my support behind it. Happy to zoom or Whatsapp if you feel personally attacked and we can try to navigate through that feeling together. |
My two cents to the original issue raised by @vtraag: back in the old days, maybe some time around I still need to look at the PR in more detail to judge to what extent this is a step back to the old days and what the consequences would be. |
Some more thoughts:
|
@iosonofabio That is a good suggestion. Let us do the WhatsApp call. I would like to do it in late August when I am back from travelling, if that works for you. |
This is a PR that tries simplify the build a little bit. That is, everything that used to be in
setup.py
is externalised, and the resultingsetup.py
is really simple and straightforward.This means that any user simply has to configure its environment in order to link to the proper C igraph core. This solves one particular problem, namely that it currently is not possible to build against an external igraph library on Windows (due to the lack of
pkg-config
on Windows). This also allows various build environments (e.g. in CIs) to be customised more easily, without having to hack things insetup.py
. In particular, this allows to easily link to an externaligraph
library, which in the case ofconda
is already packaged separately anyway. See the discussion at conda-forge/python-igraph-feedstock#88.The sources would no longer include any sources directly from the C core, and the C core should always be installed separately. This is now quite straightforward anyway on most platforms.
However, in practice, almost everybody will install binary wheels, and few (if any) would build directly from sources. Since in
ciwheels
the external libraries are neatly packaged within the binary wheels, it means that this is neatly self-contained, and does not require anything else.This is just a rough initial draft, basically just following what I did previously on
leidenalg
to get all of this working. Some things obviously would need to be corrected, once this is all working, and we agree that this is a good idea.