Earlier quoted context omitted.
> In Duo you can pin down any dependency right in the file via require('some/repo@tag'), which is the same as having a manifest with a pinned version. That will do nasty things for your ecosystem if people start doing that in libraries. You'll end up with version lock on shared dependencies: - My app depends on foo and bar. - foo and bar both depend on baz. - They both specify different tags. Now your solver has a sa…
Sorry, I think I'm missing something because I don't see the problem -- why can't foo and bar just use different versions of baz? Is it not possible to do that?
Show HN: Duo – a next-generation package manager for the front end
71–80 of 103 posts
Re: Show HN: Duo – a next-generation package manager for the front end
#72Earlier quoted context omitted.
Author here. @tomdale We're on the same page. I've worked with many large JS codebases as well and consistency and repeatability are a must. However, as with any tool, it's effectiveness comes from how you use it. There are so many NPM modules that use "*" in their manifests. That's not very robust. Having a manifest isn't a solution, it's how you use the manifest. In Duo you can pin down any dependency right in the…
> In Duo you can pin down any dependency right in the file via require('some/repo@tag'), which is the same as having a manifest with a pinned version. That will do nasty things for your ecosystem if people start doing that in libraries. You'll end up with version lock on shared dependencies: - My app depends on foo and bar. - foo and bar both depend on baz. - They both specify different tags. Now your solver has a sa…
Re: Show HN: Duo – a next-generation package manager for the front end
#73Earlier quoted context omitted.
> In Duo you can pin down any dependency right in the file via require('some/repo@tag'), which is the same as having a manifest with a pinned version. That will do nasty things for your ecosystem if people start doing that in libraries. You'll end up with version lock on shared dependencies: - My app depends on foo and bar. - foo and bar both depend on baz. - They both specify different tags. Now your solver has a sa…
Sorry, I think I'm missing something because I don't see the problem -- why can't foo and bar just use different versions of baz? Is it not possible to do that?
Re: Show HN: Duo – a next-generation package manager for the front end
#74Is Duo smart enough to remember when it finds a library requirement with a specific tag? So that it is not necessary to indicate the tag on the other places where this same library is required. If so, manifests could be written in a very neat way. See: https://gist.github.com/aymericbeaumet/22c3a9deba54549821e3
Although there's no real benefit of doing that over using the manifest other than it's kinda cool :)
Re: Show HN: Duo – a next-generation package manager for the front end
#75Earlier quoted context omitted.
Sorry, I think I'm missing something because I don't see the problem -- why can't foo and bar just use different versions of baz? Is it not possible to do that?
Sadly, this isn't really a solvable problem. On one extreme you force all transitive dependencies to use the same version. On the other extreme, you bundle n different versions of a library. Organizations such as Google have strict policies to enforce the former extreme - only one version of a library is allowed at a time. Unfortunately, this isn't possible for the OSS community where there's no enforceability.
Re: Show HN: Duo – a next-generation package manager for the front end
#76Is Duo smart enough to remember when it finds a library requirement with a specific tag? So that it is not necessary to indicate the tag on the other places where this same library is required. If so, manifests could be written in a very neat way. See: https://gist.github.com/aymericbeaumet/22c3a9deba54549821e3
Re: Show HN: Duo – a next-generation package manager for the front end
#77Earlier quoted context omitted.
> However, I wonder what it says that several dependency management tools have emerged for Go. In the case of Go, it's more meaningful to note that most larger Go projects have been developed for quite some time without needing any of these tools. If you need specific versions, the standard, idiomatic Go approach is to vendor your dependencies. Google, for example, does not use any Go-specific tool for vendoring IIRC…
> If you need specific versions, Who doesn't need this? Do you really want different people on your team accidentally using different versions of dependencies? > the standard, idiomatic Go approach is to vendor your dependencies. How does that work with transitive dependencies? Do you vendor those too? > Google, for example, does not use any Go-specific tool for vendoring IIRC. How much third-party code does Google a…
> Do you vendor [transitive dependencies] too?
Yes. Here's an example: https://github.com/soundcloud/roshiRe: Show HN: Duo – a next-generation package manager for the front end
#78npm supports git repositories as dependencies already (git://github.com/...), so that feature doesn't seem like much added value to me. And considering that any real project needs a manifest, the versioning syntax doesn't seem especially compelling. I'd like to be proven wrong, because this looks cool... but I don't see the value over npm and browserify other than some syntactical sugar (which could probably be achie…
here's a rabbit hole of additional information: https://github.com/npm/npm/issues/3014
:-)
Re: Show HN: Duo – a next-generation package manager for the front end
#79Does a simple `require('package')` without the slashes fetch the thing from NPM? Maybe it could. Maybe it could also work with `require('package@0.5.1')` and other sugars like this.