
Show notes
- Apache SSI
- SourceForge
- A Perfect Storm
- The 2020 WordPress and PHP 8 compatibility report
- The Grumpy Programmer’s Guide To Testing PHP Applications
- Documentation of test tools PHPUnit
- Rolling schedule for WordPress upgrades
- Git Extensions
- Juliette on Twitter
Episode Transcription
[MUSIC] >> Hello, and welcome to the newly rebranded OpenSorcery Podcast. If you were a listener of my previous show, the WP Hacker Cast, you probably wonder why the rebrand. Well, I’m involved in open source outside of WordPress, as I am a web developer and an Ubuntu desktop user. So there are many interesting folks in the general open source space that I would love to interview. But with a WordPress focus podcast, it limits who I might consider a guest. For 2021, I have decided to open the guest list to folks who drive the open source software movement, the maintainers, code contributors, document writers, and everyone who puts time into open source software to make it work. For the first episode of this new format, I cheated a little, and that my guest is both a prolific open source contributor and a WordPress contributor. If you’ve spent any time in the PHP community, you would have seen or heard of Juliette Reinde’s former. Juliette has a passion for open source and a wealth of experience in the field. I consider myself lucky to be able to call her a friend and a mentor. We spoke about many things, including her thoughts on the recent PHP 8 release. So I hope you will enjoy my chat with Juliette. Hey, Juliette, how are you today? I’m all right. How are you? Nice to hear from you again, John. Yes. If I remember correctly, I think the last time I saw you was before the plague. When we could still have WordCamps. I think it was probably Word Computer in Berlin. That’s right. Yes. That seems like so long ago. Anyway, so I know who you are, but there might be some people listening to this podcast who don’t know who you are. So could you tell us who you are, what you do and where in this lovely world you are from? I’m still trying to figure out where I am. Let me read you something which I use in my speaker profile, which sort of probably tells you enough. I’m an opinionated, passionate, busybody with a prolific portfolio of contributions to the to hard-profile open source projects. And the short of it is I’m self-employed. I do whatever the heck I please. And a lot of that is contributing to open source where I feel I can actually make a good contribution at value and at the same time, the kind of make the kind of contributions I enjoy doing. – Excellent, thanks. And what part of the world are you from? I’m from the Netherlands. You see the bright sky behind you is Amsterdam sky. Oh, wow. Lovely. When I was still planning to go to Porto for WordCamp Europe last year, the flights from South Africa included an eight hour layover in Amsterdam. And so I was really going to sort of reach out to my friends in Amsterdam and say, “Hey, Can anybody show me around your city for eight hours? I really hope you would have. Yes, please. Yeah, and I would have done and I would have probably thoroughly enjoyed it. But then obviously that didn’t happen. So there you go. The other thing I like to ask my guests just out of interest’s sake is what are you drinking today? Are you a tea person, a coffee person, the alcohol person? What is your favorite drink of choice? Let’s put it this way. It’s in the middle of the afternoon, so no alcohol yet. I’m a caffeine person and as coffee is too bitter, I’m using Diet Coke for my caffeine needs. Okay, excellent. Excellent. Yeah, I’m a bit of a coffee nut myself. I’ve had to slow down a bit because sometimes I drink until about four or five in the afternoon and then I can’t sleep properly. That doesn’t bother me whatsoever. Doesn’t it? Wow. I drink until the very last moment before I go to sleep. Wow, I wish I could do that. (laughs) Cool, so I know you, as you mentioned, an opinionated, prolific open source contributor. I’d like to talk to you a little bit about your open source history, but before I do that, I’d like to ask you this question. You mentioned in your introduction that you are self-employed. Have you always been self-employed, or was there a time where you used to work for companies and then you switched? – When I first graduated, I became employed by a company, oh God, this is a long time ago, a very small company which basically placed people at other companies. – Okay. – We call it Detachment Agency, but I don’t think that translates well. And they turned out to be a daughter company of one of the biggest IT companies in the world. And quite soon they decided that they didn’t want daughter companies anymore, So they integrated and I worked there for about seven years. – Oh, wow. – So yeah. – And so what caused the transition from working for a company to working for yourself? – More than anything, I became self-employed for the freedom. – Okay. – The freedom, I mean, I have no bad feelings towards that company at all. I mean, they gave me amazing opportunities. And because it was such a large company, if you wanted to switch careers to do something completely different, you just went to a different department. So that was quite amazing. But there were other things like, you know, the infighting you sometimes have between different departments, the internal competition, which I did not like. And the politics around that, which I just didn’t really want to deal with. Then again, I mean, open source is not much different. But at least with open source politics, you’re not getting paid by it. So you can’t step away if you need to. Yeah, I can decide this is not worth my time or my energy. And the freedom to be able to decide that is a big part of why I enjoy being self-employed. Absolutely. So, yeah. Absolutely. And tell me, this one is one that I’ve never actually asked you and it kind of leads into our open source section as well. But have you always been a PHP developer or had you come from other languages and ended up in PHP? To be quite fair, I’m a business major. Okay. I studied international business. Self-taught PHP developer. Yeah, I have doubled in other languages. One of the first sites I built was for a nonprofit organization and we used SSI. I don’t really remember that. I’ve never worked with it, but I do know I’ve heard about it. Let’s put it that way. It’s basically a way where you can include using surface-right technology but basic Apache default technology where you can include one file into another. And obviously once you wanted to do slightly more complex things like having you could do the header and the footer include those surface-right include, but then if you wanted to change the title and have that different for every page that was getting more complex. So at some point you then needed something else. So I started doing that with JavaScript. It didn’t actually work. Learned CSS. And at some point realized I need more. Okay. >> Okay. >> That was a little bit in pull, but very quickly settled on PHP. >> Okay. Excellent. You settled on PHP, you’ve obviously got this wide range of contributions to open source projects. Can you remember what your first contribution was to open source? >> I was afraid you were going to ask me something like that. I don’t rightfully remember, but most likely, and I’m guessing here, there was probably a translation of one of the Firefox add-ons. Something like that. I started like most open source contributors with low level contributions, which are valuable all the same. start translating Firefox add-on or and at some point I’d started doing some things on SourceForge which was you know before GitHub. Yeah I don’t fully remember but it will be something like that. Okay no fair enough yeah I find it interesting you say SourceForge before GitHub I’m sure there are many people today listening to this podcast going there was something before or GitHub. Oh, yes, go on. So I know you. I met you, or at least I got to know you through my involvement in the WordPress community, but I also know that you’re not just a contributor to the WordPress community, you’re a contributor to the wider PHP community. Would you say that if you had to look at your open source contributions, they are heavily sort of swaying to the WordPress world? Or do you feel like you have a good 50/50 balance of whatever you’re involved in outside of WordPress? – Realistically, it’s funny, people perceive me differently. People who are largely from the PHP community think, you know, avoid for WordPress. People within the WordPress community see me as the PHP person. – Right. So it’s largely a case of perception. If I look at what I contribute to, I do more than anything. Most of my contributions are in the PHP fields. If I look at the WordPress part of that, I think I see myself more as someone who works in the periphery. I will get certain things set up so WordPress can progress. >> Right. >> Or I will push certain topics within the WordPress community like someone behind the scenes, pressing some buttons and getting people to then actually action it. I’m not the one who will carry a torch and see something within WordPress project through from beginning to the end. Well, I will in some cases, but that’s not my role really. more than anything I’m trying to inform people enough so that they can take the actions which are needed. I’m very interested in the fact that you’ve said that because I first met you when you were leading the WordPress coding standards table at WordCamp Europe in Belgrade. Okay. And you probably don’t remember this conversation because I’m sure you’ve had many conversations like this. I obviously do. I remember saying to you, “Oh, well, I didn’t realize there was a coding standards team.” And you said to me, “Yes, and here we are.” And that is how I know you. I know you as somebody, and this might be the terminology that you were staying away from but I’m going to go ahead and say it’s almost behind the scenes controlling people. But totally not controlling. No, no. Definitely not controlling. Definitely not controlling but you help and guide and steer but you’re never the kind of person to be at the forefront of something, the face of something. So what we’re going to discuss a bit later I think is probably quite an interesting position for you right now where you almost become the face of something which we’ll talk about in a second. It must be quite interesting for you. And let’s not talk about that now, because we will get there. But I know you as a person who is not massively outspoken– probably the wrong word– but you’re not standing up in front saying, hey, we should all do this. You’re behind the scenes guiding and helping and mentoring. My second interaction with you was when I was learning about how to do autoloading and how to do autoloading in plugins. and you and I had a conversation in Slack. And I just asked the question about something and you came in and you gave me your advice. And based on that, I went and did something. But again, you were not the kind of person who was promoting autoloading to the world. You were just there to offer some guidance and to offer some help. And do you think that that’s something– – There are some misconceptions about it. – Exactly, exactly. And do you think that’s something that is who you are naturally as a human being? And that’s why you are that way? or is it something that you’ve learned over time? – Probably more something I learned over time. More than anything, for me, it’s a case of making choices, how do I want to spend my energy? And if I can see certain things are gonna be a long process of lobbying a lot of people and really doing all the political work, I might choose to not be the one to be at the forefront of something, but make sure that the people who do want to be at the forefront of it have the right information to be able to carry it. So I very much choose where my energy is best spent and that’s by far not always in those kind of processes which are heavily political. Right. Right. So before we get into that kind of conversation, the last thing I just want to ask you very quickly in terms of your open source history, and I’m going to apologize for all the other projects that you’re involved in for me asking this question, but what is your favorite open source project that you are currently an active contributor to? I don’t have a favorite one. Okay. I mean, no, if I had a favorite one, all my time would go into that one. – Fair enough. – Basically I do what I, with my open source contributions, I do things which I enjoy doing. And as soon as I get bored, I will move on to the next project, which will keep me, my attention occupied again, and which will keep me interested again. if my intentions are welcome there, and if not, I’ll find something else. – Okay, excellent, that’s good to know. – Yeah, there’s no favorite. If you look at where I spent the majority of my time, probably, it’s in the PHP Coach Sniffer sphere, but that’s not just PHP Coach Sniffer, it’s PHP Coach Sniffer, PHP CS Utils, PHP CS Extra, PHP compatibility, WordPress coding standards, and other standards which are company specific, which I get hired for to actually help out. >> Excellent. >> Yeah. >> There’s no wrong answer there. It’s almost a trick question from my part. I didn’t expect you to have one. It’s just interesting to know. So I’m glad you mentioned all of those packages, though, because they do lead on to our next sort of topic of discussion. For those of you who don’t know, Juliet posted a blog post on the 24 days in December website recently titled “A Perfect Storm” in which she details some of the experiences that she had as an open source maintainer and how the latest version of PHP 8 affected that world. I’m going to link to the article in the show notes. I do recommend you taking a read of it. I happen to also be one of the people who organizes the 24 days in December website with Andreas and I can’t remember the other chapter name right now, I do apologize to him. So I was able to see some of the activity around this and Juliet’s post definitely was the one that was online on social media the most. – I did realize when I wrote it, I was taking a stand there and I knew it could be perceived as very controversial. I was very careful how I worded things because it wasn’t intended to offend specific people or to attack specific people. But I did think it was a statement which needed to be made. And both on social media as well as privately, I’ve had a lot of comments from people saying, that was daring. Thank you for saying it had to be said. And I’m glad you did it. A lot of open source maintainers who have reached out to me privately also to say this, which I think is telling. Absolutely. So, the crux, I’m obviously not going to read the whole blog post here and correct me if I’m wrong, but the crux of the post was your experiences of almost the breaking changes that PHP 8 caused and how that affected the projects you work on, how it affected the people maintaining those projects, almost sort of the state of PHP development right now in terms of how it’s moving to a almost one way of doing things where previously it used to be you could do things anywhere you wanted to almost. And so you you say you know, you thought about how you drafted this, you thought about how you put it out there, I’m sure you knew that you would get positive and negative feedback around it. Do you do you have the price to be honest how little negative feedback I’ve gotten? Really? Yeah. Okay. Okay. That’s that’s very interesting. So the first question that’s that’s excellent. The first question I wanted to ask you there then is and and this I’m going to preface by saying this is Juliet’s opinion so so I will allow her to edit any part of this that she wants to. in your opinion, based on the current PHP release cycle, and based on what you wrote in the article, let’s boil it down to what do you feel could be improved with the next version of the PHP? More than anything, one of the things I’d really like to say is the voices of big users of PHP, as in big projects which use PHP, will are not C developers to also be heard, to have a voice in the RFCs in the actual internals of PHP and be heard and not be dismissed straight away, oh, but you’re still supporting PHP 5.6. So drop that and your problem is solved, because it’s not true. The problem isn’t solved by dropping five six. But having those voices heard and taken seriously would be interesting and would be helpful, I think. Okay, so I, I kind of, based on our conversations before this podcast, based on me knowing you based on other conversations I’ve seen you having, I’ve been thinking about this myself. I just to give the listeners a little bit of my background, I only discovered the concept of open source communities when I joined, as it were, the WordPress community. And I have since discovered the wider PHP community, and I have had interesting conversations with many, many people. And I was thinking about, Are there before we let’s let’s let’s put aside the process. Are there things that we could be doing better physical tooling or structure? I’ll give an example. I know for a fact that there is a WordPress community Slack instance. And I can join that instance and I can join different teams there and I can ask questions. I don’t know if such a thing exists for the PHP community. It’s called “PHP internals” and it’s a mailing list. And it’s a mailing list. Now, in your opinion, do you think that we could add more things? Do you think adding more ways of getting feedback would help? Or is it perhaps the way that we gather and listen to feedback? I don’t think the tooling is the problem. I think more than anything that there is a disconnect between the PHP community and communities like WordPress, where the majority of WordPress developers have very little awareness of what’s going on in the PHP community until there is a release and then they might read the migration guide, if at all. And the communities like the WordPress community basically need to start stepping up. step up and get involved with PHP internals, where not just be, you know, we’ll take whatever is thrown at us, but we want to be involved and take part in it. And internals, PHP internals has a bad reputation, it’s nowhere near as bad as it used to be. But again, from if I look at it, from my personal point of view, I choose very carefully how I want to spend my time. And I’ve so far chosen not to spend a day because I kind of feel I would probably get too frustrated. And in that case, my energy is better spent elsewhere. But there might be people who have different frustration thresholds, we would be better suited to have that conversation. And I would very much like to hear from them. I would very much like to help them enable them to get involved with PHP internals, because I do think our voice needs to be heard. And I do think the only way we can get that to happen is by speaking up and by getting involved. Interesting. So I’m going to share an opinion that I have with you. I’ve had the opportunity to interview folks from the United States, Canada, those sort of, you know, the Western world, if you will. I’ve also had the opportunity to interview folks from Europe, folks like yourself, folks like Alon. And I actually asked Alon the same question. I said to him, when I interviewed him for the podcast, I said, I get the sense as a South African, I get the sense that the sort of the Western, sort of US, America, Canada, that side of the world, developers, contributors, they tend to have a very, what’s the word I’m looking for, get it done mentality, whereas the European developers and folks that are involved tend to have a bit more of a, and I think he used the term academic mentality. So a little bit, a little bit more thoughtful about what happens in the way, the way things are done. And so the point that I’m trying to get to is, is that do you think that the people who are, are sort of getting involved in these kind of things, or should be getting involved in these kind of things, are not doing it because they don’t think in the same way? Do you Do you think that there is a almost a, if we look at WordPress as an example, WordPress in my opinion at least, is kind of very US centric. It’s getting better over time, but it is still very kind of US centric. And so they don’t think about the academic side of what happening in PHP and making sure they’re keeping up to date with their things. Or do you think it’s just a case of, ah, we’ll worry about it when we get there? >> To be quite firm, I’m not 100% sure what your own scheme is. Is this about the WordPress community? Is this about the PHP community? >> It’s about what you were saying about almost as a WordPress community or as a Drupal community or as a Laravel community, we should be getting more involved in what PHP is doing, is what you were saying earlier, right? My question is, why are we not doing that? What should we be changing? What should we be improving? Or is it just a case of people just taking the time to see what’s going on? It is a case on the one hand of people having the interest, having the know-how to have constructive conversations in those channels. I honestly don’t think it’s a cultural thing. Okay. No, I mean, the open source community is a global community, both in the PHP sphere as well as the WordPress sphere. And you’re saying that WordPress is heavily America centric. I don’t necessarily identify with that. OK, if you even look at the word comes, word from Europe has been bigger than word from US for years. Right. So I’m not sure. That it’s a cultural thing, I think more than anything that a look, OK, we need to step back a couple of steps. If I look at the WordPress community, I see a lot of people will come from, OK, I have my own site now. something to do to be slightly different. Now, okay, so they look at Stack Overflow or whatever other side and find a little snippet. They add it to the function file of the team and, you know, fast forward two years and at some point they’re like, okay, I want to do some more and they build a tiny plugin or they build their own team and they slowly grow into the WordPress community that way and start contributing in different ways. A large part and I’m not saying all but definitely a large part of the WordPress community, the way I see it comes from site owners who want to do more and will have very little or if any at all knowledge of PHP. They learned by doing from based within the WordPress structure and quite fair the WordPress code isn’t that great. It works which makes it great and is running in millions of sign which makes it great. But if you look at the code itself, some of it, yeah, could definitely be looked at again. If you look at it from an architectural point of view, it can do with some large refactors. But don’t touch it when it’s not broken is also a mantra in IT. And yeah, I mean, It is a legacy project. It’s a project which has grown from humble beginnings to the massive player it is now and you can see that in the code. And there’s definitely a high quality code there as well, absolutely. But the quality is different and the way of writing WordPress code for plugins and teams, if people are educated in PHP with that as a basis, they have the best branch work to actually understand PHP. So a lot of them for that for a lot of people, PHP is yeah, it’s outside of their scope in some ways, it’s something they’re not 100% comfortable with. And there’s very few people, and there definitely are people, but there’s very few people move come from PHP to WordPress will actually PHP and new people that before they ever touched WordPress and we know about good best practices wouldn’t actually understand PHP in a way that they they also have the interest to to keep up with what PHP is doing and I understand from a WordPress point of view why a lot of people are not interested in what PHP is doing because let’s be fair with a minimum of PHP 5.6 we will not be able to use all those nice new goodies for years to come. So there’s not much benefit for a lot of people in the WordPress community to keep up what PHP is doing because they don’t benefit from it in their code they can’t use it. So I understand that there’s a the gap there but that doesn’t mean we shouldn’t try. Right, right. I think now I’m understanding better. You had a conversation with somebody on Twitter recently where you were talking about the premise of this person’s article was that the majority of people who are affected by this are PHP developers and that assumption you believe is wrong. Now I’m understanding what you’re saying. Let me get back to that, because what I meant by that is if you look at the stats, 80% of the web runs on WordPress. Oh, sorry, on PHP. 50% of that is WordPress. WordPress. Yeah. And I think probably not even 1% of the WordPress users are involved with development of WordPress. So I’m talking about those 99% of users will go to cPanel, press the install WordPress button, and have their WordPress signed up out of your buckets and out of team have no clue that it runs on PHP. Right. And that’s not even that’s not the contributors to WordPress. Most contributors to WordPress do know it runs on PHP and are at least aware what PHP is. I’m talking about end users, which for whom it often is really, really hard to know how to upgrade a PHP version. And I know the WordPress project has put a lot of effort into getting people to upgrade, to secure versions, to maintain versions. And they’ve been really successful. It’s a slow part, but they really have put a lot of work into that, which I totally admire. And I really respect the WordPress community for doing that. But that is needed because people don’t even know they’re working on PHP. And if you run on a managed hosted PHP of a WordPress version, that’s no problem either, because your host will sort it out. Except if you have bought some hosting without any knowledge of what you’re doing and just press the install WordPress, you won’t know what PHP version you’re on, let alone whether you need to upgrade or how how to do it. And that is the majority of WordPress users. I mean, yes, of course, there’s big companies which have agencies running things, etc, etc. And that’s also a part of the WordPress community. But there’s also a large part, which are end users who have no clue what PHP is. And that’s what I was talking about in that remark, because WordPress is still 50% of the user base of PHP. And of the WordPress user base, let’s be generous, let’s say 20%, say 40% actually knows what PHP is. But that still leaves 60% from who says, okay, I may have heard the term, but it’s too difficult and too scary for me. And then I’d like to refer actually to the article I wrote on Make WordPress, where I proposed a fixed rolling schedule for PHP drops, where I competitive with the car surface. I actually just picked my car up from the garage. It’s just been surfaced. When you have a car, you can either say, OK, I’m technical enough. I can maintain it myself. I can do the car surface myself and tinker away. That’s fine. Or you can say, okay, I don’t know that, but I want to learn. And you go into a course and learn how to maintain a car. If you don’t want to do that, you go to a garage and get them to service it once a year. – Yeah. – And if even that is too much for you, you instead buy, rent a lease car, where the lease company takes care of all of that for you. – Right, but it happens. out with a website. If you are a WordPress user, you have your own website on WordPress, you can either say, okay, I’m technical, I can update, do the updates myself, I can make sure that it’s on the right PHP version, etc, etc. You can say, okay, I don’t know that I want to learn, and you can learn. Or you go to a professional event, half a day, and them to do it once a year or once every three years for you and get the site up to date again. You can rent an agency to do it on a regular basis or you can use managed hosting where the host will do a lot of this for you. But don’t tell me that the reason that they don’t know PHP is a good enough reason not for WordPress not to update the minimum PHP version. I mean we’re still rolling out security updates all the way back to what is it 3.7. So it was if we’re leaving those users insecure it just means they won’t be able to use the new features. If they want the new features well then they need to either learn or spend some money to actually get it updated. I mean, it’s no different than anything else. Hmm. So, so what I’m what I’m hearing is that there are there are if we look if we look just at WordPress, because that is the community that we’re both involved in. But I could I could I could include the Drupal community, the magenta community, any other application, yeah, anything else written in PHP. So let’s call it the ancillary communities and let’s call it the core PHP community. I almost feel like you’re saying… – The content management systems, the communities. – Both parties need to do some work. The content management system communities need to do some work, the PHP community needs to do some work. In your opinion, let’s start with the content management/framework/whatever communities. What should they be doing to prevent this kind of perfect storm from happening in the future? What kinds of things should we be putting in place? Let’s make it even closer to home. What should I, as a plugin maintainer, as a member of the WordPress community, an active contributor to the WordPress community, and somebody who likes to contribute to the PHP community in what way I can do, what should I be doing to prevent this from happening in the future? Well I’d like to very much invite you to join an idea I’ve been playing with to get set up a working group of people from various CMSs including WordPress to regularly go you know meet say every two weeks keep an eye on internals BHB internals discuss with it that group hang on is this something which will impact our frameworks and if not, okay, you know, let’s move on. If it is, which person of our working group is going to spearhead this discussion and going to focalize our concerns about what’s happening now in PWA? And get people from that working group to speak up about different subjects. Right, right. So that would that would entail reaching out to the Joomlers, the Drupal’s, you know, Type-03, all of those communities and forming, as you say, some kind of working group with representatives from all of those communities and getting them involved. Right, so you’ve given me an idea of what the community should be doing. What should the core PHP community, in your opinion, be doing differently? How should they look at this perfect storm and go, well, what can we improve to help prevent this from happening in the future? Well, one thing would be, and now I’m going to be controversial. have honest backward compatibility impact analysis in RFCs. Because if you look at the RFC for the stricter engine warnings which basically made of a turn strict mode on for all the PHP internal functions whether you want it or not, The actual impact statement there is this will impact PHP itself more because we have to adjust our tests. It will be very rare for this to have any impact on userland. The fact of the matter is it has a huge impact on userland because userland was used to PHP being a loose type language and juggling. And if you combine that particular change with PHP 8 adding lots of type declarations to functions which didn’t have them before, changing return types and changing sometimes the parameter types of PHP internal functions, all of those now go from not even a warning or a notice to fatal error in one go. Right. That is specifically what I was talking about with the perfect storm. And that is something which was completely not addressed and not even mentioned in the impact statements of the RFC. And I think that had been known in advance, the voting might have been different. Right. So, okay. So, I’m going to, I’m going to preface this question with a I am not here to try and point fingers at anybody. I am very much a why can’t we all just get a long kind of guy? My contribution to 24 days of December last year was along those lines. I am one of those people that you mentioned earlier. I was a PHP developer, not maybe an amazing one, but that was my designation. So I literally just worked in PHP before I even discovered WordPress development. So I feel like I have a better understanding of the kind of things you’re talking about. And I found in joining the WordPress community, I discovered that almost derision of the fact that I now called myself a WordPress developer. I wasn’t hardcore enough anymore or whatever you want to call it. The question that I’m leading to is, or at least before I ask the question, the point that I’m trying to make is I’m not here today to ask you this question to try and say these people were wrong, they were, you know, evil, they were doing nasty things. I’m just trying to help us as a community improve. I noticed for the first time And since I joined the WordPress community and started following people on Twitter and following people who were involved in these things, I noticed quite a lot of discussion around some of these RFCs leading up to PHP 8. Quite a bit of back and forth, positive and negative. I know Derek was getting involved. I think Andreas made some comments. And it seemed to me like this conversation that you and I are having now, we’re almost the, and please excuse this phrase, the old God, the folks that have been around for a the folks that have been doing this for a while, had some reservations about what was happening. Is there almost a disconnect between the people who are driving PHP forward and the rest of what’s happening in PHP land because the people driving PHP forward, to me at least, this is my opinion, seem to be maybe a bit younger and therefore they haven’t had to deal with the PHP 4s and 5s of the world? So they almost live in a perfect world where they don’t have to worry about too far backwards compatibility. Or am I just talking out of the hole in my head here? No, I think you have a point there, but I don’t think that’s the only thing. I do think it’s part of it. I do think that there are, I mean, and it’s not surprising. I mean, I mean, let’s be fair, PHP core is written in C. The people who contribute to PHP call in general are C developers, do not PHP developers. – Right. – And that makes for natural disconnect. – Right. – And yeah, I do think it would be helpful to have more voices from a business. big open source projects because of, you know, they they actually work with PHP every day. And some of the developers and people who are voting rights in PHP core actually do work with PHP every day, but not everyone. And the I think the people who are who identify as a C developer, rather than a PHP developer, probably might have more, more of a struggle in gouging what the impact of a proposal is, when they make it instead of the people will actually come from usual and PHP. And I don’t blame them. I don’t think that I think it’s very logical that that’s happening. I think it might be a good idea to maybe couple people with a mentor who has got more usual and PHP experience. That’s interesting then. Would you say that, and this is difficult for me to even answer because I haven’t been following PHP development for much time at all and you might have a better understanding here, you might not, I’m just asking, but do you feel like the people who used to be those voices have since moved on and that’s why those voices aren’t there anymore? partially. Okay. Partially, not completely. But yeah, different phases of life, different priorities. But also, you know, people change in standing in the community at some point based on how active they are. I don’t know. So the next question is kind of related to your blog post. We’ve mentioned that there’s been some discussion around it. I saw a lot of the positive, and I did see a lot of positive retweets with comments, you know, agreeing with what you were saying. I saw the other day, as Zeev Zoranski, one of the original developers of PHP, he’s now CTO as strategic I think it is yeah, he retweeted it with with similar this should not have happened kind of comments There also has been some you know you guys need to The one comment I saw was just tell people to use the older version. Okay, that’s a whole discussion. We won’t get into that now Quite fair. I mean and I’ve I’ve said this yesterday at the PHP CTC online conference as well Even if you wrote a project for PHP 7 for minima With strict mode on, you will still run into the same problems as I’ve been outlining. This is not about changing the minimum version of a project, minimum PHP version. Even with PHP 7.4, with strict mode on, you would still go from perfectly working code to fatal error in PHP 8 for certain things. You’re already answering my next question, but that’s great. So, no, that’s fine. That was the question that I was going to ask, but I had a follow-up. Do you think, based on that, that your article has sparked, and I mean it’s definitely sparked this conversation, it sparked your talk yesterday at PHPCC, which I don’t know if they’re publishing it live, but I will link through at least to the conference on the show. I actually quite enjoyed that a few months before the article already. Oh, but it was a perfect opportunity. But do you think that that’s going to create enough of interest from the right kind of people to prevent this again or at least to help this be better next time or do you think that there’s more that we should do to get the word out? Well just me speaking out is not enough. I do think I’ve managed to get a number of people thinking about it more than they ever had before probably. Okay. And that I’ve managed to, for some people, create an understanding of the point I’m making, which they didn’t have before. So I do think it’s helping, but it’s not enough to make a change. But the fact that this has now been pointed out, the fact that PHP 8 has been released with these things without a way to turn them off is cause for concern not just by me though I’ve been one of the most vocal people about it. I think the fact that I’ve been vocal has hopefully triggered enough people to realise okay we do need to change something here. And we need to speak up more from a user lands perspective. So the what we mentioned before, you know, the idea of possibly forming a working group with various CMSs to get more involved, get more vocal in PHP internals, I think is one of the things which came out of this. And I would really hope that that becomes reality. And I’m very happy for people to reach out to me if they want to be part of it. I’m very happy to get it started. After that, I would very much also like to step out again. As we said earlier, in the background, helping, guiding, but not the one running the show. Yes, thank you. Absolutely. Awesome. So from my point of view, I feel like we have discussed this topic now. Is there anything else around this topic that you would like to mention or discuss before we sort of move on to the last bit of this interview? Well, more than anything, I would really, really, really like to tell anyone listening who manages a PHP project, whether it’s open source or closed source, doesn’t matter. Please, before you move on to PHP 8, make sure you have tests in place, unit tests, integration tests, make sure you have tests with high code coverage, as in testing all the different paths, make sure the unhappy path is tested, and make sure you use strict assertions, and then test on PHP 8, because this change to PHP really can break a lot of things. So be careful and be warned. And for projects with high coverage, it’s a relatively easy change because the test will point out all the problems. But without tests, it’s really hard because most of these changes cannot be detected by static analysis. And I’m saying that as the main alter currently of PHP compatibility. So we can detect a lot, really a lot, but we do not have access to runtime type or value of variables. And all of this is to do with runtime type and value of variables. Something like PHP compatibility will not be able to detect this properly. something like PHP stand again will not be able to detect this properly. They will, they will guesstimate. But, you know, you might get a report with 1000 issues out of which there are 950 false positives. Because we we again, static analysis tools doesn’t have access to this. the only real way to guarantee your own projects, PHP 8 compatibility is to have tests. And that does mean that, you know, all that technical depth, which is built up in projects, it’s gonna have to be addressed now. And that’s painful. And it’s also painful to have that conversation with a business manager saying, look, yeah, I know you, you have always said we need to prioritize other things. But if you want to change to PHP eight, we now need to prioritize this. And it’s something for which you will not see any effect until something goes wrong, which, you know, which will probably hurt you because it won’t get into the code base because the test will actually prevent from getting into the code base being incorrect. So it’s a hard shell to business owners. But yeah, that technical depth is really, should really be number one priority if you want to start using PHP 8. – Absolutely. Now I’m glad you raised that. I kind of discovered that myself a few years ago when I made a commitment to learn how to test properly and how to sort of figure that all out. And one of the things that I discovered that I actually wrote about and I refer to whenever I talk about testing is what I call the adding test to a legacy code based conundrum where you sit down and you go, right, I want to build a new feature. Okay, but before I build the new feature, does the current feature have tests? No, it doesn’t. Okay, now I need to write test. Oh, wow. Now I need to think about this happy path and all of these sad parts. Oh, wow. Now I have to write the test. And then by the time you’ve done all of that, it’s three days later and you haven’t even start of the feature and the feature was going to take you a day. And that’s the reality of it. And so on top of that, you sometimes you look at the code which doesn’t have tests, you’re like, what were what was actually the intention of the code? I mean, a funny anecdote, which I am allowed to to mention a customer of mine wanted to start adding tests to legacy code which didn’t have any test. And we’d already cleaned up the code staff, the code base, ’cause that was a mess before as well. And while doing that, I spotted a standalone function which was beautiful, as in beautifully standalone, a beautiful example to start adding the tests. It was a painful afternoon for my customer. because we started adding tests. And at first he tried to use his own code in E-file to generate the test data. That was like the yet, no, let’s not do that. (laughing) We didn’t do it manually or use someone else’s tool, but do not use your own code. Okay, so that was the first trap. Then once the test data was there, the test obviously didn’t pass. And then I added some more test cases, which I knew would fail. And again, obviously they didn’t pass. Just by adding tests to that particular, well originally it was a properly 40 line function. In the end, after we added the test and debugged it, it was a five line function and we’d taken so many bugs out. The value of having tests is really there. But for legacy code where you’re not always sure what the original function’s intention was, it’s hard. And yes, sometimes it’s easier than to create, well, to refactor but with test-driven development. And I understand when you say that refactor would have cost me a day writing the test for three days. It’s an investment, but it’s an investment which will pay itself back in the future. I mean, you know, the whole story about the Mars Rover, which crashed. You know why? No. Okay, someone used miles instead of kilometers. That would have been called with test. Right. Wow. Yeah. My favorite, and I might edit this out, but my favorite is when you sit down, you’re working on a legacy code base that somebody else had written before you, and nothing against this person, they just weren’t thinking about writing tests. And you realize that the code is untestable in its current form. Because it just does way too many things. And so you first have to pull that apart. But how do you write, you first got to write tests that you know you’re going to throw away, because you’re going to have to pull that apart anyway. >> And more written things with internal caching in a way that the cat will prevent the second test case from running. And there’s so many ways to write untestable codes. That does make life difficult. All the more reason why it should then be refactored. >> Absolutely. So if you don’t mind me asking, and this is very much Juliet’s opinion, But if you were to say to somebody today that comes to you and says, “I want to go and learn how to write tests.” I don’t know. Nobody’s ever explained it to me, nobody’s shown it to me. I don’t know even know where to start. What resources would you point them to? Well, this is very, very biased. No problem. I mean, the first thing which comes to mind is Chris Hartges has written a number of books. The Gram story. please go and have a look at these books. They’re good. Second of all, don’t ever underestimate the value of documentation of test tools. The documentation of PHP unit alone is a treasure trove of things which are unused, because people are not aware that that’s part of PHP unit. So there’s lots of tools and resources out there. I don’t have a preferred one, But if you’re really greenfield, I’d say start with one of the books or video by Chris Arches. No, excellent. That is actually how I started. So I can resonate with that statement. I don’t know at what point I started following him. But yes, when I made that decision, I went looking for people and I think that’s how I found him and I started with his content. I’m glad you mentioned it. I would have if you didn’t. If I’m honest, I haven’t read or seen the material myself, but I know him as a person and I know that what he will say about this will be solid. He really is an expert in the field. No, absolutely. Absolutely. Excellent. So we’re getting towards the end of our hour here now. We could talk about this all day, but I don’t want to take up too much of your time. What I like to do at the end of my podcast is just run through some very sort of quick short form hacking questions. For me, this is more just about getting to know the person a little bit better. Maybe I glean some interesting piece of information or tool process that you’re using. So the one question I have for you is that if you could, and let’s focus this around the WordPress community, just because that’s the one where I know you from. If you could snap your fingers and change one thing about, let’s call it the WordPress project, What would it be and why? Okay, I’m going to give an extremely biased answer and say, let’s accept that proposal of mine from August, where we have a fixed rolling schedule of PHP version drops. I mean, this will make PHP version, a minimum version, manageable, predictable. agencies can plan two three years ahead with customers because they know what’s gonna happen it will make life so much easier for anyone who’s got a business related to WordPress and for users the impact won’t be that much at that large because with that proposal they would have to effectively you know at at the outside change their PHP version once every, I think nine years, seriously. I mean, do not come complain to me about that. That’s really generous. – Absolutely, no, great. And I don’t mind biased answers at all. That’s the point here. And I will link through to that proposal in the show notes for this episode. – Please do. – Then I wanted to ask you, I know that you have a very interesting development setup because you have to have multiple versions of PHP running for testing and those kinds of things, but what is your primary development tool, IDE or text editor? What is the tool that you use the most every day? – My most important development tool realistically is Git Extensions. – Okay. – Like this GUI or a forget. Live in Git Extensions. And it’s not a code editor as such that you do have the ability to edit code directly in the GUI, which I do actually use once in a while. but Git extensions is where I live and breed. If we’re talking editors, I mean, I use several. I often use a really small unknown one called context and nobody’s ever heard of it, nobody uses it, but it’s very lightweight. And when you have a lot of other things running on your machine at the same time, lightweight is a good thing. And I’ve just switched to a new desktop. My previous desktop really would not have been able to handle a full blown IDE combined with all the other things I’d be running at the same time. New machine, I’m hopeful. – Excellent. This is why I ask these questions ’cause I like to know what other people are using because it might spark something that I might decide to switch to. So I’m always interested to know what folks are using. – Yeah, well, I can very highly recommend Git extensions. It is a primarily Windows project, but with Mono it can run on Linux and Mac as well, as far as I know. But yeah, for me, I tried something like four or five different Git gurus, because I’m far more GUI-oriented than Command Line, even though most of the projects I’m currently working on run it on the command line. – Right. – Yeah, it’s a bit of a contradiction there. But yeah, the great thing with Git extensions is it uses exactly the same terminology as the command line. So I can talk to anyone who’s used to the command line and use the same terminology, use the same phrases, then be able to exchange, you know, work around it or productivity tips. And we know what we’re talking about because we use the same language. If you want to, it will show you literally all the command line commands it uses. So the bridge between command line and GUI is there, but it’s so effective. It just helps me get my work done so much quicker than I ever could on the command line we could. – Excellent, excellent. Well, I’m definitely gonna check that one out. Now the next question I wanna ask is kind of a little bit more philosophical, if you will. And I’m going to sort of give it a set timeframe. If you could go back in time to the point where you left working for that employer you mentioned and you went and worked for yourself. So think about that time of your life or maybe even the time before you got very involved with open source communities. think about your open source journey. If you could go back and give yourself one piece of advice that knowing that now would have made life easier for you, what would that have been and why? Always put yourself first. So choose to do the things which give you energy not drain your energy. And have faith in the universe. Especially when I first started a business, you know, every few months, I’d get really worried like, okay, I can still pay the bills this month, but next month, I’m not so sure, because there’s nothing coming in. Right. I haven’t got any customers lined up, and I’m finishing the projects which are already paid for stuff like that. And for some reason, it would always take the point of getting really worried. And then something happened and it was all right again. And that happened so often that at some point I’ve learned to trust the universe. Good things happen to good people maybe but it’s not, I mean I never became self-employed to become rich or anything, I’m not. But do trust that if you stick, if you’re true to yourself and if you enjoy what you do and hopefully are good in what you do, then things will work out. And it needs to be, you can always find a job. Absolutely. So now the last question I want to ask you just to kind of wrap this up and before I ask you the question, I just want to say thank you very much for your time. It’s been amazing talking to you today. I’m looking forward to being able to talk to you in real life in the future, whenever that will be. Yes, please. I’m looking forward to at some point in the foreseeable future, sitting down in the sun on a terrace with a cold drink in our hands, toasting the fact that we’ve had to do this over video link and that we can have each other live again and give each other a hug. Absolutely. Absolutely. So the last question I wanted to ask you is, and this one is a little bit more sort of businessy slash personal slash how do you as a self-employed person, how do you manage your time when it comes to because you are a very prolific contributor to open source. How do you find that balance between making sure you’re doing enough billable hours, making sure you’re doing what you want to do in open source and just having a life in general without only getting two hours of sleep every night. With great difficulty. That’s about as honest answer as I’m going to get, eh? Yeah. Excellent. Juliet, as I say, it’s been wonderful talking to you. It always is wonderful talking to you. You are a fountain of knowledge and whenever I do talk to you, be it work-related, be it WordPress related, be it PHP related, I always come away knowing something valuable. So thank you for your time with us here today. If people want to find you, if they want to connect with you, if they want to contact you about possible working groups, how can they get hold of you? The easiest way is just to reach out on Twitter and jrf_nl, so my initials Juliet Reinders-Fulmer underscore nl for netherlands. It can’t get much easier than that. And my DMs are open. Do not spam me on them and do not take me abuse. But if it’s an honest question, I will respond. Perfect. I was a little bit annoyed that when Zeev shared your post, he didn’t use your corrector to handle. It was jnl underscore nl. I was lucky I actually did see the post within the day. Someone else put it in my timeline anyway. But yeah, that happens. Once you know how the Twitter handle is built, it’s not that difficult to remember. Absolutely. I always have the same avatar wherever I am. I mean, my handles are sometimes variations. So in the wordless Slack, on Jref, without NL, on GitHub, on Jref NL, without the underscore because they didn’t allow underscores when I registered. So yeah, they’re variations, but the avatar is always the same. So if you see that avatar, it’s me. Yep, absolutely. I can always tell it to you when I see that avatar. Once again, thank you so much your time it’s been amazing to talk to you and I look forward to seeing you in person in the very near future. Most definitely and it was a pleasure and it was lovely of you to invite me thank you for that and giving me the courage to vent some things. Not a problem at all. [Music]
Leave a Reply