Comments (4)
- It's not perfect, but it's mostly reliable, there are always edge cases.
- Many would disagree with you that this is a "bad" habit, and most tools I've worked with can handle semver or these special cases.
- Typically we are making the assumption that using a version is more of a "pin" - a point in time, over a main branch or similar, so it's at least an effort by the author to have more consistency than not using one. And "good" or "bad" is relative is it not? The pinned version just needs to work for the author of the container in question, which could be determined by testing the resulting container.
from ten-simple-rules-dockerfiles.
@vsoch thank you for your quick reply.
- Yes, in short, you must copy the package, not store its identifier (especially if it is not even a message digest like in Git).
- Yes, I know, because these people do not maintain old versions, they just deliver newest version and that's it. Simple cases (like having few old baselines maintained) may accidentally work with SemVer, so even then people sometimes do not notice the problems. The tools and the people using it make false assumptions which often do not harm, but just since it accidentally works for them IMHO is not a sufficient base for recommendations, especially giving that a fully working scheme exists since ages, which is simple and superior. Environments, that work fine with that, probably often do not need reproducibility (they ship new everything every time anyway), but here the focus is reproducibility and thus different environments. For example these, they need to present old results again and might need to fix mistakes in them - this quickly requires branching on that old state instead of using a new one, and branching (in general) is not possible with SemVer.
- Yes, the "pin" is used when the system is not fully reproducible to "pin" external dependencies, but this works only as long as the external decency is accidentally met (accidentally, because out of control). But for reproducibility, there must be no externally uncontrollable dependencies, but local copies. So the reproducible build system uses local copies, which might be pinned by it path. In practice, you cannot trust version number of external decencies - who says that their maintainers read your rules :-)
from ten-simple-rules-dockerfiles.
So in summary, "the real problem with software reproducibility is people" is what I'm hearing. 😆
We do our best @sdettmer. Again, we are not perfect, and that's OK.
from ten-simple-rules-dockerfiles.
@vsoch Yes, of course you are doing exceptional well and in no way I think anything else! Also I see the many advantages this approach has, for example lower costs.
It is just that for reproducibility it seems to be misleading. According to my experiences, your containers probably won't build in ten years for some little details, and in ten years it can be very difficult to fix these details. I assume you already guessed that I spent quite some time doing so :-) Maybe it is not needed (and then not worth the effort) to be reproducible in ten years, sure, but if so, better have local copies of everything needed. And a DVD drive if needed, try to get a working DLT1 drive or predecessor device today and you know what I mean, or a 8 inch disk drive :)
Maybe the duration for the reproducibility could be added. If it is just more or less lets say weeks (until everybody upgraded or so), or is it about years (a bit harder), 1-2 decades (starts getting interesting) or even more?
from ten-simple-rules-dockerfiles.
Related Issues (20)
- comment about rule 6: "Use version control" HOT 3
- comments about rule 7: "Mount dataset at run time" HOT 9
- comments about rule 8: "Make the image one-click runnable" HOT 5
- comments about rule 9 "Order the instructions" HOT 1
- comments about rule 10 "Regularly use and rebuild containers" HOT 9
- Comments about Rule 1 "Use available tools" HOT 1
- Related work HOT 2
- ENV and ARG HOT 3
- Source code for figure
- Rules 6 & 7 HOT 9
- Improve and clarify bind mounts vs. volumes HOT 3
- Publish a bookdown rendering
- Content beyond the paper HOT 1
- New projects, packages, ideas for follow ups, new revisions, etc. HOT 10
- Build current master PDF with GitHub action, not with Travis HOT 1
- (Comment) Rule 0 - Don't use docker HOT 6
- Comments about rule 2: "Build upon existing images" HOT 3
- comment about rule 3: "Format for clarity" HOT 6
- comment about rule 4: "Document within the dockerfile" HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ten-simple-rules-dockerfiles.