Jeffrey A. McGuire 0:00
Welcome to Application the TYPO3 community podcast.
Larry Garfield 0:07
Hi, my name is Larry Garfield, and this is application the TYPO3 community podcast sharing your stories, your projects and the difference you make. Celebrate the TYPO3 community on application, the TYPO3 podcast meet the humans behind the technology. One, two.
Jeffrey A. McGuire 0:24
Welcome to application, the TYPO3 community podcast. I'm Jeffrey A. McGuire, you can call me gem. And this is where we celebrate the TYPO3 community sharing your stories talking about your projects and the difference you make in around and with typo three CMS. On today's episode of application, that TYPO3 podcast I speak with Larry Garfield, long term PHP, contributor, open source person of good in general even though he describes a lot of his career as leaving a scorched code Earth behind him of changes. It's pretty great to have him in the TYPO3 humidity. Larry now works full time for the TYPO3 companies TYPO3 g mbh working on what TYPO3 I think he described it as working on what TYPO3 needs since the project has been open source since 1999. And gets a lot of stuff really right and does a lot of stuff really well. There's plenty of corners and and basements and spaces in the house that need renovation. And Larry sounds like he's really enjoying digging into that. At this point. Larry has been working on TYPO3 for two months, we have a super interesting conversation about a bunch of open source history, PHP history and his first impressions of TYPO3 and his hopes and plans around all that. I really hope y'all enjoyed this conversation as much as I enjoyed speaking with Larry.
This is a special and unusual conversation that I get to have with an old friend of mine, an old open source friend. I, Larry, I don't even remember how long we've known each other. Do you have any idea?
Larry Garfield 2:16
Probably around 15 years? Something like that you early in my Drupal career sometime? Yep. And my Drupal career was 10 years long. It's all right. Hey, math.
Jeffrey A. McGuire 2:32
So on this edition of application, the TYPO3 community podcast, I am very happy to welcome one of the newer or newest members of that committee, who is however, old, old, old hand in open source contribution and PHP. And I think that he has done a lot of wonderful and interesting things in space is very, very, very similar and very, very familiar to the TYPO3 world. So I am really happy to introduce the TYPO3 world to one of our newest core contributors, Larry Garfield, Larry, why don't you introduce yourself and tell us how you got here.
Larry Garfield 3:17
Hello, world. I'm Larry Garfield or Krell on most social media, that's where you can find me on Twitter if you feel like stalking me. I have been a PHP developer now for something like 22 years, when I started with PHP, PHP three was still considered new and exciting. If that gives you a sense of how long it's been. Wow,
Jeffrey A. McGuire 3:38
you were also part of the upgrade to PHP five. Yes, holster rebellion, right.
Larry Garfield 3:44
That was my first major appearance on the PHP community space in 2007. So for those who've been around this long, remember, we had PHP four, which was very widely used, and PHP five, which was vastly better, but no one was using it. Because we had hosts that were still running PHP four. So developers couldn't use PHP five yet, so hosts didn't bother upgrading. So the internals team couldn't drop support for PHP four yet, it is a mess. So in 2007, PHP five burnout for a few years. At the prompting of some people from the Joomla community, I organized a bunch of different projects to get together and say, Alright, we're all dropping support for PHP four and embracing PHP five at the same time. At this point in the future, hosts you're on notice. And at the time I was working on Drupal. And what prompted it was I wanted to do some overhauls to the Drupal database system to use PDO which require PHP five. So all of this was because I wanted to have a nicer syntax for insert statements. And we started with six projects and three hosts and in a month we had 100 projects and 200 hosts signed on, and assassinated a programming language. And the web moved on. Exactly. And I'm happy to say Drupal and TYPO3 were both, I believe, part of that initial list. And it's interesting, I've since concluded that my entire career has been one long scorched earth campaign against PHP four.
Jeffrey A. McGuire 5:22
Even though even today,
Larry Garfield 5:24
continuing to this day, in fact, so as I said, the prompt for that was I wanted to do some stuff with PHP five code in Drupal, I write on to completely rewrite the Drupal database layer. And they're still using that system. Now, then I went on to lead the charge to rewrite all of Drupal, and from version eight, and modernize the code base and get rid of techniques that made sense in 1999. And don't make sense in 2015 2016. Actually, the time was more like 2012, but still didn't make sense anymore.
Jeffrey A. McGuire 5:58
So in your your love hate relationship with PHP, I'd really like to get some first impressions about coming to a new project. These other kids took the same set of Legos and built a CMS with it. What do you think? How is it? What does it look like?
Larry Garfield 6:15
So it's interesting to compare, because I haven't really used TYPO3 until two months ago,
Jeffrey A. McGuire 6:21
in real time, we are talking mid July 2021. That means you use all TYPO3 under the hood in May 2021. For the first time,
Larry Garfield 6:29
correct. I like the way that it approaches the problem from saying, you know what, we're a tool for agencies, you know, not for random person, download the system and run stuff. But for we know, our audience is people who build sites for someone else. And so we optimize around that. And that's something that Drupal never was willing to say who it was for time. Yeah, is and I think that helps.
Jeffrey A. McGuire 6:53
So on the other hand, so really, that's a really interesting point, because I also like, I also like the the 8020, I found it refreshing, you know, the 8020 nature of like, this is what we do best, let's do that even better.
Larry Garfield 7:06
On the other hand, that also means as a first time user, the clip is higher. For example, the fact that TYPO3 doesn't ship with any front end, that's the basic download doesn't have a front end makes a lot of sense. If you are an agency who already knows how to use TYPO3, and then you have nothing to rip out in order to put in your custom design and custom theme and custom workflow for a particular client. Someone using the sim for the first time, I tried to do a page on it, get an exception message. Not the friendliest first time user experience
Jeffrey A. McGuire 7:41
it right. And then the fact that a successful installation process ends with a specific error message is is a little disconcerting the first time.
Larry Garfield 7:52
So I think there's a middle ground there, that is achievable.
Jeffrey A. McGuire 7:58
There are packages that you can download to install it with a with a basic front end in place to help get off the
Larry Garfield 8:03
ground. Yes, not all of which work with V 11. Yet, because that's still in development, as we're recording this, if you're working on the system, that I think is a limitation. Long term, I'd like to see something improved there to balance that a little bit better, and make the first time user experience nicer, without sacrificing the, hey, our primary users are agencies, and that this is an agency focus tool. And I like like, focus.
Jeffrey A. McGuire 8:29
Another eye opening moment for me was we were talking with a long term TYPO3 developer and friend, and we're saying, you know, man, this installation process and no front end and it and it's, it's terrible, you know, when when, when people download it and use it, and he said, I don't want this to come out wrong, but it's an it's, it's it's not for people. It's a professional tool for professionals. Yeah, right. Now, there's some controversy in that statement. But it's made for a purpose and and kind of trimmed away a lot of fat that doesn't feed into that purpose. And another thing that impresses the heck out of me is that you can actually go ahead and build your back end and your content logic and start building your site content, even though you don't have a front end and you know that it'll, it'll all work and you can also rescan your projects by simply throwing away the decoupled front end and putting on another
Larry Garfield 9:23
one. I really like the focus. I think it could be polished better, but I do like that focus. And that's refreshing to not be trying to do all all things for all people at the same time.
Jeffrey A. McGuire 9:35
That sounds like a pair of very, very fair statements and pros and cons. What about getting a little geek here, and, you know, the state of the code, the PSR standard adoption, the fact that it's really open source, you know, how is it in there? One of the things that I have been working on for the past few years is working with people In the project to start to spread the word again and move beyond Central Europe and saying, look, this is a super interesting system with great use cases. And I think it's ready for more people to know about it again,
Larry Garfield 10:12
to answer the second question first, I do think it's a strong enough system that it should be used in more places than German speaking countries. I would like to, at some point, try and spread it a bit more in the US just, you know, talk about at conferences and user groups, that kind of thing. Because there's really nothing about it that is German specific. It's a CMS, it can be used wherever people have likenesses, which is basically everywhere. As far as the code. I'm having flashbacks. Because like, as I said, earlier, my career has been a scorched earth campaign against PHP four, and taking older code bases and dragging them forward and modernizing them in ways that improve the quality of the code and the functionality and the maintainability. And trim out stuff that just accrues over time. That's what I do. That's what I'm good at. That's what I enjoy doing. History here. After Drupal, I spent about five years as director of developer experience for platform sh, which is a hosting company that many listeners are probably familiar with. And if they're not, they should be. And I left there earlier this year. And I was trying to figure out what I was doing next. And this weird guy that I know names jam, said that I should talk to the TYPO3 people talk to Benny talk to Mateus and see if I could do something with TYPO3. And so I talked to them and they said, We know what you do. Yes, we want to hire you.
Jeffrey A. McGuire 11:47
I'm kind of
Larry Garfield 11:47
amazed that this one is it's my fault, too. But yeah, but I'll take it. It's It's all your fault jam. Yeah, so I think there's a lot of recognition, especially from the people I've talked to that what type of three does is good, and it's impressive how it does it is in many ways, still kind of legacy and older. And just the energy and time and resources haven't been there to really modernize a lot of the old code. So there's two or three old versions of an API lying around just because we haven't gotten around to cleaning out the old ones yet. Figuring out how to do that is something that I do. A lot of why I was brought onto the team was I have experience saying, okay, we have this old code base that does a lot of good stuff. Now let's make it a new code base that does the same good stuff, plus some more rough code.
Jeffrey A. McGuire 12:40
I think that fits really well with Benny Mac's technical vision for the core and also for, for how the core moves forward, you know, version 10, the 10, zero release was simply a feature freeze throughout the old calf craft, release, and then then adding new functionality as as as we go. I've been talking with a bunch of people about this lately, but there's this sort of thing that people talk about how TYPO3 is, quote unquote, a fully featured CMS. But at the same time, that doesn't mean that there aren't new things to do. And it doesn't mean that it does things the best it possibly could.
Larry Garfield 13:19
Yeah, and I think that's, that's a lot of a challenge. The core of the core system is designed to be most of what you need for most sites. And that's a good thing. I, these days, I think that's a much better approach than making everyone assemble their own Legos. However, a lot of the way that's done are, again, things that were completely normal and reasonable to do in 2005 2007, in terms of architectural style, and the way people wrote code. But that leads to a lot of edge cases and a lot of weirdness and a lot of hard to debug issues. And a lot of this is flexible, but it's not actually good flexibility. And the challenge is alright, how do we take that code and mutated into something that offers the same or similar capabilities in a way that is easier to work with and harder to get wrong?
Jeffrey A. McGuire 14:18
I think there's a parallel in, in the in the back end user experience and TYPO3 that basically since the giant leap forward to version six, and then through 678, there's a huge usability push for back end users. And it's very clean, it's very clear, it works on mobile devices. And there's a you know, a strong paradigm for the authors and editors who live in their everyday. So now I guess that's kind of being brute forced and fiddled sometimes behind the scenes and does its job and and reliably. So but now you want to make something cleaner, more efficient, and I guess maybe more extensible.
Larry Garfield 14:55
Part of it is more extensible. Part of it is a good article. Texture can get you features for free. Because just the way these pieces interact, these other capabilities just kind of fall out naturally, designing got as hard. Let's be fair, that is not an easy thing to design. But when you can make that work, you can do something in 100 lines of code that used to take you 3000 lines of code. Give an example for that. I've an example that I've been working on on the side before I got here. TYPO3, like Drupal has flexible data models, TYPO3, like Drupal has revision support, TYPO3, like Drupal has workspace support, these are all built in separate pieces. And so you have an object that has revisions or not that supports workspaces or not workspace can be enabled or not that can support dynamic fields or not. And the amount of code you have to go through in order to support all those or knots is enormous. And gross. And I don't think so would you make it not gross. However, if you take advantage of modern features of SQL databases, that are non relational things like Jason fields, things like System version tables, things like, you know, PHP eights, new syntactical support for various things, then you can get similar not exactly the same, but very, very similar functionality in a tiny fraction as much code. And it's just always on. And having good hot always on is actually easier than having them be on or off.
Jeffrey A. McGuire 16:42
Right, because all the exception handling or, or different paths of processing different bits of logic, I've got it. Okay,
Larry Garfield 16:49
I can see that back when I was working at an agency, I had a line I used a lot with more troublesome customers, every if statement cost you four hours, hmm, every time you say the word if or unless or except in describing what you want it to do. Every time you say one of those words, it costs you four hours, hmm, because Okay, that complicates the code, that's more pathways to think about to make sure they interact properly to make sure that you know that this combination doesn't fall off a cliff. So if you can design the code such that there are fewer places where you have to branch fewer conditions, that's a win, right? You can do that in a way that then gives you more functionality. And you can make assumptions that it's there and therefore optimize things around that assumption. It ends up being faster and easier to read and less code. And you have that functionality anyway, right. So
Jeffrey A. McGuire 17:42
you get all the functionality at its most efficient. And if you don't want or need to use it, it doesn't hurt anything, if it's just sitting there with an interface available,
Larry Garfield 17:52
right like to use an example, if workspaces, great functionality, it's good to have every CMS need that type of functionality. But it's an add on module. If you bake that functionality in at the database level, then, if you don't want to use it fine, don't click the new workspace button. But the fact that it's always there means everywhere you say if workspaces module is enabled, goes away. And that simplifies things more than just that if statements, it also simplifies a lot of assumptions. You can bake that logic into the database, which means we're using it that's easier. I have worked on this specific thing yet and TYPO3, but it's on my to do list. But that's the kind of stuff I'm talking about for you know, a good architecture gives you functionality for free.
Jeffrey A. McGuire 18:35
Okay, that's a great, that's a great set of examples to thank you. Tell me their What's your job, job title. Now, what's the plan? What is it that you're doing in TYPO3? Then
Larry Garfield 18:46
I am officially on paper. I am a staff engineer for TYPO3 g mbh. My job description is go work on TYPO3 and make it better.
Jeffrey A. McGuire 18:55
And you work with the core team a lot, I guess. Yeah. How has the community been so far? How like walking in meeting people interacting on slack? How's that been?
Larry Garfield 19:04
Everyone's been super friendly. It's been really nice. walking in and people like, Oh, cool. You're the new guy. Come on, we'll show you around. You know, Benny gave me a lot of onboarding. When I started talking with Christian a lot. Talk with Oliver a bit. But Oliver harder? Yes. And one of the nice things that I've really appreciated is, as a senior level new guy, the temptation to or the risk of coming in and saying, Oh, I'm the expert. You're doing this all wrong. I don't want to do that. But I also don't want to lie about things. I'm really nice to talk to people. And anything I say, you know, this looks really nice. And this looks ugly. They're saying, Yeah, that's an ugly part. We know that's an ugly part. It's been a while we want to fix that help. So I seem to be really well aligned with people on the things that are working well, and the things that need work. Okay, good, because then I can go work on those things that need work and put in the work that they need.
Jeffrey A. McGuire 20:08
Well, that's that sounds great. Congratulations on that. I think also, that level of simplicity, or humility is a sign of strength and confidence in the community to Yeah, it sounds to me, I'm interpreting now. But it sounds to me, like the people you're dealing with don't have a chip on their shoulder, or an inferiority complex or any of that. They're like, we are doing the good open source work, because we love it. And because we owe now this goes back to something else. You said before, I've always had the feeling that the core team identifies the agencies as their as their client, right? And so we're like, yeah, we're in here doing the good work to give our clients the best tools to make client sites for the end for the end users. So cool. Nice. That's, that's really nice to hear.
Larry Garfield 20:58
Yeah. So I've been very, that's been very gratifying to be able to come in. So you know, I recognize the things that are nice and not so nice. And they're the same things that everyone else says are nice and not so nice. That makes everything easier, right? All right. But here's an idea to fix x. And people like, yeah, x is the thing that needs fixing. And we can jump straight to is this the right fix? Cool, especially having spent time in the trenches on Drupal issue queue, being able to skip over that first step of proving that this is not your baby, and there's something here to fix is very nice. And that's very good for the blood pressure. I'm, I'm enjoying this issue a lot better.
Jeffrey A. McGuire 21:40
Everything that you said to me years and years ago, about your first Drupal patch, is also still true, saying thank you expressing gratitude, figuring out how to approach you know, people and their specialist topics. You know, people are people and communities community, but the TYPO3 community is, in my experience, a lovely bunch of professionals, and generally have a really professional attitude to what they're what they're dealing with. And this is not a criticism of anyone else. It's just, I'm I'm really enjoying being in this community alongside the other things that I do.
Larry Garfield 22:19
And interestingly enough, I think it helps that it's smaller in the core team, that people actively contributing to TYPO3 core, there's fewer of them than on the really big projects like Drupal. And I think that actually helps, cause it's a lot easier to get consensus with 12 people than 1200 people. And, you know, it makes it a lot easier to have conversations and say, okay, who's, who's the expert in this, this area, there is one, we can write that person. And there is one, rather than having to run the gauntlet on everything. And I think that's very much TYPO3's credit, it's been able to have a smaller number of people who are more active, rather than a huge number of people who are kind of sort of active.
Jeffrey A. McGuire 23:06
Cool. Yep, I can, I can totally picture that for sure. This is super fun and interesting, Larry, and I really hope that everyone is enjoying getting the chance to know you, I think what we should do is ask you a few more questions, get through this thing, and then agree to get back together maybe in six months. And As of mid July 2021. What are your favorite features of TYPO3
Larry Garfield 23:33
at a code level? Honestly, I think the best thing I've run into is the update system. comparing that to the update system I'm familiar with. It made so much more sense right out of the box pieces just like oh, well, of course, you would do it that way rather than this other way. So I was very impressed with that.
Jeffrey A. McGuire 23:49
From a developer slash UX perspective, I love that every installation has update documentation on board across multiple versions, and a little analyzer tool that will look at the extensions that you wrote yourself, and tell you how compatible they are for the next for the next upgrade that's coming. I found that super impressive.
Larry Garfield 24:11
I was thinking just to the if I'm writing a new update, database update of some kind, then I was able to jump into that easier than anything else I've done in TYPO3 so far. So that that was really nice to see. Cool, um, I still have not fully wrapped my head around the way the data model works. I think part of that is the fact that it is not surfaced very well in the UI. But I think the concepts underneath it are powerful enough that they deserve to be surfaced a lot more than they are, if that makes sense. It feels like the kind of thing that in Drupal would have taken six modules to achieve.
Jeffrey A. McGuire 24:49
Are you talking about the kind of stuff where TYPO3 can be have giant websites literally in 100 languages with with 1000s of you know, pages and columns. Send attachments and remain very performance, that sort of data structure. That's,
Larry Garfield 25:05
that's table stakes for a CMS these days, I'm talking about the way that a page can have so many different components in it, that are still not just big blob of markup. Yeah. And that can vary so much. Now, there's definitely pros and cons to that. Sometimes that makes it harder to work with, sometimes it'll make it easier. But the fact that that idea is baked in at a core level gives a flexibility that, again, would have taken six modules to achieve in Drupal. Okay, so
Jeffrey A. McGuire 25:36
some semantic units of content. And the consequence for B is because it's also decoupled, that means that we can output directly to whatever it is that we want digital signage, or, you know, web service, or what have you.
Larry Garfield 25:51
There's a core concept here, that is really solid, the UI for it is great if you already know that, but it's not really good at teaching you that. Okay, the code behind it is probably using 15 times as much code as it needs to, if we were to modernize the approach and use, you know, modern databases, rather than MySQL three, if we were to use PHP eight, if we were to commit to certain things, okay. And that's the kind of stuff that I find exciting to work on,
Jeffrey A. McGuire 26:20
I want to be clear that you are not criticizing anyone. This is something that's been open sourced since 19 1999. And you you have the privilege of coming and helping highlight all the good work that people have done.
Larry Garfield 26:32
Absolutely. I've older code tends to accrue. As you build out functionality, it tends to accrue new warts. That's just how code works. Sure, sure. Periodically, it's beneficial not to rewrite the whole system, but to revisit a subsystem and say, okay, we started off with four features, now we've got 14 features, let's revisit the way we achieve it so that we can get 16 features in a quarter as much code. Now, exactly. We want all 16 of those, I think there's a number of places in TYPO3 that are due for that kind of revisiting that kind of heavy refactoring. Yep. And I enjoy doing that.
Jeffrey A. McGuire 27:15
In introducing people to the TYPO3 community, on the one hand, I had the feeling that it was time to meet people with a little more depth, some better known, some less known, and that's part of the reason for these community conversations. And in part, I think there's an opportunity to meet complete newcomers or people who we should get to know. So Larry, you and I have yet another thing in common these days, you are the author of a recent book, why don't you tell us the title and all about
Larry Garfield 27:51
Jeffrey A. McGuire 29:22
It sounds to me perfectly in line with the idea of improving TYPO3 in our case, to do more things better and more elegantly. Exactly. It really sounds like your theme right now.
Larry Garfield 29:37
That's not a right now, that's my theme is anything worth doing is worth doing? Well, so let's figure out what well is and do that. And as we find even better versions of Well, let's do that. And the language itself, over time, gets better at doing that supporting us in doing that.
Jeffrey A. McGuire 29:54
I just read a book about the women who programmed ENIAC and The men who designed the computer, which was dozens of separate modules, made these modules and walked away. And the women, the ENIAC six in World War Two, had to sit down and understand what each module did and how they could interact. And then the program was literally plugging wires from one unit to another, and setting what was going on in those signals defining the problem became the program, right, Larry, about that book of yours? Where can I get my hands on it?
Larry Garfield 30:37
So it's available on lean pub, lean pub comm, we can leave a link in the description. And I will also leave a link for a temporary discount on the book, figure 20% off. So you can get started on functional programming in PHP generally, and then apply that to your TYPO3 code. And I think you'll find it will make your life a lot better.
Jeffrey A. McGuire 31:01
Nice. Okay. Hey, I'm so glad to talk with you. And I'm sounds like this is working out and that you're you're having fun and helping a lot of people. It's pretty neat that you're working on TYPO3. So I think we should check in November, December 2021. And see how it's going. I'd love to have that conversation on this podcast with you. Cool.
Larry Garfield 31:20
At that point. Hopefully, I'll have my hands deep in what will become version 12.
Jeffrey A. McGuire 31:24
Nice. Okay. Yeah. Okay, so Larry Garfield, thank you so much for taking the time to talk with me today. And yeah, let's do this again soon.
Larry Garfield 31:34
And I'm always up for another jam session. All right,
Thanks to the TYPO3 Association for sponsoring this podcast. Thank you b13. And Stephanie Kreuzer for our logo. Merci beaucoup Patrick Gaumont, TYPO3 developer and musician exraordinaire for our theme music. Thanks again to today's guest. If you like what you heard, don't forget to subscribe in the podcast app of your choice and share Application, the TYPO3 Community Podcast with your friends and colleagues. If you didn't like it, please share it with your enemies. You can find show notes, links and more information in our posts on typo3.org. Remember, open source software would not be what it is without you. Thank you all for your contributions.