Development Update

By Danny Sung

Created on 2021-05-29

What's been happening so far

I know things have been a bit quiet for a while, but there have been some "behind the scenes" work. Here's an update on some of the things that's been happening:

  • CI improvemnts. We're still trying to make sure our tests are passing. There have been a few changes in the industry, that's lead to some devops work here.

    • DockerHub is now rate limiting requests. Since we test against numerous versions of Swift and multiple platforms, this prevents our CI tests from passing. I've implemented a private Docker registery which should prevent these problems going forward. In addition, we have some more consistency and flexibility to test against multiple Linux distributions.
    • TravisCI has been the standard CI tool for Kitura since it's inception. While TravisCI has deprecated their services, they do still make allowances for open source projects like Kitura to operate for free on There is still a bunch of work to make this transition on our side.
  • The kitura-cli tool was previously written in Go and provided IBM-specific features. Since those features are no longer supported by IBM anyway, I re-wrote the tool in Swift for consistency and to hopefully make things easier to support going forward. Documentation and Getting Started guides still needs to be updated to reflect this.

We're pleased to announce the latest release of Kitura, as well as a new major version of the SwiftyRequest HTTP client. KituraKit, which is built on top of SwiftyRequest, has now been released at version 1.0. Read on for some highlights for each of these releases:

Upcoming Changes

The following are changes that are planned for the near future:

  • NIO will become the default networking stack for Kitura. Currently, Kitura requires an environment varaible be set to support NIO (KITURA_NIO != nil). While this is generally fine for Linux builds, it prevents Kitura from building under Xcode, since Kitura-net does not work for iOS/macOS. Going forward, the logic for this environment variable will be flipped such that:

    • NIO will be enabled if no environment variable is set
    • NIO will be enabled if KITURA_NIO is any value other than 0
    • NIO will be disabled if KITURA_NIO=0
  • Deprecating older versions of Swift.

    • Swift 4.x will no longer be supported
    • Swift 5.0 will no longer be supported
    • Swift 5.1 and above will be supported
    • Note: The NIO project may soon be deprecating Swift versions below 5.2. When this happens, Kitura will follow suite.
  • While in development, these changes will be in master. Those requiring a stable version of Kitura should reference one of the released tags (currently 2.9.200).
  • Once this transition is stable, following semantic versioning principals, we will bump the major version to 3.0.0.

How you can help

If you're interested in contributing to Kitura in any way, get in touch! If you have a particular interest, we'll find a way to accomodate. If not, here's a few ideas:

  • CI maintenance
  • Updating documention
  • Tutorials
  • Helping to answer Issues or evaluate pull requests
  • Converting our website to Publish
  • And of course there's plenty of coding to be done!