Heads up... You're reading this book for free, with parts of this chapter shown beyond this point astext.
You can unlock the rest of this book, and our entire catalogue of books and videos, with a raywenderlich.com Professional subscription.
Tanner is an American software engineer based in New York City. He started programming in elementary school and went on to study Computer Science at New York University. Tanner created Vapor in 2016 and now works full time maintaining the core framework and the dozens of packages around it.
Connect with Tanner
You are the creator of Vapor, a very popular web framework. Tell us, how does Swift, a language originally conceived for a mobile platform, perform at scale for web development?
Swift is a wonderful language for web development. It strikes a unique balance between simplicity, safety, and performance that set it apart from other popular languages in the field. If you compare Swift to interpreted languages like PHP, Python, and Ruby, its performance will be unmatched. This is one of the huge benefits of being a compiled language. When you compare Swift to other compiled languages, like Java, Go, and C#, performance is more evenly matched, but Swift’s expressive syntax and advanced type system shine. The ecosystem is still very young though and has its rough edges. We’re definitely in this one for the long haul.
JetBrains is also experimenting as well with Kotlin/Native. What are your thoughts on cross-platform development? Will there ever be a Holy Grail that lets you develop once, and deploy anywhere?
I think there is room for code sharing—libraries and frameworks written in Swift or Kotlin that can be shared between mobile and backend projects, for example. However, I don’t think there will ever be a good one-size-fits-all solution to developing for different platforms. In my opinion, a much better approach is to use the best tool for a given job. I think this is a big reason why the micro-service pattern has become so popular lately. Backend teams that utilize multiple frameworks and languages to solve problems can pick and choose the best tool for each situation.
How do you keep an open-source project successful at scale?
I think the main key to success in open source is embracing the community. This is something Vapor has prioritized since day one, and we are constantly trying to improve. A few examples come to mind. First, giving the project a simple, open license, like the MIT license. Creating a space where people interested in the project can communicate freely is key, as well as discussing the project’s roadmap openly and always asking for input. You also want to make it as easy as possible to report bugs, request features, or submit code. And when someone does contribute, it’s important to reward them with appreciation and status.