TD Cafe #007 - Stephen & Nic: Drupal Hooks Continued

July 24, 2025

In this episode of Talking Drupal Cafe, Stephen and Nic continue Talking Drupal #510's discuss about Drupal Hooks. They discuss the challenges, successes, and the importance of community collaboration in open-source projects. Nic also touches on the personal impact of working on Drupal core and the balancing act between contributing to the project and client work. Along the way, they share personal anecdotes, including a discussion on watches and coffee preferences. Watch this insightful conversation to better understand the evolution of Drupal hooks and the dedication behind core development.

Listen:

direct Link

Topics

Stephen Cross

Stephen Cross is a seasoned Drupal developer, community advocate and content creator with over a two decades of experience building and optimizing web applications.
In 2013 he founded and still hosts the Talking Drupal podcast, a community show where he’s published over 500 interviews and deep-dives with core contributors, agency leads and end-users—helping drive best practices and innovation across the ecosystem.
Capitalizing on his podcast production expertise, Stephen also offers end-to-end remote video podcast services: he handles all technical planning, multi-camera recording, post-production editing and distribution, so clients can focus solely on their content. He’s used this service to help real-estate, fitness, interior-design and other niche shows establish polished, engaging interview- and panel-style programs.
Outside of Drupal and media, Stephen is an horology enthusiast, he collects Casio and mechanical watches, and is a Linux and Raspberry Pi enthusiast.

Nic Laflin

Nic Laflin is an accomplished Drupal architect and the founder of nLightened Development LLC, a web development and design firm established in 2008 that leverages highly extensible CMS frameworks to solve complex business challenges.
They’ve been working with Drupal since late 2008, delivering creative solutions for a diverse roster of clients—from government agencies and e-commerce platforms to higher-education institutions and HIPAA-compliant medical services. Recently, Nic has focused on Native Web Components for platform-agnostic design, and has deep experience integrating AWS and building mobile application back ends.
A recognized Drupal guru, Nic speaks regularly at regional Drupal camps and co-hosts the Talking Drupal podcast, where they share best practices and innovations with the community.
Outside of technology, Nic enjoys building with LEGO, experimenting in the kitchen, and designing home automation projects. You can learn more at www.nlightened.net.

  • Discussing the Game Blueprints
  • Drupal Hooks and Core Contributions
  • Procedural vs Object-Oriented Hooks
  • Challenges and Project Management
  • Bulk Conversion and Future Steps
  • Scaling Back and Procedural Hooks
  • Challenges and Lessons Learned
  • Balancing Core Contributions and Client Work
  • Documentation and Community Awareness
  • Impact on Client Work
  • Core Committers and Project Management
  • Coffee Preferences and Personal Interests
  • Conclusion and Final Thoughts
Transcript

I didn't know that this had the potential to be. Bike shedded. Like I didn't have like I didn't like, I thought like, oh, if I do this work, they'll be excited and they'll merge it. Yeah. And, and that happened. . But that's very much the exception.

Now, I will say core, I think is becoming more and more comfortable with some of these bulk rector updates. Because they've seen the success of the procedural hook conversion. But in general, I would caution you to be more familiar with. Whole committers, make sure you're recognized.

Like, make sure they know what you're working on. I would caution you not to spend 80 hours in one month working on an issue. Without understanding if it's gonna get committed or not.

 

Stephen: So yeah, this is a little weird, Nick. Uh, but the show has started.

So how do you like the cafe? This is your first time here.

Nic: I like it. I, I, I'll be honest, I have to catch up. Yeah. I'm, I've only listened to the first few episodes. Honestly, I'm very interested in them. The thing is though, the last few weeks I've had many, many more meetings than usual.

Stephen: Yeah.

Nic: And I've been, I've been watching a play through of a new game by somebody. Oh really? That has been taking up all my time. Yeah. It's a game called

Stephen: Blueprints. Oh, that, that is fascinating to me. Watching. The someone else play a game. I get

Nic: it.

Stephen: Yeah.

Nic: I understand. Yeah. Well there's, there's, there's different types.

So this particular one is, uh, I thought it was weird too at first. The reason, the way I get around that though, is it's a game that I'm interested in. I'm not gonna have time to play it.

Stephen: Right.

Nic: But while I'm working on something that's not particularly intensive, I can, I can have it up if I have like a five minute break between meetings or something.

So you get to experience the game, but you don't have to dedicate as much time. Um, but the, the game is a, it's unique, it's a gem, it's a roguelike puzzle game, Uhhuh. So if you don't know what Roguelike is world like, is like, so role like is a game that's meant to start over and try again over and over again.

So like, um. Uh, a lot of exploration games are like this, right? Like, you go into a dungeon, it's procedurally generated. Got it. And then you die. You start over and the next time the layout is different. The items are different, the enemies are different. That's what it look like is

Stephen: okay,

Nic: this game is that, but it's a puzzle game, and they've found a way to like tie different runs or days Yeah.

Into, into a rogue leg. It's, it's fascinating. What, what did, what is this game

Stephen: played on?

Nic: I think it, it's on Steam. Oh, it's on steam. It's probably on, yeah. Yeah. Uh, it's probably on another systems too, but the person I'm watching is, is playing on the computer. Right. But hey, the reason I, that's taking my time.

The reason I

Stephen: wanted to have you come into the cafe, obviously just to talk to you. 'cause as much time as we spend together, we never talk. Right.

Nic: It's always that much.

Stephen: It's always business stuff. Um, but this is, uh. I really enjoyed, um, episode five 10, and I know that was like exciting for you. Five 10.

Nic (2): Yeah.

