Female: This webinar is The Drupal 8 Preview: What to Expect with Angie Byron. You guys know her as “webchick”. She’s a Drupal Core Committer and the Director of Community Development here at Acquia. We are so excited to have Angie on the call today.
Angie Byron: Right. So, welcome to the Drupal 8 Preview. I’m Angie “webchick” Byron. A little bit about me. So, I’m one of seven people who can actually make changes to Drupal Core itself. I was the Release Manager for Drupal 7. That’s now been passed to [David Rothstein]. Now I’m a Core committer across all three major branches. I also work at Acquia in the office of the CTO so Dree, the Project Lead is my boss. No pressure there. [Laughter] I’m also the Drupal Association, a founding member of the Drupal Association board member. I wrote a book about Drupal once and I’ve been involved in the Drupal Project sans Google Summer of Code in 2005. So, kind of old school. Been involved in the Core development team ever since for every major release since 4.7.
So, an agenda and a little bit of an overview of what we’re doing here. We’re going to cover what’s coming in Drupal 8 for various target audiences so any users and clients, site builders, designers and themers as well as developers and we’re possible I’m going to try and show off some of Drupal 8 with actual live demos. So, I actually got a copy of Drupal 8 installed from yesterday so hopefully there’s no bug and [Laughter] and we’ll kind of see how that goes then we’ll talk about some frequently asked questions like when can I use Drupal 8 and how can I prepare now for Drupal 8 coming in the future.
So, I just want to point out, I’m going to try and go up to these slides kind of fast because I think people want to see what Drupal 8 can actually do but it may run over an hour so if that happens, Hannah is just kind of interrupt and tell everyone thanks for their time but feel free to stick on. I’m happy to answer any questions that you have. Alright. So, whoops we didn’t want to go quite that far. [Laughter]
So, changes for end users and clients. The first major area of improvement that you’ll see in Drupal 8 is around the authoring experience and one of the things that was an Acquia initiative is the spark effort and spark was basically an attempt to go and look at all of Drupal’s major competitors both proprietary as well as open source and sort of like see what was out there in terms of functionality especially out of the box functionality and what we might be able to enhance Drupal with in order to make it more competitive with other solutions. So, what you’ll find in Drupal 8 due to the spark initiative or things like WYSIWYG and Core so this is a pretty major big deal. Drupal 7 doesn’t ship with any kind of a WYSIWYG editor. We did an extensive evaluation process and we actually landed on CKEditor as our WYSIWYG editor of choice and I’ll be able to show you that in a moment here. We also had a feature called “In-Place Editing” which allows you to without having to leave the page or content that you’re on, if you spot a typo or something like that or you’re adding Joomla to awesome you can do it right in place, quickly edit, save and get out of your content without having to go back to the backend form. This works even on things like taxonomy or other kind of complex fields as well. There’s a newly designed context creation page that came out of the Drupal usability, a team’s initiative and what they intended to do there was sort of take the most prevalent things in the form and put them off to the left and then some of the stuff that you set left off and kind of push out to the right. This borrows a lot from like WordPress is doing this to make the content forms that is easier to parse and it isn’t quite in Core yet but it’s in progress, a real preview system which is attempting to address a lot of pain points with the altering experience in Drupal 7. So, let’s actually see how that works in action. I’m going to flip over here. What I’ve got over here – how am I going to do that? Sorry. Too many things. What I’ve got over here is just a stock Drupal 7 site with nothing on it and people I think on this webinar mostly from a Drupal 7 but just in case you’re not, I’ll show you how that works if I’m going to add a piece of content. Let’s say I want to add an article, I can say here’s a title. It’s Vancouver. I live near Vancouver and I think it’s pretty awesome and it has mountains. So, I can say, “Behold the city of Vancouver” and let’s leave the typo in there. It’s great and I’d say, “Come visit us at any time.”
If I wanted to put Vancouver in bold text, I have to start typing HTML by hand which is always a lot of fun. It’s the only thing that’s kept me up to speed on my HTML skills since 1994 though so I’m very thankful for that. If I want to add an image right here there are a couple of steps. First, I have to scroll out of my content area and choose an image from my desktop here and upload that. Once I’ve done that, I then need to copy this link address, come up to the top here and start doing this kind of thing, putting in some alt attributes and anyways it’s sort of a pain in the butt. This is all stuff that contrib. modules and Drupal 7 can smooth out really well but the out-of-the-box experience of Drupal 7 is just not very good for content authors. Then you have are left with all these different advanced settings that looked like they’re important because they’re in the main section so you just end up kind of going around and around on them. So, if I save that, what I’ll notice is that while my image is showing up, it’s not actually showing up where I put it and the reason for that is because we have to set an input format so I’m going to go back here and set this to full HTML. I’m going to hit save again and now I have a huge image that’s super big and if I want this one not to show up, it’s a whole process. So, I don’t know, have people encountered this sort of thing before? Is this sort of your experience with sort of content authoring in Drupal? If I look back here, I can’t see it. But anyway, I think most people have probably encountered these issues and tend to work around them. Yes, definitely. Exactly.
So, let me talk about what we’ve done in Drupal 8 to make this a whole lot easier. So, if we get to Drupal 8 it looks pretty much identical to Drupal 7. The toolbar is a bit different and we’ll talk about that in a while but I’m just going to go ahead and show you the create content experience. So, I’m going to create an article entitled do exactly the same thing as I did before, awesome. Let’s, yes, go ahead and leave that typo in there. That’s cool. I think I said mountains or ocean or something. Here I have a WYSIWYG editor so I can say, “Hey, it’s Vancouver or BC. Wooo!” I could bold that. I could add a link to it if I want. All this stuff is available right here out of the box. If I could view source you can see that the source that it’s generating is pretty clean. There are Symantec markups, strong tags and such so that you’re dealing with a whole bunch of like nested spans and dibs and all that kind of stuff that sometimes a WYSIWYG editor can be fraught with. So, I’m going to go ahead and add my image here again and this process is going to be a little simpler so I can enter my alt text right here and say, this is Vancouver BC. I can also check out if I would like an image caption and if I save that, you can see that it added it right into my text and I can click in here and say Vancouver skyline or whatever, that kind of stuff. Then all I have to do is click save and publish and I’m done and there’s my nice image and it’s got the nice caption on it. Everything is all ready to go and I didn’t have to spend any time configuring WYSIWYG editor or setting input formats or any of that kind of nonsense stuff that you have to do in Drupal 7.
When you want to edit a piece of content, that’s a whole another business. You have to kind of click. I’m back in Drupal 7 again. You have to click on this edit tab and this will take you to this format that looks nothing like what you just saw, right, like this is what your content looks like and this is what the form looks like. So, how do I know if this image is wide enough or too wide and I could try putting a width equals like 500 or something but I’m not sure if that’s quite right. So, if I click preview, what happens is we’ll see I get my image there twice, one is up here and one is down below in my admin theme so I don’t actually see what this is going to look like when I click the save button. I just kind of have to close my eyes and hope that when I close the save button it’s going to look okay once it gets on the front end. In Drupal 8 we’ve added a feature called “Quick Edit” and how this works is if I’m on here and I notice like whoops I misspelled my tag and I want to add an extra O to Wooo, I click my contextual links. I say quick edit and then I can just click directly into this field and start editing right in place. I can click up to my tags and I can say, “Oh! That’s supposed to be awesome”, and let’s also mention oceans because those are cool and I just click save and instantly the edits are done. So, if I go back to my front page you can see mountains and oceans are both showing up. I have my extra O in Woo and so that took about two seconds and I never once had to go back to that backend form unless I’m trying to edit something that’s not a visual property of the content. So, that was something that we spent a lot of time on and I think it’s going to be a really great improvement in Drupal 8 for content authors.
Another major improvement area around the sort of Drupal for customers and end users and things like that is around mobile improvements. You’ll find that everything in Drupal 8 is done mobile first. You can install Drupal on a mobile device. You can enable modules on a mobile device. We actually like went through all of the admin page’s poll sales and are going through the process of making sure that every single one of them works on a narrow screen size. One of the things that allowed us to do this is the whole responsive themes images and breakpoint things so if I have a website that looks like this on a desktop and I pop open a web browser, you can see that it condenses down into something that fits really nicely on the screen. So, the Home and About Us links end up being sort of wide so they have a bigger hit area. The big Drupal rocks picture condenses down into a smaller one that fits nicely on the page. We also added mobile friendly administration so you’ll see this new toolbar module in Drupal 8 that’s got icons in it. Wow! What a concept. So, that looks like on a desktop that’s stretched across the top and you can go in and click do it but on a mobile device what will happen is it will actually shrink down to use only the icons and not the rest of the stuff. Actually I see icons with little dropdowns and stuff like that. The other things that we’ve done is added some additional APIs for people who are building these types of screens to be able to use them with their content author. So, one of these is their responsive tables so you can see that - whoops sorry. This screen by default has status, rules, member forms actually a bunch of different things but when you’re on a mobile device you can actually fit all of that stuff into the same page without a whole lot of scrolling. So, what we do is we have a responsive table API which allows you to declare columns that are important or less important and then they’ll drop off as the screen size gets narrower and narrower. So, that what you’re left with is the most important information.
We also have a feature that’s currently in progress and not part of Core yet called “Responsive Preview Bar”. So, if you are not someone who keeps $20,000.00 worth of hardware sitting around in your office, you can actually quickly flip back and forth between different devices or presets or whatever you want and you can preview an approximation of what that’s going to look like which his really great for content authors in trying to educate them on the reality that we live in which is that things all over the place are if you can’t depend on the thing that you’re authoring, being this thing that someone’s going to view your site on at all. That’s especially true now and it’s definitely going to be true in 2014 and beyond when Drupal 8 is actually out. So, if I look at the response of the Preview Bar I could say, “Let me preview out in an iPhone 5”, and then there’s this little button where I can flip the orientation of it and see quickly what it’s going to look like in landscape versus portrait mode and you can quickly flip through devices and get an idea of what are your content is cutting off at a certain point or these kinds of things.
Accessibility is another big improvement. I’m going to try this. I’m not sure if it’s going to work but I have a little video so if you can’t hear it, I’ve got the YouTube link here but you can look at just a short little thing from Dries’ keynote. [Pause]
Female: Angie, we have seem to lost your audio.
Angie Byron: Okay. I thought that might happen.
Angie Byron: Cool. So, anyway, that’s a cool video you should watch at some point because what it shows is that all of the features that I just demonstrated, the content authoring experience, in-place editing and all that sort of stuff, that all works with people who can’t see the screen as well. So, screen readers can benefit from that. People who can’t use the mouse because of physical disability and can only use a keyboard navigation can use all these features so Drupal 8 will be fully accessible out of the box as well even more so than Drupal 7 was which was already pretty impressive.
Then the last mobile feature I wanted to cover is the fact that we have a replacement for the overlay module. The overlay module is a module because all the Core developers really, really don’t like that module at all. I’m not sure how the uptake is with - and the rest of the community but one of the things that we’ve been able to do in Drupal 8 again from this mobile first mentality is actually replace the overlay with a mobile friendly version which effectively is when you are in the admin context, you get it back to site button that remembers where you were on your front page or, I’m sorry, on the front end of your site. When you click it, it just returns you right to that place. So, if you bought about a node real quick to go and ban a user or something like that, you can quickly go back to the discussion you are reading without having to remember where you were so it’s actually a really nice usability feature that we managed to get in and we also managed to remove a module that a lot of people don’t like very much [Laughter] at the same time so yay.
So, let’s go ahead and see these things in action so I’m going to flip back over to my Drupal 7 and 8 sites. So, back on my Drupal 7 site, Drupal 7 came out in 2011 before a lot of certain modern best practices around mobile and responsive were available so what you’ll see is when you shrink Drupal 7 down stuff like the toolbar starts to do things like this which is not very nice and then you also have like this endlessly scrolling thing happening here because it doesn’t know how to format the content in a way it would be pleasing. It actually gets even worse. If you preview it on an actual mobile device, if I go here and I - 7x. First of all, my screen looks super tiny. I can’t actually see what’s happening there. I have to like double click to try and zoom in to different places and then if I log in as an administrator, I find that the toolbar is completely unusable without me having to like zoom in and then once I do start zooming in what happens is it just does this and now pretty much half of my available view side is taking up by this toolbar and it’s really basically unusable on a mobile device out of the box. Again, in Drupal 7 there’s lot of contributable modules including a back port of the Drupal 8 toolbar that can help address this but it is an area of contention when you’re comparing out of the box experiences between Drupal 7 and other sort of frameworks. So, if we look at what Drupal 8 does, here’s my full desktop with and you can see it as I shrink this down, all of the sudden the toolbar will change navigation from horizontal to vertical when it detects it can no longer fit. You also see their responsive images taking effect so the screen is going smaller and it’s shrinking the image down accordingly. Then if I go super small down what’ll happen is it’ll actually move the text from these toolbar things entirely and what you’ll get instead is just the icon representation so you can see that if I go here. Come on. You can do it. [Pause] There we go. That looks much nicer, right? I get to see my content just as I would on the desktop. I’ll go back here as you can see and if I want to do something administratively I can just click the menu toolbar here and everything I need is right available for me. I can even do things like invoke quick edit mode if I want, maybe not from exactly here but basically all of the things that we did in Drupal 8, how they work there. They work the same on mobile so that’s a really, really huge improvement. Then one other thing I wanted to show is this “Responsive Preview Toolbar”. So, if I’m looking at a piece of content, it’s my Vancouver page, what I can do is I can say, “Hey, show me what that looks like on an iPhone.” Okay that’s cool. I can flip back and forth between the different navigation site and say, “What about a Nexus 4?” and it will go ahead and pop back and forth between those. These are all fully configurable so you can click on configured device as you can set up whichever smart default make sense in your situation. So, if everyone in your company has issued a MacBook Air as part of joining in the company, you can set that up as a preset and then sort of figure out how that would be viewed by everyone in here who matters.
So, getting out a content authoring experience and getting it a site building improvement, there’s a ton of stuff here as well. There’s a lot of work done on what’s called the entity and field API system in Drupal 8 so you’ll find that out of the box we have improved data modeling tools for example entity reference fields so you can add say you are a music site and you want to create album then you want to associate them with artist and associate the albums with tracks and so on. You can set up entity reference values in order to create those relationships between your different pieces of content. We also have a native date and time field that you can add as well as link, phone, email and we actually make comments of field as well so you can configure easily that you want comments available on forum posts and they should be this way versus you don’t want comments available on press releases and that sort of stuff. We also add a new entity types so these are sort of the top level building blocks of Drupal to which you can attach fields so now you can attach fields and think like contact forms so sort of like web form module and Core light as well as you can add fields to block so for example if you have a type of block that’s called an add code block, you can attach a field where you can paste something from Google, Google AdWords or something like that or double click. We also added form displays as a correlated or display settings so in Drupal 7 you have a lot of control over where how the content and display once you get to a page like whether the image was up on a thumbnail view or a large view or these kinds of things but one thing you can’t really do very much is actually customized what the entry form looks like without something like displaced meter, things like that so we actually added form displays the Drupal 8 native concept so now that’s available as well. So, if you want to say make your comment form ten rows instead of five rows on this particular thing you can totally do that as well.
Views in Core was a huge improvement so a views module is I think now is like the number three most used module or something like that but it effectively lets you to click together things like blocks, admin screens, listings of users and even in Drupal 8 you can do REST export so we’ll get into web services later on but basically it lets you take any of list of content your site and export it as JSON which can then be sort of consumed by some sort of an API like a web services API. So, this is a major win for Drupal 8 and that you can finally with Drupal 8 build a really useful sites right out of the box.
For those who don’t know what Views is, Views basically allows you to build fully customizable admin listing, sidebar content, image galleries, slide shows, REST output, whatever you can imagine as long as it’s the list of things, a calendar for example you can do all that with the zero lines of code just by clicking it together. It’s one of Drupal’s really killer features. We’re also in the process of restyling the administration interface kind of giving that a new refresh look which is going to help with it looked a lot cleaner and be a lot more accessible to folks. Multilingual improvements is a huge area where we spend a lot of time trying to figure out. So, one thing you’ll notice right out of the box is your community, basically in Drupal 7 the first thing you do in the installed process is you pick which installation profile you want which is a really weird concept especially if you don’t speak English natively. [Laughter] So, in Drupal 8, the very first screen in the installer is a multilingual language selection so you can actually do the whole install from start to finish in your own native language because once you select Hungarian or something like that, what’ll happen is it will download the translation from Drupal.org automatically and incorporate it into your website. Then further any additional updates to those translations can all be updated through UI as well so translations are much easier to work with than they were in Drupal 7. We also added language to pretty much everything. So, you’ll see language attached to both all the content entities so things like files, users, comments, notes those kind of thing as well as blocks, views, menu items, anything that’s configuration as well is translatable. So, the whole gamut of the things that are available in Drupal are translatable including things like the title fields and stuff like that which is really important because in Drupal 7 in order to get equivalent functionality you needed roughly 30 modules in order to achieve this and in Drupal 8 it’s going to be all available in I think three or four modules depending on what exactly multilingual figures that you want. So, we have translation on almost everything. Here’s an example of blocks so there’s a language switcher block and you can translate blocks into Swahili, Norwegian, and Catalan, whatever language that make sense for your site.
There are a number of changes as well for designers and themers we can talk about. The first is HTML5. HTML5 is not even a new standard anymore but it’s definitely what you should be doing nowadays and we now do an HTML5 in addition to having a better Symantec property. It also have some nice stuff like HTML5 form elements and what this allows you to do is say I want a date field or a full number of fields or whatever and then as advice that knows how to process HTML5 form fields will actually show you a different keyboard depending on the type of field that you’ve chosen so you can see that for date field you get a little date slider. For a phone app field you get just a number pad and not the full letter field and then for an email you get a little app key at the bottom of the keyboard. We’ve also had a number of new front end libraries. So BackboneJS and Modernizr normalize that CSS and Twig. I’ll talk about Twig here in a second but essentially what these are allowing us to do is focus a lot more on making front end applications that actually interact with Drupal as well as being able to selectively turn on and off different features and capabilities based on whether or not the device is a touch device or what sort of inputs it has.
Twig is replacing PHPTemplate in Drupal 7 and what it is it’s a different syntax for sort of declaring dynamic information in HTML and so I’ve sort of given you an overview here so there’s HTML5 pegs on the market now so you can see like article and footer. You see little braces and then a property that’s basically printing out of variable of some kind and one really big improvement from Drupal 7 is you no longer need to know as a themer whether something is an object or if it’s an array or whatever it is, it’s always something got, something got something and that will handle it all magically for you. You can also do logic. You can also do comments but the key thing here is you can’t put HTML or I’m sorry. You can’t put PHP in these templates which are a huge boost for security. It should also be a huge booster performance and things like that as well.
We also provide native schema.org output which is a big fancy term for better SCO so the output that comes out of Drupal 8 has its machine coded so that organizations like search engines like Google or other sort of machine things can parse out the things and figure out, “Oh! That’s the title and that’s an image, that’s a byline and that’s actually a person” and so on. So, that when your site shows up in search results you actually get more Symantec data added to it.
We also managed to kill most of IE. We killed support for IE 6 and 7 in Core and most of IE 8 as well. So, IE 8 will still work. It won’t fire off any errors but it definitely gets a much degraded experience basically along the lines of what a mobile device would get. That’s important for maintainability as well as a number of other things and this is a move a lot of other services have done, Facebook, YouTube and so on of all then is and we’re just pretty much following the suit there.
Now in terms of changes for developers, this is my favorite part but we are about to get geeky so I’ll just warn you. The first and probably the biggest one is the new configuration management system in Drupal 8. So, this is trying to solve the problem of moving from dev to stage to production or other sorts of things and typically what happens in Drupal 7 is this happens so if you are trying to move something like say you’ve configured a content type or you’ve changed permissions and you try and move that to your live site, you have a problem because one of the great things about Drupal is that you can configure all of the stuff in the UI and when you click around the button, things happen but the problem is that the configuration and the content are both stored in the database so if you try and move the database tables from dev to production you’ll end up overwriting real content and so people resort to all sorts of workarounds for these. There’s features module. There’s update hooks. There’s writing it down on a napkin and going through all of the stuff individually which is my preferred approach. I’m just kidding. But anyway, in Drupal 8 we fixed all that with the new configuration management API.
So, I’ll walk through how this will work conceptually and then we’ll actually see it in action and then that will be really exciting. So, let’s say here’s your dev server and your production server and then your files directory there’s a config a big automatically generated key because you don’t want someone to get in here and then there’s two directories in there, an active directory and a staging directory and the active directory is where your site pulls its current configuration from and staging as it where put stuff that has yet to be deployed. So, as I’m on dev and I’m clicking around and clicking various stage configuration buttons, what’s happening is that’s writing things out to the active store which instead of being a database table or five is instead a series of YAML files so files on the file system that you can then track and as a version control and such just as you would any other file like a module and such. Then when I’m done making my changes, I go to a configuration UI and click export and then that will give me a hardball which I can then move over to the production website. Now on production I’ll go on to my configuration management panel and what I’ll get is I have changes in staging directory is I’ll see something like this. So, it will say, “You have ten new things to import and some change things and stuff like that.” I can click view differences and actually get an idea like, “Okay. This added a file and here’s the kind of stuff that was in it.” Then if I choose to import it what happens is it moves it from my staging directory, my active directory and then that becomes the work that my production web server. That the configures like my production web server looks at. So, kind of conceptual let’s go ahead and see that in action so this will be fun. So, I’m on my development server and you can tell the difference between development and production because production has content on it and my dev server does not.
So, let’s start with something really simple. So, let’s go to configuration, site information and let’s just add a slogan like, “Hello world. I’m not feeling very fancy today.” As I go to my home, I can see that now Drupal 8 dev has a “hello word” slogan but if I have to move back to my production server I see that it is not. It’s still just Drupal 8. There’s no slogan. So, if I go to configuration and I go to configuration management and I do an export then it will give me this thing called “Config 3” which I can go back into production and do the same thing, go to configuration management but this time go to import instead of export, download those Config 3. I click upload on this. It says, “One file were successfully uploaded, ready for import”, and now just as I showed you, we see that one file has changed. It’s a system site file. If I click view differences, I can see the slogan changed from nothing to “Hello World”. I can say, “Well that looks pretty good. So let’s go ahead and import that.” It’s clearing a bunch of caches so this part takes a little while. [Pause] There we go and if I go to my home link I can see now my production site has “Hello World” slogan as well which is really handy. One thing I wanted to show is what is happening on the file system so I have my site checked in to get. If I do a get disk you can see that these file changes will also show up on in your version control system so you can manage in that way as well. So, okay, so that was fine but that’s really woozy example.
Let’s try a fancier example, shall we? So, we’re talking about Vancouver. Let’s say that our site is going to be a tourist website so let’s make a new content type and call it, “Tourist attraction” or something like that. I’m going to save in managed fields and let’s say one of the fields I want is a type field which is a list of text and the type might be something like entertainment. It might be museum. It might be – my taxonomy is dialing to me this morning but it might be – in the museum. How about one more which is like show, something like that? Alright. So, now we have a tourist attraction type and if I go to add content, I’ll see tourist attractions is one of the things I can add and I probably also want to create a list of tourist attractions so I’m going to go to structure and then I’m going to go to views and I’ll add a new view which is tourist attractions and I want to only show content. That’s a type tourist attraction and let’s create a page and let’s give it a menu link in the main navigation. This is the views module that I’m demoing here. Again, I didn’t have to turn anything on. This is all just available right out of the box so I’ll save this and then if I go back to my site again, you can see I have home and I also have tourist attractions so there’s nothing in here but if I created the tourist attraction and then it’ll show up.
So, now we’ve demonstrated creating a piece of content, adding a field or sorry, creating a content type, adding a field to the content type and adding a view that shows what that content type is like. So, let’s see how it deals with this problem. So, once again I’m going to go back to configure management and I go to full, import, export, and export. There’s a lot of exporting. Flip back to production. Again, I can tell production doesn’t have this change because I’ve only got article and basic page. I don’t have anything about tourist attractions here so I’m going to go to configuration, configuration management and then an import, config 4 and while we wait for that to upload I’ll just go back here again so we can see, you know, what’s happening in get world and stuff like that. So, now it’s telling me you have new configuration file successfully uploaded, ready for import. So, these are new files that weren’t there before and you can see it’s got the note that I made. It’s got a field. It’s got a menu item that I made as well as a view so let’s go ahead and import all of those. I’m sorry. It wasn’t showing up because these are new files I actually have to click to get status instead of get dev but you can see that these are all showing up in my file system as well to be managed there. So, this is where I normally ask the audience if they know any good jokes but I can’t actually hear you guys so this isn’t going to work very well. Alright. So, let’s see if that works. So, we see our tourist attractions and that’s showing up cool. If I go to add content I see there’s a tourist attraction so let me add one which is called “Science World” or something and it is – I type museum and now if I go to tourist attractions I see Science World showing up there. Pretty cool eh? This is something that was not that easy to do in Drupal 7. There’s a bunch of work around. Features and models to actually really good like Drupal 7 wise. The problem with features model though is it doesn’t work for everything because it’s not in Core so it’s only module that it be explicitly opted in which at this point is pretty much everything but there was definitely very hanky times when it wasn’t quite like that so with this functionality being built right into Core, it means that support across the board in Drupal be available. If you don’t like clicking buttons, there’s also Drush Integration for automating this stuff. So, if you prefer to work on command line tools and you want to wire, you don’t have to check in job and those other kinds of other developer things, you can also do that.
So, let’s talk about web services. That was the other major initiative in Drupal 8 for developers so web services is trying to solve the problem where right now Drupal believes in Drupal 7, Drupal default assumption is that it’s generating its fully themed HTML page as it’s intending to go to a desktop browser and that is totally not an acceptable assumption at this point in time because you have no idea what that thing is on the other side and well it could be a browser on a desktop. It could also be a browser on a mobile application or it can even be another Drupal site or it could be a flash kiosk application in the mall or a number of other things. So, what we’ve done in Drupal 8 is leverage the Symfony framework in order to make Drupal more like a native REST server that has the CMF built on top. So, how Drupal now behaves is essentially gets an incoming request in and a return of response and while that response may be a fully HTML page, it could also be a glob of JSON or it could be something like XML. It could be a lot of different things and essentially each module has the ability to dictate what sort of thing it wants to come out of it. Symfony for those who aren’t familiar with it is a collection of loosely coupled components. It’s got sort of a library in order to make web developing applications easier so we don’t use it as an entirety of the Symfony framework. We use a number of different components and essentially most of what Symfony entails isn’t really going to affect you as a module developer other than the new routing system in order to do this sort of input and output from the page but in terms of HTTP foundation, HTTP colonel and a lot of these other sorts of things, much of that is sort of buried into what used to be like the includes directory and stuff like that. If you want to get data out of Drupal there’s the REST for web services module and this lets you send a Core request or whatever have you and it will get back at JSON representation of your page. So, that’s a wonderful thing. If you’re building say an Android or an iPhone application and you want to display a list of nodes in that application you can enable the REST for web services module and you can enable the REST export on your view and then everything that the people visiting your site, that will actually be visible on the mobile application as well. Or if you want to parse some other third party service and get that into Drupal, we also ship Drupal with a third party PHP parser and it worked something like this where effectively you pull out an HTTP client and then you send a get request to that client and then you return the JSON response and you then do whatever you need to do with it, save it into the database or email it to somebody or whatever sort of think you have there. I want to point out too, it’s not just gets. We also support post. We support update, delete, insert, all of the major HTTP operations with the REST for web services library.
Those kind of leads into a larger topic which is within Drupal 8 there’s sort of been this movement towards getting off the island and what we mean by that is rather than sort of having this culture of not invented here and we can do it better and these kind of things, we actually spend a lot of time in Drupal 8 during the development cycle looking at what other PHP projects were doing and what the best practices were outside of the web, what’s the best tool that we can find to do HTTP request and let’s just use it instead of trying to build our own thing. So, when you look under the hood of Drupal 8 you’ll see much more modern object oriented code so using concepts like classes and inheritance and interfaces and such and that code is embracing the latest PHP standards so standard ways of structure and directory names of choosing new PHP features such as name, space and traits. We’ve found a number of different places where we actually swapped out our own custom code for sort of better tools that are maintained to do only one job and do it well and then we sort of integrate with those tools as well. So, when you use Drupal you actually get the benefit of being able to use these tools for things that Drupal may not be the best fit for. So, Drupal’s great for contact community and commerce. It’s not so great for a very highly customized bespoke application but on the other hand if you learned Symfony and you know Drupal, you can actually cover a wide spectrum of all of the different things that you can do with a PHP project which is really, really exciting.
If you want to catch all of the EFI changes and there are many, we have about list changes URL at Drupal.org and that’s sort of a database that we’re tracking everything that’s been changing between 7 and 8 and it’s a lot. So, I’d like to give a shoutout to more than 1,700 people. I think it’s 1,766, I checked last night, who contributed the Drupal 8 so far. There is an enormous development team behind Drupal 8 and they’re all super excited about this new direction and trying to get it done.
So, when can you use this awesome stuff? When it’s ready. Wah wah. I know. It’s not a fun question. I want to talk a little bit about the Drupal 8 timeline just to give an idea of where we’re at and where we have left to go. So, development for Drupal 8 opened on March of 2011 and we spent from 2011 to 2012 basically pumping features in both users facing features as well as developer facing features and then have about three months window between December and February where we could actually get those things to completion. Then in the summer we did an API freeze and that the intent behind that was to get all the different stakes in the ground regarding the new way we’re going to handle HTTP request, a new way that we’re going to write entities in fields and such and now we’re currently in a phase called API completion where we’re sort of putting out monthly alpha releases in order to get developer experience feedback in order to fix performance issues and those sort of things.
What you’ll see happen probably in Q1 of next year is we’ll start putting betas out and this is when major APIs are locked down and at that point what we’re trying to do is get feedback more from end users than developers and how are the features working and sort of roughing up the right rough edges as well as getting ourselves done at zero critical bugs and then we’ll start releasing release candidates and then finally release Drupal 8.0. So, when it’s ready is when we have zero remaining critical bugs and critical test and you can actually check this list if you log into Drupal.org it’s going to be on your dashboard and we track this over time and see how it’s trending. Lately, it’s been sort of flat lined but we are starting to see some movements towards getting it to a downward direction. A lot of this as we had kept a lot of backward compatibility layers in Drupal 8 for a while, while we are moving things around and not as a matter of like getting everything converted to the new APIs and then getting polishing up some stuff.
So, we’re still hoping for an 8.0 in say mid-2014 kind of timeframe but there are also still lots to do. So, if you’re still inclined we can definitely use your help. We need help finishing API conversions. We need help fixing up performance, developer experience meaning like as module developers actually downloading Drupal and giving feedback on what it’s like for you and see if there’s better ways that we can handle it. The migration pads also need help, documentation examples, tools, whatever testing you can do. Drupal 8 right now has been looked at largely by the same people who built it. It’s great to get people who didn’t build it in there to start giving us not only some additional outside feedback but also sort of bolstering the Core development team because they’ve been working really hard now for almost three years and we could use an extra injection of help to get it right across the finish line.
So, as end user, when should you use Drupal 8? What I usually recommend is people keep their eyes on the project usage graph for Drupal and sort of let the community dictate that for you. So, this is actually the graph of Drupal 7 versus or – sorry. Drupal 6 versus Drupal 7 but – actually Drupal 7 versus Drupal 8. I would basically say that if you’re a module developer, you should really be starting to use Drupal 8 right now because right now the APIs are still malleable enough that if you find something horrible, it isn’t working or you see that we’ve missed an area to code entirely that means you can’t port your modules to Drupal 8, there’s still plenty of time to fix those things and get those in. If you’re an early adopter or you have a launch in say mid-2014 or thereabouts then when you may want to start using Drupal 8 as around when we start releasing datas and release candidates so an early to mid-2014. If you’re a late adopter and you’re on a conservative approach then what you might want to do is wait until those lines cross so in other words when Drupal 7 is on the decline and Drupal 8 is on the upswing and now Drupal 8 – the number of Drupal 8 sites have eclipsed the number of Drupal 7 sites, that’s actually a really good indication that that’s kind of a sweet spot for moving to Drupal 8 because by that time there’s a lot of contributed modules reported. People are actually able to use Drupal 8 in a real production way. If you’re ultra conservative, you may want to wait even later than that but be careful with that because if you wait until the platform is too proven you might have a situation where the community is not even caring about Drupal 8 anymore now they’re looking at Drupal 9. It’s sort of equivalent to like if you were trying to build a new site in Drupal 6 right now, you sort of hit this point of a community where even though Drupal 6 is still supported, it’s not actually actively looked at by most people because most people have their eyes on Drupal 7 and then the new shinier things.
Something we’re playing around with speaking of Drupal 6 is this idea of a new released proposal so this is in progress and there’s a link there where you can go and participate in this discussion that effectively what we’re trying to do is introduce a couple of different things. One is the concept of a long-term support release so things like – which we effectively have right now but mostly just due to how long it takes the current version of Core out but effectively what would happen is we would declare a long-term support release as well as allow minor feature releases of Drupal Core rather than leaving the Drupal Core as it is as it shifts on whatever data it shifts on leaving it that way for three to six years instead doing incremental improvements on a six-month schedule. So, what you would see here is when 8.x dev turns into 8.0 we’ve got 8.0.x and we would fix bugs and such on that and then we also have these non-BC break in, or sorry, non-backward compatibility break-in features that we might add to an 8.1.x branch and 8.2.x branch and so on. We wouldn’t actually make a Drupal 9 development branch until there was something to do there. So, I know until initiatives have sort of been moving along and there’s like a good heavy head of steam behind whatever that we’re working on, at that point we would branch for 9.0 and that’s also when we would branch an 8.3.x or whatever version it is would be the long-term support release and then that would be supported all the way until Drupal 10 has a long-term support release. So, that could potentially be five years or seven years or longer and then what we’ll do is we’ll hit security fixes only period once 10.x is branched.
So, what this attempts to do – well I mean it sounds way more complicated than this. But what it’s attempting to do is allow us to iterate faster in Core and allow people to get features faster so like WordPress is an example of a project that founds us really well where they have very fine grained six months release cycles and they just do little incremental improvements like,
“Oh! Look at this new media browser” and “Oh! Look at this.” So, the idea would be to free up Core to be able to do some of that kind of thing as well as have a version that does operate a lot like today which is that rock solid. It’s stable. It’s not changing any time soon but have that point later on a development cycle when we sort of flushed out the initial bugs and so this seems like it strikes a really good balance between those who want the bleeding edge features and want to sort of stay on that cutting edge and those who are more conservative and just want to build their site once and then we’ll leave it sit there for years. I think both of those audiences will be well served by this. The main thing that’s holding this up is building enough of a community around Drupal 6 to actually make sure that security fixes can be supported after Drupal 8 comes up.
So, what about the upgrade path? You may be asking. So, the upgrade path in Drupal 8 just as it in any major Drupal version is going to be pretty rocky because we changed the APIs in order to follow the latest and greatest in what’s happening out there. We have a saying that’s called the “Drop is always moving” and so the advantage of Drupal 8 is it’s going to have all of this stuff built in out of the box to assume native REST server and assume mobile first as multilingual first and all of these other things but it does mean that custom code that you had in particular needs to be rewritten from one version to another. So, what’s happening with the upgrade path is there’s work actively ongoing to add a content migration path from both Drupal 6 and Drupal 7. So, in other words your nodes, your users, your taxonomy, everything else that you’re keeping in your Drupal 6 site win Drupal 8 shift or shortly thereafter there will be an ability to just click a button and suck all that stuff out of your Drupal 6 site into your brand new Drupal 8 site and that’s something we have not done before it support two releases back. Normally what you have to do is do a huge migration path from 6 to 7 and then again from 7 to 8 so this is going to be a huge improvement for folks.
Contrib. module upgrades are ongoing. There’s not too much in that way yet. One nice thing is that Drupal 8 shifts with most of the well-used contributed modules that hopefully you can actually start building real sites of Drupal 8 on the day 8.0 shifts because it uses their NAB references and all these other types of things but there’s a project called “Upgrade Status” which allows you to sort of track what’s happening in Drupal 8 that way. For your custom module upgrades, there’s work ongoing in the coder project to make a coder upgrade module for Drupal 8 and what this did in Drupal 7 is it essentially scans through your existing code and would attempt to convert it to Drupal 7 as far as I could take it and that basically leads to be used for everything else and it basically turn what would be like say a weeklong reporting project into like an afternoon-long reporting project. So, if you’re interested in helping out with that, that’s a huge area that still needs some helping hands. In general though, what I recommend is to avoid your upgrade pain. You should stick to well-vetted contributed modules over custom code where you can. In other words if there’s a way to build what you’re trying to build with views and constant types and entities and such, do that because Core will handle that rather than sort of going off and writing your own custom version of panels modules because you can. [Laughter] So, that would be my advice there. There’s a bunch of other tips on the Acquia blog here under this getting your site ready for Drupal 8. One of the other big things you can do that that article mentions is you can – there’s back ports of a lot of spark stuff for example as well as back ports a lot of the mobile features like fixed responsive images and responsive themes and stuff like that. You can start using that in your Drupal 7 site today to sort of get your content authors familiar with the new paradigms. Then Sahana also provided this D8 readiness resources which is a bunch of Acquia resources to how to get further up to steam on Drupal 8. Sahana, are you on? Do you want to cover this?
Sahana: Yes. I’ll just take a minute. So, for all of you really interested in Drupal 8, now is the time to start getting yourself trained and familiarized with Drupal 8. So, I’d just like to give you a bunch of resources so do check out some of the blogs that we have on Acquia.com. They’re just plain how-to educational blogs where Drupal 8 and what happened in this week in Core and OOP and we have a couple of webinars including the one we did today which was awesome and a bunch of live panel discussions. Also there’s a place for developers alone called the “Dev Page” on Acquia.com where we have weekly updates on what’s happening in different parts of different technologies and Drupal 8 included. So, keep yourself posted and be up to date using any of these resources. They’re very helpful. Go ahead.
Angie Byron: Awesome. Thanks, Sahana. Okay. That’s all I’ve got. So, I’m happy to answer any questions that folks have and I’ll slip over to WebEx.
Angie Byron: Sorry. I know that was kind of fast but I figured it was being recorded so people could go back and…
Female: Definitely. A lot of questions come in so we can start getting to them and we’ll just try to get to as many as we can. So, the first question is, does the WYSIWYG editor include more editing options such as video, links, images, et cetera?
Angie Byron: Yes. That’s a good question. So, out of the box it definitely have links and image support. Video support is not in Core but the plan is for the media module Drupal 8 would be able to provide that. But the ways CKEditor especially the 4.3 version that we’re using, the latest version, is set up in order to allow for modules to very easily integrate with the editor in order to extend the buttons that are available. So, like CKEditor actually like really works hard with us. They actually redesigned a big chunk of their WYSIWYG editor to make it work with programs like Drupal so there’s this new concept of what’s called the CKEditor’s Widget system and the widget system is – when I showed the image caption stuff that’s leveraging the widget system. So, it’s the ability for you to actually like get in there and customize what’s provided from CKEditor out of the box and actually extend it with additional information. So, that allows us to put image captions on, also to in place edit those image captions and know the plans as far as I know the media module from Drupal 8 are to make sure that that’s the ball works really seamlessly.
Female: Awesome. The next question is will the import export system be complete replacement for the features module?
Angie Byron: Probably not a complete replacement so a couple of things that in Core are the ability to selectively import only part of a deployment. Right now it just does a full import or a full export and it may be that we don’t get to doing partial imports or exports until when Core shifts or even until 8.2.x or one of those other versions. So, that may be an area that features module may work. Also, feature modules has a really nice UI for sort of collecting things into a module and that is not something the configuration system does so that’s also an area that I think features module can continue to be really helpful is saying I want to feature called blogs and I want to have this content type and this view and such but what it does mean is that you won’t have to use features module for all the deployment stuff anymore so features can just stay based around that concept of creating really easy one check off a module that actually combines a bunch of different things together.
Female: Awesome. The next question is, is there a sanity check during the import process to make sure that the config file being imported corresponds to the right site i.e. I don’t want to import the wrong file accidentally into a multisite environment?
Angie Byron: That’s a good question. So, there are two things. One is no. It doesn’t yet but there is a critical task to figure that out before release particular adding a validation stuff because the problem with the YAML files is like if you want to, you should not do this but people probably will then you could hand edit those YAML files and then if you start doing that, you’re importing stuff and you don’t actually know what it’s doing. So, there is a critical task to get a validation step in there which would allow for that. As far as how CMI works with multisite though, I don’t know that there’s much we can do in order to prevent you from importing into the wrong site. That’s kind of up to you to view the disk and be like, “Wow! Wait a minute, that’s not what I meant to do” because there’s nothing intrinsic about these YAML files that explains which site they’re part of by design so you could move a view really easily from one site to another or a block or any of these relation expense. So, yes on the validation. That I get figured out before release but know on anything specifically about tracking which site things came from. Although, I’m sure that people will use the config 8 APIs in order to develop sort of additional deployment tool like that once Drupal 8 gets a little bit more release ready.
Female: Alright. The next question is what are the immediate complexities of upgrading from 7 especially with custom modules?
Angie Byron: So, the immediate – so upgrading from a major Drupal version for those who have not seen the process before, it’s a couple of different process. So, there’s two parts there. One is your data of your website so that’s like your content and configuration and such and the other is the code that makes your site work. So, oftentimes what people will do, what they do nowadays in Drupal 7 is they actually build a second site so in your case, you’re build these Drupal 8 site and Drupal 6 site and then you set up your Drupal 8 site using the modern best practice. Let’s say like you’re moving from a site in Drupal 6 and that we are using some module for images that we don’t actually use anymore or it’s been abandoned for seven years or whatever, that sort of thing. A lot of people will actually configure the places for things to go in Drupal 8 almost as though it was a new site in a way and then what we’ll happen is you’ll use the migrate pass that is going to ship with Drupal 8 in order to take all the content from one site to another. If you’re not using custom code, oftentimes your process can just be like install Drupal 8, grab copies of all of your contributing modules that you need, run, update that PHP and you’re done. When you have custom code in there though then you have to go through reporting process and that’s where that coder upgrade tool that I talked about getting actually completed ideally with some funding behind it from someone is going to make that a lot, lot easier. Because a lot of it changes honestly could be scripted as long as somebody just sat down and actually did the thing. Right now the process would be search the list of change notices so that list changes link I gave and then just kind of fix the errors one by one and actually find them but that’s a little bit of junky process. That’s not ideal. By the time Drupal 8 ships what I’m hoping is that that coder upgrade tool will be available even if it’s only in a beta or incomplete state. In Drupal 7 anyway we are able to expand that. So, the Drupal 7 version or coder upgrade can like convert all the database queries to the new database subtraction layer. It knows that these hooks got renamed to these hooks and it transforms things that way. That’s really what we need to make that tool or make that process a lot more seamless but currently if you try to port your modules today, the process is copy the module in Drupal 8 directory and start fixing things until it works and it’s long. It is a great way to learn Drupal 8 though [Laughter] so there’s that but yes a major version upgrade in Drupal is no small undertaking because of that drop is always moving philosophy. But the good news is with the migrate module in Core and as long as if you try to avoid custom code when you can, the upgrade process could actually be pretty seamless for you. You just sort of wait around or help get all of the contributed modules you need ported and then set up a Drupal 8 site, move your content over and you can do it on a rolling basis so like everyday import the content that was just posted that day and then when you feel like everything is ready, you make a cut over and then you port it.
Female: Awesome. We have quite a few more questions but I’m going to end with this one. I think we’ll try to get everyone else’s questions answered and maybe put it in a blog post or something. We’ll try to let you guys know but the last question is, if I want to get involved and help out, where do I get started?
Angie Byron: Yes. That’s a great question. Could I maybe present again?
Female: Yes. Sure.
Angie Byron: Alright. Share my desktop. Cool. So, the link I’ve pointed to in the presentation is the contributing link which I like because it demonstrates. There’s actually a lot of different ways to contribute to Drupal. There’s user support. There’s documentation, translation, testing, design, blah, blah, blah or yes by the way development too. So, there’s actually a number of different ways. A lot of people think, “Oh I don’t know PHP so I can’t possibly contribute to Drupal,” but that actually couldn’t be further from the truth. There’s a lot of different ways for people to get involved in all sort of things. Even marketing, I mean that’s an area where like we’re a bunch of developers, right, like we do a lot of marketing ourselves so the Drupal Association is trying to do a huge push around Drupal 8 because obviously we only hit one of these big milestones once every three or four years. It’s really good to make a huge splash when that happens. If you are a developer though what I would recommend, if you never contributed to Core before there’s a page on Drupal called Core-mentoring and this page basically covers the fact that twice weekly so once in sort of the early morning and one sort of in the afternoon UTC, what happens in Drupal on IRC there are actually Core developers there who are there to answer any questions you have. Everything from like how do I set up a development environment to what’s a good issue for me to work on if my skill sets are this, and they actually keep enormously good track of this if I can find the – I might not be able to do this on the fly. Yes, I can’t. But anyway they have like this awesome website that’s got everything. Oh here it is. All kinds of tests in the issue queue kind of pre-vetted. It’s saying this would be good for a novice. This would be good for somebody who has experience with frontend development and all those kind of thing and they can actually point you directly to something that would be useful for people. So, I would really recommend then as an entry point to Core if you are sort of not familiar to Core. If you are familiar to Core and you’ve done Core development before then hands down the easiest thing to say is you should help us fix the criticals. So, 37 critical bugs, 89 critical tests, some of those are really gnarly, some of them are like you need to be one of three people in order to actually solve those but there’s actually a lot of them especially in the bugs that often at times they’re just like oh shoot that’s just like a one character fix and we’re just going to have test coverage for it or these kind of things so there’s actually a number of things and also in the critical test, there’s a number of things that are sort of like port this thing to this API which are not only fairly possible but they’re also something that actually helps get Drupal 8 to release faster and they’ll bring you up to speed on what those APIs are early because once Drupal 8 actually shifts there’s going to be a huge cry out for people who have Drupal 8 experience and if you start now, you can have potentially six months of Drupal 8 experience under your belt but at the time Drupal 8 shifts, you’d be able to put up on your resume or your website or whatever. Then finally also with this block is this novice issues so if you want a really easily try pick up between phone calls or something these are all things that are sort of like would take one of the Core developers maybe 5 minutes to fix and maybe would take someone else 25 minutes or two days or a week to fix but they’re all sort of bite-off-able chunk things so if you’re looking for something sort of easy to cut your teeth on, that’s definitely an area that you can do.
Female: Thanks so much, Angie.
Angie Byron: No problem. Thank you everyone for coming.
Female: Yes. Is there anything you want to end with? I think we’re out of time.
Angie Byron: Well it’s actually a wonderful thing to end with so please help us make Drupal 8 awesome.
Female: Perfect. Alright. Thanks, everyone. Slides and recording of the webinar will be posted in the next 24 hours to our website and we’ll also email you out a copy. I know there’s a lot of unanswered questions so we’ll figure out a way to get those questions answered and sent out to you or put them on a blog post somewhere so thanks so much. Have a great day.
Angie Byron: Alright. Thanks, everyone.
– End of Recoding -