Two years ago Google began developing Syringe, a Swifty Dagger 2-like compile-time dependency injection solution for iOS and Swift. It uses SourceKit to analyze your application and generates wire-up code to tie classes/structures together via initializer injection.
We realize there are other offerings, such as Needle, Cleanse, Weaver and some run-time injection solutions but we built our solution as we felt the performance requirements of large dependency graphs, module support and compile time validation were key requirements for us. When we made the decision to create our solution 2 years ago Cleanse did not appear to have further active development and Needle hadn't been released yet.
Fast forward to today and we have stopped development on Syringe. The demand for such a solution within Google is not materializing as fast as expected even though Syringe is reasonably feature complete if not product complete. We are exploring open sourcing it, but not because we want everyone to use it immediately or that we'll be deeply committed to creating a community around it. Rather we believe there are some novel insights about doing DI in Swift in a truly Swift-y way, including working across modules, multibinding/optional binding and namespace collision solutions, that may help other offerings.
We, Google, are sensitive to our history of open sourcing of things that we have not supported as fully as one would expect. We also do have a history of doing the opposite (Angular, Firebase, etc), but are reluctant to see this project as just another example of the former. The last thing we want to do is have the community conclude ‘Google released it, they must be fully behind it, but they’re not and I’ve already decided to adopt it. Damn you Google’ If there is sufficient interest/demand to use it for what it is, an example of how DI can be done in Swift, we will release it but need some level of input from the community that that would be desirable before doing so. Please provide your feedback on such an approach.