Stephen: Uh, something you had been, as we learned in that episode, you've spent, you know, about a year working on it sounded like, um, yeah, a little bit. Getting the Drupal hooks in. And a couple of things that weren't touched upon in that episode are things that I was interested to hearing from you and. So I figured I would just ask you and why not record it?

Sure. So that's why we're in the cafe today. Um, and it's around like I remember shortly after you and I met, I remember sitting, I expect you remember this too, sitting at Eric's dining room table working on a project together,

Nic (2): right? Yep.

Stephen: This goes back a while ago and that day. I was explaining to you what hooks were in Drupal.

I dunno if you remember that. 'cause we were trying to modify, uh, a form on the website and I was explaining to you what hook, a hook form alter was. And then like, here we are, uh, what, 14 years later or something? Maybe? Yeah, 13 years later. And, um, you recently implemented these hooks. Uh, and object oriented, uh, you object oriented the way Inal 11 and, and, uh, just the thought of that transition over those years from, you know, going from, you know, the hooks to, to what you're doing today.

Like, that journey fascinates me and, and especially the one over the past year of you, like now contributing to core. And, and I was interested in, I thought maybe that episode they might dig in. You guys might dig into that, but I guess it wasn't the place and time and there was so much to cover that day.

Yeah. Um, so I, I had a few questions for you on that. Um, but before we do that, do you know what wasn't covered in that episode either, which I guess it just, maybe I missed it. Um. Maybe I missed it, but you talked about how this is affecting module, uh, contributors, but never really touched on how it infect like a site builder, someone who is using hook form alter Yeah.

In a few places and using some hooks, it was never explicitly said, Hey, this is what, how your, how this is gonna impact you.

Nic: Yeah. So

Stephen: if it doesn't, well, and I learned in that episode, it doesn't have to at all, right?

Nic: Yeah, it doesn't. So, so let, let's maybe, let's start at the top. Yeah. The, the, the new hook system that we're talking about is basically one of the last. Procedural pieces of Drupal, aside from theming stuff Yeah. Is were hooks, right?

Hooks always had to be procedural. They took the module name and then whatever the hook was and, and some rules, and they had to go in the dot module file with some exceptions, you know, or dot install or something like that. And there were, there were dozens of issues trying to convert that to an object oriented approach.

Stephen (2): Hmm.

Nic: And when and when the one that finally got over the finish line got in, we closed over a century's worth of issues. Yeah. Um, it was, which was pretty cool. Um, how it affects a site builder. It doesn't, I mean, it just doesn't it,

Stephen: it doesn't, because. You guys have built in the ability to just run the old style procedural code, right?

Nic: I, well, I was gonna split out the site builder from kind of the tinkerer. It doesn't affect the site builder at all because the site builder's not writing code. Right.

Stephen: Okay. And,

Nic: and they're not gonna note, and they're not gonna notice the underlying details now the, the tinkerer, I think it does.

Stephen: Okay. So that's what you're calling what I call a site builder is.

Nic: What I used to be when you were teaching me what a formal No, no. But, but, but

Stephen: I, I kind of almost feel like you almost can't build any site with some level of something being changed. Yeah, yeah. Right. So I'm not talking about someone who's writing a lot of custom code, but someone who's just tweaking a few things.

Nic: Yeah.

Stephen: And there's almost any site that isn't really, really small, that isn't tweaking a few things.

Nic: Okay. I'm gonna go on a tangent again, but I think you want those, so

Stephen: yeah, that's.

Nic: It's okay. So part of the thing that really pulled me into the hook conversion was wanting to be able to remove the need from top module files, right?

'cause they're weird. There's, again, there's an issue that's 15 years old, I think trying to add dot, PHP. It's a security issue. There's all sorts of problems and it's just, it's just a weird thing that you have to learn about Drupal. We're, we're pretty much there. There are, um, five. Four or five functions still that aren't hooks, that if you use them, they need to be in a DOT module file.

Stephen (2): Mm-hmm.

Nic: And that issue is close to being resolved. Right? Right. And we can remove the dot module file entirely. Now no matter what happens, that won't be done for. Until Drupal 13 or maybe even 14. Mm-hmm. Like that is a massively disruptive change. Yeah. Because almost every mod, every module, almost on drupal.org and custom modules have done module file.

Stephen (2): Yeah.

Nic: So if we were to say, oh, we don't need those anymore. You have to get rid of them by Drupal 12, no team is gonna have the resources to be able to do that in every project. It so rest assured, no matter what, this will be a to a Dral 13 or even maybe a 14 thing if it were to change. I spent all this effort and done all of this and eclipsed, uh, who we had mentioned on the show who had kind of come up with the idea behind the, the winning idea that got Drupal hooks over the line said something to me that I've been thinking about a lot more recently, which is, yes, we can get rid of dot module files.

Should we

Stephen (2): uhhuh?

Nic: Same thing with procedural hooks,

Nic (2): right?

Nic: We can, we don't need procedural hooks anymore. Should we get rid of the ability to have procedural hooks? Now there's a performance. That's one

Stephen: piece that wasn't clear to me, by the way, was that six months ago when this was coming, like I knew this was coming, I was like preparing the team that I work with is when we go to 11, we just gonna have to buckle down and we're gonna have to get rid of the procedural hooks.

Yeah. I didn't realize initially that they were still gonna be supported.

Nic: So, so they are, they're fully supported, right? They should and they should be.

Stephen (2): Mm-hmm.

Nic: And the goal is to get rid of them. But now I'm beginning to question should we get rid of them? Because while it is a performance pro, there's a performance issue to having them, there's a way to like, mark your module is not having them.

So it kind of gets rid of that performance on an individual module basis. And core, by the way, now has that flag set for every single module.

Stephen: Okay.

Nic: But. Procedural hooks for a tinkerer are so once you know what they are and how to look and how to get the documentation, yeah. They're so easy. Exactly. You create a module file.

