honza dvorsky · honza dvorsky @czechboy0 honzadvorsky.com 29.09.2016. swift ... server-side swift...
TRANSCRIPT
![Page 1: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/1.jpg)
![Page 2: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/2.jpg)
HONZA DVORSKY@czechboy0
honzadvorsky.com
29.09.2016
![Page 3: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/3.jpg)
Swift• created by Apple
• announced in June 2014
• open sourced December 2015
• Swift 3.0 - September 2016
![Page 4: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/4.jpg)
Swift Package Manager
SwiftPM
![Page 5: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/5.jpg)
• an iOS/macOS developer
• backend developer
• an Android developer
• interested in what Apple sees as the future of programming
Listen carefully if you’re…
![Page 6: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/6.jpg)
• introduction to SwiftPM
• demo
• advanced topics
Agenda
![Page 7: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/7.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
![Page 8: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/8.jpg)
• dependency manager
• build tool
• test tool
SwiftPM is a
![Page 9: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/9.jpg)
• command line based
• cross-platform (macOS, Linux)
• decentralized
• opinionated
• convention over configuration
SwiftPM is
![Page 10: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/10.jpg)
• swift.org/package-manager
• github.com/apple/swift-package-manager
• Mailing list: swift-build-dev
• Slack: https://swift-package-manager.herokuapp.com
Where to learn more about it
![Page 11: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/11.jpg)
Swift Package Manager
![Page 12: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/12.jpg)
Swift Package Manager
![Page 13: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/13.jpg)
• is a folder
• Package.swift
• source files
• contains modules
Package
![Page 14: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/14.jpg)
• collection of source files (e.g. .swift files)
• build instructions (e.g. “build as a library”)
• e.g. Foundation, XCTest, Dispatch, …
Module
![Page 15: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/15.jpg)
Example Package: Environment
• 1 library module
• 1 test module
![Page 16: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/16.jpg)
“I already use CocoaPods/Carthage, is this just another dependency manager?”
— you
![Page 17: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/17.jpg)
“I already support CocoaPods, how can I support SwiftPM?”
— you
![Page 18: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/18.jpg)
• https://github.com/neonichu/schoutedenapus
• converts CocoaPods Spec to Package.swift
• helpful starting point for existing projects
CocoaPods -> SwiftPM
![Page 19: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/19.jpg)
“Why should i support SwiftPM?”
— you
![Page 20: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/20.jpg)
• >3500 SwiftPM packages on GitHub
• stats: github.com/czechboy0/swiftpm-packages-statistics
• server-side Swift community
• models, parsers, networking
• Foundation, XCTest, Dispatch available on macOS, Ubuntu
SwiftPM Adopters
![Page 21: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/21.jpg)
• apple/swift port to Android Pull Request
• Getting Started with Swift on Android
• How we put an app in the Android Play Store using Swift
• Google considering Swift for Android
Swift on Android
![Page 22: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/22.jpg)
• Xcode 8
• part of Swift 3 toolchains (swift.org/download)
• swiftenv: github.com/kylef/swiftenv
Installing SwiftPM
![Page 23: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/23.jpg)
Getting our 🙌 dirty
![Page 24: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/24.jpg)
1. mDevTool
1.1.extension on String to prepend “mDev” (“Talk” -> “mDevTalk”)
1.2.command line tool to use (1)
2. mDevServer
2.1.Swift server to generate HTML template using (1)
Demo
![Page 25: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/25.jpg)
To Xcode!
![Page 26: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/26.jpg)
Back To Slides!
![Page 27: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/27.jpg)
• no need to run Linux locally
• scales to more platforms in the future (Linux flavors, Windows, Android)
• free for OSS projects
• example: Environment
Testing with Travis CI
.travis.yml in Environment
![Page 28: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/28.jpg)
• established:
• CocoaPods Search
• new:
• Swift Package Catalog: swiftpkgs.ng.bluemix.net
• libraries.io
• Twitter, GitHub
Package discovery
![Page 29: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/29.jpg)
• Vapor: vapor.codes
• IBM: github.com/IBM-Swift
• Zewo: zewo.io
• Open Swift: github.com/open-swift
• many more
Server-side Swift community
![Page 30: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/30.jpg)
Advanced 📦
![Page 31: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/31.jpg)
Swift Package Manager
![Page 32: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/32.jpg)
• Swift
• C
• Objective-C
• C++
• Objective-C++
Languages supported
![Page 33: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/33.jpg)
• swift build
• swift test
• swift package
SwiftPM commands
![Page 34: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/34.jpg)
swift build
![Page 35: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/35.jpg)
swift test
![Page 36: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/36.jpg)
swift package
![Page 37: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/37.jpg)
• 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
Package
![Page 38: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/38.jpg)
• using system libraries (e.g. openssl, curl) in SwiftPM
• modulemap
System module
• 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/
![Page 39: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/39.jpg)
ModulesImplicit
Explicit
![Page 40: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/40.jpg)
Dependencies
![Page 41: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/41.jpg)
swift package show-dependencies
![Page 43: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/43.jpg)
![Page 44: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/44.jpg)
• 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
• SE-0129 Test Naming Conventions
• SE-0135 Support for Differentiating Packages by Swift version
SwiftPM Evolution
![Page 45: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/45.jpg)
• Deeper Xcode integration
• better iOS/watchOS/tvOS support
• “you tell me”
Missing features
![Page 46: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/46.jpg)
https://realm.io/news/tryswift-jesse-squires-contributing-open-source-swift/
Contributing to OSS Swift
![Page 47: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/47.jpg)
• start reading the mailing list
• read documentation, source code
• join the Slack
• follow people on Twitter and GitHub
Getting Involved 💙
![Page 48: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/48.jpg)
• Honza Dvorsky
• @czechboy0
• honzadvorsky.com
• slides: https://honzadvorsky.com/articles/2016-09-29-19-00-mdevtalk_swift_package_manager
👋
![Page 49: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager](https://reader036.vdocuments.mx/reader036/viewer/2022062602/5ed2f49c3e92a05e0d15d775/html5/thumbnails/49.jpg)
WWW.MDEVTALK.CZ
mdevtalk