Introducing Texture, a new home for AsyncDisplayKit
By: Pinterest Engineering
Tags: Open Source, Asyncdisplaykit, iOS, Texture, Github

Garrett Moon | Pinterest tech lead, iOS Open Source Frameworks

Over the last two years Pinterest has been the primary developer of AsyncDisplayKit, an iOS framework for smooth and responsive interfaces. AsyncDisplayKit was created at Facebook, and our iOS team has significantly invested in the project, leading developments of new features and improvements made for the 2.0 launch, and contributing more than 70 percent of the commits to the AsyncDisplayKit repository. Pinterest is committed to investing in the future of AsyncDisplayKit, so today we’re announcing a new home for AsyncDisplayKit and a new name — Texture. This is not a fork. While Pinterest won’t directly own the project, our engineers will continue to help manage it so the framework grows and improves for the community.

In this post, we’ll cover the motivations for moving to a new repository and what this means for you as a developer.

Motivations

We believe creating Texture will ultimately build a stronger open community of developers contributing and mutually benefiting from developing fast asynchronous interfaces. There are three significant advantages to hosting Texture as a separate project outside of Pinterest. First, as an independent organization, Texture’s future won’t be tied to one company, so it can continue to be improved by the community.

Secondly, there’s a huge opportunity right now for the community to get involved. We’ve posted new contribution guidelines and intend to allow new core contributors to have merge access and join regular planning meetings once they’ve made significant contributions. We’re looking for contributions of new ideas, implementations, documentation and bug reports.

Finally, having Texture, formerly AsyncDisplayKit, where the community can control it also means we’ll be able to move faster. We’ll be able to provide more granular membership to the repository which will allow community members to more easily contribute to reviews and organize existing issues. Significantly, we’ll also be able to add new Github integrations like an entirely revamped continuous integration system which runs more tests much faster.

Logistics

What does this mean to you as a user of Texture?

Have an existing Fork you’d like to move over to Texture? Stack Overflow to the rescue! CocoaPod users: you’ll want to change to point to Texture, i.e. `pod ‘Texture’`. If you specified a git repo, the new one is located at https://github.com/TextureGroup/Texture. Carthage users: you’ll just need to update the GitHub address. All imports now need the AsyncDisplayKit prefix. I.e. #import <ASDisplayNode.h> needs to become #import <AsyncDisplayKit/ASDisplayNode.h> All new pull requests should be submitted to Texture’s GitHub repo. All new issues should be filed on the Texture repo. If you open a new one on AsyncDisplayKit, we’ll close it and ask you to move it over. We’re just starting to change the AsyncDisplayKit name to Texture. Currently there should be minimal changes needed to include the new classes, however expect us to make bigger changes to names and branding for the 3.0 release.

What’s next

We have a lot of exciting plans for Texture’s next big release, 3.0. We’re focusing on improving reliability, performance and maintainability with the intention of setting ourselves up to be able to add new exciting features such as progress driven layout transitions and automatic asynchronous layout.

If you’re using Texture, we’d love to hear about it on our slack channel: http://texturegroup.org/slack.html.

Acknowledgements: Getting this project moved wouldn’t have happened without a lot of help. Thank you to the awesome Pinterest engineers who have been the primary contributors to Texture: they do all the hard work: Adlai Holler, Huy Nguyen and Michael Schneider. Jamie Favazza, Henry Lien, Levi McCallum, Josh Enders and Kynan Lalone all helped with the move. Thank you also goes out to Facebook for helping move the process along.