mviereck / x11docker

Run GUI applications and desktops in docker and podman containers. Focus on security.
MIT License
5.62k stars 378 forks source link

JOSS: discussion of paper.md #137

Closed mviereck closed 5 years ago

mviereck commented 5 years ago

Let's discuss details of paper.md here.

Link to paper.md Link to compiled PDF

Citation from https://github.com/openjournals/joss-reviews/issues/1346:

@mviereck wrote: Some points I am still not sure about:

mviereck commented 5 years ago

Citation from https://github.com/openjournals/joss-reviews/issues/1346

@1138-4EB wrote:

"reduced requirements of system environment (i.e. only the container runtime)". This might be only partially true.

I think this is still true. The script you've linked mainly checks for kernel configuration. My system misses e.g. apparmor and zfs, but they are not essential for Docker to work. Core x11docker functionality depends on tools that are quite common.

The point is that some GUI apps can be executed on some systems where docker cannot be installed. In this context, docker does not reduce the requirements, but rather increases them. So, this is not an issue with x11docker itself, but with that fact that running the docker daemon is not trivial. I think it can be solved just by replacing 'reduced' with 'minimal', e.g.: '(...) dependency packaging, and minimal requirements of system environment (besides the container runtime), isolation (...)'.

x11docker can also run with e.g. ssh -X, and probably some more complex setups are possible. But I think the description should not be too complicated.

In this case I'm proposing to remove a limiting addition to the sentence, not to add explicit cases: 'x11docker allows to execute Desktop GUI applications in an isolated environment by running an X display server on the host system and providing it to applications in Docker containers'.

"for deployment in cloud-based infrastructures" might be replaced with "multiple infraestructures" or "heterogeneus infrastructures", since it is certainly not limited to the cloud. Below: "because Docker is originally built for server software". It might be adequate to add the reference to cloud-based infraestructures here, instead of the first paragraph.

I am not sure about this. Still important, keep it simple. Sentences that are correct and complete in every detail often get too complicated.

My main point here is that x11docker is not specially useful in the cloud-based infraestructures where docker is so widespread, but it is a great tool for other not-so-conventional uses of docker, i.e. running desktop applications that use GPU acceleration, audio, webcam, etc. This is what makes it so valuable in multiple areas of academia, where this paper is expected to be cited.

As you say, it is correct as is. Just trying to focus the attention of the target audience. I'd like to ensure that readers which have nothing to do with cloud-based infraestructures are attracted from the beginning. ATM, it is not until the third paragraph starting from the end that the user reads something about the 'host'. Still, it is not clear if 'host' is 'server', 'workstation', or whatever.

Overall, we do know what docker can be used for, but lots of researchers have never used it and all the references they have are about kubernetes and large scale deployments (money talks). One of the strenghs of x11docker is that it is a greatly engineered orthogonal point of view.


  • Overall it sounds a bit complex. Maybe some points could be written more simple. I am not sure about this.

I think it will be good to wait until we get one or a few reviews/suggestions from people that is not involved at all. Certainly, non-CS perspectives would be very valuable.

GUIDock has a similar target as x11docker, but has a quite unpolished code base. I have hardly criticized GUIDock here: mviereck/x11docker#92 (comment) Maybe it must be added because JOSS requires to cite similar projects.

IMHO, it is not required at all. You can decide to do it or not. Both options are correct. If you don't feel like doing so (which I would agree with), the argument is easy: "they haven't been the first with this solution, but the first publishing a paper about this". To reference the original source of information, stackoverflow is ok. If you add it because it falls in the group of 'similar projects' with no regard to novelty, many other should be added too:

Citing all of these is something I'd expect from a 'regular' publication. But that would be an introduction to a longer article where the implementation details of x11docker are dicussed and compared to other approaches. So, for each feature, you would explain what did exists, how did you put it together, whether you did anything new and how does it compare to others (performance or functionality). However, I think this is out of the scope of this submission. It could be the target for a future update, tho. That's why I asked about it above.

  • The first half of the summary is about Docker in general, the second part about x11docker and what it adds in usability/functionality. Maybe this should be divided with subtitles.

I think that the summary is too short to require a subtitle. We should be able to improve it just by reordering the content. For example, wdyt about removing the first sentence and starting with the fifth paragraph? So:

x11docker allows to run Desktop GUI applications in an isolated environment by running an X display server (...) shared files and GPU/printer/webcam/audio access.

Containerisation in general (...) is completely different.

The properties of containers (...) De Roure (2018)).

Software and required libraries (...) side by side.

The most popular (...) x11docker fills this gap.

x11docker thereby facilitates (...) scholarly review process.

x11docker has (...) MS Windows, too.

mviereck commented 5 years ago

@1138-4EB Thanks for your suggestions! I've made some careful adjustments in paper.md. (diff)

The first half of the summary is about Docker in general, the second part about x11docker and what it adds in usability/functionality. Maybe this should be divided with subtitles.

I've added subtitles. Hopefully the pdf converter accepts that.

