[swift-evolution] [Review] SE-0150 Package Manager Support for branches

Boris Buegling bbuegling at apple.com
Wed Jan 25 12:10:08 CST 2017


Hi Martin,

> On 25 Jan 2017, at 10:40, Martin Waitz via swift-evolution <swift-evolution at swift.org> wrote:
> 
> Hello,
> 
> Am 2017-01-24 19:18, schrieb Daniel Dunbar via swift-evolution:
>> The review of SE-0150 “ Package Manager Support for branches" begins
>> now and runs through January 31, 2017. The proposal is available here:
>> https://github.com/apple/swift-evolution/blob/master/proposals/0150-package-manager-branch-support.md
> 
>> What is your evaluation of the proposal?
> 
> -1
> I think we should more clearly separate the contents of the manifest and the version pins file.
> I don't like to have two competing ways to do the same thing.
> 
> The manifest file (`Packages.swift`) should contain all required dependencies while the pins file should contain specific versions.
> 
> If there the dependency has no released version yet that is fine!
> But instead of hard-coding some version into the manifest, we should allow to specify dependencies without any version requirement.
> The concrete branch/version specification should always be stored in the `Package.pins` file.
> This way, we also don't have any problem with conflicting branch specifications.

While this is true for most packages, some have a development model where they will always depend on a branch and never on a version. In that case, it is more semantically correct to have the branch definition in the manifest, otherwise the package would not be able to build without a pins file. 

This is especially true for the example from the proposal:

A -> (B:master, C:master) B -> D:branch1 C -> D:branch2

Since the pins file of packages B and C would not be considered when building A, you would need to lift the pinning that is inherent to those packages up to the pins file of A.

Additionally, I think the proposed errors for invalid dependencies should ensure that this will not become an issue in practice.

Cheers,
Boris

> 
> 
>> Is the problem being addressed significant enough to warrant a change to Swift?
> 
> yes.
> Bootstrapping and the ability to work with unreleased dependencies are important.
> 
> 
>> Does this proposal fit well with the feel and direction of Swift?
> 
> no.
> I'd like to keep the clear separation between `Package.swift` and `Package.pins`.
> 
> 
>> If you have used other languages or libraries with a similar feature, how do you feel that this proposal compares to those?
> 
> -
> 
>> How much effort did you put into your review? A glance, a quick reading, or an in-depth study?
> 
> Quick Reading.
> 
> 
> -- 
> Martin
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution



More information about the swift-evolution mailing list