Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.
Sign upCFEP 04: proposed guidelines for X11-based software. #7
Conversation
This comment has been minimized.
This comment has been minimized.
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 |
This comment has been minimized.
This comment has been minimized.
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 |
This comment has been minimized.
This comment has been minimized.
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. |
This comment has been minimized.
This comment has been minimized.
I assumed that is |
This comment has been minimized.
This comment has been minimized.
@jjhelmus, @mingwandroid, could you both please take a look at this and share your thoughts when you have a chance? |
This comment has been minimized.
This comment has been minimized.
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. |
This comment has been minimized.
This comment has been minimized.
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). |
This comment has been minimized.
This comment has been minimized.
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? |
This comment has been minimized.
This comment has been minimized.
@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. |
This comment has been minimized.
This comment has been minimized.
Thanks @pkgw. Did any of your colleagues try this out since? If so, it would be good to know what they found. |
This comment has been minimized.
This comment has been minimized.
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. |
This comment has been minimized.
This comment has been minimized.
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 |
This comment has been minimized.
This comment has been minimized.
Seems like there are no issues with |
This comment has been minimized.
This comment has been minimized.
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 |
This comment has been minimized.
This comment has been minimized.
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 |
This comment has been minimized.
This comment has been minimized.
mingwandroid
commented
Sep 7, 2017
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. |
This comment has been minimized.
This comment has been minimized.
I can't speak to Tk specifically. However I can speak to the general value of using |
This comment has been minimized.
This comment has been minimized.
mingwandroid
commented
Sep 7, 2017
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. |
This comment has been minimized.
This comment has been minimized.
Here are two examples of people getting confused by missing these dependencies. 1: conda-forge/qt-feedstock#54 |
This comment has been minimized.
This comment has been minimized.
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 |
This comment has been minimized.
This comment has been minimized.
@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 |
This comment has been minimized.
This comment has been minimized.
@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? |
This comment has been minimized.
This comment has been minimized.
Don't worry. Not your fault.
No but as soon as we have I'll ping you and add this topic again. |
This comment has been minimized.
This comment has been minimized.
@ocefpaf Yes, please give me an explicit heads-up on here or email. Thanks. |
This comment has been minimized.
This comment has been minimized.
Would like us to revisit this proposal. We have seen increasingly consumers of our packages generally expect X11 packages to be installed as conda packages and are frequently surprised that we expect them to install these with a system package manager. It's not uncommon to see comments of workarounds in issues suggesting that users install the X11 conda packages to solve the problem. Similarly maintainers are increasingly comfortable using X11 conda packages (at least where Linux is concerned). A few examples are linked below. xref: conda-forge/python-graphviz-feedstock#15 |
This comment has been minimized.
This comment has been minimized.
The best solution here would be to require some metapackage representing X11. It could be fulfilled either with conda packages or with system packages. Conda would need to learn to introspect the system a bit to understand which is the correct one. Depending strictly on conda X11 packages or system-installed packages specifically is going to be painful either way. |
This comment has been minimized.
This comment has been minimized.
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). |
This comment has been minimized.
This comment has been minimized.
@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? |
This comment has been minimized.
This comment has been minimized.
@msarahan That's a good point. I haven't investigated hardware accel. |
This comment has been minimized.
This comment has been minimized.
mingwandroid
commented
Aug 3, 2018
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. |
This comment has been minimized.
This comment has been minimized.
Do you know of a good benchmark or benchmarks for your hardware acceleration concerns, @mingwandroid? |
This comment has been minimized.
This comment has been minimized.
mingwandroid
commented
Aug 3, 2018
glxgears? Not really. I never had time to do any analysis of this. |
This comment has been minimized.
This comment has been minimized.
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 |
This comment has been minimized.
This comment has been minimized.
mingwandroid
commented
Aug 3, 2018
•
@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. |
This comment has been minimized.
This comment has been minimized.
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 |
This comment has been minimized.
This comment has been minimized.
mingwandroid
commented
Aug 3, 2018
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 |
This comment has been minimized.
This comment has been minimized.
mingwandroid
commented
Aug 3, 2018
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? |
pkgw commentedFeb 27, 2017
•
edited
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.