![Page 1: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/1.jpg)
SWIFT PACKAGE MANAGER
HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016
![Page 2: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/2.jpg)
2
![Page 3: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/3.jpg)
Swift Package Manager
SwiftPM
3
![Page 4: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/4.jpg)
CONTRIBUTING TO OPEN SOURCE SWIFT
https://realm.io/news/tryswift-jesse-squires-contributing-open-source-swift/
4
![Page 5: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/5.jpg)
SWIFT PACKAGE MANAGER
AGENDA
▸ introduction to SwiftPM
▸ creating a simple package
▸ advanced topics
5
![Page 6: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/6.jpg)
[SwiftPM] is a tool for managing the distribution of Swift code. It’s integrated with the Swift build system to automate the process of downloading, compiling and linking dependencies.
swift.org/package-manager
SWIFT PACKAGE MANAGER 6
![Page 7: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/7.jpg)
SwiftPM is a▸ dependency manager
▸ build tool
▸ test tool
7
![Page 8: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/8.jpg)
SwiftPM is▸ command line based
▸ cross-platform (macOS, Linux)
▸ decentralized
▸ opinionated
▸ convention over configuration
8
![Page 9: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/9.jpg)
Where to learn more about it▸ swift.org/package-manager
▸ github.com/apple/swift-package-manager
▸ Mailing list: swift-build-dev
▸ Slack: https://swift-package-manager.herokuapp.com
9
![Page 10: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/10.jpg)
Swift Package Manager
10
![Page 11: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/11.jpg)
Swift Package Manager
11
![Page 12: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/12.jpg)
Package▸ is a folder
▸ Package.swift
▸ source files
12
![Page 13: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/13.jpg)
Example package: Environment
13
▸ 1 library module
▸ 1 test module
![Page 14: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/14.jpg)
“I ALREADY USE COCOAPODS/CARTHAGE, IS THIS JUST ANOTHER DEPENDENCY MANAGER?”
you
14
![Page 15: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/15.jpg)
“I ALREADY SUPPORT COCOAPODS, HOW CAN I SUPPORT SWIFTPM?”
you
15
![Page 16: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/16.jpg)
CocoaPods -> SwiftPM▸ https://github.com/neonichu/schoutedenapus
▸ converts CocoaPods Spec to Package.swift
▸ helpful starting point for existing projects
16
![Page 17: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/17.jpg)
“WHY SHOULD I SUPPORT SWIFTPM?”
you
17
![Page 18: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/18.jpg)
SwiftPM adopters▸ >2000 SwiftPM packages on GitHub
▸ stats: github.com/czechboy0/swiftpm-packages-statistics
▸ server-side Swift community
▸ models, parsers, networking
▸ Foundation is available
18
![Page 19: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/19.jpg)
Installing SwiftPM▸ part of Swift 3 toolchains
▸ swift.org/download
▸ Xcode 8
▸ swiftenv: github.com/kylef/swiftenv
19
![Page 20: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/20.jpg)
GETTING OUR 🙌 DIRTY
![Page 21: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/21.jpg)
Testing (e.g. Travis)
▸ no need to run Linux locally
▸ scales to more platforms in the future (Linux flavors, Windows, Android)
▸ free for OSS projects
▸ example: Jay
![Page 22: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/22.jpg)
Package discovery▸ established: CocoaPods Search
▸ new:
▸ Swift Package Catalog: swiftpkgs.ng.bluemix.net
▸ Swift Modules: swiftmodules.com
▸ Twitter, GitHub
22
![Page 23: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/23.jpg)
Server-side Swift community▸ Zewo: zewo.io
▸ Qutheory: qutheory.io
▸ Open Swift: github.com/open-swift
▸ IBM: github.com/IBM-Swift
▸ many more
23
![Page 24: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/24.jpg)
ADVANCED 📦
![Page 25: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/25.jpg)
Languages supported▸ Swift
▸ C
▸ Objective-C
▸ C++
▸ Objective-C++
25
![Page 26: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/26.jpg)
SwiftPM Commands▸ swift build
▸ swift test
▸ swift package
26
![Page 27: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/27.jpg)
swift build
![Page 28: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/28.jpg)
swift test
![Page 29: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/29.jpg)
swift package
![Page 30: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/30.jpg)
Package▸ collection of modules (targets)
▸ module is a collection of sources
▸ module types
▸ library (source files, no main.swift)
▸ executable (source files, 1 main.swift)
▸ system module
30
![Page 31: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/31.jpg)
System module▸ using system libraries (e.g. openssl, curl) in SwiftPM
▸ modulemap
▸ how to use:
▸ http://ankit.im/swift/2016/04/06/compiling-and-interpolating-C-using-swift-package-manager/
▸ http://ankit.im/swift/2016/05/21/creating-objc-cpp-packages-with-swift-package-manager/
31
![Page 32: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/32.jpg)
Modules
32
implicit
explicit
![Page 33: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/33.jpg)
Dependencies
33
![Page 34: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/34.jpg)
swift package show-dependencies
![Page 35: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/35.jpg)
![Page 36: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/36.jpg)
SwiftPM Evolution▸ Community Proposal
▸ SE-0019 Package Manager Testing
▸ SE-0038 C Language Target Support
▸ SE-0063 System Module Search Paths
▸ SE-0082 Editable Packages
▸ SE-0085 Command Names
36
![Page 37: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/37.jpg)
Missing features▸ Xcode integration
▸ better iOS/watchOS/tvOS support
▸ “you tell me”
37
![Page 38: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/38.jpg)
Getting Involved 💙▸ start reading the mailing list
▸ read documentation, source code
▸ join the Slack
▸ follow people on Twitter and GitHub
38
![Page 39: HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon … · SWIFT PACKAGE MANAGER HONZA DVORSKY @czechboy0 honzadvorsky.com NSLondon 30.06.2016](https://reader033.vdocuments.site/reader033/viewer/2022053006/5f09b6a67e708231d4282937/html5/thumbnails/39.jpg)
▸ Honza Dvorsky
▸ @czechboy0
▸ honzadvorsky.com
▸ slides:
▸ https://honzadvorsky.com/articles/2016-06-30-19-00-nslondon_swift_package_manager/
👋
39