We first became aware of the Praekelt Foundation in early 2015, when we discovered Molo, their toolkit for creating 'mobi sites with a community focus'. Molo is based on Wagtail, and we were delighted that our software was playing a small part in enabling sites like B-Wise and Tune Me. A few months later, after a series of Google Hangouts and a breathless meeting in Manhattan, Torchbox and Praekelt announced a partnership on the Free Basics incubator project, and we immediately started talking about the possibility of bringing the Wagtail core developer team together in Praekelt's Cape Town offices.
So last week five developers from the UK (Torchbox), New Zealand (Springload) and Australia (Takeflight) converged on the southern tip of Africa, in one of the world's most beautiful cities. Here's what we worked on:
Wagtail has always supported multilingual sites, but the user experience isn't optimal in many cases. Guided by Milton and Saaed (Praekelt)'s thoughtful workflow for translations in Molo, we've started a new translations branch which
- follows the Wagtail principle of features getting out of the way until you need them
- builds on the workflow modelled by Milton and Saaed, with a UI which handles high numbers of languages
- includes translation support at a low, non-hacky level!
At the same time, Josh (Springload) styled an earlier hook for inserting custom buttons, which removes the requirement to override Wagtail code in Molo, and makes everything look nicer! Tim (Takeflight) is leading on the translations branch, which will need tests, docs and a thorough review. We hope this will be included in Wagtail 1.5, which is currently scheduled to launch in mid-April.
Josh worked with Justin (Praekelt) to define a new set of tooling for developers working on the Wagtail front end. This is a crucial step towards creating a next-generation UI for Wagtail; in particular it paves the way towards a React-based front end. With the last few MB of airport wifi before his 40 hour journey home, Josh shared this first concrete demonstration of what this work will enable: the Wagtail explorer bar reimagined as a React component.
The other part of the front-end rewrite is the creation of an admin API, which the React client will interface with. Karl (Torchbox) focused on this over the sprint, including some very valuable time defining the API with Josh, who is leading on the front-end.
Josh open-sourced the iOS client he built for NZ Festival, and which uses Wagtail as a back-end. I've started porting this to a more generic React Native skeleton, with the goal of making it much easier for Wagtail sites to build corresponding iOS apps.
Open source project management
We discussed the overall management and direction of the project. As Wagtail matures and grows in popularity, we need to update our working practices, with a focus on inclusion and transparency. We've agreed a set of changes – somewhat inspired by the Node.js Foundation's base contribution policy – which will help all the core team collaborate on the roadmap, and which we hope will encourage new contributors. If this is successful, it could turn out to be the most significant output of the week.
I built a simple module which includes a Google Analytics dashboard in Wagtail. Matthew (Torchbox) fixed a long-standing problem with slug generation. Kait (Praekelt) submitted an improvement to internal search. Matthew improved form rendering of Structblocks. We agreed our approach to rich text editing. We discussed Tim's proposals around configurable workflow. We met the Kagiso team, who are running some very high traffic news sites on Wagtail, and are keen to start contributing. We climbed Lion's Head Peak at 6am.
Even if we hadn't submitted a single PR, this week would have been a success. It was an amazing opportunity for Wagtail's core developers to meet in person, making both technical and personal connections which will accelerate our work for months to come. We all left inspired by Praekelt's imaginative, high impact projects, and grateful for their fantastic hospitality. Huge thanks to everyone at Praekelt, Springload, Takeflight and Torchbox who made it possible!
Update: if you're eager for more technical details, see Springload's excellent post about the sprint.