brentthorne / posterdown

Use RMarkdown to generate PDF Conference Posters via HTML
https://brentthorne.github.io/posterdown_html_showcase/
Other
843 stars 131 forks source link

Produce docker image for easy, self-contained poster production #84

Closed chiphogg closed 5 years ago

chiphogg commented 5 years ago

I love using R Markdown to write posters, and I wish I could bring more colleagues along, but the barrier to entry is daunting. Few of them have any meaningful experience with R. The thought of asking them to go through what I went through is clearly a non-starter.

In my case, just to get the demo to work, I needed to install a variety of R packages (including a mix of CRAN packages, devtools::install_github(), and even system dev packages to provide libs files)---not to mention the non-R software such as pandoc, which is very challenging to build from source on, e.g., Ubuntu 18.04!

An alternative is to provide a "batteries included" docker image. Without installing anything (except, OK, docker), a user can simply run a single command, and compile a .Rmd file into an HTML page (or perhaps even directly to the final PDF product).

This takes a considerable amount of effort to get off the ground, and is probably best conceived as a separate product other than posterdown---one which is built on posterdown and uses it and others. However, the potential impact is massive---you move easy, reproducible, maintainable posters beyond the R niche (a niche, to be clear, that I love) and to a much wider community of scientific communicators.

Something to think about. :)

brentthorne commented 5 years ago

Thanks for the feedback @chiphogg ,

I honestly have zero experience with docker (woops) but I do have hopes to dive into it more in the coming year.

I can see why you may have a hard time convincing others to make the switch to something like posterdown, especially if they do not have a previous background in R/ Rmarkdown. When I talk to colleagues in my lab I have tended to just go straight to the "minimal live demo" option so they can see how quickly and efficiently they can create a reproducible poster but then move that to a manuscript/ report/ thesis. When I do this I simply show the simple markdown document --> pretty poster output just to show them how they don't need to spend time clicking and pointing with a mouse. Then if they seem interested I show how easy it is to use R or if they have R experience then I show them a quick figure and how I can update my data and not need to change the poster itself. This tends to get them "hooked" as one might say..

Once that has been done the 'art of installation' becomes a more purposeful task because there is a known reward at the end of the tunnel rather than an annoying start point.

For installation of something like pandoc or other R packages I cannot really control how easy/ streamlined the process would be and I assume this is where you think docker would be of value. My only question of this is if the user is challenged with installing something such as R or pandoc can we be certain that the new user will have a significantly easier time installing docker? Or is it just a shift of the "time sink" complaint that many new user's use as an excuse for not getting started. I'm not saying this is the case it is just an honest question about the use case of it.

An idea I have floated around with is a "web app" of sorts, maybe a shiny app, that just takes the simplest markdown text and runs R/ rmarkdown on the server as a way for people to become inspired enough to want to install what they need to run locally. It seems to be a similar idea to the docker approach but without the step of installing. I think it would be safe to assume most people should be able to go to a website and simply add in the markdown text.

Ultimately I agree that there needs to be more effort from the R/ rmarkdown community in finding ways to introduce new users from all experience levels to reproducible documentation workflows, I will actually be giving a lightning talk at the UseR2019 conference on this with a focus on academic institutions (since I am currently in one) and streamline workflow using R for all parties involved.

Again thanks for your input and please continue to provide feedback/ suggestions!

chiphogg commented 5 years ago

This suggestion is based on my experience providing a documentation tool at work, which includes all kinds of dependencies (ruby, nanoc, R, rmarkdown, pandoc, graphviz, you-name-it). Once I got all that stuff inside of a docker image, it became dead easy for people to just run the image and use it. (The basic architecture is a very thin client, a python script, which runs the docker image with the source files mounted, and publishes the results.)

It's worth pointing out, though, that my colleagues already need to have docker installed for other parts of our workflow---so, one fewer hurdle in my use case.

I think overall the "docker + thin client" approach would still be a significant improvement, but I also concede it would be a lot more work to get it set up, and to maintain. Then again, it would also multiply the impact...

I have always considered it a longshot, and still do---doubly so if you don't already have docker experience. I guess my real hope is for somebody who does have that experience to stumble on this idea and run with it. :slightly_smiling_face:

Finally, FWIW, the project wouldn't need to be part of posterdown, and in fact would probably function much better as an external project that depends on posterdown and others.

brentthorne commented 5 years ago

This is still something that is out of the scope of this package, if someone wants to fork posterdown and make a docker version then that would be great but it won't be something this repo takes care of. Thank you for the suggestion though and fingers crossed that someone may look into doing this!