Getting Started With Contributing to the Vienna iOS App For WordPress

During his WordCamp Europe 2016 presentation on the WP REST API, Joe Hoyle introduced the Vienna iOS app for WordPress (at around 40:30).

Vienna is a native app for iOS, that allows you to publish content to your WordPress sites. In opposition to the “official” WordPress app, Vienna is entirely focused on self-hosted installations. The software is written in JavaScript, using Redux, and React Native. It uses the WordPress REST API to interact with the WordPress sites.

As such I consider it the perfect project to level up your development skills, while giving back to the WordPress ecosystem–and you get a great app to use as well!

There’s nothing to worry about if you’re not proficient with writing large scale JavaScript apps, or have never used Redux or React (Native). If you have ever written any code, you’ve got all the skills you need to contribute.

Even if you are not a developer, just using the app, and providing feedback, bug reports, and feature requests is going to be a big help.

Setting Up The Local Development Tools

Vienna is an iOS app, so you need XCode 7 or higher to build the project. This means that you need to run a recent version of MacOS X.

You also need Node, which is a JavaScript run time. Along with that, you also need NPM, which is a package manager for Node modules.

You’ll also need a WordPress site to connect to, in order to test the app. You can find instructions for setting this up in the Vienna readme.

Choosing An Editor

The open source Atom editor built by Github is a good recommendation. Facebook is providing a package for this editor called Nuclide that provides support for React Native.

Learning Modern JavaScript

Vienna is written in ECMAScript6, so if you’re not familiar with the features added, I’d recommend reading through the ES6 Overview in 350 Bullet Points article on the Pony Foo site. There are lots of further articles on the subject, that cover certain ES6 features in depth.

The code in Vienna is written in the functional programming paradigm. This approach differs in certain fundamental ways from procedural programming, so it might be confusing at first.

I recommend watching A Gentle Introduction to Functional JavaScript on Crowdcast, and read through the associated documentation on Chet Harrison’s Github.

Learning React and React Native

The interface of the Vienna app is written in React Native, which is based on React.

I’d recommend learning React first, and then using the React Native documentation to learn the specifics of iOS development.

React.js Introduction For People Who Know Just Enough jQuery To Get By and Learn Raw React — no JSX, no Flux, no ES6, no Webpack… are both great free resources to get you started.

For those who want to go further, I’d recommend Wes Bos’ paid React for Beginners video course, which goes into a lot more detail.

Learning Redux

Vienna uses Redux to manage the state of the app. The Redux documentation has a very short introduction that teaches you everything you need to know to get started.

Wes Bos also offers a free video course that is going to get you comfortable with using Redux.


The Vienna app is still in its infancy, so there’s lots of opportunity to contribute, and make the app better. The skills needed to make changes to the code base can be learned quickly, and you can improve them as you go along.

See you on Github!