-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Ten years reproducibility challenge: paper #41 #32
Comments
This corresponds to ReScience/ten-years#1 (comment). |
Thanks for your submission. I've modified your post to include link to your new article and metadata. We'll assign an editor soon. @otizonaizit Coudl you handle this submission for the Ten Years Reproducibility Challenge (only one reviewer needed)? |
I can edit this |
@ogrisel : would you be up to review this? |
@sabinomaggi : would you be up to review this? |
Ok, I think I can do that. |
Within one week / ten days? |
sure! |
|
Yes, please. You can ask your questions here and follow up with your review directly in this issue. Guidelines for review can be found here:
https://rescience.github.io/edit/
Also, see for example a recent paper published in ReScience for an example: #11
|
Hi @civodul Before delving into the actual review of the paper, I would like to manage the code/licensing issue. The 10 years challenge requires all partecipants to make available both the original and the revised code in a single repository, and to explicitly license it with an open source license. However, your gitlab account Frankly I don't know if having two separate repositories rather than one is a real problem (I hope the editor @otizonaizit can help on this), but you definitely need to add an open license to your revised code. If possible, also to your original code (of course, they could be the same). |
Given that the repo with the original code contains only a single commit, i.e. there is no history to preserve, I'd prefer to see both original and new code in the same repo. Following the challenge guidelines the ideal setup is for the initial commit of the repo to be adding the old code, and then the following commits are adaptations to the code that are documenting what needed to be changed to reproduce the results. @civodul : can you do this? |
Thanks @sabinomaggi and @otizonaizit for taking a look! The files in https://gitlab.inria.fr/lcourtes-phd/edcc-2006-redone already had a GPLv3+ license header, but I've now added a top-level The original code from 2006 is used as-is. It comes from these two repositories:
I realize I took a fairly unconventional approach by reusing the original code as-is. It seems that "Software" section of the guidelines expected that code would likely have to be modified, which I made a point of not doing here. The section also seems to assume that there is no version control history available for the source code, whereas I was able to recover the original version control history. Let me know what you think! |
Hi @civodul
I don't think this is an issue here, since you were able to reproduce the paper as requested. What unfortunately is not immediately apparent is how you were able to reproduce the original paper. If I understand well, the 2006 paper performed all calculations by running the
As for the double repository, I suggest two alternative routes to overcome the problem:
The first approach might seem more cumbersome and requires duplication of code which is always bad practice, but said frankly I think it is also much cleaner and complies in full to the rules of the challenge. |
@civodul : I second @sabinomaggi 's proposal: if you create a single repo with two commits, it is going to be much easier in the future for people to find the code and understand the paper. The original repos of course do not need to disappear, if you value the commits and the development history. |
@sabinomaggi : let's assume that the repo issue will be fixed very soon. Could you proceed with the actual review? Thanks! ;-) |
Here is my review of the paper. I have tried to follow as much as possible the reviewer's guidelines of ReScience C, together with the additional checks suggested by @pdebuyl within the first actual review of a 10 Years Challenge paper (#11). Replication. The paper reproduces the results of an article published in 2006 about the design of the storage layer of a mobile backup service. Within the source text of the paper, the original article contained all the code needed to automatically perform the analysis of several storage pipelines, produce the figures accompanying the paper and generate the PDF of the paper itself. In the review I'll pay particular attention to this latter self-generation aspect, since the Ten Years Challenge is focused on the reproducility issues, rather than on the actual scientific content of the original paper. The approach taken by the author for the present reproduction is to rebuild the original authoring toolchain and to make it work with more modern tools on the original, untouched, computation code. All this happens within the build process that produces the actual article under review. Such unconventional approach is very interesting (albeit fairly complex!), and I believe is still well within the rules of the Challenge. Today, the topic of reproducible computation/automated report generation is very popular (the present Challenge is a clear proof) and is supported by several different tools, but I guess that 14 years ago the situation was fairly different. Reproducibility of the replication. To run the code I installed the GNU Guix distribution in a Virtual Machine and I ran all the commands reported in the article. Everything worked perfectly, without any issue. Strangely, the date of all files produced by the toolchain corresponds to the beginning of UNIX-time (1-1-1970), while everything else in GNU Guix has the current date. I don't know if this is a quirk of the Virtual Machine or of GNU Guix, but surely it does not affect the quality of the replication. Modifications needed to reproduce the results. None. Clarity of code and instructions. The current code is based on Scheme, a variant of LISP, which is notoriously very readable, nearly as it were a text in english. Comments are sparse, but they would not add much to the readability of the code. Clarity and completeness of the accompanying article. The article is clear and well written, however it gives the feeling to be addressed to a specialized computer science audience rather than to a general readership, as expected here. The rebuild of the authoring toolchain and the reproduction of the original experimental results are presented in detail, but the author fails to present the reasons to follow this self-generated approach, confining them only to a brief discussion in the last sections at the end of the paper. It would be better to add an Introduction section, where the author discusses the general motivation of the original paper and to follow his self-generated approach, possibly describing the state of the art of reproducible computation/automated report generation in 2006, with the pros and cons of his solution and of the alternate tools available back then (and maybe also today). The same holds true for GNU Guix, which is described in some detail only in section 4.1 and not in Section 2.2 when the author first mentions this tool. In my opinion, a short general introduction to Guix in Section 2.2 (or in the Introduction itself), while leaving untouched the more technical description of Section 4.1, would add clarity to the present paper. It might be my fault but, even if I have used Autotools for several years, I cannot fully understand the meaning of this sentence in Section 2.2, "The good thing with the Autotools is that a user building from a source tarball does not need to install the Autotools. However, no release of libchop had been published as a source tarball back then, and building from a version-control checkout does require the Autotools." It is a real pity that all text boxes of Figure 1 are so small to require a large zooming factor only to make them barely legible. Would it be possible to tweak to code that generates the Figure, in order to create larger text boxes and prevent to have so much wasted empty space? As a final note, I wonder if, and how much, the author's approach to reproducible computation/automated report generation is feasible for the average scientist, in particular when compared to tools with a smoother learning curve, such as Docker containers, Jupyter notebooks, R Markdown documents and the like. A brief analysis of this topic with a clear presentation of the advantages of the author's approach in the Discussion session would be worthwhile. Availability and licensing of past source code. The original source code is available. The license is not defined, but as far as I understand this is not a mandatory requirement for the original code. Availability and licensing of updated source code. The updated source code is available and is licensed under the GNU General Public License v3.0. |
Hi @sabinomaggi,
No, but that makes me realize I could have been clearer. Lout is a document typesetting system that I used to typeset the original paper (via another authoring tool, Skribilo). It has nothing to do with the code evaluated in the paper, nor with the scripts used to run the benchmarks. More to the point: https://gitlab.inria.fr/lcourtes-phd/edcc-2006 is not relevant to this work, as mentioned in Section 1. It contains the source code of the original article, nothing else, and it is not reused at all here. I guess the lesson is that Section 1 could state it more clearly, or perhaps even omit the reference to https://gitlab.inria.fr/lcourtes-phd/edcc-2006 ? What I "translated" to Guix is the plumbing to build the artifacts in this paper: building and deploying the software (libchop and its dependencies), "building" the benchmark results, and building the PDF with LaTeX. Your review rightfully hints at a lack of clarity when it comes to describing this, which I'm willing to address.
I've added links now. I think part of the motivation for this article is to show that all this software, whether we call it "library", "program", "script", or "article", is intimately tied together, and how Guix allows you to express those connections. Picking two repositories out of this software stack and merging them into one would seem to me as dissonant compared to that vision. Thanks a lot for your feedback and for the thorough review! |
Hi @civodul But well, this philosophical discussion doesn't matter much per se, what is really important is whether it could help to improve the paper.
What really preoccupies me is more fundamental. When reading your paper I had the strong impression that it was a tool to rebuild everything from scratch, i.e. that it performed all calculations and rebuild the figures and the final PDF document from within itself (an automated report generator in current speak). In other words, the original paper was also the code that performed all the calculations reported in the article (through the If this is not the case, as it seems now, we have a few problems:
|
I'd like to stress that the source of the original paper is not used at all here and is irrelevant. This is what I attempted to express in Section 1:
I understand this was unclear, hence my suggestions to remedy that. What do you think? Conversely, this new paper contains everything to go from nothing to PDF—and I really mean it, because the The author guidelines read:
Again, I believe the assumption was that the "old software" wasn't under version control. Also, what I tried to demonstrate is that the software that I wrote is more than just the code and scripts I wrote: it's also the whole software stack beneath it, without which the software I wrote won't run. Thus, I do not think that
Understood, and I very much agree. I will work on this and other issues you pointed out and let you know when I have an updated version. Thanks! |
Jumping in because I have read this paper carefully as well, not with the goal of reviewing, but with the goal of learning more about Guix. BTW, my own contribution to the challenge also uses Guix to provide a reproducible baseline for the future, but in a more pedestrian (and arguable more "standard") way which is perhaps of interest of those wanting to learn more about Guix. My view on the repository debate is that @civodul has basically demonstrated that we weren't careful enough in writing the guidelines for this challenge. We were indeed considering the case of old software requiring patches to run on modern systems. We did not at all consider the machinery to make formally non-reproducible computations reproducible, by automating steps and formalizing dependencies that were initially undocumented or described only informally. @civodul's submission contains only this formalization, whereas the original code (which is https://gitlab.inria.fr/lcourtes-phd/chop-eval) required no changes. I propose to grant @civodul an exemption from the rule in the guideline for the merit of having demonstrated that it is insufficient! As for @sabinomaggi's question if this is accessible to ordinary scientists, my personal answer is no: this is advanced reproducibility wizardry. Which is also why I find this paper interesting. See it as a proof of concept for future technology, which remains to be developed into something user-friendly. There are open issues as discussed in the paper, but I do believe that this approach will become the norm in the future. Remember that you read it first in ReScience C! Finally, a minor suggestion for @civodul's revision: the discussion of Mohammad Akhlaghi's "template" would profit from an update since it has in the meantime been released under the name Maneage. |
@khinsen You are absolutely right, the approach used by @civodul is very bright and promising. To me, the goal of the debate above was twofold:
I am eager to read the updated version of the paper. |
Hi @sabinomaggi, I pushed an updated version that tries to address the various points you raised. In particular, the introduction and Section 2 provide an overview of GNU Guix, and the new "Related Work" section compares it to other tools commonly used in the context of reproducible research. In Section 4.2, I added an example code snippet to illustrate one aspect of how Guix is used here. I was unsure whether to go further but thought it's perhaps not the right place to explain the programming interface. Let me know what you think. Thanks also @khinsen for the kind words and for the perspective you bring! Ludo'. |
@otizonaizit @civodul @khinsen |
Great. So the paper is herevy accepted for publication. @civodul : I'll be back to you early next week for finalizing the publication. |
@civodul : I need you to perform an additional step before publication. I have updated the article metadata. I have no access to the gilab repo at INRIA where your article lives, so I can't make a pull request there. Instead, I pushed my modifications here: There is a single commit there with the updated metadata. You should merge that commit to your repo, refresh the PDF with the new metadata, rename the article from I will do the rest :-) |
Hello @otizonaizit, I've merged the commit and pushed I noticed two minor issues: "Received" and "Published" on the first page are just a hyphen, and I didn't have an orcid so I've created one (even though I'm skeptical about the need for a central database entrusted with personal information) and updated Let me know if anything else should be done! |
thanks!
Ouch, this not a minor issue, unfortunately. The dates seems fine in the
OK. Thanks! Speaking of which, actually it would be good if you applied for a DOI from zenodo and/or a Software Heritage identifier for your article repo. This info should also be added to the So, another little bit of effort and we will be soon done with this :-) |
I fixed the date issue, added the DOI of the original article and a Software Heritage intrinsic identifier. It looks good to me now, let me know if anything is amiss! The date issue was interesting, and of course 100% reproducible in the Guix framework. :-) It turns out that |
Good catch! Could you open an issue (and even a PR if you know how to fix it!) here https://github.com/rescience/template ? The paper is published! @rougier : could you merge my PR |
@civodul Thanks for spotting (and fixing) this problem! @otizonaizit I just pushed a partial fix in http://github.com/rescience/articles, by making BTW, we should have better instructions in https://github.com/rescience/template, in particular a list of dependencies for the Python scrips. |
Well, yes, but given we ask them to install PyYAML and |
In fact, you do control my setup because you have its source code. :-) But yeah, I guess that explicitly requiring |
I ran into an issue when I tried to build with:
Here is the snippet from the log: https://paste.debian.net/1154968/ There were also many references to Maybe this was just an unreliable download? I was able to run |
wdkrnls <notifications@github.com> skribis:
I ran into an issue when I tried to build: https://paste.debian.net/1154968/.
Could you show the exact command you used? (You need to make sure to
use the provided ‘channels.scm’ file via ‘guix time-machine’.)
Is this on x86_64?
Thanks for trying it out!
|
Sorry for not being so precise. Since I was following the readme, this was actually the output of:
Yes, this was on x86_64. |
@otizonaizit Since this paper is now published, can we close this issue? |
Sure! |
Original article: Storage Tradeoffs in a Collaborative Backup Service for Mobile Devices_(2006)
PDF URL: article.submitted.pdf
Metadata URL: metadata.yaml
Code URL: https://gitlab.inria.fr/lcourtes-phd/edcc-2006-redone
Scientific domain: Fault tolerance, Software engineering
Programming language: C, Scheme
Suggested editor:
The text was updated successfully, but these errors were encountered: