Skip to content
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

Clarification on Carthage requirement? #17

Closed
MaxDesiatov opened this issue Apr 7, 2019 · 2 comments
Closed

Clarification on Carthage requirement? #17

MaxDesiatov opened this issue Apr 7, 2019 · 2 comments
Labels
question Further information is requested

Comments

@MaxDesiatov
Copy link

MaxDesiatov commented Apr 7, 2019

HI @Dschee, thank you for this great project!

I'm a bit confused by Carthage being a requirement stated in README. As far as I understand, SwiftPM is used for dependency resolution, but most of the explanation in README focused on comparing Accio to Carthage. My understanding was that Accio is able to replace Carthage fully in a given project?

Hope this can be clarified, I'd be happy to submit a PR that makes this clear in the README as soon as I have a better understanding of this.

@Jeehut
Copy link
Contributor

Jeehut commented Apr 8, 2019

Hi @MaxDesiatov,

as mentioned in the README in the Adding Dependencies section in point 1, Accio uses Carthage's build command to make sure we have wide compatibility today.

The alternative would have been to use xcodebuild directly and in the middle term that might be added and tested out and once it's proved to work well in many projects, we might drop usage of Carthage and use Xcode directly. But we opted for Carthage's build command to have a fail safe and proven to work way of starting this project out. This way if a project is compatible with Carthage and has a Package.swift manifest, it's already compatible with Accio – this makes things easier for everybody.

Note that we don't hate Carthage or anything like that, we just couldn't get some features working using Carthage and thought those features were so important that we should start a new dependency manager. Then, once decided to make a new one, we thought it would be the tedious for the community to switch to a dependency manager to only move on to SwiftPM two years later. That's why we thought about it from the other side: What if we could provide the missing parts for SwiftPM and drop our additions once get implemented right within SwiftPM?

Using this approach, we tried to use SwiftPM directly to build the frameworks, but it was clear that this didn't work, either the builds failed on SwiftPM side or Xcode didn't accept the build products. We even tried doing dependency resolving and having an own manifest to be more independent, but that approach failed even for our own projects (you can find it's leftovers here).

So, Accio basically is a very pragmatic approach to get as much as possible from SwiftPM to work for iOS/tvOS/macOS/watchOS projects and using Carthage's build command (and only that) for compatibility purposes. We could drop that easily though in the short term by replicating the used parts of Carthage within Accio – I just created an issue to track that: #18.

I hope I could answer your question.

@Jeehut Jeehut added the question Further information is requested label Apr 8, 2019
@Jeehut
Copy link
Contributor

Jeehut commented Apr 9, 2019

Since I got an upvote from @MaxDesiatov without further questions, I consider this question answered. So I'm closing this issue.

@Jeehut Jeehut closed this as completed Apr 9, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants