Drupal 8 Interviews: Spotlight on Adam Bergstein

Parent Feed: 

Adam Bergstein is the VP of Engineering at Hook 42. Previously he was Associate Director of Engineering at Civic Actions and worked at Acquia as a Technical Architect. Adam is an active member of the Drupal Community. He recently took over the simplytest.me project, ported many modules to Drupal 8, is involved in Google Summer of Code, serves on the Drupal Governance Committee, and provides mentorship.

He has given multiple talks. Most of his talks focus on Drupal security, working with teams, or technical enablement.

How long have you been working with Drupal?

My Drupal.org profile states 6 1/2 years, but I worked with Drupal before I had a profile, so probably around 7 1/2 years. I've done many different things, I've worked primarily with the backend; I don't consider myself a front end developer. I work a lot with devops; I like wiring different systems together and automating processes. That has always been a passion of mine and something that comes somewhat naturally.

What is your role working with Drupal and how has it evolved over the years?

My role in Drupal has actually evolved a lot over the years. I started out as a developer and did a ton of custom coding with Drupal as a backend developer. After I learned how to use Drupal and did more site building... and development at the same time... and then more theming... I noticed I wasn't doing a lot of contributing. I started prioritizing that I was going to give back to these modules before I custom code. I wanted to make [the existing] modules better, by contributing patches before I start coding something on my own. Then I started maintaining modules, which evolved into me giving presentations on how I maintain those modules or how I develop them make them or make them more secure. My background is in security. I have a Masters degree in Information Systems and Security from Penn State.

I have about 20 modules I maintain. I have also taken over the simplytest.me project. Simplytest.me is a very evolutionary thing for me because it's a service or product. It covers every aspect of Drupal: DevOps, systems, and development.

When did you start working on Drupal 8, and when did you start to recommend Drupal 8 to your consumers or end users?

I started working on Drupal 8 really early, before the first alpha release. That was about two and half years before it was officially released. And that was when I started porting modules, the first module I ported was Password Policy and I used that as an opportunity to learn Drupal 8. I think I re-wrote that module 3 different times as I learned different things.

I started recommending Drupal 8 to my clients about six months before it was released. Most of the APIs were starting to stabilize, many of the developers I trusted we're starting to port their modules, so I knew there was a lot of momentum. A great thing about Drupal 8 is that you really don't need as many modules, Drupal 7 had a lighter weight core. Drupal 8 is adding features all the time; Layout Builder, translation, and Views are in core. There're all these things that conventionally had to be done through contrib, so there was a little bit lower risk moving to Drupal 8, just based on not having to rely so much on the contributed space as much as Drupal 6 and 7.

I know you have some pretty strong views about sticking with Core when creating reusable content in Drupal 8, would you like to share them?

One of the major things that I advocate for is using core whenever you can. Core is always better supported; there are more eyes on it, because every Drupal installation uses it. My default is always trying to solve problems with core. I've seen this philosophy not be adopted, especially in the content structure and the component design space.

Both of those spaces right now have had people adopting contributed solutions before exploring what needs to be done in core and I boiled it down to a couple of primary limitations. There are some usability issues that make it harder for people to learn and adopt things. The second is revisions, and I know that sounds crazy but that's one piece that isn't really clear right now just exclusively using core. There is some missing revisioning that sometime hurts the adoption of core sponsored stuff.

Let me elaborate on my preferences. One thing I don't like to use is paragraphs. I think Paragraphs is basically reinventing the same problem that can be solved using blocks. The block system was totally rewritten in Drupal 8 and it's much better. There are custom block types, you can create reusable components, and those custom block types are handy for, let's say, making a card component or carousel component. You can build really great data structures that are not leveraging the WYSIWYG, they're fully fieldable, and you can render them and have control over them.

I wrote a module called Block Type Templates that allow custom block types to have their own Twig templates, so you can control the markup. That module is only five lines of code. I generally promote Core, but using a module with that limited amount of code isn’t introducing anything too crazy. It’s just extending the Twig naming convention to blocks, and I'm still primarily making use of everything that's in core.

The only other Contrib module that I have been known to use is Components Libraries, which was written by John Albin, it extends Twig name spacing. It is really useful when Pattern Lab is used because you can pull in Twig files to the other libraries.

I wrote a blog post that basically illustrates all the points I had, but to be very clear I didn't make use of anything that has to do with Paragraphs or Beans. There's a bunch of structural modules and approaches now that I don't think are needed to achieve really good structured content and build really great interfaces. But, I think the main barrier for people is that it's not very usable. I think the new Layout Builder that's in core is going to change all of that once that gets polished and is fully integrated with Settings Tray. It's going to really bring it home.

What advice do you have for people new to Drupal or specifically new to Drupal 8?

Learn how to do it right. I think that people instinctually get a little afraid when there’s a new system; there's now object orientation over procedural programming. They feel they have to learn all these new interfaces, and I feel like they are better opportunities to learn things in a more modern and effective way. Those methods are more in line with the broader PHP Community; more in line with the same designs patterns that are being used in the world. More in line with other CMSs, other frameworks, other languages, and other platforms.

I feel like Drupal finally got to a point where it's doing things in a more modern and scalable way. And that's being proven because Drupal 9 is not going to be a wholesale rewrite, there’s going to be an incremental release where certain deprecated functions are removed. They're going to be using the same standards, the same methodologies for Drupal 8, Drupal 9, and probably moving forward.

There's going to be a lot of incremental changes, but having to learn a whole new way of programming is probably not going to happen in the community for quite some time. People need to embrace it and look at it opportunistically, we're giving them better things and we're learning and evolving at the same time. It usually just comes down to people’s comfort level or maybe their own personal preferences.

It's hilarious, I just wrote a blog post. There are three periods of time, the really short-term, the near-term, and the long term. Short term is to make sure that all the features on the site are working. Whatever small patches or incremental improvements  can be made to do that are going to be made. The near term goals are prioritizing working towards a new system that can better serve the community. And working towards that, it's actually a lot smarter, because the sooner that we can get new vision in place, the better we can serve the community by doing that. I think it not only provides a better service, but it provides greater opportunities for contribution for the community.

Let me give you some examples. We’re creating a brand-new React front-end for simplytest.me. That React front end would give someone the opportunity to learn React or contribute to a tool that's using React, and give people training; submit a patch and look through the code. These are things you might get experience doing if you're doing agency work, but if you're front end developer and don't have the opportunity to learn something like that, Simplytest.me can provide that opportunity. The same thing goes for Docker, we’re replacing the entire provisioning of Simplytest.me instances when you spin up a sandbox, and replacing that with a Docker driven process. It's going to be running Docker commands, spinning up instances based on Docker images, and then tearing them down through standard Docker commands. But, if you want to learn Docker, it gives people a great opportunity.

We’re trying to get into the new space as soon as we can, because it will simplify the simplytest.me architecture and give it a better service. There are some longer term blockers to launching that service, we definitely need to align recurring sponsors, because the cloud systems that were looking to build are not free. These things become a lot easier when everybody pitches in money occasionally. We’re going to be looking at how we create that. And, how we support that to make sure that there's not a financial burden on someone like me or other people specifically interested in keeping this service running.

The future for Simplytest.me is very bright. I think it's going to be a really great framework, and it currently is. But, it hasn't currently kept up with some of the newer technologies. It hasn't caught up with some of the newer things adopted by Drupal 8.

It's a little difficult to maintain right now, but once we get into the new implementation it’s going to be smooth sailing.

What's Adam up to next?

He’ll be speaking at the upcoming Midwest Drupal Camp (MidCamp) in Chicago about his journey from engineer to technical leader in his session My Journey to Understanding Technical Leadership. MidCamp is March 8th - 11th, 2018 at DePaul University Lincoln Park Campus, Chicago.

Adam will also be on a panel discussion with the rest of the Drupal Governance Committee at DrupalCon Nashville. Community Convos: Governance Retrospective is going to open the floor up to the community and be a talk for people to share their voice about what direction Drupal will head. It will be an open dialogue. DrupalCon North America will be April 8-13 in Nashville, Tennessee at the Music City Center.

Original Post: 

About Drupal Sun

Drupal Sun is an Evolving Web project. It allows you to:

  • Do full-text search on all the articles in Drupal Planet (thanks to Apache Solr)
  • Facet based on tags, author, or feed
  • Flip through articles quickly (with j/k or arrow keys) to find what you're interested in
  • View the entire article text inline, or in the context of the site where it was created

See the blog post at Evolving Web

Evolving Web