You add an open PHP tag at the top.

Stephen (2): Yeah. And you

Nic: add a function with a special name done, you're interacting with it. We kept a lot of that for OOP, but now you have to put it in source hooks. You have to have a namespace. Yeah. You have to have. You have to have an attribute, which you may not know what it is.

Yeah. You have to know how to structure that attribute. Like it's easy for a developer, right? It's a little bit more complex 'cause you have to have a class. It's more complex. And so I'm beginning to question, I've done all this work to get rid of need for this, and now I'm beginning to question should we even do that?

Because we've already closed so many doors for the. If I were getting into Drupal today, I don't know if I would, because one of the reasons why I was able to get into Drupal with Drupal 6, 5, 6, 7 is I could build full featured site. I mean, the time you were talking about where you were teaching me what hooks were

Stephen (2): Yeah,

Nic: I, I was a full scale developer and even a, I would even call myself a semi semi architect because I didn't have the write code.

I could just use feeds and tamper and all that stuff to build a full featured site

Nic (2): Right

Nic: now. My work got better and expanded once I learned what hooks were and learned how to, I write PHP code for myself. But if you had to start Drupal today, you, you can't build a Drupal site today like that. You, you have to know object oriented principles.

You have to know how to find how to interact with Drupal correctly, right? There's just so many layers that you have to know, and should we remove this one? Like this, this little gateway to entry is the intent

Stephen: to remove it though.

Nic: Remove mod. Yeah.

Stephen: The ability to support procedural hooks. The intent is to remove it.

Nic: Yeah. Abso absolutely. It. Okay. It, it was, but like I said, I'm,

Stephen (2): yeah,

Nic: like that. It's one of those things where we put this in and the assumption was, well, you put in the new system, let's get rid of the old system. Right. And for most things, you wanna do that, right. The question here though is do we need to, or do we want to, like, should we discuss whether or not we should keep it around?

Stephen: Well, you know, in in that episode, uh, you guys discussed the absolute requirement that for backward compatibility. Yeah. So how far back is that backward compatibility, um, as far as these hooks are concerned from your, from your perspective?

Nic: Yeah. So there, there's, there's two different, well, here's the thing.

The backward compatibility layer for hooks is essentially, can we discover them? Right? Can we find them That that's, I mean, there's, there's some other stuff there, but, and we can find them. I mean, we've proven that like Drupal is doing that right now. Yeah. So, um, we can, we can maintain that layer and as long as we have the ability to like, start slowly marking things as they do get converted.

Like webform is converted. Well, webform doesn't have pre-processed hooks converted. We can, we can move those over now. There are some exceptions.

Nic (2): Yeah.

Nic: Right. Um, so this is something I'm, I'm trying to figure out how I'm gonna document this and post some of this. 'cause a lot of this knowledge is internal.

Um, and I think this is knowledge that the community should have, but like, for example, hook module implements, alter.

Stephen (2): Yeah.

Nic: That's a hugely problematic hook.

Stephen (2): Mm-hmm.

Nic: That's deprecated, that's gonna be removed in 12 no matter what. Yeah. Even if we maintain the procedural fallback forever. Yeah. Ordering of hooks.

We are not keeping hook much solved for that. It is it, I mean, that replacing that one single hook took me probably 80 hours work and who knows how much time from Don and, and checks and all the other people that reviewed it. I mean, I'm, I'm not, I would not be surprised if that hook alone. Took a, took a collective 250, 300 hours of work from some of the best Drupal mines out there.

Right. And so we are not going to maintain it backwards. Competitive, yeah. Ability layer for that forever because it's, it's great. Same thing. Hook, hook info or hook requirements.

Nic (2): Yeah.

Nic: They're doing things that. You, they're doing things that they shouldn't be doing or in a way that's architecturally problematic.

Nic (2): Yeah.

Nic: And so having a new solution for that, you get rid of the old solution. Procedural hooks in general though, or pre-pro, like even pre-processed hooks. The backwards compat compatibility layer for that is a little painful. A little messy.

Stephen (2): Yep.

Nic: But if you tell ERs all of a sudden, Hey, you need to learn object oriented.

Like tell, this is something checks said on the call. The fact that ERs have to write PHP is abomination in the first place.

Nic (2): Yeah.

Nic: If you tell 'em that they have to write object oriented classes and stuff, right. That's even worse. The fact that we can is a bonus.

Nic (2): Right?

Nic: It's better for a whole bunch of reasons, but if you tell 'em that they have to do it that way.

Stephen: Would you say that the, the Drupal CMS push too is also maybe bringing that support for procedural hooks to make it more important? Because when you're now saying that, that that product is Mark is, is targeted towards marketers, not even necessarily people in who are technically oriented. If they could follow a few steps to put in a few procedural hooks to modify a little thing, then that's reasonable.

Yeah,

Nic: I think so. I mean, I think,

yeah, I'm trying to think through. Yeah, I think so. I mean, I, it, it's really just about opening up the, the more novice end of the market, again, both for site builders and for. For like the, the tinkerers. Right?

Stephen: Right.

Nic: And so, yeah, I think, I think that lends itself towards that.

Stephen: Hey, so back back to my, uh, we got a little diverted, like one of the initial questions, um, and the things I was thinking about is how that transition for you was for these, for this, uh, core work that you did.

Um, like how different, how difficult was it for you to like kind of get it? Yeah. Or had you already done enough sort of customizations and custom code and maybe some core, I know you were already doing some core, uh, commits, um, before this, right? Yeah. So how difficult was it when you really needed to understand all the details in order to do something?

Nic: I mean, it. I hadn't been doing a lot of core work before this. Okay. I think, I think it was my third or fourth core issue that I had seen through, like seen through beginning to end.

Nic (2): Right.

Nic: Um, one of the things I realized is that there's a lot more process around core stuff, and I think that's lent itself to some of my success recently in getting some of these initiatives through, is that I am.

On some of the bigger ones, at least at some point I transitioned more to project manager mode, I would say, than um, developer. A coder. Right. In in fact, for, for this issue. For the hook. For the hook, yeah. Yeah. Checks. Oh, interesting. Checks wrote most of the, um, interesting checks. Wrote most of the, the, um.

Object, wanted hook piece.

Stephen: Okay.

Nic: And then, you know, I, I contributed, have I contributed to tests? I contributed to

Stephen: implementation of it? Um,

Nic: no. Well, some, some, like if somebody gave feedback and it was something that I could do, I made some of those changes. Yeah. Some of them I just would send 'em a message on Slack and said, Hey, so and so asked a question about this thing.

I don't know what the answer is. Can you got it? Okay. Can you reply?

Stephen (2): Yep.

Nic: Um, same, same thing for the hook Ordering, like checks wrote a lot of the hook ordering. Yeah. From scratch. I wrote a lot of the tests. Don rewrote almost the entire implementation and then he wrote a bunch of his own tests and then I kind of merged the two tests together, but very quickly and, and because I reviewed it, was doing the tests and that stuff, I understand the underlying pieces of the code fairly well, but my contribution there was more testing and.

Confirming that, you know, when they, there was a change or request and then like finding people to review it and confirm kind of works with within the system. So there are a lot of

Stephen: hands in this.

Nic: Oh, absolutely.

Stephen: Interesting. Okay.

Nic: Yeah, yeah. Absolutely. And I think that's both this,

Stephen: well your, your description of this project that I heard, maybe I didn't hear like over the, 'cause I've been aware of it for a year as you've been working on it, you've mentioned it a few times.

When someone says they're like, modifying 28,000, uh, whatever the number would be. Oh, that,

Nic: that's a different piece. Okay. Okay. So that's a different piece. Okay. So that, that gives me the,

Stephen: that doesn't sound like PM work to me.

Nic: No, no, no. That, that's a different thing that I did so that I worked on, and again, I worked with checks heavily on that.

So we, we landed the object oriented hook. Right. Yeah. It got into core. We converted, I think, three hooks in core to object oriented as kind of like proof of concept.

Stephen: Got it.

Nic: And then I was like, he had written a rector rule. Yeah. And Rector is a tool that you can use to like process code and rewrite it.

Essentially, he had written a rector rule to start converting core. Uh, to start converting hooks from procedural to object joint did right Uhhuh. And so I started tinkering with it and testing it, and I would run it on a module in core and be like, oh, these things didn't work. And then he would rewrite, like he, I mean, I collaborated a bit on that, but that again, was mostly me just like running the code that he wrote, the rules that he wrote and giving him feedback.

Now, what I did though is I made it repeatable. Tested, like I, I literally spent 80 to 90 hours just on that issue alone. Yeah. But what it was, was I would, I had a batch script and it's on GitLab, so I, we, I can share it with you, but it basically pulled down the composer dependencies, patched a couple of projects that we needed to patch, because yeah, they didn't allow us to do something that we needed to do, and then it would run the Rector rule on every single module in Core, and then it would commit them.

Separately. Yeah. And then once that was done, there were a bunch of edge cases that didn't work or broken or had a test needed to be changed. I would make those changes and create a patch for it, Uhhuh, and then have an automated way to apply that patch. And so I had it at the end and then run baseline, all this other stuff.

Nic (2): Yeah.

Nic: So I was, I was. Kind of doing the conversion project, but I was utilizing tooling from checks and from other places and Rector and code sniffer and all that kinda stuff. But I got it to the point where I could pull. 'cause you know, core is always changing. Yeah. And updating. And this is an automated change.

So you can't just, you can't resolve a conflict because you're copying something from one place to the other. If there's a conflict, you just have to recopy it. Right,

Nic (2): right.

Nic: So I got it. I operationalized it enough that once it was getting reviews. I could convert all the core in 10 minutes. So if they, they committed something upstream and there was a conflict, I would create a new branch from

Stephen (2): Yeah,

Nic: the new version, run it, push it up, and then be like, okay, it's ready for review again.

Sounds, sounds

Stephen: like a lot of data migration work I've done, right?

Nic: Yeah. Same sort of process. Same skillset. Yeah, same exact skillset. Um, and, and, and that was 28,000 lines. Now again, I got, I got lucky 'cause I. Like it happened at the exact right time where, um, a core committer was willing to look at it. It was within beta or alpha, I forget.

So it was like a timeframe where they're willing to make such a disruptive change. And I had talked through a lot of the issues and they understood it and somebody approved it. RTB ced it and, and it got in and, and the thing is, it's really good that I did that because. One of the other things that came out of that is when we converted stuff, we found all these edge cases that we hadn't thought about.

Nic (2): Yeah.

Nic: And we were able to resolve them before, before they came out into a version of Drupal that was actually released. 'cause that's one of the problems, once something's released.

Stephen (2): Yeah.

Nic: Now you're dealing with a whole can of worm. Like for example, the original version of, of the object oriented hook issue had a way to order hooks.

And it was, let's just say broken. And so we, we ripped it like the issue to resolve that is the one that took 250 hours between the three or four or five of us. Right. And so that tells you how complex that issue was. Yeah. So we were be, we realized it was broken when we were doing the conversion. And so we ripped out the ordering piece of the object oriented hook conversion piece.

Nic (2): Yeah.

Nic: And. 11.1 shift with you just had to use hook module implementer, and we found a few other edge cases like that, that if they had been released in, they might not have been discovered for years. If they had been released in 11.1 would've broken.

