Welcome to the SWIFT IS OPEN SOURCE EDITION 🍾💥🎉👊👯🍦🐥🎂🎊💃!!!!!!!!
Thank you Apple team for all your hard work and going above and beyond in open sourcing Swift 👏👏👏
"Today is the result of an amazing amount of work by dedicated and phenomenal teams of people across Apple. Proud to be part of the team!" - @clattner_llvm
Here are some cool facts about the new and exciting open source Swift!
- Swift has already surpassed Go, Ruby, Rust, PHP, Scala, and every other language on Github - it's #1!!!
- 247 Pull Requests have been merged! So keep contributing! The team is listening! (even at 10pm on a Saturday)
- Apple has released 17! Open Source Libraries, including Foundation, a Swift Package Manager, the Swift Evolution Roadmap, Code Examples, and more!
I cannot be more excited to see Swift evolve in the next few months (and to hear about it at try! Swift in March!). There is already so much awesomeness from this amazing community in the past few days, I've created a custom newsletter just for this week.
Happy Swift Learning!
On Open Source
How To Contribute
Love these ideas for contributing beyond a typo fix:
- Search for FIXME in the code base and make the fix - @ayanonagon
- Add more Unit Tests (something I wrote down as my personal strategy) - @KostiaKoval
- Fix bugs! Yes, Swift bugs are tracked publicly via Jira!
- As many have noticed, the Foundation Project has a lot of
NSUnimplemented(). Instead of complaining (or worse, laughing about it), contribute to it! The nice things is that it's in Swift - you don't need to know C++. Here is a great example PR from @simjp!
- For larger changes, write a proposal and ask for reviews from the community - amazing example by @ericasadun
The open sourcing of a Package Manager 🎁 built mainly by @mxcl & @mattt was a huge surprise when Swift.org went live. You can view the Swift Package Manager Community Proposal proposal here.
"Package managers play a significant role in modern language ecosystems, and are as varied as the languages for which they are created. We designed the Swift Package Manager to solve the specific challenges of distributing and managing Swift code, drawing upon ideas we've seen from other systems and improving upon some of their shortcomings.
This initial release is just a starting point, and we invite you to help us to build the best tool possible. "
While this is just the start, once the Package Manager gets integrated with Xcode, it could be the official replacement for CocoaPods and Carthage in the longer term. Great discussion from CocoaPods core members here and here.
To use a package, check out Apple's example deck of playing cards package here. The community has already started to add Package support. Here is a curated list of Swift libraries that could be build using the Swift Package Manager. Don't worry though, there is already a library to generate podspecs from Swift packages.
“[Windows support] wasn’t something that in terms of us catalyzing this initial release that we wanted to take on directly,” Federighi told us. “We think Linux and of course our platforms provide a great foundation to get started. But we’re very open to ports to other platforms being contributed to the core project, and certainly given that LLVM, Clang, and LLDB, which are foundational technologies to Swift, are already available, already ported to Windows. I think it’s foreseeable that someone in the community, whether led by Microsoft or others, would be doing that port.” - Craig Federighi
The community is already building! Check these out:
- docker-swift - Docker Container for the Apple's Swift programming language (tweet)
- swift-buildpack - Heroku buildpack for Swift (tweet)
- Partial FreeBSD Support - This provides a non-controversial baseline for FreeBSD support. (tweet)
And here are some bigger projects to watch: