On Tuesday, 22 December 2020 03:41:14 GMT G. Branden Robinson wrote: > > I may be misunderstanding something here, apologies if I am. > > No, I appreciate you speaking up--I welcome critical evaluation of my > suggestions, especially in cases like this where I haven't carved out > enough time to experiment and research an issue as much as is my usual > preference. >
Again, I fear I may be missing something obvious. My background is in the arts not computer science, I wanted to be an archivist when I grew up but I realised that dribbling on the Magna Carta or an inability to put on latex gloves may have been a hindrance to my career! Please can someone explain why reproducible builds are important. I assumed that it was to detect when the output produced from a system has changed. The purpose is to detect changes in the system which may have unintentionally been altered by changes to the system. This means that we are not interested in changes to the source code, but purely if any changes have occurred in the output when the system is run. After all a change to the source code may be intended to improve performance but unintentionally alters the output. What is the output of groff we should be testing. It looks like we are comparing the files that groff's output processors produce, but this does not make sense to me. Grops outputs the source code of a new program. Gropdf outputs a file in the PDF language. Since these are essentially source files which are intended to be run at some point, diffing them just tells us that there has been a change in grops or gropdf, not whether that output, when run, has changed. Isn't the actual build output of groff marks on the page, and it is this we should be comparing to detect changes between one version and another, not the source code produced by groff which needs to run in order to produce the marks. I'm sure if the postscript or pdf is rastered to a binary bitmap and new and old are subtracted from each other, if there are any black pixels left in the image then it has failed the reproducibility test. If the result is a completely white page there has been no difference between the two builds, even if the post processor has had changes which are intended to improve the file it produces, but those changes have not altered the result of "running" that file. I can't see the purpose of diffing the source code files which the post processors produce, since they tell you nothing except the code in the post processor has changed, not whether the new code has altered the marks on the page when they are run to produce their output. Am I missing a nuance that makes diffing the source code produced by the post processors useful? Cheers Deri