Stephen (2): Yeah,

Nic: dozens of sites, hundreds of sites, and would've been a domestic cleanup clean up.

So. Yeah, so I, so I did work on the 28,000 line code that was different than the actual, the actual work.

Stephen: And I'm not keeping score on writing up the numbers here, but I mean, previously you'd said in the episode you spent, you know, 80 to a hundred hours, and you've already mentioned you've spent 80 or more hours on like four different things here.

Yeah. So, and, and you also, you also mentioned in the episode that. If this hadn't gotten into 11 one, you said something like it could have been eight years till this thing got in, and it may have been the last core effort I ever did.

Nic: Yeah.

Stephen: So what did you mean by that? Yeah,

Nic: so I was naive.

Nic (2): Yeah.

Nic: And I poured all that time without really getting.

Going through like Drupal is open source, Drupal's governance is great. I think it's better than almost every other project, but the truth is when there's, when there's big sweeping changes like this, there's a fair amount of resistance. Sure. I would say generally, and

Stephen: probably that's

Nic: a good thing, right?

So in some respects, yeah. I mean it means that thing like generally like. Let's take hooks for example, if I hadn't gotten that bulk conversion in, okay, lemme put it this way. There's three steps to the conversion, right? Of hooks object, jointed. Step one is the bulk conversion, which is like a programmatic, it moves it from procedural to object jointed.

Yep. Step two is to organize those hooks. 'cause they all get dumped into one file. Essentially. Step two is to kind of organize, uh, organize those into separate files. And, uh, set up dependency injection for each one.

Stephen (2): Yep.

Nic: Right. And then step three is to maybe do a final pass and look at them all and be like, okay, this one hook gets executed on every single page 400 times.

Let's put it in its own file. Got it. So that it's, it's a little bit more efficient, right?

Stephen (2): Yeah.

Nic: Okay. So we did the bulk conversion last November and somebody opened and saw I was working on some testing and stuff and opened up an issue. To do the second step for the taxonomy module. Right. Just literally just organize them into a set of files and do dependency injection.

We are now July. That issue still isn't merged.

Stephen (2): Hmm.

Nic: Like there's still a discussion about, oh, should this go in this file? Should it go in that file? Should like, now let's scale that back to like, okay, converting. Core, like those discussions would've had to happen before because it kind of went in bulk. We were able to forestall a lot of the discussions about, okay, these types of hooks go in this file, these types of hooks go in that file.

We should fix up. We should clean this up while we're working on this. Like all that discussion is valid, but it's like, why don't we get the benefit of not having any procedural hooks in Core first? Um. And I, I think so. Where in process

Stephen: are you naive that that's how you started that? Where, where, where are you naive in this?

I've been,

I didn't know that this had the potential to be. Like bike shedded. Like I didn't have like Got it. I didn't like, I thought like, oh, if I do this work, they'll see someone's gonna approve it, they'll be excited and they'll merge it. Yeah. And, and that happened. Right. But that's very much the exception.

Now, I will say core, I think is becoming more and more comfortable with some of these bulk rector updates. Yeah. Because they've seen the success of the procedure, the procedural hook conversion. But in general, I would, I would caution you to be more familiar with. Whole committers, make sure you're recognized.

Like, make sure they know what you're working on. I would, I would caution you not to spend 80 hours in one month working on an issue.

Nic (2): Right.

Without understanding if it's gonna get committed or not.

Nic: Or just be aware that hey, it might not, and you just burn 80 hours of work for, for,

Stephen: and maybe not start with something that's so fundamental to Drupal.

Nic: Right. Yeah. That was, that was ambitious too. And, and as far as like. I mean, this is something I'm still struggling with. Your second question is like, would I have stopped working at Core?

Nic (2): Yeah. I mean

Nic: probably. I mean, I was so excited about it. I had poured so much effort into it.

Nic (2): Right?

Nic: And, and to be honest, it is, this is one of the problems, like it's impact.

It's impacting my client, not my client work, but it's impact. And sure. I am donating a lot of time to the Drupal project that I could be working on, on client project and finding that balance is something that I've been working on. Ever since, and, you know, I'm starting to move more towards, you know, dedicated times to core.

Nic (2): Yeah.

Nic: Fewer issues that I am kind of doing the PM role on, because it just takes so much time and effort. It's important. But, you know, I have, I have a business to maintain client projects that I have to work on. So

Stephen: I'm curious as, as this rolled out and kinda as it's rolling out now, still, I. Ha has, do you feel like it's been followed through in terms of people being aware of this and knowing how to deal with it in terms of documentation and, you know, just like, Hey, this is different now.

Um,

Nic: yeah,

Stephen: you know what I, so it is what I'm saying.

Nic: Yeah, I think, I think I do. So I think it's made a splash. Um, I think people are, are generally aware that it's a thing. Their documentation is lacking, that's for sure. Um, I'm working on, so I recently, I've been working on a blog post. I told you

Nic (2): Yeah.

Nic: Weeks ago.

And unhooked stuff. I've realized that I think I need to just break it out into smaller posts because I will never finish the open. Do you

Stephen: think that could turn into also be, um, repurposed for maybe some documentation on Drupal? Do org.

Nic: Yeah, maybe drupal.org. Probably sell him Paul's book, you know, what is it?

Uh, Drupal at your fingertips or something?

Stephen (2): Uhhuh.

Nic: Um, I think that'd be a good thing. Really. I, I'm seeing people convert and one of the ways that I know that's happening is people, I think now know me as the hook guy and I get pinged for questions right on, on edge cases. I do see probably because there's not a whole lot of documentation, I see people doing things that.

