[Pre-Pitch] Adding mixed language support in SwiftPM

Hi everyone,

In Firebase we have many Objective-C libraries and some Swift extensions that add APIs for features like Codable, async/await (where it doesn't auto-translate), and SwiftUI integrations. CocoaPods supports mixed languages but SwiftPM does not, so Firebase SDKs need to provide two separate modules (ex. FirebaseRemoteConfig and FirebaseRemoteConfigSwift). This results in a poor user experience and a potential doubling of the number of frameworks to manage (one existing Obj-C module and a Swift module).

We're investigating the feasibility of adding mixed language support to SwiftPM in order to alleviate these issues and wanted to check in beforehand:

  • Is this something that would be accepted as a contribution?
  • Have there been any previous attempts to add support that we should be aware of?
  • Any hidden complexities or things we should know before digging in?
  • Is it feasible to add cross-language support without touching Xcode?
  • Would this be helpful to others in the community as well?

We haven't taken too close a look at what it would do to the Package Manifest's API surface, if anything, but will do so once we have a better idea of the scope of the project.

Thanks,
Ryan from the Firebase team

7 Likes