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

Roadmap Q4 2019 - Q1 2020 #2890

Closed
tmspzz opened this issue Oct 10, 2019 · 17 comments
Closed

Roadmap Q4 2019 - Q1 2020 #2890

tmspzz opened this issue Oct 10, 2019 · 17 comments

Comments

@tmspzz
Copy link
Member

tmspzz commented Oct 10, 2019

Hi all,

I am opening this issue to gather your feedback on a tentative roadmap that I've put together with the help of @Carthage/carthage

This roadmap will try to address the most pressing issues that Carthage is currently facing, and at the same time add clarity on where we think Carthage should be heading.

To my knowledge there wasn't a formal roadmap so far, and while Carthage has done very well up to this point I think this can help to give direction to the community of contributors. Also bare in mind that the success of the roadmap is dependent on your help as well.

I encourage you all to discuss the roadmap in a civil manner and provide as much feedback as you can. Also if you would like to help with the work on carthage on a regual basis or have means to support others to do so reach out to me on twitter @tmpz

Roadmap Q4 2019 - Q1 2020

So far Carthage has tried (🤕) to prefer stability of maintaining existing features against hastily adding (and possibly endangering/violating assumptions of previous features).
We think it's important to continue in this direction in an ecosystem where cloud CI (travis, circle, bitrise, github...) will swap major Carthage versions with no prompt.

That said we're not against adding new features as long as the behavior of existing ones is not changed. With that in mind there are the goals and low hanging features we have identified.

Goals

  • Open http://carthage.github.io/ to host this roadmap. This will add transparency and give direction to the community of contributors
  • Support XCFrameworks #2801, #2881, #2820 (Discussed further down)
  • Support Catalyst #2801, #2868 (Discussed further down)
  • Implement pubgrub resolver (Discussed further down)
  • Improve the amount of documentation with per-use case scenarios

Support XCFrameworks

Supporting XCFrameworks is probably the most important new feature we should add. We think support can be added in either of two ways or both.

Per platform packing #2801, #2881

Allow packing per platform (i.e iOS + simulator). #2801
Many frameworks have different targets per platform so they won't be producing artifacts for other platforms.

Pack all platforms #2820

Allow packing all platforms (i.e iOS + TvOS + MacOS ...). Some frameworks have a universal target that supports all platforms.
In this case we want to offer both options of per platform packing and packing all platforms in one XCFramework.

Support Catalyst

Supporting Catalyst is just as important as XCFrameworks support. Here as well two different approaches are possible. Implicit support by build settings or explicit support by adding a new --platform. We feel support should be implicit rather that explicit, with explicit opt-out (e.g --no-catalyst)

Implement new resolver

While this is a bit of the stretch, there are some well known issues with both the plain old resolver and the --new-resolver that can be frustrating. To improve the current situation we think the way forward is to finishing resolver diagnostics #2519 and possibly implement Dart's Pubgrub solver https://medium.com/@nex3/pubgrub-2fb6470504f and https://github.com/dart-lang/pub/blob/master/doc/solver.md

Some of you might be thinking why not just use the swift-pm solver? That's is certainly a good idea but depending on swift pm in the past months have been quite painful and cause a few problems that we would rather avoid for the time being. That said, this still remains an option for the future.

@giginet
Copy link
Member

giginet commented Oct 10, 2019

💪

@dreampiggy
Copy link

dreampiggy commented Oct 11, 2019

I’m the maintainer of SDWebImage, and Catalyst support is important for our users. On the 5.2.0 version we release Catalyst support on both CocoaPods/SwiftPM, but only without Carthage.

Personal idea:

With the release of Xcode 11, I guess that SwiftPM is for future, but not Carthage.

Carthage for me, the adcantage is that just using Xcode Project, which menas I can distribute open source project contains Assembly Language, C++ mixed in. Beyond limitation of that DSL like SwiftPM/CocoaPods. I find it really hard to port huge C++ codec library like ffmepg/libaom to CocoaPods, easy with Xcode and Carthage.