Are unnecessary. Or like, for example, there's a reorder attribute to help you order things. And I've seen a couple of contrib modules using it that there's no reason for them to use the reorder attribute. They could just use it directly on the hook. So they're using like a subsystem made for like one very specific use case that you almost never need.

And because people see that it's called order, they think that they should use that to order right. Which which isn't hugely problematic, but it means like, well, you're doing stuff that. Really, there's a better way to do it. Yeah. A more efficient way to do it.

Stephen: Do you think, do you think working in CORE has helped the work that you do on the client side or is it really so far apart there, unrelated to each other in any way?

Nic: It helped in some ways and it's actually a hurt, hurt in a couple. Yeah. Um, it's helped. It's helped because. I've never understood Drupal better than I do now. Yeah. I'm also not afraid to dive into like a lot of debugging previously was like, try to find an issue where somebody mentioned it, see where they're working, and look through there, or step through the code.

Right. But now I understand the subsystems better so I can, sometimes I can just find what's going on without even going to the issue queue first. Okay. You know, and I always try to put my info stuff back there. Right. Second it, it's honestly helped I think, because you know, I've been working in core. And I help other people out with other things.

So if I have an issue with contri or even core people are, I think more willing to, like That's one of the great things about Open Source. You help somebody out. Yeah, they'll help you out next time, right? Yeah. Yeah. And so for example, custom Fields, Andy, I mean, that's partly the show too, but Andy jumped on a call with me, was it last week to Debu?

I uncovered a data loss bug in. Custom field kind of accidentally. And I, I don't know how much time he spent on that, but he literally jumped on a call so I could show him how to reproduce it. And obviously I'm helping everybody else out that's using custom field and helping him because he doesn't want a data loss bug in his, in his code.

But I, I imagine he spent 10 hours working on that bug. It was, it was pretty nasty. Um, it's hurt because I wouldn't even say hurt, but it's impacted it negatively. And I've, I've corrected for this, but it's funny because. I've been working. One thing about working at CORE is you're working at 11 point x.

Stephen (2): Yeah.

Nic: And so I had an issue with something and I was like, it doesn't work like that. We removed that and it's like, but that was 11 x. It's coming out at 11.2, and this site was on 10.5 or 10.4 or something. Right. So the net is definitely way, way positive. Right. The other thing that I've noticed is because I'm in the queue so much.

I'm aware of other issues.

Stephen: That's true. Like for example, there, there's

Nic: been a major, a major issue with CK editor because CK editor doesn't follow. Yeah, okay. Yeah. Well, well, CK editor doesn't follow semantic versioning properly. Uhhuh, yeah. And so, oh, okay. Or core updated CK editor for 10.5 and 11.2. And there was a breaking change.

Yeah. Wasn't, and sot a bunch, the trip modules, a bunch of trip modules broke. Did they just increase the

Stephen: patch number or something?

Nic: Yeah. Yeah, yeah, yeah. They, they, they do breaking changes between like, they're on like 45.3. They'll do a breaking change between 45.3 and 45.4. Yeah. But we have to update that.

Yeah. Because it's like security stuff. So 11.1 to 11.2 now has breaking changes.

Stephen (2): Yeah.

Nic: From a dependency. And so I was aware that, okay, I'm just not gonna update to 10.5 and I'm not gonna update to 1.2 until those control modules catch up. And I knew that because I saw that like. Issues like that keep popping up to the top of the page.

So you see, you see those issues, you become aware of them. And so when I had a client that updated by themselves to 10.5 and CK R wasn't working, and I was like, well, this is why. And pointed 'em to the issue and show up how to fix it and debug it and, and I knew like, could I have found that? Before, uh, yeah, probably, probably in 10 minutes, but then I would, it was at that point it was 120 line, you know, common thread and whatever, you know, I just knew off the top of my head exactly what the issue was because I had seen it pop up so many times.

So definitely net positive for my, for my clients

Stephen: if you had a choice. Now, after spending a year in this, of spending more time. Doing core stuff, which is kinda like building a framework for other developers to build things. Yeah. Would you rather spend your time doing that, or do you like dealing with an end customer to use Drupal to deliver a solution?

Those are two different worlds, right?

Nic: I think it's both. I definitely see some like, I think building the site is what keeps you grounded and what people need and what people are doing every day. Like if I was only on core, yeah. Then I would be like, yeah, give rid out module files. Like I don't wanna deal with the.

You know, the extra code to handle, like, let's modernize this and get rid of it. Yeah,

Nic (2): yeah, yeah.

Nic: But, you know, keeping in mind the people using the project product is always, always important. I would love to be sponsored to work on core.

Stephen (2): Yeah.

Nic: Um, I think that's one of the biggest gaps, right? Like we need more core committers.

Nic (2): Yeah.

Nic: Now, so I, I'm technically a maintainer of the extension API, but I can't commit to core. I don't have permission. There's, there's only right. Five or six people that have that permission. Mm-hmm. We need more of them. Yeah. We also need more, we need project managers on the queue that can help. I mean, what do project managers do?

They're invaluable. And we don't have, we don't really have, we definitely have people that work on certain projects. Like there's definitely one for like experience builder and that kind of thing, but mm-hmm. Like we need just like general Drupal project managers that can help with prioritizing and planning and that kind of stuff.

Um. But yeah, I think, I think that's the biggest gap in the community is funding for this kind of thing. 'cause yeah, I would love to continue spending the kind of time I spend on it. Um, I mean, I've already started scaling back because it just, it's not sustain. Yeah.

Stephen: It's hard, sustainable. And you hear, uh, I mean this is a, just an ongoing topic, right?

We've had shows on it, on how to get people to be funded for core development and stuff and, and modules and everything else. So very interesting.

Nic: Yeah. Yeah. I mean, that's one of the, there's there's some grumblings in the community about the AI initiative, right? And, and I understand it. Ai, yeah. You can't get away from AI right now.

No. I, I think it makes sense as a product for Drupal to have an offering there, right? 'cause people, it's one of those things that people check the box. If you don't have ai, they're not gonna look at your service now. I will strongly contend with what value that AI generally provides. Like there are certain circumstances where it provides value.

Most Drupal sites aren't going to need that. Right. Right. Um, so, but you know, there's, there's, there's a case to be said, like what drives Drupal four more, having an AI initiative or funding two more core committers that know what they're doing.

Stephen (2): Mm-hmm.

Nic: Right. Um. Because one of the things that happens is like right around when 11.2 was coming out, they stopped committing new changes, right?

Stephen (2): Mm-hmm. It's

Nic: like any product, you, you don't want to commit new stuff right before

Stephen (2): Yeah.

Nic: Like when you're in beta.

Stephen (2): Sure.

Nic: And so the, the R-T-B-C-Q fills up.

Nic (2): Yeah.

Nic: And so right when 11.2 dropped, I think the R-T-B-C-Q, which is like things that people think are ready to be committed, a committer still has to look at it.

It got to 150 or 160 issues. And so I personally stopped RTC things.

Stephen: Is that like, is that a, a big number? I, I'm not in those queues. Yeah. Does that, is that a big number? Yeah. I mean,

Nic: think about it. It's to think about, think about if you are on a project. I mean, I mean the project you work on normally is what, four developers?

Yeah. Let's imagine. Let's say it's four. Let's say, let's say, okay, let's imagine you had another team working on stuff that gave you a list of 200 things. They were like, these are already to be put in the project. Release them, please. Yeah. Like, it's a very large number. Okay. Um, and so I stopped out to being, seeing stuff and then they, when they, they released it and got through the Smokeout period and started committing stuff again.

Well, so much stuff was pent up. Like they would commit 10 things in one day. Then people are like, oh, this movement again. And it would be right back up to one 50. Right. For like, I mean, the team they spent. I think three weeks, like turning, they were committed. There were some days they committed 30 issues.

Right. Which is an extremely high number. And they got down to, I think they're down to like 60 or seventies now, maybe 80. But it took them almost a month of like a concerted effort to like turn through that. And the truth is, when it's busy like that, it's like, oh, things are moving. People are more motivated, they're putting more stuff in.

So it's a, it's a balancing act.

Nic (2): Yeah.

Nic: But. What would drive Drupal forward more? Having an AI initiative or having two people more working on these complex issues that not a lot of people really like until I go. Yeah, it's an age old

Stephen: question though, right? Yeah. That kind of question. Exactly. Age old

Nic: or a project manager, like having a dedicated project manager that literally just grooms the 16,000 issues that are in Drupal core right now.

I mean, Steve Musgrave does a lot of this with some of his initiatives, but having like a dedicated person for it that would move team

Stephen: sounds like it's a team. Sounds like it needs a team.

Nic: Yeah. It, it's one of the things that we have to start convincing. Like there's tons of project managers with Drupal experience, but, and, and we say that you don't have to have no code to.

Contribute, which is true, but I don't think we've done a good job of convincing people with that skillset that it's something that they want to contribute to. Same thing with design. There's some designers that contribute.

Stephen (2): Yeah.

Nic: Here like things, but like how do we get people, how do we get a project manager to be like, you know what?

I want to clean this up. I, I want to organize this. I want to 'cause like. For me, like as a developer, it's like you write something, it gets out there, your name is on there. That's cool. Like how do you get that same, same thing from a project manager because that's something that the core community desperately needs.

Stephen: Well, as we, uh, wrap up here, I have to ask you a coffee question since we're sitting in a cafe. Curious, what is your go-to coffee,

Nic: um,

Stephen: style? And maybe a brand or a bean that you like.

Nic: Yeah, so believe it or not, I'm not much of a coffee drinker, but I am, I am married to a Colombian.

Stephen: Yeah, I've been, I've I've had coffee at your house.

Nic: Yes. You guys have I have coffee every day.

Stephen: Yeah. Okay. I was just gonna say,

Nic: but it, it's more, and I like it. I do like coffee, love. But again, it,

Stephen: you're not a continuous coffee drinking. You're not the guy that with a cup of coffee. All right. I

Nic: am now. Okay. I have been for the last 12 years. Okay. All right.

It's just not because it, it's just like, like when I was single, I would drink coffee maybe once a week or every couple of weeks. Like I would go to Dunking Donuts or something, but. Um, yeah, we, we, um, we actually, one of my clients gave my wife a gift of a, a really fancy espresso machine. Uhhuh. It's a Breville.

Stephen (2): Yeah.

Nic: And so I usually, we usually have cappuccinos or lattes in the morning. It's usually cappuccino and it's, she uses a, a special oat milk that you can Froth Yeah, barista and the, like a barista, the bean. Yeah. She's, she's very talented. Yeah. And then the beans are usually wonderful days. Um, sometimes we'll have something else, but Juan EZ is a Colombian, um, coffee company and they ship here.

So every Black Friday they usually have a sale, and so we get like 10 pounds of coffee or something that usually lasts a year, which is about the limit of what, like, you, you don't want, um, your beans to be really older than eight months to a year.

Stephen: Oh, I thought it would be. Or they won't make good as.

Nic: No.

Well, it is less than that. Be if you buy 'em from a store, they've usually been on the shelves for two years.

Stephen: Oh, okay. Like when I get the beans, 'cause I mean, I got an espresso makeup, not like the one you have, but I got one probably two years ago. My wife wanted one, wanted one, finally we got one and I was like, it's gonna be one of those appliances we're not gonna use.

Now it's the most used appliance in the house. Yeah. I use it every single

Nic: day. It all the time.

Stephen: Yeah. And um. But I, you know, I am a coffee drinker, but I'm, I'm not, I wouldn't be like, consider myself a coffee snob or kind of drink anything, although I'm a little bit more particular now. Um, but I always, I always thought that when the bean had a shine to it, it was the freshest and when the shine goes away.

Yeah. The oil, it's probably not as the oil, when the oil's gone, it's not as Yeah. Good. And it feels like it gets bitter to me if the shine is gone. Yes.

Nic: So the thing that we learned after we get the machine, so you, you get this fancy machine and you think like, oh, it's like anything, like you get it because it's gonna make the coffee better.

And what you learn is it extends the range on both ends of the spectrum.

Stephen (2): Okay.

Nic: You can make better coffee. Yeah. And you can also make. Far, far, far worse coffee. Yeah. And so for the first two weeks it took, it took her like two weeks to learn how to use the machine well. And one of the biggest things was we were using old beans.

Nic (2): Yeah.

Nic: They were new to us. We had just bought them, but we were using old beans and. Coffee. I still remember that coffee. It is the worst thing I've ever drank in my life. Like you take a sip and it sticks in your mouth for four hours. Um, so, but you make, it makes better coffee than you can get anywhere.

But if you don't know what you're doing, did they have,

Stephen: did they have you recently went to a conference in Boston? You don't usually go to conferences, right? You went to the, did they have a coffee exchange there?

Nic: I don't think they did. Oh, they didn't? Okay. I, so I got, my wife banned me from going to the coffee exchange because I took one of the Juan Valdez coffees and I got a ground coffee back.

Oh,

Stephen: oh, what? From Nedc Camp?

Nic: Pre-ground? Yeah. Yeah. I got pre-ground. She's like, you took and the coffee was pre ground. The coffee. Yeah. The coffee was fine, but, and it was from a, a cool company, but it's pre-ground. Pre-ground is not good for an espresso machine.

Stephen (2): Yeah. And

Nic: she's like, you took. Our limited supply of good quality Colombian one with coffee and exchanged it for pre-ground.

And, and we did use it by the way, and what we used it for, so the other thing we do is we, she make, we have AGAs most days.

Nic (2): Yep.

Nic: Um, which if you don't know, if our listeners don't know is, uh, coffee with ice cream.

Nic (2): Yep.

Nic: And so she uses pre-ground for that? Uh, usually. Oh, okay. So it's a different, it's a different pressure profile and all that kinda stuff, but she just makes some coffee and we pour it over ice cream and have anga.

Stephen: So I was thinking of, uh, these, this talking Drupal Cafe, this is episode seven and like any, any like new show, you just hope to get to 10 and see what happens if you're gonna continue. I was thinking of calling this one. Uh, I've been calling them like the name of the people, Liz. This case would be Steven and Nick, but I think I'm gonna change the title slightly to me.

Maybe, um, Drupal Hooks continued.

Nic: Yeah. Maybe. Yeah. I feel like, I feel like I, I, I dominated this conversation. No, no. That, that actually was the purpose of this.

Stephen: That was the purpose of this phone call. And I told you that.

Nic: Yeah. Yeah. You told me that. But I, I do wanna ask about watches because this is the second time I've seen that you like watches today.

Yeah. And I had no idea that you liked watches. It, it,

Stephen: it's only a couple of years old.

Nic: Oh,

Stephen: okay. Makes sense. Yeah. It's not a lifetime thing. So it's only a couple of years old, uh, probably two years ago that I just started to get, I, like, I got rid of my Apple watch.

Nic (2): Yeah.

Stephen: Uh, 'cause I was trying to simplify the noise in my life.

Right, because it was constantly bothering me. Yeah. So I got rid of my Apple Watch and then within three or four days I realized that I actually used my Apple watch too, to see what the time was. Right? Yeah. Um, uh, so I picked up like a Casio. F 91, like a $16, you know? Yeah. Watch. And I wore it and I absolutely adored it.

Then I started to say, huh, and then you start looking around and looking around and looking around. Yeah. And now I've got a little collection of not expensive watches, but. I have a few automatics, a, a number of G shocks and just, I have,

Nic: do, do you have a calculator? Watch?

Stephen: Absolutely.

Nic: Okay. Course I do.

Stephen: I got, I got that from my birthday, from my wife, I think last summer.

Okay. Yeah. I got a calculator. Watch. I do. Uh, I would say that it's probably low in the rotation, but I do wear it. I cha, I, I actually got a new one yesterday, a new, so this is, uh. Yeah, this is a Casio, this is a famous model. This is a 6,900 watching 'em, I don't know if you know GS shocks, but, um, I got this yesterday from eBay.

Um, and it's a, I always like the ones that are solar and that they are, they connect to the radio waves to get the time updated. So it's multi-band. Oh, cashew calls it multi-band or. Or, um, what's the other word? They use another word fart in the older watches. So it syncs with the, the time every night. So it's always accurate.

Really. Yeah. So,

Nic: so you must be following Jeff Ling's time series.

Stephen: Oh, yeah. Oh, that was great.

Nic: I, I saw him installing the GPST. I'm like, maybe that's a hobby I could get into. I was, that's fascinating. No, I have too many hobbies right now. Let me stick with, uh, yeah. Synthesizers for now.

Stephen: Alright, so that's the story on the watches.

Nick, great to chat with you again. We'll have to do this more often, even with the cameras off.

Nic: Yeah. It's always good to chat.

Stephen: Alright, I'll talk to you, uh, probably tomorrow.

Nic: Yep.

See tomorrow. Yeah.