 Right, so next up we have the moment. We've all been kind of waiting for so this is gonna be the panel discussion where we'll have filling questions and Stuff that you guys have been posting. Hopefully So anyone watch out here for my computer So may I invite on to stage right now Rasmus Lidoff, Sebastian Bergman and Derek Rettens All right Okay, so we have asked you guys to post some questions and these are some of the questions that everyone has been kind of asking for This is the first Question up here is about Let's flash this up there What do you have to say to the people who Demote PHP is saying that the PHP that PHP is the language of the past. What do you see? How do you see PHP in the next 10 years? Load a question Of course, it's a language of the past. We've been using it for 25 years Right It doesn't mean it's any less useful. There's a reason it's stuck around for 25 years Tools that don't work Don't stick around for 25 years Right, I mean, it's just there's no way you would keep using a tool that didn't work for that long There's a lot of Geeks fighting geeks in the world and everyone thinks their latest thing is the most shiny When something gets really popular it's not cool anymore, so there's a lot of that in the PHP world What really kind of counts is the fact that usage hasn't dropped In the 25 years so that the absolute numbers of PHP servers out there has kept going up Percentage-wise it's it's gone up and down a little bit depending on which huge ISP added to the numbers But other than that it's been a steady increase in terms of absolute numbers of folks using PHP so, I mean it it I'm not sure how else to answer the question so that the market speaks for itself, right? if if this was really sort of true then usage should have dropped off 10 years ago 20 years ago. I mean it shouldn't have survived, but it does That's really the the only thing you can say about the but the language and and sort of the ecosystem. I Think a lot of it comes from the fact that admittedly PHP is not a very pretty language in terms of language design But there's a hell of a lot more To solving the web problem than how pretty your syntax is That's probably the least important Also consider that end users they don't give a shit how the code looks They want the site that they're using to work. They want the product to work Right, the only people that care are the geeks arguing with each other tabs versus spaces Use this stuff like that, which is completely irrelevant The color of the hammer doesn't matter. It's what you build with it, right? And that's where the focus is and should be Geeks that worry about the color of their tools It's They'll always do that and they always have and they will 10 years from now So like part of that question is what's going to happen to PHP in 10 years from now We'll be having the same conversation in 10 years Right is PHP language of the past. I'll get that question in 10 years. I'll probably get it in 20 years Right. Hopefully not in 30 years because I probably won't be around anymore, right? But that's that's where I see PHP in 10 years. This is exact same question Okay, it's Russian. No, all right. That was an awesome answer Yeah, I mean fashion things will come in our fashion But it's what you use to build the tools to solve the problems that we that people have right? That's more important, right? All right. Next up. We have another question here Do you think PHP will become a system language similar to go or Python in the future? No No, I don't think so either. It's I Mean I use it for little shell scripts here and there But it is not on the same level as those other languages are made for right I mean each piece primary languages made for the web and that's where it's good at and that's what will very likely stay Yeah, I agree Next up Breathing through this question very fast PHP in the micro services and serverless space. What is the future of PHP? Listen, I guess I'm asking We want to use something like PHP in the serverless or micro services space Well, if the question is posed like that then the answer is the future is In the past because PHP since the beginning was serverless Okay, you uploaded your code somewhere onto a shared hosting thing like 20 25 years ago and the server would run it It's pretty much what that's what touted as the big advantage of serverless today. You put a function somewhere and it's run Yeah, just upload the file when you're done been there done that There you have two guys I guess it depends also a little bit on So to the context of micro services. I mean people think of PHP as Big blocks of HTML coming out of it, but nothing says the PHP has to generate HTML, right? I mean, obviously can generate JSON XML whatever. It's actually really really good at generating little blobs of JSON So it's perfectly suited and I've talked to some folks here. There's one that's Game developer that's using PHP as the back end for a mobile game, right? It's perfect for that This is answered and the next question who this is What's PHP 8 is going to be like? Yeah, it's most definitely be faster The the main thing I think we have been talking about the PHP 8 is probably the jit That's going to make Some interesting things. I don't think it's going to make your standard database driven application any faster but it might open up the ability to Write things that you might otherwise write as a PHP extension You might be able to move some of the PHP extensions into PHP land to and take advantage of the jit which will Make a lot of things easier and also open up essentially extension development to people who aren't necessarily very good at C The other thing we have been discussing is a bit of Non-blocking IO and async There's some talk around fibers If you're familiar with that concept, but I mean it's it's still a couple of years away at least two years away from PHP 8 Probably more like three what we'll see But those those are the main so the big things the jit fibers IO improvements are the other main things I see I Think syntax wise what is pretty high on people's wish list is things like generated and stuff or generic sorry Which I Don't care much about but all the people seem to some as of last night The only thing syntax wise that I'm missing is typed arrays. I don't really need generics. I won't type the race That's all right That's Mark that has answered and who this is going to be interesting What actually happened to PHP 6? Oh, hi Do you want the short answer or a long answer? The short and funny answer is book publishers Who publishes why? Because they're stupid So I have to explain that so a friend of mine a friend of ours actually one day got a package in the mail from a book publisher It was a new edition of her book that she wrote and she didn't know anything about the new book Her name was on the top of the of the cover and the book title was PHP 6 and my SQL 6 So there is no PHP 6. There's no my SQL 6 Somehow the book publisher thought okay the PHP project is talking about PHP 6. We need to update our book so at a time like And was that around 2004 2006 that was the time 2006 we released PHP 5 3 So there's some point before that Yeah, long ago remember we are old we forget things So around that time PHP 6 was discussed was being worked on and She got the book in the mail saying hey PHP 6 my SQL 6 so what happened the book publisher thought okay They're talking about PHP 6 we need a new version of the book They did a search and replace and replace PHP 5 is PHP 6 and my SQL 5 is my SQL 6 to get a new ISP and it's a new publication they get new sales and At some point we scrapped the PHP 6 project That's what Rasmus and Derek can talk about a little bit, but When PHP 7 was on the horizon we needed to find out what version number to give this new major update to the PHP language And we quickly came to the conclusion that there are more than one There's more than one book out there that has PHP 6 in the title and talks about PHP 6 and It would be really really really confusing to everybody who learns about PHP from a book If we would now release something 10 or 10 plus years later Call it PHP 6 and people go to these books and the books don't match what the reality is So that was the slightly longer, but I think still funny answer and now for the technical details I ended off Well the PHP 6 project was primarily focused about having unicode strings in the engine that requires a lot of work and Most of that work was done But the main issue is probably that in impacted performance anything string related significantly More so with the amount of memory being used and There was The last 10% of the implementation is going to be so hard to do correctly without impacting performance a lot and by a lot It it used nearly twice as much as memory and I mean things like WordPress were like 80 or 90 percent slower if I remember correctly and because of that it It Releasing that as a project not had been a good thing and more people were thinking about well Maybe we should reconsider how we do strings in PHP unicode anyway So time was spent on working on the Intel extension to do all this localized language support for it and That then got released as PHP 5 3 ish, I think Which had much of the same feature. So the only thing I I can think that we would go back to doing unicode support would not have its support in the engine on Like having to support change every function that deals with strings to also understand this unicode type besides the current strings the booleans that whatever Types we have is by having some kind of unicode string class or object that you can do manipulations on and stuff like that But yeah Project-wise it ended up being a dead end in the end. I mean we spent our style on it two and a half years or something like that Sorry, I mean we learned a lot about the the Intel stuff and the Intel extension It's some of the work at least I wouldn't say it's all lost because a lot of that Knowledge and work went into the Intel extension, which wouldn't have existed But I mean so that's what we have left from PHP 6 is that Intel extension That lots of people use today because we learned a lot about ICU through through that way too much actually and Yeah, it was it was I mean it was a bad decision to go down that route because it was just too much there's Way more effort than we had thought and it became way more complicated then we had thought and developers working on the PHP project were lost and That's bad. So we had to take smaller steps and like move most of the work into the extension And then some of the other things that had been waiting we sort of went once we killed PHP 6 The developers came back because then now they had a way of sort of in a small incremental step get their changes and to PHP in a Reasonable timeline, which just wasn't happening with the PHP 6 effort Everything was dragging on too long and people were losing interest in contributing and that's a bad bad thing for an open source project Yeah, so all the things that could have gone to PHP 6 basically were back ported into 5-4-5-3-5-4 and all that Kind of kind of not all right. So that's okay Next let's talk about What are some things you regret in PHP if you had to do it again, what would you change? Oh, I will create create without the e at the end I know it is trying to make a joke now what I would do differently I think if I think we would be better naming our standard functions more consistently It that means if we have to start PHP some scratch right now I'm not as forgetting that we ever changed that. I think that'd be one thing. I think it would have been OO from the start Probably No, I understand that they were now about 25 years later. So now that would probably have been done But yeah, that's regret other regrets Well, the daytime extension would have had state time plus being immutable by default. I can tell you that But that's what I can think of I Regret add to okay thing adding to PHP 5 object model back in the day to have the underscore underscore get set Call and that all those magic interceptors They work so nicely in small talk where I came across the concept But I didn't imagine how many people would abuse that to write code that nobody can understand neither the Neither the IDE nor static analysis tools nor the developers working on the code had I known that but I was young and naive at the time And I was able to convince Marcus and others to implement that Rasmus anything for you? Yeah, I mean I I have a few things I would have done. Well, I have a long list of things I would have done differently if I had known that 25 years later people would be asking me about it a lot Probably not I probably wouldn't have so he was asked me would I still have even started the project if I had known That 25 years later. I'm still talking about the same damn pizza code Which isn't the same code anymore, but it's sort of conceptually the same piece of code I probably wouldn't this was never intended to be this 25 year project It was just a little hack was my hack for me to build web pages really really quickly for the various clients I was doing web consulting for at the time and it's wasn't for you. It was for me Just kind of turned out to be useful to other people But yeah, there was tons of little hacks that I put in just because I was lazy and it solved the problem I mean certain things like naming safe mode safe mode, right? You never want to name something safe Right because if once you name something safe then all the hackers attack it and prove that it's not Or simple. Yeah, anything you don't call something simple either because it ever it ends up inevitably becoming complex Right, I was simple X and I wasn't very simple if you look at the code There's there's the whole kinds of things I mean I did so many stupid things in the early versions of PHP, right my my hashing algorithm was string language For for like hashing so you have a name of a function Right and in order to find it in my list of functions and back then I only had like 12 functions in the first version And I just gave them all different lengths so I could simply do a string language the fastest hashing algorithm ever But I still I at least I had the foresight to say I'm probably going to add more So let's at least have a hash look up and then a linked list on each hash Field right and yeah, so I would I would rename functions so that they would be evenly distributed across the various links So HTML special charge is really long because I didn't want it to conflict with a whole bunch of others because I was going to call it quite a bit So I made it long so it would have it on have its own hash slot And a lot of those names have stuck obviously we don't hash with stringing anymore because we have so many functions in the global symbol table But still the names have stuck other things case sensitivity on On the various symbols back then I didn't want to get into the whole fight of whether HTML should be uppercase or lowercase or mixed case That was actually a big discussion in the mid on early 90s So PHP Functions function calls can be either uppercase lowercase or a mixed case right you can put whatever case you want on them Which I mean if I could take that back. I really I thought about changing that in I think 96 or something but I looked oh man look how many users I have there are thousands of people that would be impacted by this and I Didn't do it right Now there are millions of people if I could get away with just screwing over a couple of thousand people Perfect. Let's do it But nowadays we have tools like PHP CS fixer would fix that in like a second Yeah, but if you don't pay attention you have to learn the hard way Yes, so so most of my regrets revolve around PHP unit, but that's what I'm talking about tomorrow morning I'm going to talk about your top your top tomorrow. That's awesome. That's my best answer next one up What is your advice to people who are using PHP in their daily work what the do's and don'ts use an IDE that is actually an IDE Like every week I work with a different team and like Once the months I work with a team when not everyone is using PHP storm And I see those people and they they struggle for things that the colleagues need seconds or milliseconds to figure out They take minutes or sometimes half an hour to find something in their code base Don't do that to yourself If you spend a lot of time and know what you're doing. Yes, you can achieve the same thing with Wim or Emacs or whatever but Be nice to yourself and use a tool that actually supports you and no, I'm not paid to say that Which is not entirely true because I also don't pay for PHP storm they don't want my money. I tried they refunded it Because I helped them a couple of times over the years Yeah, and Talking more broadly you look at tools look at tools that can help you things like PHP CS fixer nowadays can make Changes to your entire code base in a reliable way so if you need to update a Coding style or a coding convention. That's that's really simple Use static analysis tools like the one like fan or psalm to find issues in your code Know about these tools They make you more productive Yeah, and there's and there's so many of them, right? I mean I learned about PHP spy today I'm mostly interested to figure out how it works because I don't write PHP code anymore, but it's it's yeah, I mean Use a proper debugger if you need it. I mean, you don't need it for every time But if you really need a good debugger, then please use a debugger Yeah, it's all the tools may try to find out figure out What else there is besides just writing the code that can help you doing things better and Sure, there's plenty of things to find there On a slightly different note on that if you're working with PHP every day and you have a team of PHP developers Please if you're more experienced Mentor the younger folks less experienced Get them up to speed don't assume that they'll figure stuff out on their own Everyone is better off if the whole team learns and I have come across some teams where There's not a lot of mentorship going on. There's a lot of criticism in code reviews very negative Try to be a little bit more empathetic and help out the junior developers Everyone was new at some point Give them a hand, right? answered and the next one we have is This is tricky. They all have seven votes. Let's look for this one. Is it coming up? Did my internet die? Answer, okay, let's see Yeah, this this one this one I'm interested in Are there any interesting stories about how PHP has had to hand maintain backward compatibility because it's so popular I don't remain any funny stories, but It's they're mostly But but it does sometimes mean that Decisions have to be taken because we don't want to break or make all the things and biggers again, right? maybe a Well-known one is the namespace separator, which not everybody's particularly happy about but It's the only way that really sort of fits all the vice route and breaking some other code at some point or make all the codes more Ambiguous, that's the one I can remember. Do you know any saddest stories? You think you think the namespace separators the saddest ones I Mean there's been tons of things over the years that I mean not changing the I talked about not changing the case stuff, right? I mean That would have been a good thing to change, but it was all about backward compatibility It's Argument order as well. Obviously obviously we can go back and fix it But not without making life really really painful for folks trying to upgrade and We have really focused hard over the years on making it easy to upgrade to a newer version or at least It's never easy Especially if you leave it for 10 plus years and you have to go from like PHP 5 3 to 7 2 something. That's that's hard But if you every two to three years if you have a look at upgrading your stack, it's not that bad Each incremental seven dollar X release It's pretty small. You can run it fix a couple of things run fan run of some of the tools and You can upgrade a large code base in an afternoon If it isn't 10 years old, right? So, yeah, I mean Maintaining that over the years. We have had to make a lot of concessions and we have to leave mistakes In the code for a very long time and put in Deprecation notices for years and years and years and then after like 10 years of you seeing these damn decade deprecation warnings Finally, we removed the feature and then people start screaming Because they didn't know they were going away the hell your code has been showing you warnings for 10 years You didn't know this you never ever check your air log. No, I'm like No, I know Sebastian is more on the sort of side that just break everything So I definitely don't want to break Every people's code like just the people who don't pay attention If if you don't pay attention for 10 years, then yeah Yeah, I mean I have similar issues in in the PHP unit project like last year in February when PHP unit 6 came out Within an hour after I released between at 6 0 0. I got hundreds of Twitter responses emails Dozens of tickets saying this doesn't work anymore because and what what happened PHP unit 6 required PHP 7 And well, yeah, and also change finally changed the namespaces from you to use namespaces and People that complained had star as the version constraint in the composer Jason and For a year before like this every release was and every Tweet like okay next year. This is going to happen Nobody listens, but not all of them listen. You can't reach all of them and but eventually it will break for them Yeah, and I I recognize that People who don't pay attention, but those are also the types of people that we really need to help And we don't want to make it impossible. We don't want to We don't want to lose that right? That's we don't want to do a pro six But it's like the the deprecation of records their globals right if we really wanted to we probably would have wanted that much faster but that would be a disaster could break people's code and and Yeah, and Introduce security holes and stuff like that. There's so much stuff that you need to think about some time All right It's gonna be a little bit controversial, but I hope you guys can bear with me here Did hack lang make PHP better? I mean if you if you're saying hack lang as sort of more detailed We were getting we weren't focusing very much on performance One of the reasons being that people at the time were using really really slow frameworks that did horrendously slow things Which basically sent the message to us is that well people don't care how slow their PHP code is Because we have made PHP decently fast and then you layer on top these really heavy really slow frameworks That's slowed down by a factor of 10 And people are still using it. What the hell? Which is a bad reason for not caring that much about performance, but we weren't getting The real message from people that performance was sort of the number one issue That people are having with PHP Then HHVM came along and suddenly They did HHVM did two things first it showed that this could be done faster and By the reaction from the community. We also saw that people were very very interested in a much faster PHP which is kind of an obvious thing, right, but We didn't really see that people were having performance issues with PHP 5 That was it tended to not be the thing that people were complaining about But by then having the option of a much faster PHP then suddenly that came back on the radar for the community and for us as developers as well So that's when the focus shifted. So one of the things that it did was to help us Change the focus a little bit and really focus on making a version of PHP that was dramatically faster than what we had at the time There are also various features that kind of sort of were borrowed from HHVM, but they also kind of sort of borrowed it from PHP There was a lot of ideas flowing back and forth between the two teams So there's some RFCs that have been sitting around in the PHP side of things Ended up in HHVM And additionally it made a formal language Specification that's true right then that language spec came out of the HHVM project in the sense that they hired a Professional writer to sit down and write a language spec for PHP, which would help them Maintain compatibility with PHP because Facebook Facebook had asked hate you have a spec for the language itself like no It's like okay, and they they're they were big and have lots of money So they threw money at that and hired someone to sit down study PHP and write a language spec for it Which which was a really cool thing to come out of it and now when Facebook has announced they're no longer going to Maintain compatibility with PHP that whole language spec is completely useless to them But it's still super useful to us, and we're still maintaining it and updating it Yeah, well they officially announced it about a few months ago, but unofficially it's been happening for a whole lot longer than that Okay, that's my first answer All right next one. Let's see What's another like programming language that you really like what do you like about it? Well, I do most of my programming in C So what do you like about it? I like see I like that it's fast. I like that. It does exactly what I tell it to I like it how it crashes my stuff faster. Yeah, I mean yes, if you if you tell it to do the wrong things will crash on you but Valgrind The various tools around C are pretty mature. So I like it as a language, but also because the whole stack I mean if you don't know C then I don't really trust you as a Low-level developer because everything below your application is written in C all the way down to the device drivers and the kernel and everything So if you don't know your way around C, I Don't really see how you can be sort of a full-stack developer You can write apps in PHP. Obviously you can write lots and lots of cool things But if you're a large company You need to have a C hacker in on the team because when things go really wrong You need to go down into the C level you need to understand what the hell is going on So in that sense, I I don't like it as a language, but I like it as a As a critical tool to understand what the hell is happening on your computer And it's I think that's impossible to do without understanding C. Well Yeah, but I would agree that I've spent most of my time in C as all the only PHP got a code I write is our tests Which aren't particularly interesting bits of PHP, but I really like Ock as well, by the way. Oh, I think Ock is cool Okay, maybe I'm showing my age I mean as long as you don't say at length. I guess I'm fine, but yeah, it's C for me I think it's it It's very dirty language You you you need to be friends with it for for for to do things for you and not be angry at you all the time But you know knowing the basics of computing I think is useful in general Even if you write if even if you only write front and react just all right All the concepts are still coming down from the low languages and once you start knowing a bit about C You know how computes do with memory management and things like that and I think these are still useful skills Even if you'd only ever write PHP applications, we're knowing a little bit of assembling is also kind of useful Even if you're writing PHP because it's internal language is vaguely similar to that as well. So you can With draw so you can make some of the connections between them. So two C's Sebastian's the only PHP developer up here So yeah, almost all the code that I've write these days and have been writing for the last 20 years is PHP When I'm not doing PHP when I'm doing hobby stuff, then it's assembly on the Motorola 68k Little bits of C once in a while on the Amiga, but they're not asking you what you're using they're asking you what you like Yeah, they asked me what I like Like assembly on the Amiga, right? Yeah, I'm writing the right address in memory to put a pixel on the screen. That's kind of fun So this was a bad audience to ask this question to three really old geeks, right? We're living in the past So if I'm not allowed to talk about that languages then what from newer languages that I've come up over the last couple of Years, I think rust is the most interesting to me When go came along I understood what They wanted to do with that like basically a cleaned up modernized C, but it didn't really appeal to me but rust I can can understand because it eliminates a whole Array of potential bugs and security issues on the compiler level, and I think that's kind of valuable and to to Just to underline what both Rasmus and Derek said It scares me that these days people that start programming Don't learn C or assembly and have no idea how the computer works. I mean back when I started back When we started programming Computers were so simple that if you wanted you could understand every single bit of hardware in your machine That's not possible these days anymore. I mean for for hobbyist stuff. I still use my Amiga. It's still running and Back back then I knew what each of the chips did and how it worked internally and I was able to do that To work with that, but I forgot all of that most of that I'm relearning that But nowadays I wouldn't even try to figure out how my CPU works on the lowest level and turns out the people That design these things also don't know how they work So I'm really happy that I have at least one CPU in my household that is not affected by Spectre I think you're getting off topic here. Yeah, maybe Thank you, that's my best answer Next let's take a take a little different approach to this Let's see right this one How should a student dive into learning and contributing to the world of PHP contributing to the world of PHP I Mean figure out what interests you figure out that the this little slice of PHP that you would like to affect Right and dive in I Mean some people say start with documentation like not if you're a developer don't start with the documentation start by developing Maybe by fixing bugs. I mean, it's a good way of learning something The things I know the most about are the things that break a lot Right because if it breaks all the time, I have to figure out why the hell did it break? And I'm debugging it and really learning how it works in order to fix it the things that never break I don't even know how it works. I'm just glad it does because I don't have to fix it, right? So by fixing bugs, it's a really good way of tracing through figuring out Why is this not giving me the answer that I'm expecting and you learn a lot about the system that way So you can go on the PHP bug tracker bugs.php.net. There's a little random button top right They'll give you a random bug and keep hitting that until you get something that looks interesting to fix And then dive in and fix it And yes, there are plenty to choose from Maybe you should introduce the concept of code sprints at some point I Was exactly like that until I tried it so since last year after I'm doing biannual code sprints for PHP unit where the focus is coaching people that want to contribute but don't know where to start and They come with issues or they look at the issue tracker They find something that interests them and they dive in and I'm around trying to help them Work on the issue that they're interested in. I think that's hard to do and sort of a distributed remote setting I think a user group with one really experienced developer and getting people in the room and then maybe taking a bug Yeah And the experienced developer will go through the bug in front of a small group of people in the user group Makes sense something like that because I think it's hard to coach Remotely when you don't see this to struggle and you don't see the pain right in front of you because people aren't It's hard to communicate that care. I Think that might be a good idea for user groups is to have some Code sprint sessions or like debugging sessions where you debug a really hard problem And then have someone actually go through and then show how do we debug this? What are the tools we can use and? Show the process Okay Uncertain this takes one. I might be of interest to you guys Any advice to young PHP developers coming through give it how big the PHP world is In terms of frameworks CFS tools and so on so forth Any advice for young PHP developers coming through? I'm not a PHP developer. That's that can answer that Really? I'm a C guy. I think Sebastian is the only one here I would say learn the language understand the language and start from there don't try to be Just a Drupal developer WordPress developer symphony developer whatever developer don't box yourself into that Thing I mean don't get me wrong all of these things have there that the reason to exist and them Help a lot of people, but I think the most useful thing is you need to understand the language and even if you So I meet a lot of people that say yeah, I do not really know need to know how PHP works and what the PHP language is because I am just a XYZ developer and only need to know what little PHP I need to write my extension for Framework XYZ or whatever But sooner or later you need to understand the code of what you're using and what you're integrating with Let's switch back to Something more closer to the internals. Let's see this one. How about this one? Well, PHP is raiding in the web Kingdom Should it start to venture into the data science arena and create new functionalities that allow for more heavy Heavy-duty data processing and math calculations Well, we might get a bit of that in PHP 8 the JIT Without the JIT it's going to be too slow to do that in the scripting language Well, the data processing is more depends Depends what kind of processing if you're doing a lot of processing in memory the JIT can help a lot For those who don't know I get I'm just sort of throwing the JIT out there JIT is a just-in-time compiler that really helps with hot spots in your code So if you have a very tight loop that's sitting there executing some code a lot Then the JIT can optimize that you can recognize that hot spot in the code and optimize the hell out of just that little bit of code So if you're generating say a fractal with PHP so highly recursive that's sitting there in the main fractal generation loop That's going to run probably an order of magnitude faster with a JIT whereas your WordPress site won't Speed up at all Because that's going through all kinds of different parts of the WordPress code and talking to databases and things and the JIT doesn't improve that kind of code at all The the extension that I'm showing or working on in a workshop on Saturday is a very good example of that because it's a highly memory CPU kind of algorithm that you're going to rewrite and see or Wrap in see really Where that would be very useful to have and then not having to write it and see Right, so that's faster. So the real answer. I mean the answer to the question is we're not going to We're not really going to focus outside of the web very much, but The the language itself is evolving and the optimization is evolving to the point where Writing code like that is probably going to improve in the next couple of years It's not short-term though is you you're not going to see it next year in PHP 7.4 if we have a 7.4 It's going to be two to three years out Right and the next one is back to something some legacy stuff We're using legacy PHP 5 any tips or advice on how to transition from legacy monolith to move to latest PHP versions Yeah, I mean I've been upgrading Sites for folks are helping them upgrade and I upgraded Etsy which is a big big legacy site a couple of million lines of PHP code that started 13 14 years ago the company and the code is Originally written by someone who really wasn't a developer but had lots of good ideas and and That has been challenging But it's not impossible to do even the really really old code. I mean you you started by Fixing your tests a little bit. So you have some confidence in your tests That if the test pass at least most of your application is going to work If you have zero tests, that's probably step one Write some tests so that you can change things and have some confidence that everything isn't broken step two is simply set up a dev environment and See what breaks see the notices If you're really far behind Someone asked me today. They're on PHP 5 3 and they'd like to get to 7 2 or 7 3 when it comes out and jumping from 5 3 to 7 3 That's rough. I Would suggest if you're in that boat, maybe jump to 5 6 initially and just do the the smaller work to get to 5 6 Get that running reliably Fix up your tests and start fixing the notices and warnings about deprecated features that PHP 5 6 spews at you if you have decently clean PHP 5 6 code running the jump to PHP 7 is Pretty easy. It's probably a lot less actually I think did you upgrade some I think from 5 3 to 5 5 is where the real The real issues are yeah But I still think doing it in two hops is probably easier because it's it's it's a little bit less daunting Yeah, so do it that way. So that's what I would suggest. Yes, PHP 5 6 is old But if you can get to there and you can clean up your code if you're already on 5 6 then your first step is to Clean it up so it runs clean on 5 6 so that doesn't spew a billion notices and warnings at you in your error log If you don't have your log turned on turn it on then that's that zero Turn on all warnings and errors set your error reporting level to negative one which turns everything on and See how much crap? It's spewing at you and then systematically fix those warnings so that you have a clean 5 6 run From clean 5 6 to 7 pretty easy to do All right, and this next one is What changes across the PHP community? You would like to see how can we as developers help? Well, if you live in a place where there's no organized community or user group start one If they already exist They might not necessarily have to be PHP specific ones. So sometimes our web development meetups and things like that join these grow them Invite your friends your co-workers along to these I also think it's important to not If to not stick to just a framework specific meetup if you're doing that I sort of forgot the question They're asking about changes across the community Yeah, so one of the one of the changes there is that I see I've seen in the last maybe a year or two that The WordPress to Drupal the Laravel communities are reaching out more to just be on their little product projects So I say little projects That's not what I meant to just be on their own user group and start reaching out to to the wider PHP community and even Between the different frameworks, which I think has been a good change And I think more of that can and it's probably going to be done anyway Beyond that I'm not sure what I also can say. I would like to see a bit more diversity Across the community and like I mentioned before a little bit more mentorship And that's what the existing developers can do is Go to your user group if there is one and share what you've learned Share how to debug share your tools and your ideas and your experience With others that are interested It's still a very White male Dominated I mean I'd like to see this panel not be three old guys All right next time we have this I'd like to see that So this next question is going to be a Kind of interesting. Okay. So the question is asking about are you afraid that new developers are not joining internals? Which I think how many of you guys know how PHP is being released and how the internals Workflow kind of work. No. Are you familiar? No, maybe it could Would you like to give an overview of how that works? How does how is the process of releasing a php version and all that stuff? I'll give that a shot Internals is php's internals aren't very simple and It requires a little bit of learning before you can start doing something with that One of these things might be looking at boxes. That's what's already alluded to earlier But I wouldn't say that we don't get new people to work on things. I think the amount of Younger people is about the same as the amount of older people If you look at the amount of work being done except for the exception, maybe Dimitri Because you've got a Nikita Joe that did does do quite a lot and there's a few more rights that do that It is too few people. That is definitely sure As to how new things are added to php there since three years or four years So we have a much more formal process where is it longest time flies when you're getting all? Okay, that's six years See time flies. What can I say? So there's been a much more formal process of of of Proposing new features and then working with other people to improve your proposal. We call them RCS Hopefully with a patch But that is not necessarily always necessary But this this process makes it a lot more transparent of what goes on and what gets added and not people just commit random features in the middle of the nights just before release anymore because we have had plenty of that happening Especially in the early years. So on that side of contributing to p2p's gotten a Little bit more organized and I think that is a good thing And I think then some point that would make that makes it actually easier to start contributing to because there's a More guided way of getting started First coming with a good idea and then hatch it out with some other people and then come up with a patch and then iterate over the patches for for these new features and then Have the meet free rent about that is making everything really slow and then he rewrites it all for you, which is great But yeah, no, I don't complain about I think it's amazing but yeah but yeah having more People more younger people interested in improving PHP on that level would be really really helpful How we get people to do that? It's difficult to say, but the barrier of entry To working on like the real core internals is pretty high And it's much and it's much high. I'm sorry And it's much higher now than I would say it was 20 years ago, of course because the engine then I Pretty much understood very very well Where's now like what happens here, right? That's and I've been trying to get very up to date with it and still still missing things There's a lot of really complicated code in the core of PHP now I mean just the fact that PHP suddenly became twice as fast or maybe even more than twice as fast without changing anything That is serious magic. I mean imagine taking some code that you have been Working on for 20 years and then suddenly say, okay, I'm gonna make it twice as fast right Without losing anything and actually the number of instructions if you look at the actual instructions generated by the compiler It actually from PHP 5 to PHP 7 it Deleted two-thirds of them. It does the same thing in one-third the amount of instructions that we did before So it's like saying hey, we're gonna take this code. You've been working on for 20 years We're going to delete two out of every three lines of code Throughout the code and nothing can break the amount of magic required to do this is Serious serious magic and then coming in 25 years into this project and Trying to understand all that magic That's where the barrier of entry is really really high I have to say one thing though All those changes are much better documented now. They were under 10 or 15 years ago and which is really helpful Especially when you work on things like XD book. Yeah, I know Well, that's Derek saying that I didn't document anything No, no, no in my head. No Yeah, yes, but that's not what I was trying to say Because I would say if you look at the first ten years, it was still easy enough Yes, to be able to reverse engineer it and now that is no longer possible now. You do need documentation It's like any other 25 year old technology, right? The very first cars or the just compare a car 25 years ago to now a 25 year old car you can figure out each component and you can figure out what it does you can fix it now No way any modern car is really really complicated. You have to plug in an analyzer and Really know what you're doing to fix anything And I mean my car now it doesn't even have an engine or anything, right? It's it's an electric car that is completely different. All the rules have changed So everything I know about fixing a car doesn't apply to my car anymore You can't use a hammer anymore No Can't use any of the things that I know So yeah, the barrier of entry isn't just I mean, there's a little bit of an insinuation here Is that it's not a friendly community to join and contribute to? Part of that is that it's really really hard this stuff. So it's sort of self-selecting There are only so many Nikita's out there That can just sort of see this stuff and can sort of I don't know I think he must spend an amazing amount of time reading through code Or maybe he just has this Capacity in his head to to understand things so quickly because when he started contributing he was 16 17 In that range and he was like at 16 or 17 He knew everything about the internals of PHP. Yeah, I ask him stuff now. Yeah, no, I do too I have he explained stuff to me every now and then that I have no idea how it works, but he does That's cool We need more Nikita's So in line with that question, I'm going to ask something about How did you guys get involved in this in the first place? I mean, how did you let's see what's the question? You know my story. So well, yeah I think it's all for these two guys. I'll go for a sense. So which year was it? 1999 maybe 2000 one of them I was in in uni and me and two of my classmates we started writing websites for people And back then that flash was really an important thing so We we had this application for this customer would read some things from the database is standard PHP my skull So that people are starting to use PHP my skull for but I got into contributing it because what I wanted to do is center this Shockwave flash film in the middle of the screen in the only way how you can do that by knowing how big it is You need to know what the size of this now PHP already had and get the image size function back then or image size I don't even remember what the name of the function is but it didn't support shockwave flash it did only BMP and JPEG and and PNG's and Gifts maybe so while I looked into the as though we have specification and figured out well Besides in the first 16 bytes of the header and then other desert function to PHP That was my thing my first contribution to them my second one was second one was a little bit more silly as a thing to do This is what my score didn't do subqueries yet So I tried maybe I should emulate that in C code and do something like that That did not get anywhere in the end because it's a really stupid idea So I'm happy that it didn't make it into PHP And then my first extension was the M-Crypt extension that I rewrote because the library versions changed API And this is maybe 2000 2001 And then I started with XD book in 2000 then To I think yeah, and then since then I've been Contributing a lot for some time and then now a lot of an hour lot less because I've all the things to do then Let's sit at home and my computer every evening to work on PHP code now, but yeah, that's how they go started for me So shortly after I started using PHP I went on to the German PHP mailing list asked some stupid questions there Really bad thing is that all of this is archived the internet never forget But after a couple of weeks more I started answering questions that other people had there helped out and eventually I Asked a question and I was told yeah You don't want to get an answer here go to the go to the English mailing list and from there one went on to the internals mailing list ask questions there at At some point I don't remember how that happened I started translating the documentation from English to German then I contributed the English documentation At some point I found the bug at which point I realized that PHP is written in C Took a while yeah Like I don't know we're talking about three four months at that point and yeah, and so I Looked in there. I never had done any C development outside of the Amiga like literally I was you my that was my only computer until 98. I got my first x86 machine in 98 and a couple of months later I discovered PHP so Hadn't done any C development on on x86 on Linux so I need to figure out what the toolchain is and eventually got the round to fix the bug and And somehow ended up fixing mostly windows build related stuff for the next one or two years until the build system was cleaned up for Windows and Yeah around that time Discussions were happening of what PHP 5 might be and I remember discussing a lot of stuff like the object model reflection API things like the interceptors I mentioned earlier and Basically discussed features and then tested them a lot I Starts with PHP unit depending on how you count about published the first I published it for the first time in 2001 and of 2001 early 2002 I had it on on my computer at least half a year before I Published that that was the proof of concept. I created as a bet with my professor But I wanted to clean that up and then I wanted to upload that to source forge But there was already a PHP unit on source forge and I couldn't create a new project on source forge That guy never Reply to my emails so Eventually I did something really sneaky and let's put it into the new repository on CVS dot PHP dot net that stick had created called pair and That's where it lived for a couple of years It's rather sneaky Cool, let's And this will be the last question for the for the day. I think you're very tired But this is forward-looking if you had limitless resources type and budget What would be the three features you would like to add to PHP? Maybe not three la two la one or two I Mean I think a an amazing jet Would be the main thing. It's really really hard to write even a bad jet Writing a good jet is almost impossible Facebook showed what you could do if you had basically they have unlimited resources They threw a team of like I think 30 at this problem If you can throw 30 compiler gurus at a problem, you can solve pretty much anything one thing that Most people don't know is that the number of people actually working on the core of PHP is Really really small we have like two people who are really working on it And then a couple of halves and then a lot of people sort of floating around the outside Contributing a little bit every now and then but really Nikita and Dmitri are Doing the bulk of the work On that like maybe a dozen or 20 people that commit things on a monthly base something like that Yeah, but I mean that the team at the core is really really small and the amount of Sites and companies around the world that depend on these two people is Pretty amazing and the amount of stuff we can do with such a small set of hardcore people is is amazing right if we had if we could multiply Dmitri and Nikita by 10, which is what Facebook was able to do I'll be amazing there's the amount of stuff that could come out of that. Of course. I mean Just adding more people is necessarily going to help that much but Having more than Nikita's I Don't know The feature I don't care. I would add more Nikita's Because he'll figure out what the cool things are that need to be added I mean, that's the real limiting factor we have right now is that It is hard to get started. It is hard to add features without killing everything else without introducing backward compatibility issues, but I guess to really answer the question that the JIT and The fiber stuff is interesting the fiber and async IO combined if it's done really intelligently I think some really cool things could come out of that Yeah, that's in an API for extensions to hook into that in some way That that's something we would be more I would be interested in doing with a cool JIT If it would like this limit limit its resource JIT, you won't need extensions anymore That's not really true It's not true because you don't want to share resources among requests and for some database. He thinks you do want to share connections among requests But that's set of there can be an API for that. I mean we have an API for that. Now ish we do That is a different question than the one originally asked us the limitless resources Okay, so what am I missing? I want the JIT. I want typed arrays and I want Nikita's AST extension in a standard distribution Okay, that doesn't take limit that that's pretty reasonable though the yeah adding the extension That's he just have to convince Nikita to To sort of submit to the release schedule of PHP. That's the only reason he hasn't done it Yeah, last time I talked to him. He said he wants to clean up the API before yeah He's been saying that for two years though I know I know Me What do you guys think? Yeah, that's that's I think me Yeah, you guys what do you guys think any wish anything on your wishlist Call PHP functionalities or stuff you like at no Like to see no Hinking thinking well You can always talk to them and tell them what you think any time to the next two days Or neck no borrow or whatever. Yeah over drinks or something maybe anyway That's how we have there are so many other questions in there But but you know, I have to focus on things that you know Can be answered by all these guys here and then can be Hard to do that. But anyway, thank you guys for you be the great Panelists and I think everyone appreciates all your opinions and thoughts. Thank you Thank you. All right