AppForce1: News and info for iOS app developers
Third party dependencies
Shoutout to Jason Zurita for his article https://jasonzurita.com/the-hidden-cost-of-dependencies/
- What are third party dependencies?
- Explain the distinction between:
- 1st party, for iOS devs, anything in the iOS SDK.
- 2nd party dependencies, stuff integration from service provider you rely on. (You could call this a subset of 3rd party dependencies you really can not do without.)
- 3rd party, stuff you integrate because it saves your time or it is convenient
- Explain the distinction between:
- Risks with 3rd party code
- Complexity (thank you Jason)
- Managing versions
- Try updating a dependency in a Node’js codebase.
- Build times, more code == more waiting
- 3rd party code problems are often now your problems
- OSS frameworks only have a guarantee until the door
- 3rd party code often intertwines deeply with your implementation if you are not very careful
- REALM or other data serialization libs are a great example
- Security
- You choose to adopt all this third party code including all its warts, problems, issues and hidden problems.
- Enterprises often require a 100 percent review of any third party code. There is a reason big corps at some point try and loose as many dependencies.
- You choose to adopt all this third party code including all its warts, problems, issues and hidden problems.
- Third party dependant developer syndrome (this is a fun one)
- Not invented here syndrome should also be avoided though
- Complexity (thank you Jason)
- How to find third party dependencies
- CocoaPods index.
- Swift Package Index, mention we sponsor them. Only mention this once briefly
- We also sponsor Tuist
- Github and Google search
- Licensing an the app store
- GPL is “difficult”
- An Apache or MIT type license is reasonable
- If you are unsure, read up a bit on licenses. https://opensource.org/licenses
- How to choose to adopt a dependency
- Just link it won’t do
- Review the dependency and project health on Github.
- What quality checks does the project have in place?
- How does the support by the dev(s) look to you?
- Would you pay for this feature set if it wasn’t available for free?
- If yes, WHY ARE YOU NOT SPONSORING THIS PROJECT?
- How to deal with dependencies in the long run?
- Often you have to adopt the whole dependency as a whole at some point.
- Openly: Publish pull requests, maybe even become a maintainer.
- Privately: Take the source, snip out anything you do not need. Make it your own... But always respect the original license terms.
- Say goodbye
- Often you have to adopt the whole dependency as a whole at some point.
Please rate me on Apple Podcasts.
Send me feedback on SpeakPipe
Or contact me through twitter
My book: Being a Lead Software Developer
Runway
Put your mobile releases on autopilot and keep the whole team in sync throughout.
Lead Software Developer
Learn best practices for being a great lead software developer.