Currently SwiftPM still lack of Resource DSL Syntax to include any resourece other than code. And without support for dynamic libarary, etc. But I think we can hope for the future Xcode 12 with better SwiftPM, that is the time currect massive package manager on Cocoa/Cocoa Touch development will be unified. (Or more massive ? 😼)

@DavidBrunow
Copy link
Contributor

What are the longer-term goals of Carthage? I've seen a posting on the Swift forums about integrating more with the Swift Package Manager, is that part of the plan?

For additional context / information: the current plan for the organization I work for is to use Carthage until the Swift Package Manager can meet our needs. Currently the only known issue holding us back from using the Swift Package Manager is pre-built binaries but we might also be limited by the ability to package our resources with our frameworks.

@tmspzz
Copy link
Member Author

tmspzz commented Oct 11, 2019

What are the longer-term goals of Carthage? I've seen a posting on the Swift forums about integrating more with the Swift Package Manager, is that part of the plan?

Aligning with SwiftPM to the point of making use of libSwiftPM (like we did in the past few releases) is certainly a goal but, as I mentioned, there have been issues related to continuing with that. We'll certainly should go back to it as some point.

For additional context / information: the current plan for the organization I work for is to use Carthage until the Swift Package Manager can meet our needs.

I think this is everyone's expectation and it's perfectly fine.

@kenji21
Copy link
Contributor

kenji21 commented Oct 18, 2019

Maybe picking bug fixes from the https://github.com/nsoperations/Carthage fork might also be added to this roadmap

@Aranoledur
Copy link
Contributor

  • I'm for the Pack all platforms option for XCFramework, if I can specify platforms that I need. Because building platforms that I don't need can be time-consuming.
  • I personally think that adding a new --platform for macCatalys is a way to go. Because it looks like a new platform, acts as a new platform. I personally always specify a platform for bootstrap/build commands
  • As for resolver, not sure what are the problems. never experienced any

@jafara

This comment has been minimized.

@mofarajmandi
Copy link

Thanks for your hard work maintaining Carthage. The roadmap looks great for the most part, it would be useful if the the following PR (#2774 ) could also be added to the Goals, in order to provide support for private binaries. If not, please let us know what are the outstanding concerns and how it can be mitigated.

@mendesbarreto
Copy link

Hello @Aranoledur this issue #2883 shows some current resolver problems, I don't know for sure but it seems the Pubgrub solver could help with something.

@Cyberbeni
Copy link

I think this roadmap could be followed more easily with the "Projects" feature of GitHub

@stale stale bot added the stale label Feb 14, 2020
@Carthage Carthage deleted a comment from stale bot Feb 14, 2020
@stale stale bot removed the stale label Feb 14, 2020
@stale
Copy link

stale bot commented Mar 16, 2020

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the stale label Mar 16, 2020
@tmspzz tmspzz removed the stale label Mar 16, 2020
@chriscombs
Copy link

Any updates on this? Is there a release plan yet?

@stale stale bot added the stale label Apr 25, 2020
@Carthage Carthage deleted a comment from stale bot Apr 25, 2020
@stale stale bot removed the stale label Apr 25, 2020
@freak4pc
Copy link

I'm not a Carthage user myself but wanted to applaud for the transparency 👏

@CraigSiemens
Copy link

We think it's important to continue in this direction in an ecosystem where cloud CI (travis, circle, bitrise, github...) will swap major Carthage versions with no prompt.

I think part of the issue is since the version number is 0.x.x, CI services think it's a minor change based on semver and expect things won't break. It might be good to find out how other dependency managers avoid this.

@stale
Copy link

stale bot commented Jun 21, 2020

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@softsan
Copy link

softsan commented May 26, 2021

Twilio voice still required carthage to support .xcframework. So is it still in pipeline? Any ETA?

@jedisct1
Copy link

Same for libsodium :/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

16 participants