-
Notifications
You must be signed in to change notification settings - Fork 114
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
"Native reviews" don't work well and prevent from using Elm in production #105
Comments
I think pretty much everyone agrees with this assessment. I have written a bit about my upcoming plans here and it is pretty clear that this is probably the most important thing to resolve for Elm to keep growing and becoming useful for more folks. I want you to know that I think this issue is important and that I am going to be focusing on it primarily as soon as I can. I also want you to know that I work as hard and as quickly as is possible. No one is slouching around here, but to get a good solution that is going to keep Elm healthy takes time. I am going to be flying back to SF tomorrow and getting 0.16 out the door in the following two days, so I need someone in @elm-lang/packages to continue this discussion in my place. |
Thank you for quick response! I'm currently thinking on extending elm-package functionality, this is what we need anyway to use Elm in commercial projects:
While it won't fix an issue with the reviews, it will allow to move further without delay. One can experiment with updated version of elm-package without disrupting anything and without even waiting for changes to become the part of the official distribution. I want also to mention that there is an issue with current versioning scheme. It doesn't allow to make beta releases available for early adopters while still distinguish them somehow in a constraint. For instance, I can have an agreement that odd version numbers are unstable, but there is no way to make a constraint to choose stable versions only. And there is no way to tag release as beta or something. Not sure how to solve it though. |
Give clearer description to help folks who feel like OP in #105 understand what the current situation is without digging through issues or opening new ones.
Thanks :) I added a note about what is going on in b35c30f so hopefully the root concern is addressed as best as possible without actually making the fixes yet. Otherwise, again, pretty much all the things you have mentioned are on my personal roadmap for this project. Elm has grown a lot since the last time I focused on I am going to close this because I don't want to track work on these topics in this thread. Gotta keep things focused and close aggressively or hard-to-follow issues will bury the clear and actionable ones. If you are interested in making some contributions, I'd focus on the Docker one. I really have no clue what the deal is there and am not an expert on containerization at all. So that's one where there'd be no toe stepping and you'd probably have a competitive advantage over me :) |
Also, I think the idea of allowing links to git repos would address the concern about beta releases. If people want to test early, have them point at a tag. I don't think beta releases make total sense because you may do an experimental version that you want to show people that is MAJOR, but then decide it was all dumb and end up with a MINOR release. |
Strongly agree about git repos being the best solution for beta releases. I think "arbitrary Git URL" covers every missing case except "relative local file path" (e.g. if you have a project with a |
I don't actually have a nice list of all these ideas, though I'm sure they have come up in various forms before. Would you @dimsmol be up for writing up your ideas and @rtfeldman's in as clear a way as possible in a gist? I am imagining a brief description of each proposed thing in a gist in the same sort of brief format as elm-lang/elm-make#59 with minimal examples. If you can, please share it here, and I'll add it to elm-lang/elm-make#59 in the "issue updates" section that is for tracking this sort of stuff. It's likely it'll all happen in one big batch. |
extended dependency syntaxI agree that allowing links to git repos covers concern about beta releases. Here I want to discuss how we want to specify such "link to something" dependencies (in future they can be not only links to git, but also links to tarballs, local dirs, etc.). There are at least two possible options here:
While the second approach is something people are already trying to use, I think it isn't what we really want. There are some reasons against it:
The third reason is the most important one. Here is an example. Let's assume we have the package Deps graph may look like this:
If But if So, I propose to go the way npm goes and stick to the first option, namely dependency conflictsIn the case described above, we have the conflict. But we can fork But the deps graph can be more complicated. There can be a number of libraries depending on Example of complicated graph:
In this graph we need to patch all the packages How does npm deal with this? With npm there will be no conflict at all, Instead, I propose to add an ability to force top-level constraints over all the constraints dependency packages may have. For instance, having While this is a potentially dangerous feature, it can be very helpful for experiments and can be a savior if you need to adopt an urgent security fix or quickly workaround a bug in someone's package dependencies. Of course elm-package should output all kinds of warnings when dealing with this option and it would be better to prohibit packages with forced deps from getting into official repository. caches and downloaded packages dirsCurrently, downloaded packages are saved in the package cache and Surely it cannot be npm solves similar problem by translating links into directory names, so Going this way we could have path like getting package constraintsCurrently elm-package gets deps for the package from the store, checks everything and only then starts to download files. For github links there will be no entry in the store, so the only way to get package deps is to download it's For git, however, there can be a problem with downloading a single file from a repository. For instance, there is no way to download a single file from github using git+ssh protocol (which is preferred because it allows to use ssh certificates transparently). The same problem is present for tarballs as well. Will it be ok to download the whole package just to get it's dependencies list and probably fail with conflict right after that? I think for certain situations we just haven't any other way, but maybe there can be some other ideas? dev dependencies@rtfeldman, according to your proposal to use But it can be even better to adopt npm's idea of dev dependencies. Those are dependencies that are meant to be installed in dev environment which may need additional libs for tests, build process or something. This way you will just add everything you need for tests into dev dependencies of the main What do you think? |
I think this discussion should move to its own issue. 😄 |
let's continue here |
I totally understand the idea of having good native code in official package repository, but for now it just doesn't work.
Most of the issues in this repo are "Native review" issues, the oldest one waits for more than 8 months (!!!) and the newest are waiting for weeks just to get the label that they are indeed related to native reviews. Also, I don't think the review is thorough enough to give any guaranties that the code is really good.
Looking at comments I see that people are giving up and abandon their projects before they have a chance to get through the review. Elm is young and a lot of people are experimenting with it, but they cannot do it if an experiment waits for being reviewed for months. Also, no one will join and improve far from ideal but promising library if it anyway cannot be used easily because it stuck in the review process.
What is worse, review requirement prevents from using Elm in production. Production blocked by the review process is a nightmare. Of course we can use git submodules or something but it isn't any way better than not having package manager at all.
I think we shouldn't prevent the packages from getting into repository by requiring the review. The state of affairs shows clear enough that there are no resources for such an approach.
If you think the situation will get better in future (which I doubt), we can just use some kind of warning within the repository saying that the package is native and haven't reviewed yet. The other way could be to have completely separated experimental repository, but I think this way everyone will just eventually use it and abandon the official one.
The text was updated successfully, but these errors were encountered: