How does this compare …

There are many tools that can be used for doing your day-to-day work. Renku is not a silver bullet or a magic wand for making your results reproducible.

… to Makefile

If you are using Makefile to generate your outputs you are on a good path. However you might be missing versioning of your past executions.

Renku internally builds rules similar to those defined in a Makefile and makes sure that all files are saved before running a tool.

Running the following renku run commands

$ renku run echo test > foo
$ renku run wc -c < foo > foo.wc

is equivalent to this simple Makefile.

  @echo test > foo

foo.wc: foo
  @wc -c < foo > foo.wc

Renku also makes sure that if any of the inputs are modified only the necessary “rules” are invoked. In addition, make does not run the rule if all dependencies are older then the targets.

$ renku run echo second > foo
$ renku status
On branch master
Outdated outputs:
  (use "renku log [<file>...]" to see the full lineage)
  (use "renku update [<file>...]" to generate the file from its latest inputs)

       foo.wc: foo#deadbeef

$ renku update foo.wc
$ renku status
On branch master
All files were generated from the latest inputs.


As a bonus the Makefile can be generated by running renku log --format Makefile foo.wc command.