 All right well ladies and gentlemen welcome and thank you for being here as you know I'm facing fierce competition from several excellent other presentations elsewhere My talks called D for Darwin D for Drupal, and you may think that's a very strange name first. Who am I? My name is Eric Everard, and I'm actually a physicist Not a biologist as you might expect from the title I've been doing physics since the 80s and there we worked already with internet with mosaic and I've known Drupal since 4.7 which makes it already a long time And I work for one agency, which is a Drupal shop. I would call it the Drupal shop with brains and We do typically the biggest stuff bigger projects integrations challenging projects With approximately 80 people so it gives you an idea who we are But why why this talk? What's the purpose of it and? Well, I think our main concern is software sustainability as we come into contact with these larger customers We see these big legacy systems and sometimes I wonder These dinosaurs will Drupal ever become a dinosaur itself and also on the other side customers ask the same question before asking Purchasing Drupal they want to make sure sometimes the Drupal is the right choice and Drupal will not become a Legacy system a dinosaur especially when they invest five or six digit budgets into a new system and Also, we love Drupal. I don't want to see it perish actually, so I'd like to To know at least where will it head? What's going to happen with it? It exists now for 13 years. Will that last for another 13 years? Now there's a warning and this is a very famous Saying from a fellow physicist Niels Bohr predicting is very difficult especially about the future and I think you get the pun of that now Despite the fact we can't predict the future what we can do is predict is study the pasts and Open-source software hasn't been around for very long Not long enough, but life has been around for very long life has been around for millions of years and That makes it interesting because there are analogies and maybe we can apply those on software and open-source software development So in disclaimer, I've already said it. I'm not a biologist So anything I might say about biology Maybe Scientifically not correct and I'm not really a Drupal expert either. Although I've been around with working with Drupal since 4.7 I'm not really a programmer. I'm not a developer. Okay Now if you look at this picture and most people who would see this they would think oh, this is a molecule. This is just Some molecule with atoms But then you of course because you know better and you look at these little tags You see straight away that this is actually a representation of Drupal and Drupal of 2005 so it makes it 4.7 or 5. I'm not sure Now this has been made and this is a real molecule, right? This has been made with Gorse and Gorse is actually a system that just reads a Repository like ghetto SVN and it creates these beautiful images cakes you make videos So this is just one example and it takes five minutes So I'm not going to show it you in full. This has been Drupal as it was since 2000 made by Dries evolving through time with adding complexity and I'll just fast forward a little. This is around 2009. So we're there. We're in Drupal 6 already Going to Drupal 7 and if you see how quickly things have changed in the past few years And you can see this online. This is really a fancy movie very fascinating to watch for five minutes and He will approach 2012 with Drupal 7 almost at its end and Drupal 8 coming up and And this is where we are now to at least last year beginning of the year and As you can see this looks really like the development of molecules So I found this very fascinating and this is just a few screenshots of the air with the last one Now back to biology Everybody knows James Charles Darwin, of course in 1859 he traveled around the world on his boat and Wrote after he returned this book the origins of species and of course He went to the Galapagos Islands and one of the discoveries he made is that there are turtles or tortoises and they're very strange They look like the other ones on the continent in South America and Africa But they've got these huge long necks and why because the cactuses with the nice Fruits that they like so much are really tall. So they've adapted to the local conditions and that's what triggered his development of his theories So his theories were of course based on the famous Points common descent and in descent with modification and natural selection So we all at least if there's a mother or a female in the male we may inherit features from both or not and Well, one of the things related to To the evolution theory survival of the fittest many people use this term Actually, it's a very wrong term and I'm not going to into why Although we might think that survival is of course very important and it actually it happens But rather we call this now an adaptive complexity and that's what we are heading to also with open source software adapting to Conditions that are changing all the time One thing that is actually new and this is where biology is also also Influenced by people is that we have a thing like called artificial selection We can breed and it's been done for ages now people ever since they domesticated the dog has changed the dog It doesn't look like a wolf anymore. It looks very very different and there are actually many kinds of dogs Now one other thing I'd like to say and this was an interesting link I'm of course not the first one to make this link between Biology and technology four years after Darwin this gentleman Samuel Butler Who's actually a novelist wrote a few interesting books and one of them was about technology and how it would also evolve as Biology and he actually predicted in 1863 that computers at least Machines would overtake humans someday humans would be less or wouldn't be inferior to Machines they would evolve they would gain consciousness and all that and I think this is pretty early To discover this so he actually said technology and biology both are subject to the same laws of evolution and We've learned more of course since Since Darwin we've discovered DNA and DNA. It looks very much like software code if you look at it it's a way of coding things in our bodies and our cells and It looks like code and you can change it now and this is fascinating Now one thing that looks different is what we call radically new technologies where there was no gradual evolution It's true that some technologies have evolved Some things have been improved over the years, but others have been really new one example is a piston engine and Suddenly it was replaced by a jet engine and it's not that a jet engine is an improved version of the piston engine It's a new insight So this happens and this is something that doesn't really happen in nature. So there's a difference. That's our human creativity at work Sometimes our inventions certainly nowadays are combinations of things. We call this combinatorial evolution GPS navigation for example, this is a combination of many things Physics electronics rocket science to put the satellites into orbit and software and in these fields There are actually many many things that are required to make a GPS navigation system to work Now this has been Done ever since humans have been been smart Now one of thing is that technology is actually Autopoetic and that's a very difficult word for saying self-creating which means it it Reinvents itself all the time from one technology another emerges just like life does like cells cells split into two but Change slightly or more than slightly and this happens with technology as well all the time We constantly evolve and constantly improve. There's actually very little cases where things stay the same And this makes it so dynamic. That's why it is actually able to resist changes of conditions and the environment So what does this tell us this tell us that every living species stands on top of a pyramid So it's based on its ancestors secondly all the future species will be derived from the ones living now and finally It's not really the novelty of species. It's not what it's doing now It's what it is able to produce in the future and that's very important if we think of Drupal We have to think of the future and not just of the very Near feature that you want you have to think ahead. You have to think strategically if you want to mimic really biology And actually you can translate you can replace all these words living species by technology and this is true This is all correct This is again about combinatorial evolution First we discover fibers that they have strength So we make rope and then with the rope we can we discover that friction creates heat and heats creates fire and with the fire we can melt Iron ore and with the ore we can make Metal tools and then with the metal tools and the rope we can make an axe This is a very short example of the GPS combinatorial evolution But in the Stone Age right or in the Iron Age in this case Now one very important question is what about complexity? It seems that all these things get more and more complex and that is true Of course the GPS navigation system is slightly more advanced than an axe made of iron and wood But is it always the case? Well, it turns out that it's mostly the case There's some if I take back this this this scheme with the evolution of human life on earth you'll see that it gets from very low Cells to to us and we think of us being more or the advanced species of course, of course And this is a bit related to an entropy that's changing that's increasing things tend to be more complicated But it's not always true as I said parasites actually did the opposite they went from a very advanced species to a lower Function why because they they actually gave up some body functions And then used somebody else's it's also a way of working and it actually works as well But it is rather the exception than the rule But it is possible to simplify things, but it means that you have to use somebody else's complexity to live So that's the that's the downside of it Now there are of course some species that haven't evolved much sharks crocodiles various plants now That is in fact not really relevant. Why because they haven't seen changing conditions if the conditions didn't change And they were more or less successful. They they stay what they are But if the conditions will change if somehow the oceans would warm up or cool down, I'm sure sharks will change And so will crocodiles and all that And it's also applied to some software. We see some old software still being in place But is that sustainable? Of course not We all know that this software will eventually change once the hardware breaks down or the people die out who know the software This will actually disappear some day Now one thing about evolution. Is it good or is it bad sometimes? Why do I ask this question? Well, I have to tell you a story and it's actually a sad story with a good ending Last month and this is not a joke a very good friend of mine almost died and what happened? Well, he choked he was eating as we are Belgians. He was eating French fries and Enjoying it, but he choked on it. I don't know why maybe he was laughing or he's talking Why I was eating which was dangerous and he choked and it's wife didn't know what the Heimlich maneuver was You know the trick to get stuff out of your track is No, but she didn't know that so she called the ambulance which took 20 minutes and by that time he had hadn't been Breathing very long. So so he was in a coma now He got out fortunately and he's walking around and he's remembering things so things look good But why does this happen? This happens actually quite a lot. This is bad design. We've got our esophagus or The gullet in English or and we've got a windpipe. They're very close together very close so close that we actually can choke when we eat food and This is a big danger Why is this so bad to this design? Well, it turns out that this design has a purpose The fact that it's been like this means we can talk The fact that we can talk Has offered us a very very big evolutionary advantage Despite the risk so the risk was smaller than the opportunity and this also applies to software So if we evolve software and it becomes more complex and it becomes risky in some areas You always have to outweigh the risks versus the opportunity So that means don't be afraid of a condition that might be risky There may be a big evolutionary benefit even if you can choke to death Which means you have to be careful When you do certain things Don't eat with people who tell jokes while you're eating for example There are other examples like this a giving birth and there are some women in the room in the past Giving birth was a very dangerous process nowadays with hospitals. It's a lot better, but in the past Many women died when they gave birth Why? Well, we actually wait quite long before a child is born because our brains get so big and you have to get it out and But the big brain is a big benefit to us. So Evolution pushed us this way again the benefit was bigger than the than the risk We've got other things. We've got blind spots in our eyes, which could easily be corrected with another design We've got junk in our DNA Which really doesn't serve any purpose and there are many many examples and every animal and every plant has such disadvantages And so as software if you look in software, you will find a lot of junk a lot of obsolete parts and so on and Also dangerous design But hopefully for a purpose Now what about complexity in software? Now we will get back to Drupal because that's what we're here This is the number of files per Drupal release and as you see this has gone up and this has been shown in in San Francisco 2010 we now three years later This has gone up much much more as you've seen in its first simulation This is really a lot more and things have really started in 2005 Same with code size now. There's something and Reese has actually blogged about this. There's something called the cyclomatic complexity that's a measure to come to measure a measure how complex is code You actually count a number of independent parts in the code But there are many other metrics and this gives you an idea how complex your code is and people are debating Is there an optimum should our code be less than 10 or less than that to this and there are sort of religious debates about this I can't answer this right now, and I think there are certain limits. I'm sure but The thing is it's important to measure it I think it is important to keep an eye on this because otherwise some parts of the code might indeed become I would say bloated Bloated beyond a rate that it cannot be Sustained or supported anymore and that's very important. We have very big community But there are limits to all we can do. We see this with Drupal 8. We see that Drupal 8 takes really a long time the contract modules take a long time if The code would grow as it grows now, which is more than linear and We know that our number of developers isn't growing more than linear. We're running into trouble. Okay, so what the limits are Will be determined by the available resources Otherwise parts of the code will die off and that's something we really have to be aware of so we should cut where necessary In order to keep these things down. So first message is measure Okay, just to give you example again the code actually Christoph the auger mentioned it just three days ago Compared to Drupal 1 4,000 lines of code in call and Drupal 8 roughly half a million That's a hundred and twenty five. That's that's a lot for eight generations of code, but not unusual So there were many many metrics and sometimes one wonders Are they are they meaningful? Right, and I see a lot of debates that are actually meaningless about it and then you can say how many is a flower is an orange greater than salty and Sometimes if you read the debates about his metrics, this is the debate that's going on That's meaningless, but the metrics themselves some are meaningful and they have to be observed I think One thing about this complexity There is actually a zone of comfort in this complexity. There's An axis which indicates how certain you are about what you want and also an axis about how much agreement there is between the developers and the community and In the left corner, it's very simple. There's no debate. There's no risk There's also a corner with chaos. We have to make sure that we stay in a comfort zone So our metrics should respect also this and should visualize Where the code is heading and not the code on its own Contrib modules and call and you should actually see where we are. I didn't do this exercise This is an exercise to be done. I haven't seen it yet I think it's very interesting to see how we going into a chaos zone or not I don't think so. I've seen a few good things in the group late Clean up and so on which pushes you back again to the more comfort area Okay, now it is of course a very famous software law the winski's code a law of software development every program attempts to expand it'll tell it can read mail and If it can't then it will be replaced by code that does But it looks like ridiculous and yet it happens all the time and even with Drupal 8 and I'm not accusing anyone We're getting there a little bit. Why? Well, we had a framework with a framework It's easy to build something that can read mail, right? It happens all the time software becomes more complex You can do more things and it's a joke, but it proves that things can get bloated if you don't watch out Now something very important in evolutionary theories Both on biology and software is the resilience, right? We asked the question will Drupal survive another 10 years 20 years Well, it will change in 10 years Drupal won't look like what looks it looks like today Might still have particularly architectures of today's Drupal, but it should be resilient Resilient is a change that is sudden unexpected For example Drupal is built on PHP. What if in three years time PHP would disappear or not be supported anymore? What if the community of PHP would collapse? I'm not saying it will but what about in 10 years time? so or my squirrel maybe suddenly my squirrel becomes Disappears or changes or whatnot. There are many things that can happen things. We can't even imagine The question is how resilient are you? Little news could mean we ported to some other platform. We do it in Java for instance, but that's also a joke, I guess But in any case it's very important that you program everything to fail Always keep failure in mind and I don't mean really software failure like trapping errors I really mean if things can change, right? Always keep in mind what if we change this database by another one What if we don't use HTML anymore, but something else? What if we don't use a relational database in the first place? Or in but then you know SQL database things like this Now now we get to the complex adaptive systems and that is something that applies to physics to biology and also to software Complex adaptive systems in biology actually are influenced by many many areas It's actually on top of all kinds of scientific disciplines. So sociology chemistry Genetics ecology philosophy the weather whatever So all these things might influence what your system looks like and your system has to cope with changes And the same is true in software Marketing the competition the sales The organization we just heard it in the keynote Management innovation leadership many things hardware software so all these things might influence your system and designing for failure isn't easy But it requires that you have a very open mind and you have a people with a Helicopter view of all these things and they should have a say in what you are developing and As we said, it's not the strongest species that will survive or not the most intelligent is the one that's the most Adaptive to change the dinosaurs live for millions of years until suddenly this asteroid Hit the earth and and change the weather for two years or so, but that was enough and small Futile mammals took over and that's this was our chance because we could adapt We didn't care about the weather. We are warm-blooded, which is a huge advantage Although it's also disadvantage in many ways, but it is in this case a big advantage. So Well all this The question is how can you ensure that this this is actually okay? I mean, what about this adaptiveness? Well, it's been studied has been a lot of study on on on on life evolution and on adaptiveness and Maybe you some of you have been playing 20 years ago with games called life And life was a very simple simulation with cells and the cells could interact with each other's neighbors with very simple rules And they could die off if they were alone And if there were three surrounding neighbors, they would replicate or reproduce and you could have very nice Simulation of of like cells evolving Well Nowadays we have stronger computers and we can do more and we have now for instance Boids and anyone from New York here No That's actually New York slang for birds, but I can't pronounce it too well. This is just I'm not going to show you the whole movie This is actually a very simple Simulation it uses very simple rules only three rules and you can see birds a flock of birds evolving and flying through landscapes and doing things and There are many movies of this you can look it up and on the internet I think it's it's it's very beautiful But it's also very interesting because you can try things out for instance, suddenly you have a bird of prey What does it do with the flock will some get hit some get killed, but will most survive what if a volcano erupts? What if suddenly they are caged will they get out of the cage out of a maze? So I've seen very interesting simulations of this and it's all very interesting and according to with certain rules You have a much better chance of surviving than with others So this is just a short Now a short demo obsolescence obsolescence is actually also a way of disrupting the environment We know many cases. We used to have a tail. We don't anymore We have a small tailbone and I'm sure in another five hundred thousand years It will be gone, which is good if you will fall on it because it hurts like hell We've got wisdom teeth, but that doesn't really serve a purpose And we've got many other things that actually don't serve a purpose anymore But in technology or many examples also we don't use floppy disks anymore because there's something better We don't use Walkman's because it's something better And these disruptive things are more difficult to predict you can simulate them and what I didn't say yet Is I had this nice buoyed simulation the question is can you do this on software and the answer is yes You could also try to simulate with Software the behavior of software systems if things would change And this is still in very in its infancy, but I think it's it's very interesting In order to measure how adaptive your system really is But one thing is sure that the rules The rules are always very easy these birds that you've seen behave according to very Simple rules actually just three rules. I don't know them by heart, but I've seen the code You can change that and that already explains a lot of the behavior of for instance birds in real life They they don't have a big brain They just use very simple triggers to to to control their their muscles and the way they fly and the way they behave Which means that in order to simulate software behavior and its its adaptiveness you can also use fairly simple rules to do that Now there's been a lot of study on this adaptiveness and there's what we call the Lehman's laws of software evolution First of all Lehman categorized software into three categories software that's built spec Really? Precisely to spec. That's not what we're talking about. You got also the P programs That have to do a task for instance play chess Very simple task and E programs. They are built to perform some real-world activity And that's what we're talking about the Drupal is a E program. Okay Biology also applies to that and so does Drupal and The Lehman's law laws and I'm not going to great detail of the into great detail They say what you have to do. There's always continuing change We know this you have to adapt or otherwise you will become less satisfactory to clients or users The complexity will always increase as we've seen And unless you do something about it complexity will increase you really have to do it actively There's always self-regulation. Somehow this thing regulates itself It's very important that there's an organizational stability if there isn't The software might perish and that's a good thing about Drupal. We've got the Drupal association Which actually controls the organization a little bit. It's a stabilizing element You have to have conservation of familiarity. What does that mean? Well, we just don't have developers. We have sales people. We've got users We've got market marketing people. We've got system system administrators If you would radically change your software, it would become unfamiliar to them and that is dangerous So you have to preserve some familiarity Okay, so be disruptive and not too disruptive sometimes you have to ensure continuing growth You have to make sure that your quality actually goes up because if you don't do anything it will go down It will be perceived like that and you need a feedback system feedback with loops and iterations From various channels in your organization and your clients and so on you have to listen to them Okay, and there are lots of dangers are related to software development and we have to keep that in mind There's the inner platform effect, which means that developers will try to tend will tend to put in Features that they already have on their operating system or somewhere in development environment They don't want to put this in the system and then it becomes bloated in a way. It shouldn't Anti-pattern that's a very complicated thing that entails a lot of things like the analysis paralysis dilemma cash cow death march You know what death march is? It's when everybody in the organization knows that the thing will fail except the CEO and things will still continue That's a death march and nobody dares to tell him Happens it's not the case in our community technical debt you sort of Start building things and all we still have to do this and we have to do this and we postpone it We build up that technical debt. We'll do it later. No, it won't happen Okay, very bad. It's kind of a rot rotting process from inside Software brittleness software becomes more brittle. You have to reinforce it all the time And the complexity trap, I think you know what that is One thing to keep in mind when designing software and also open source software is that this Farmers don't grow the crops. This is the link again with biology. No, no They create the conditions for crops crops to grow and this is very important. So we come to five conclusions We have to scrutinize every design decision with respect to the dangers and set a very good growing Condition or conditions in plural We have to watch the code complexity I have to dare to simplify otherwise it will be bloated. It will become unsustainable Keeping in mind also the size of the community potential size of the community We have to understand the good evolution and the bad evolution And we can accept bad evolution if the benefits are sufficiently big Alright, but keep in mind resilience We have to embrace diversity in life. They've always been folks Need to say no more and you can like it or not It's actually a natural thing to happen in evolution. It may perish. It may go away But there's not one shark. There are tens of types of sharks. They're all successful in their own environment They might compete. They might not it happens and Then finally we have to react fast enough on all the environment Environmental changes fast enough not too fast not too slow Now there's good news. I've been watching Drupal 8 lately. I've been impressed. I've been drooling Okay, many of the things I said actually apply Drupal 8 is in a good shape with respect to these evolutionary considerations However, except one The bad news. I think it takes too long. We detect it on the demand side People are starting to complain customers takes too long if they sense it Things that are in Drupal 8 are overdue overdue for a long time. They're coming They're all coming but it will take a long time still to implement a year is a long time now a year is long and it's short But it's something to consider in future release management. There has to be an optimum. What is the optimum cycle time and Sometimes you have to maybe accelerate or split up I'm not going to detail here, but If it takes too long, it's dangerous. We waste opportunities and competition isn't sitting idle either And we need to stay on guard because it's okay with Drupal 8 Inevitably will be a Drupal 9 and Drupal 10. I hope We have to keep these things in mind Try to find out good metrics. See where we are in the complexity scheme. See that we don't overdo things Reduce complexity if necessary and so on and so on don't fall into the traps the dangers that I've pointed out If you do this Drupal will have a bright future and will never be a buying dinosaur and it will be mammal like we are a good one it will change but These are the conditions for it to happen Any questions, okay, then you can always mail me or tweet me Hi everyone, I think I'm ready to start Let me at first. Thank you for being here because here is my previous speaker I said there are like quite nice competitors in other rooms and Yeah, that was a hard competition. So my name is Mikhail Vink and I'm from company named JetBrains from PHP storm team and I'm product marketing manager for PHP storm ID And well, I hope that after this manager marketing in the position You don't you don't begin to go out of the room because they're actually I'm a developer and I have for more than five Years development experience and PHP. So I'm not going to give a marketing talk or something like that So the session today is named Drupal development using PHP storm and I'll try to overview What can we do for you in order to make you Drupal developers more productive? So first of all, there are some exciting news to share probably you already had seen them from Announcements or the previous week made by both Drupal Association and JetBrains and the first one is that JetBrains is now a Drupal technology partner and That means that we are giving back to the Drupal and to the Drupal community more and We are really happy to do so because we can support or the development of Drupal and Drupal Association And so that's really nice. I think I hope The next one is that on Friday, we announced there that we also proud to offer core contributors of Drupal Drupal core Drupal modules and Drupal themes PHP storm free licenses for open source development We've been doing it for quite a while, but as Drupal community is quite big There are a lot of open source contributors We needed to standardize the program and change the workflow a little bit of getting these licenses So I hope now it will be easier to get it So if you are top contributor, you can check the rules or in Drupal Association or JetBrains websites and apply for licenses and One more news to share is that we are now at Drupal con the third time and we're really happy to support the conference So at first I hope that's not for you But I'll first tell a bit what is PHP storm and tile be going from our the presentation to To the ID because I really Broke the rules that you you don't need to show anything live on the conference I don't believe so so I didn't want to make this promotional videos or something So I will do anything in the ID showing you just here on my laptop without any recorded videos So basically PHP storm is serve an ID Integrated development environment for PHP and it contains some nice features for code completion I deeply understands PHP code and also provides code effector in sir type inference sir and debugging features version control support and all the rest or all the rest So that that would be quite weird to list all the features here So yeah, it's a little bit blurred but it seems a can do can do nothing about the projector So yeah, now we know what is PHP storm and let's talk a bit. What can we give for Drupal? Well, first of all, the next version is going to be released only In what in one month or about so it's October November. It will be version 7 and for version 7 we actually have in mind a Quite a bunch of features for Drupal developer center well spread in Drupal community like rush coder and some others and One one more nice thing is that all these features have been done by us Just talking to you to come you to come unity of Drupal during the previous two Drupal cons and I think that this thing really makes this support special Because we didn't made it on our own We didn't invent some features, but we wanted to solve your problems and Actually, all we do at JetBrains is Solving our problems of developers because well, it's nice to have some features But it's better to solve some problem and to make you more productive and last but not least think is there that you still Have this well-known idea fingertips. You have all the features which has debugging all the rest all the rest So let's go to some hands-on so first our development environment after configuration for Drupal and Let's check how can it be done. So first if you want to create our new project Drupal project, we just go to quick create a new project and now we have a Drupal module and when we Select that We would like to create a Drupal module The idea will ask us to provide the path version and all the rest so it knows about your Drupal distribution So basically what do we need is just to show where our main Drupal is located So let me show it Yeah, and turn now that are the idea supports version 6 and 7 and and Support for 80 is coming, but when 80 will be like closer to the release because now It's not so stable to make support for that. So we just can easily Create a new module or also integrate Drupal plug-in or in Modules we already have and what the idea will do is Creating the basic skeleton project. So it's info and module files in order to Is set up of the new model for you Also, it will configure the ID because some configuration needs to be done In usual terms, but are now when you create specifically Drupal module It will configure coding standard for you coding style for Drupal Also, it will configure file types because their info and module and install files They are not usually used the way they are used in Drupal so it's good to configure them straightforward and Also, it includes all your Drupal installation as an external libraries So that you get all the code completion for Drupal API and all the rest The next thing are we have for quite a while is their built-in Drupal code style. So basically Following coding style and coding standards in Drupal community is really important because Drupal is all built on open source And there are really a lot a lot of contributors And if every contributor to core or to some module would use their own coding standard Not a Drupal one that would be really a mess and you won't be able to normally Understand the code and to beat others or code in order to do in order to maintain the module so Basically code style is a bunch of predefined a predefined rule sets and Enter in peach piston. We have this predefined rule set for Drupal But I think and I'll go to I'll go to another project to have to have Supporter that For example module and When the Drupal coding standard and coding style is selected in the ID everything you do about the code like code reform reformat It will be done conforming to Drupal coding style and also there is a very nicer feature when you commit something and PHP storm supports git and our other vcs, but in Drupal mostly git is used So when you commit you can check reformat code and the code will be automatically reformatted according to code is Drupal code style Also quite a big pain we wanted to ease for Drupal developers either working with hooks because well hooks is very nice system But it's not really native PHP because it's not really native PHP function It's a kind of an alias for the function which depends on the module you are declaring it for so there is a big problem for any editor Because You can't get code completion as there is no native PHP function for that and also difficult to navigate Because you need to understand there were is there in hook and vacation in your code and also you want to get documentation right away Because there are too many hooks in many modules. You can implement your own you can Documentate your own hooks and it's really a mess when you have a big project so for example when we Zoom a bit So when we just there would like to make some hook declaration in your module We just make it Function and we have We have for hooks indexed Completely from all the modules and from the core. So basically You can get a normal hook information about all the hooks and Also, you can get all the documentation for hooks Even while you're just switching between them So you don't need to go to other files search for your hooks and all the rest because Well, it wouldn't be so convenient and moreover there is navigation to hook invocations. So there is just This green icon on the left in the gutter. So you just press it selecter. What invocation do we want to navigate? And yeah, we are here. We just navigate it to this module module invoke string and can check what's going on Second problem we wanted to solve is how you get documentation about Drupal API because there are some hooks But apart from hooks, there are just a lot of different API functions from the core Drupal API and it's quite understandable that you can't remember all of them and What we want to help you about this Drupal API is to easily navigate you to the website not to Spend a lot of time on going to the browser going to Drupal or going to search and all the rest but Here you can just select some Drupal API function and From the context menu, you can select search in Drupal API and it will open browser and You will be navigated right to the documentation for this Drupal API function. That's pretty convenient and fast The next nice tool which isn't too great. It is Drupal Coder That's very interesting tool because it really stand alone and it helps our Drupal developers to check if their code conforms to Drupal standard coding standards, I mean and Basically, it can be run without any integration with anything and it can check your Drupal code Straight away from the console for example But it's very nice to use it with PHP code of sniffer PHP code of sniffer That's another tool or which you can Check if your code conforms to other other formats let it be peer or something else and Drupal Coder rule set actually can be integrated in this PHP code of sniffer and In this way, it is very easy to Integrate it right in the ID. So the only one thing we need to do is Configure code sniffer in PHP storm. So basically It is providing the pass to PHP code sniffer and it validates it. That's the version is okay And then we just need to turn on inspection for that select that we want to Drupal Coder tool inspections to be shown in the editor and and right in a couple of seconds seconds, it's It provides you information right in the code about Coder style violations. Well, which is also very convenient because you are able to check All the code violations and fix that for example here. I have for wrong spacing and I I have I don't have a space between before the brace and also we can easily reformat code if you broke anything and Also, we can inspect code All project there are For example run inspection by name for Coder sniffer. So we check only these Vailations of Drupal coding standards and it can be checked for the whole project and he will get information about All the violations So yeah for a whole Drupal distributions it takes a Few seconds. Yeah, so we've got like 800 coding standards violations here so we can go one by one and Fix everything and then commit and it it will be really nice for those who will be reviewing your code One more tool are integrated is drush tool drush is very handy tool for Drupal developers because you can it it is actually a command line tool and It it has nice features like upper-teget styled comments are To work with packages to work with your Drupal distribution. You can update it You can add some module themes or translations or threats. You can also migrate databases or perform some administration issues and Now you actually don't need to leave integrated development environment to do so because now it contains all the comments for drush and you need to Select in settings that you want to use it in the project or configure it globally and then as we type Drush in the command line tool console here on the left. For example, I type drush help and Yeah it runs it and It provides all the results here the same way we can make for example drush catch clear it will Tell us what what do I want? For which one should I perform it? I select it cash was cleared and we are done. We don't need to switch to console we don't need to switch anywhere else and one more thing integrated in PHP storm is Drupal org issue tracker I think many of you are doing open source development and Drupal org contains a very nice infrastructure for doing so for Drupal project and they have also issue tracker integrated there and That means that that would be quite handy to have for information about issues issues you're working on writing your idea and We have a configuration to do so. Well, there is no predefined one, but it can be easily configured configured for for Drupal project and Even when you commit something which is associated with this issue It will be commented that you are working on this issue. So you don't need to annotate or commit on your own So for example, I have it here in my project and I can see between tasks And for example, I I just opened tasks here and it lists are all the tasks are from Drupal issue tracker I choose so I choose core project So there is for example, the first one convert system themes page to a new style control and I can search it find what I need to work on our select and I can create a change list for example For version control to be based on this issue. So that means that all the changes I perform when This issue is selected in the idea They will be in one separate change list and it will be committed With added command that that's for this that's for this issue. So that's quite handy. You don't need to go To the issue at Drupal work one more time to check her what's the name and what's the idea You just can do it right away from the idea But yeah, that was about her mostly Drupal 6 and 7 And that's nice, but Drupal 8 is really coming and that's not a long time before it will be life And we will also need support for that. And we know that the biggest change in the next Drupal is That it contains symphony components and there are some very nice news coming with this support our first of all We have her open source so symphony plug-in for PHP storm written by community From our symphony community basically and they provided really a bunch of features for symphony components so it related to some code completion navigation annotations or and Many others and also Drupal 8 is as I know is going to be Distributed through Composer tool. That's package dependency manager for PHP and that's really nice news because you can manage your Dependencies in the project really effectively and easy. So you are not screwed up really when you update something and There's also UI in the IDE. So you can just select find her for Drupal 8 and Download it or find dependencies. Everything will be installed straight away by the IDE and there is a tweak support As a part of the IDE by default and also in this symphony plug-in. There is support for tweaking plates Which are going to be defaulting plates for Drupal 8 And it means that you get all the code highlighting or you get all the code completion navigation and other features for a new tweaking place because When when it comes to Drupal 8, it's a bit more complicated and Symphony components are also require some help from the IDE such as Drupal hooks also require some support from the IDE a special one and that's quite difficult to Easily maintain it without any information about your code and One more thing which is also coming to Drupal 8 is PHP unit testing system and nice thing that it's now a standard in the PHP community and There are already some some tests developed for Drupal 8 and for example we can Get the Drupal 8 distribution as I done here and We can run tests with coverage. Well, you see there are tests running and We can see what's going on with our tests or we can navigate to code To the source for example if something is failing and we also can see how much code of our application is covered by tests and that's really Very nice to have this test running right in the IDE before you deploy your application So is there anything else about Drupal support? Well, basically That were mainly all features We needed especially to implement for Drupal But there are many many other features and many many other problems solved which you can use and they're just they're out of the box in the IDE and They just are okay for any For any applications for any PHP applications, let it be Drupal, Symphony or something else So you can take advantage of debugging you can take advantage of VCS integration or for, I don't know, HTML, CSS and JavaScript live edit features or something else. There are really a lot of things you can do about it So if you haven't tried it, I would definitely recommend you to do so because As we actually realized on this conference that most of code committers of Drupal now use our IDE and yeah Thanks for them. Thanks to these guys because they're doing a great job So if you would like to learn more There are some materials. The first one is basically to learn more about PHP storm. It's jetbrains.com slash PHP storm and the next version with Drupal support is Already live even one month before release. You can download the public preview. It's stable and We still are going to make some fixes to Drupal support, but it's quite usable already So try it now and provide us your feedback in the issue tracker because we will be working on that And also there is a full Drupal development using PHP storm tutorial on our website You can easily Google it also And it contains information about how to use every feature for Drupal development So yeah, that's that's the first place you need to go I think and What we want to do from the side of jetbrains PHP storm team is that you develop its pleasure Because we would like to automator all the all the routine tasks You need to perform to make your Drupal development Really interesting for you So that you don't spend a lot of time on routine tasks, but you spend time being creative and making some cool stuff and Also, please wait for the session at the Drupal con website because it's it's really important for us to know what do you think about it and There is also one more nice event tomorrow. It's Drupal sprints and I would recommend going there because there will be a lot of a lot of coders around and I'm sure that my colleagues from Drupal community will be happy to help you this PHP storm as well so yeah, that was pretty it for today and Once again, thank you and develop his pleasure. You can easily find me anywhere Twitter email or something like that So I will be glad to hear any feedback or any any features you would like to have in our products or Just anything you would like to talk about and we are still here for a whole exhibition day so just come by our booth and we have some discounts and Licenses to raffle so we will be happy to talk to you. Thank you Thank you. Probably you have some questions Yeah, no questions. Thank you. Yeah Actually We support PHP doc annotations, but as I know Drupal 8 is not really about PHP doc. Isn't it so? Well, actually we basically support PHP doc. So it's a standard for annotations in In PHP, let me check Drupal 8 it seems Well, it's not Yeah, that's That's PHP doc I see here. So yes, we do We provide Some help for that Yeah, you see there is completion what we could can put here its context dependence So it's not going to provide you our information. You don't need in PHP doc. So yeah And if there are some Drupal specific features about these Annotations we will have a look closer to the release when they are Just decide on the format of them and check that it works well. Yeah. Thank you