Skip to main content

Blog Post

Angular Contributor's Day at ngconf

On Saturday, April 9th, as most of the attendees of ngconf were catching flights home, a group of the core Angular team from Google and prominent community members came together for a Contributor’s Day discussion organized by ThisDot. The stated goal was to discuss areas where the core team and community could better support each other and help advance adoption and ease of entry into using Angular. It was a privilege to join such an esteemed group of open source enthusiasts, and as it turned out, there was a lot of interest in the perspective I brought with me from my time organizing in the Drupal community.

The makeup of the room was ideal: several JavaScript & Angular trainers and consultants were in attendance, some folks representing large enterprise sites, as well as people with significant experience in other open source communities like Ember, Apollo / GraphQL, and of course Drupal. The Google team was represented by Igor Minar, Stephen Fluin, Rob Wormald and Alex Eagle.

The list of topics we covered was determined by a quick brainstorming session at the beginning of the day, and included numerous topics around cultural enhancements: increasing community support, improving documentation, reaching new people, attracting other communities, and supporting the core team’s efforts to drive the web forward. Other topics advanced specific technical discussions like improving the CLI, easing enterprise build pain points, standardizing tools and debugging, simplifying the upgrade path from AngularJS (1.x), and supporting the use case of Angular serving as a “meta-framework” for content and component management systems.

On the technical side, the “meta-framework” discussion was especially interesting coming from the CMS perspective. Justin Schwartzenberger of AngularAir spoke about the Angular Playground tool, that allows you to develop, test, and render your components in isolation, similar to React Storybook. This works under the hood by leveraging a dynamic component bootstrapping and rendering app that is quite similar in principle to the model showcased last year in the Decoupled Blocks module. Rob Wormald has also been spending some time experimenting with ways to build upon this model towards what he refers to as an Application Management System or AMS.

Along similar lines, there was a lot of interest in looking at ways to incorporate using the Intermediate Representation metadata generated by Angular’s compiler to fuel dynamic rendering as well, similar to the insanely cool Minecraft Angular application visualization tool demoed earlier in the week by Minko Gechev‏. While the practical need to walk around a garden of your application’s component structures in VR might be questionable, it was an entertaining way to show the power of the abstractions provided by the compiler, perhaps more usefully demonstrated with reverse engineering tools like ngrev.

The most exciting news coming out of Contributor’s Day, however, was really back on the cultural side. Towards the beginning of the day one of the topic points raised was how the core team and community leadership could improve support for the wider community and help the community grow. I framed the question to the group of how, once this Contributor’s Day discussion was over, we could formally continue to push the topic items and rough vision we were establishing forward. It was mentioned that there was a Slack group organized by Maxim Salnikov, ngCommunity, where Angular community organizers were encouraged to collaborate.

While the ngCommunity Slack is a valuable tool, as the conversation moved onto other topics I had a lingering thought that kept nagging at me. An invite-only Slack was not sufficient for building a global open source community. Through my lens as a Drupal organizer and community member, I’d noticed an important difference with how the Angular world was organized that I’d never really voiced or put into words before. But suddenly it hit me: heretofore in Angular, there was the core Google team and there was broadly ‘the community’, but the community itself had no formal structure. Conferences and meetups are independently organized and run, and there is no formal network of support for local organizers.

We continued through our topics list with lots of fascinating discussions, but I knew there was more to say on the community building piece. Luckily, near the end of the day, Igor spoke up on the importance of coming back to the topic. I took the opportunity to explain how the Drupal Association was formed with the specific intention of being the central group tasked with nurturing and growing the global community, and how a similar organization might benefit the Angular world. Everyone was on board with the idea, and Uri Goldshtein volunteered to help coordinate its creation.

In the weeks since Contributor’s Day, I’m happy to report that Uri, Maxim and myself have continued to push this idea forward, working with the core team and other community leaders to build out a vision for greater community support and growth. Although very much still in the vision building and planning stages, we are excited at the potential we see for unifying the community in the months ahead. For me, the instant appeal such an idea had is also very much a testament to the uniquely awesome community we have built in the Drupal world.

There was another recurring topic during Contributor’s Day around some of the great ideas coming out of the Ember community. With EmberConf taking place just before ngconf, and representatives of Ember in the room, this cross pollination was fascinating enough that I’ve decided to write a separate post about it, which will be published soon.

Additional Resources
Build with us - ngconf 2017 recap | Blog 
Building with Drupal and Angular 2 | Blog 
Decoupling in Drupal 8 Based on a Proven Model | Blog

Access icon Up arrow icon Drupal 8 icon Facebook icon - white Facebook icon - blue outline Facebook icon - yellow Hollow right arrow icon Hollow right arrow icon - white LinkedIn icon - white LinkedIn icon - hollow LinkedIn icon - blue outline LinkedIn icon - yellow Mediacurrent wordmark Quote icon Twitter icon - white Twitter icon - hollow Twitter icon - blue outline Twitter icon - yellow Youtube icon - white Youtube icon - yellow