So, after a bit of bikeshedding on #guile, it turns out that the controversy moved to the second commit. Here is the justification for it. When a program user wants to save data to a file, if the place where to save the file does not exist yet, there will be an error: "cannot create file or directory". That's puzzling to the user, because, yes, the user wants to create that file. If the error is a little more precise, it will be something in the line of "Please create directory blah/blah/blah before invoking this program". So, the user will wonder why the program was not able to create blah/blah/blah itself, create it, and re-run the program. This is more work for the user, work that could have been easily handled by the program. Good behaving programs should (recursively) create the directory before trying to write to a file specified by the user. That include log files for a daemon, for instance. Emacs org-mode babel tangling uses a :mkdirp t for a similar reason. In order to simplify the development of such programs, and in order to avoid bugs where the developer forgot to call (mkdir-recursive (dirname output-file)) before (open-output-file, call-with-output-file or with-output-to-file, while still keeping compatibility of the other programs, I propose to add a keyword argument to these functions. There are also worries that this keyword will not be of much use and will clutter the implementation. I am willing to bet that this keyword will be more used than, for instance, #:guess-encoding, which is available in all the corresponding input functions. I also simplified the mkdir-recursive function, to be closer to https://gitlab.com/leoprikler/guile-filesystem/-/blob/master/ice-9/filesystem.scm .