I'm a software developer based in the UK. I am blogging regularly about software development & Apple

Getting ready for Kitura

A few weeks ago I ran into some problems with Kitura. Last weekend I sat down to address those problems. Well, let me tell you little bit about them.

Kitura is composed of a set of various frameworks. They are all written in Swift and they all rely on the package manager. Since Swift is a language in active development, changes in the language generate new compiler versions to incorporate those changes. Hence lately we have seen quite a few of those. Put that all together and you end up with various frameworks versions that depend on various compiler versions. This in itself is not a problem since the package manager's configuration file allows you to define a specific version number to use for each dependency.  However it becomes a problem if the Swift sample code you are dealing with is slightly outdated and none of the versions have been maintained e.g. IBM's Kitura Starter Bluemix.

So ok, you might say then don't just use the sample code and start with a simple hello-world program. That can't be so difficult, right? The problem you might encounter here lies not with the sample app itself but with Kitura, which relies on libdispatch. So you start to download libdispatch only to discover that libdispatch doesn't compile that easily. The problem here is that it has a dependency to a specific clang compiler version. So it's dependency hell all over again.

You can't just download a Docker image from IBM's GitHub Kitura page and expect it to work. It's outdated! So you have to figure out for all your ingredients (Swift Compiler, Kitura, libdispatch and Clang compiler) which version is playing nicely along with all the other components.

For Swift Compiler version DEVELOPMENT-SNAPSHOT-2016-07-25-a it is

Once you know that, you only have to configure it appropriately and ready you are for your first Kitura web app.

So to get started with Kitura, the simplest approach is indeed a Docker image. Since IBM's ibmcom/kitura-ubuntu:latest Docker image is as I said not usable at all (refering to the latest tag as of 13/08/2016) I created a new one based on Ubuntu 14.04 which you can find here. The image contains everything to play around with Kitura. What it doesn't contain is sample code. If you prefer to start with some sample code then I got you covered as well. Just pull this image here




TicTacToe, An exercise in Swift

Debugging UICollectionview performance issues