-
-
Notifications
You must be signed in to change notification settings - Fork 24
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
Pkg3: enforcement of immutability? #4
Comments
I guess we could keep git repos somewhere, and make source-only copies for each used release. A "master" pseudo-version would allow using these instead of releases. That would also be an improvement over the current system for developers, since they would be able to switch easily between the development version they are hacking on and the releases of their own packages. |
Keeping track of whether you're using the development version or an installed version needs to be made extremely clear. |
I think that read-only, checksumming or convention are all viable approaches. Installing packages read-only seems simply enough to me. We should also record checksums and paths and reflect them in |
This is an issue that's particularly important to me as well. I find that being able to poke around inside an installed package to change a line or add a I realize that one goal of Pkg3 is to avoid the requirement that every package be stored in git, but if you'll hypothetically ignore that for a moment, then it may be possible to let git 2.5 introduced the I can imaging users not necessarily wanting to be bound to git for their Julia packages, but I think there are some pretty substantial benefits. The relatively uniform process for downloading and contributing to packages in Julia is one of my favorite things about the language, and I would hate to lose it. |
I agree this is an important issue. I think it would be really nice if a One nice thing about this separation is that one can easily see/track the packages they are developing and it would be clear which version would be loading on a call to using. When a user is done with development, they can just remove the git repo from their development folder and then the tagged release will be used again (and that git history won't hang around in caches, etc) I worry that an attempt at immutability for packages in development would make the workflow very cumbersome. |
@tbreloff I like that idea as well. I really like the ability to modify installed packages in-place, but I do agree that it can get cumbersome to remember which packages I've modified and ensure that those changes aren't lost when I eventually nuke my project-specific |
I think @tbreloff's idea is a good one. Packages in development certainly shouldn't be immutable – that almost sounds like an oxymoron. I would also point out that unless Julia pro-actively verifies that code loaded from "immutable" matches a given cryptographic hash, immutability is always going to be by convention – you can go edit the code if you want to. I don't think we should prevent that, but I don't think it should be the recommended way to edit packages. If you edit |
I should also point out that I don't particularly want public Julia packages to start using a menagerie of different version control systems. Dictatorial as it may be, I also think that the fact that all packages use git is a good thing. Private packages might be a different story, however, since some companies are pretty much locked into using something that is not git for development. It would be nice to allow for that situation. But the real motivation for moving away from identifying package versions by git commit hashes is the history business and the fact that SHA1 is no longer really secure. |
Questions to answer in further revisions:
Will installed packages be read-only (at least until deletion is called for), or strictly checksummed, or immutable by convention only? What consequences, if any, would modifications have? Using code that doesn't match what the manifest specifies was installed isn't good for reproducibility, but what's the intended level of tracking and granularity of this? If packages aren't always git repositories any more, how are generated files and downloaded resources, which would be ignored from a version control perspective, dealt with?
This ties into the bigger separate question of where and how development happens if everything Pkg3 touches is immutable (by convention only, or strictly enforced). If you want to make a local change, does that require a separate installation mechanism and modifiable copy that lives outside of Pkg3 somewhere? Or if you make it locally do you then have untracked local modifications that never get recorded anywhere? (People will forget they've made this kind of change if packages aren't git repos.) Most other package systems work this way, but most other package systems have an unfriendly distinction between the way users work with packages and the way developers/contributors do. The low barrier to entry of contributing to Julia packages is a huge benefit to our ability to get users to become developers.
The text was updated successfully, but these errors were encountered: