-
-
Notifications
You must be signed in to change notification settings - Fork 25
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
CFEP 04: proposed guidelines for X11-based software. #7
Conversation
There were comments in the Cairo PR about X11 being a heavyweight dependency. For some reference, if I do a clean Miniconda3 installation on linux-64, install |
I don't think that 15 MB is too much nowadays but in light of conda-forge/ncl-feedstock#7 (comment) do you still need |
Well, XQuartz might be on the Travis image, but if the final build outputs still link against the X11 libraries, users won't be able to run the software unless they've also got XQuartz installed because the libraries won't be available. |
I assumed that is |
@jjhelmus, @mingwandroid, could you both please take a look at this and share your thoughts when you have a chance? |
Have you tried to build XQuartz, @pkgw? I know that basically modern versions of Mac OS don't ship with it. So it might be nice if we can supply our own. |
No, I haven't tried. I don't know of any reason why conda-forge couldn't provide it, but it's not needed for the case of programs that need X11 to build but have non-X11 user interfaces (either CLI or Cocoa). |
I understand XQuartz is not needed to build them, but wouldn't it be needed to run them? Or do all X11 programs you have encountered have some alternative interface? |
@jakirkham Sorry for never responding to your questions from before ... although I have to say that I don't know the answers to them. I'm not an OSX user myself. I will see if I can gather info from some some of my colleagues. |
Thanks @pkgw. Did any of your colleagues try this out since? If so, it would be good to know what they found. |
For posterity, @jjhelmus, it might be good to include info about the tests you tried here with Also a follow up question, did you have XQuartz installed when you tried your tests? Guessing it would have been pretty obvious if it was using XQuartz. Just curious if you tested without it. |
First let me begin that I'm excited about My main concern with including X11 as a required dependency in core packages, mainly Another option would be to used conda features to provide two versions of |
Seems like there are no issues with |
Are there any other blockers that we are aware of that would cause issues with making use of the X11 packages in the stack or was cc @conda-forge/core |
As far as I can recall, no concrete issues came up with having I'm not aware of any problems that have cropped up for packages depending on the X11 packages, which is not to say that none have occurred. I also don't have a sense of how widely they're used — I get the impression they've crept in as dependencies for various packages here and there. Do we have any tools for analyzing the intra-package dependency graph of the whole project? (Or, in this relatively straightforward case, just |
Why would we want Python to depend upon X11 through TK depending on X11? Why for that matter would we want TK to depend on X11? IMHO people who want X11 should use XQuartz or their system X11. I only think it a good idea to package this for Windows where there is no 'system' solution. |
I can't speak to Tk specifically. However I can speak to the general value of using |
Please show me some evidence of this. I have spent close to 0 time debugging issues related to this. The occasional comment of "please use dnf/apt-get/pacman to install your system X11" is all. Where do you draw the line? Do you want to provide an entire Linux distribution, because that's the way providing X11 is going, and then there's binary compatibility with defaults. Please reconsider. |
Here are two examples of people getting confused by missing these dependencies. 1: conda-forge/qt-feedstock#54 |
I initially prepared X11 packages because the main cluster that I did my work on was running RHEL5, which didn't support XInput2 and therefore couldn't use some of the graphical toolkits I wanted. Large clusters often have older libraries and you can't just |
@mingwandroid this is a complex issue that we need to discuss in a meeting*. I completely agree that making the core packages, like python, depend on With that said I am not against packaging With that said I don't know the best course of action when it comes to I am not sure if having a special * I added it to the discussion topics a few weeks ago but dropped b/c I would like for @pkgw to the present. PS: issues conda-forge/qt-feedstock#54 and conda-forge/vtk-feedstock#21 are mostly due to disinformation and not the underlying packages or the use of |
@ocefpaf Sorry, real life / day job has prevented me from being very plugged in to things here. Is there a date/time for the next meeting? |
Don't worry. Not your fault.
No but as soon as we have I'll ping you and add this topic again. |
@ocefpaf Yes, please give me an explicit heads-up on here or email. Thanks. |
This might depend on your definition of "painful". X11 is stagnant these days and the X.org libraries are the de facto standard implementations, so relying strictly on conda libraries to implement the X11 protocols just doesn't seem like a big deal to me, from the standpoint of software robustness. (Obviously I'm not an Anaconda support person, but I don't think I've ever seen a problem that was traced back to conda-forge's X11 packages?) In terms of bloat, that's a different question (although one that I also tend to be sanguine about). |
@mingwandroid's concern has always been about system compatibility that would be broken or sub-optimal with packaged X11. Most especially, he is concerned with hardware acceleration. I don't see that you're taking his concerns into account. Using a non-hardware accelerated 3D rendering application is painful. Can you definitively prove that your X11 packages work with speed comparable to system packages? Across all packages in the ecosystem? Do you really even want to think about making that proof? Why not leave people with the option, so you can sidestep that proof and leave it up to the user to troubleshoot? |
@msarahan That's a good point. I haven't investigated hardware accel. |
There's also an amount of "this is how it was done before and it's worked well" in the decision to not provide our own X11. |
Do you know of a good benchmark or benchmarks for your hardware acceleration concerns, @mingwandroid? |
glxgears? Not really. I never had time to do any analysis of this. |
We've also included X11 in the emacs feedstock https://github.com/conda-forge/emacs-feedstock/blob/master/recipe/meta.yaml. It's really convenient that you can install emacs on a headless box, which you might not have root access to install the X11 stuff in. The problem is that when emacs is built with GUI mode enabled, it can't launch at all without the X11 libraries, even if you run it with |
@asmeurer, this isn't about whether things should link to X11 or not, although we don't provide X11 on defaults we still provide packages that link to your system's X11. For headless scenarios you can still install system X11 libs on them in general and use e.g. xvfb-run when testing etc. From our perspective this difference should be abstracted so the same recipe can use either CDT X11 packages at build time or conda-forge X11 packages at runtime. |
The conda-forge policy doesn't have to match the defaults policy.
Not if you don't have sudo access. You could say that you could install them with conda, but then you might as well just depend on the conda packages. The user experience of "if you get The ideal scenario would be an |
Indeed. conda-forge are obviously free to decide what to do here.
No, there's not really any way to do this at present.
It needs investigation, but I think the conda-forge X11 stack will not be accelerated. Someone needs to run |
To build a something against an X11 stack such that it'll work on CentOS6 or above as well as with conda-forge libs you'd need to actually link to the CentOS6 CDT packages to prevent newer symbols getting used. Is that something worth considering? |
This CFEP could use a champion to continue to examine it. There has been some discussion on this topic in the context recommending matplotlib vs the matplotlib-base package. One question that should be answered on this topic in addition to hardware accelerate mentioned above is how to build |
Just to be explicit, I don't have the time to push on this topic anymore, so I'm not going to be the one to champion this. I'm more than happy for anyone who's able to work on this to do so and take it in whatever direction seems best given where things are now. As for |
Not to necessarily re-invigorate the entirety of this CFEP, but the @conda-forge/gtk3 team has a desire to move from using X11 CDTs to the conda-forge Xorg packages for the Though I initially thought that dealing with that issue was not a high enough cost to warrant switching away from the X11 CDTs, I have now come to think that we are unnecessarily burdening other conda-forge contributors with that requirement. This is partially in light of the fact that, though the @pkgw brought up two points in particular in conda-forge/gtk3-feedstock#35 for why sticking with the X11 CDTs might still warrant consideration:
I don't know how much weight the first point still carries. Guidance here in particular would be much appreciated. As for the second point, I think this is already resolved by the current state of things. Namely, Are there any other concerns that we have missed? Are there objections to merging conda-forge/gtk3-feedstock#35? Thanks! |
merging as deferred |
Pursuant to the discussion in cairo-feedstock#23, here is a CFEP that proposes some guidelines for conda-forge packages that use, or can use, X11.
Here is the rendered Markdown file.