I think it can be solved just by replacing 'reduced' with 'minimal'

Done.

In this case I'm proposing to remove a limiting addition to the sentence, not to add explicit cases: 'x11docker allows to execute Desktop GUI applications in an isolated environment by running an X display server on the host system and providing it to applications in Docker containers'.

I would not like to drop "on the host system". It is a familiar term from virtualisation and I believe that it helps to distinguish host <-> container.

My main point here is that x11docker is not specially useful in the cloud-based infraestructures where docker is so widespread, but it is a great tool for other not-so-conventional uses of docker,

Overall, we do know what docker can be used for, but lots of researchers have never used it and all the references they have are about kubernetes and large scale deployments (money talks). One of the strenghs of x11docker is that it is a greatly engineered orthogonal point of view.

You are right. That could be more clear. I believe the division with subtitles already helps. Also I've extended the description of x11docker features a bit.

sgyzetrov commented 5 years ago

I am doing a fresh install (on macOS with Ubuntu 14.04 VM in virtual box, also just installed docker in the test environment). And here are some issues I found so far:

N.B. For docker image I am using x11docker/lxqt

  1. sudo x11docker x11docker/lxqt works great for me but sudo x11docker --desktop x11docker/lxqt won't work and throw xf86OpenConsole: Switching VT failed. Could be related to xf86OpenConsole: Cannot open virtual console. This is not an issue for JOSS review, and I am sure it has something to do with my test environment, which is an old Ubuntu 14.04 image.
  2. For

    [ ] Installation instructions: Is there a clearly-stated list of dependencies? Ideally these should be handled with an automated package management solution.

    x11docker --desktop --size 320x240 x11docker/lxqt works great after I got xephyr installed usingsudo apt install xserver-xephyr, which brings to my next issue (more on documentation side): should the author bring a dedicated script just for installing the dependencies described in:

    TL;DR: Install xpra Xephyr weston Xwayland xdotool xauth xclip xrandr xdpyinfo on host, or leave it as it is.

  3. For the checklist item:

    [ ] A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?

    It might be better to extend on the target audience part although I am sure the clear-stated what problems the software is designed to solve part is ample enough for this item to be checked. But I will leave this unchecked for now.

  4. Just a small side note:curl -fsSL https://raw.githubusercontent.com/mviereck/x11docker/master/x11docker | sudo bash -s -- --update would probably work, but if I am to start my installation at x11docker --install according to README, then sudo ./x11docker --install works for me. So I am just wondering if x11docker --install in README is not clear enough (there are some less computer-savvy folks out there after all...). Also, this is from the reviewer checklist item's point of view... :

    [ ] Does installation proceed as outlined in the documentation?

mviereck commented 5 years ago

@sgyzetrov Thank you!

1) sudo x11docker --desktop x11docker/lxqt won't work and throw xf86OpenConsole: Switching VT failed

I did some test runs in a fresh Ubuntu 14.04 VM. I got different error messages, but always some hints in terminal output how to fix this. Didn't you get this message?

x11docker WARNING: Your configuration seems not to allow to start
  a second core Xorg server from within X. Option --xorg will probably fail.
  (Per default, only root or console users are allowed to run an Xorg server).

  Possible solutions:
  1.) Install one of nested X servers 'Xephyr', 'Xnest' or 'nxagent'.
      For --gpu support: install 'weston' and 'Xwayland'.
  2.) Switch to console tty1...tty6 with <CTRL><ALT><F1>...<F6>
      and start x11docker there.
  3.) Run x11docker as root.
  4.) Edit file '/etc/X11/Xwrapper.config' and replace line:
          allowed_users=console
      with lines
          allowed_users=anybody
          needs_root_rights=yes
      If the file does not exist already, you can create it.
      On Ubuntu 16.04 and debian 9 you need package xserver-xorg-legacy.

I've also found some minor issues with Ubuntu 14.04 that are fixed now in master branch.


2) should the author bring a dedicated script just for installing the dependencies described in:

I'd like not to do that.

Ideally these should be handled with an automated package management solution.

As long as it is a recommendation, I won't do this major task yet.

Instead, a possible improvement could be if I provide a table with package names for a number of popular distributions. This makes it easier to find the matching package for each recommended dependency.


3) who the target audience is?

I have added a paragraph in paper.md:

The target audience of x11docker in general are users who want to run desktop applications in containers. Another target audience are developers of desktop applications who need an isolated environment. In scientific and academic context the target audience are researchers in the field of reproducible science.


4) So I am just wondering if x11docker --install in README is not clear enough

I've added some explanation in README.md and x11docker --help

  • x11docker --install : install x11docker and x11docker-gui from current directory. (Useful to install from an extracted zip file or a cloned git repository.)
eine commented 5 years ago

I just want to congratulate @mviereck for the great effort he has put on documenting all the dependencies for multiple platforms: https://github.com/mviereck/x11docker/wiki/dependencies

sgyzetrov commented 5 years ago

Hear, Hear👏👏