An Open Source Pulse Check at Zalando for 2017
Zalando depends on open source technologies to exist, so where are we at with some of our projects?
Zalando depends on open source technologies to exist. Take a look at our Tech Radar and you’ll see PostgreSQL, Kafka, React, and many other household-name projects listed there. We also depend heavily on our own open source software — and in the last year, a growing number of developers and teams from other companies have begun to do the same. Many of our projects are now co-developed by Zalandos and talented devs from RedHat, Mozilla, and more.
Here’s a quick pulse check on the open source projects we’ve built and are passionate about, which have also garnered some great feedback and support from the wider community.
In mid 2016 we were lucky enough to sit down with Swagger creator Tony Tam, who is a big fan of Connexion, our Swagger/OpenAPI First framework for Python on top of Flask. “There have been a few efforts to do a true design-first implementation of REST APIs and Zalando has been right on the leading edge of that movement”, says Tam. “It has been a delight for the development community to see a large retailer putting efforts into an open source framework.”
Tam’s praise has not gone unnoticed, with Connexion remaining one of our strongest open source projects to date with an active group of regular contributors. We’re currently looking for help with additional ways to handle OAuth 2 authentications, overriding default validation error messages, and documentation for response handling, passing arguments to functions, and so on. A Waffle Board for issues has been set up to show a better overview and further information.
Our open source dark horse comes at you in the form of SwiftMonkey, a framework for performing randomised UI testing of iOS apps. It also contains a related framework called SwiftMonkeyPaws that provides a visualization of the generated events, increasing the usefulness of your testing. Released in November 2016, the framework picked up its first external pull request not long after, and has surpassed 650 GitHub stars.
We’re incredibly proud of the grassroots support SwiftMonkey has earned, which is a testament to creator Dag Ågren’s efforts around essential open source resources: A great README, contributor guidelines, and implementation of the Contributor Covenant.
An HTTP router, Skipper has been built with Go and acts as a reverse proxy with support for custom route definitions. It can also be used out of the box or have custom filters and predicates added. Largely inspired by Vulcand, it’s a core component of Zalando’s Project Mosaic, a set of services and libraries that support a microservice-style architecture for large scale websites, or what we like to call microservices for the frontend.
What does Skipper do? It identifies routes based on a request’s properties, such as path, method, host and headers, then routes each request to the configured server endpoint. It also allows the modification of requests and responds with filters that are independently configured for each route. To get started, all you need is the latest version of Go… so go!
We’ve also recently begun using Skipper as an ingress for Kubernetes.
Patroni is the Zalando template that allows you to create your own customized, high availability solution using Python and – for maximum accessibility – a distributed configuration store like ZooKeeper, etcd or Consul. A recent development in the project will be exciting for Kubernetes users: Patroni is currently being reworked to be useful for teams running Kubernetes on top of Google Compute Engine, with a Helm Chart available that lets users deploy a five-node Patroni cluster using a Kubernetes PetSet.
Thorough documentation? Check. Easily navigable? Check again. Patroni’s maintainers have been sure to provide the wider community with as much information and supporting resources for their project and associated technologies as possible, making this repository a stalwart in our open source catalogue. Simple, easy-to-grasp contributing guidelines are also available, along with incredibly detailed release notes for past and current versions.
Looking for a lightweight utility library for writing microservices in Clojure, with support for Swagger and OAuth? Look no further than Friboo. Another project following the API First approach, our Zalando Clojure community maintain this project with gusto, allowing you to first define your API in a portable, language-agnostic format, and then implement it (with the help of swagger1st).
Friboo also has a great Leiningen template to make using it simpler, with the service focusing on project automation and declarative configuration. Friboo’s Hystrix dashboard is another ace feature, in the case that you have compliance requirements to follow. Hystrix, as many might know, is a Netflix creation.
Maintainers are ready to welcome new contributors with open arms. Check out the Issues Tracker to see where your input would be welcomed.
To bring this roundup full circle we have Grafter, a library to configure and wire Scala applications with specs2 creator Eric Torreborre at the heart of the project. There are many libraries or approaches for going about dependency injection in Scala. Grafter goes back to basics on dependency injection by just using constructor injection: No reflection, no xml, no annotations, no inheritance or self-types.
Constructive feedback is incredibly welcomed on the project. How is it better or worse than other libraries? Is the core model more approachable than other libraries? What could be improved? Another example of first-class documentation, Grafter lays out step-by-step application configuration, the creation of your first component, as well as making singletons. For interested Scala-heads, open issues for the library can be found here.
Zalando’s open source culture continues to evolve, with much of our learnings reflected in our how-to guidelines. Get in touch on Twitter with @LauritaApplez to chat all things open source and contribute today!