 Okay, we're gonna get started on time So hopefully everyone's in the right room Environment America running 60 affiliate websites on Drupal if you have a little bit of introduction as we get started I'm Ken Rickard. I Director of Development and Professional Services at company called Palantir.net out of Chicago. You might have heard of us You might not have it doesn't matter a whole lot. I've been around Drupal for a long time I actually had my seventh Drupal anniversary recently I'm an early adopter talk about that some how many people in this room are not currently using Drupal by the way Everyone in here is using Drupal already Okay, then you might learn some stuff. You don't know you might not I'm available on all the social media is agent Rickard agent Rickard is a joke About the matrix when the matrix came out. I was the boss. So the guy working for me was Neo. So I'm I have a website I occasionally update to I'm a core contributor. That's this is a sort of heat map of all the Drupal 8 This is Drupal 8 core contributors. I'm up there I have a few things It's term in terms of patch contributions for Drupal 7. I was number 45 on the list And this is how easy it is to be a Drupal contributor You just do Drupal as your day job for a couple of years and just file bug against everything that makes you angry You can get on this list too. It's really easy I co-wrote a book called Drupal 7 module development Sort of the missing manual for a lot of really advanced stuff in Drupal 7 We don't we don't cover any easy topics in this book, but there's an entire chapter in here about node access Which is something that's related to what I'm talking about today Oops So yeah, long time Drupal I am actually responsible for some of the early enterprise websites I used to work for a large newspaper company. We owned at the time 35 different newspapers And we were kind of slow. We were writing our own proprietary CMS using C With Java input tools and Oracle on the back end It was slow development. It was expensive development. And I had a boss who Said look go find me an open-source tool that's gonna make us more nimble to make us faster I found Drupal and Mambo at the time. We were using Mambo a little bit Where we actually Joomla after at Fort and the project I'm gonna talk about in a little in a little bit comes out of The question should we use Joomla or should we use Drupal? I should say that I'm a technical developer. I am perfectly capable of talking technical stuff And I do technical versions of the talk we're doing today, but this is in the business track So we're gonna talk big picture ideas. I'm gonna talk a couple of technical concepts just so you have an idea of what What the configuration requirements are and then a lot of it is user interface stuff and just again general editorial Workflows, okay, so I can answer technical questions later if you like we should have plenty of time for questions So this is environment America. Environment America is a fascinating project They are advocacy group in the United States They have a federation of organizations, which means they're sort of a loose conglomeration of entities they have a national organization for environment America They have 29 state organizations, so they're active in a bunch of different areas around the country and what's really interesting From a US perspective, I don't know if the Germans if you have the same concept here Each of those 29 states has two separate organizations One that is a political organization and one that is not allowed by law to be a political organization And there's tax incentives and tax restrictions Around those two and we'll talk a little bit about that So it's very interesting if you just do the math on that they have two national two national sites And then 28 or 29 sets of local sites, so there's your 60 websites, right? EnvironmentAmerica.org is the primary domain. They have a number of different domains and we'll talk about that So the facts, what are they about? There are about a million members in all across the United States Again 61 big websites. They also have a jobs website. That's part of this It's one Drupal installation It's actually part of a public interest network, which is a broader organization that environment America belongs to There are actually four different clusters of these things, but I can't talk about the other three We're actually running in total something like a hundred and fifty five websites off of one Drupal installation Which is kind of fascinating if you want to know how we do that technically you can ask me later They have a bunch of local editors and contributors But they have a central technical staff and it's a very small central technical staff and in fact the state organizations pay service fees Whenever they need services from the central technical staff, which is about six people and the big last thing I have here It's a fixed budget. We actually took over this project from another vendor whose original suggestion was to use Adjir the multi-site installation tool and management tool and an installation profile to spin up 60 different websites actually a hundred and fifty different websites And the hosting costs alone in that proposal were something on the order of a hundred thousand dollars a year and the client can't do that Fact very few people can do that So they really came to us with a very very well-defined project, but a huge problem Right because they need a network. They need an affiliate system, but they can't afford To burn resources. So everything we do is about optimizing their budget It's about optimizing how they interact with the web so that this small team can support literally hundreds of contributors and thousands of members So like I said, there's a national site and then just to give you some idea This is the site in Pennsylvania Which is one of the US states Wisconsin actually picked two states with large German population Pennsylvania, Wisconsin, you'll notice the sites are very very similar in design, but they're localized They have different design characteristics If you came here, you'd know if you lived in Wisconsin, you'd recognize this photo very very quickly And that's very important to them So we worked with two people. I'm going to be quoting Jesse Littlewood a lot Jesse was the team lead there. So he was the project manager program manager on on their side He was the guy we interacted with the most Another guy named Ryan Mockley Ryan was the primary designer for this site Ryan did some really excellent work that challenged our team a lot So again, they have this concept of there's a national group There's the 29 groups and that separate IRS status, which again is a thorny problem And we use a solution called domain access. I'm going to talk about why And when we when I try to explain the difference between the two sets of sites So this is this is their primary site in North Carolina. My mother lives in North Carolina. It does look like this It's lovely. You should go a lot of Germans in North Carolina It's really a lot of Germans in most of America. I'll stop saying This is their their advocacy site Where they report on issues that are important their lobbying state politicians their lobbying national politicians They're trying to get legislatures enacted In order to protect natural resources This is their other site. This is the North Carolina Research and Policy Center This one is under much harsher tax restrictions. This is a How do they describe it they're a Policy-neutral advocacy organization that is not allowed to spend donation money to lobby political groups So these folks do a lot of research. They do a lot of public funded research or they do a lot of What what does it mean to the state of North Carolina? For instance, if we convert 20% of our energy grid to solar power What does that have what kind of effect does that have on pollution levels in North Carolina? That's a purely Scientific stance. So on the one hand these folks are doing research and they can publish that research But their research can't be published on the other site. It can be referred to But they can't publish this plug-in decree an energy page on This one, but they want to be able to link to it, which is an interesting challenge. So that sort of sets the stage This is really what they're looking for editorially They're looking for cross-publishing of related stories and those related stories might be from the North Carolina Advocacy advocacy group to the North Carolina research group Or it might be that the folks down in Florida are doing something that's interesting to the folks in Georgia Or it might be that the folks at the national level really want to highlight a success that's happened in California Right. So this idea of cross-publishing stories. They also want to be able to localize content So you might have a great national story about the general effects of what happens when you introduce solar power into your grid Right. If you get 20% of it on a solar power, what does that mean? What they want to be able to do is take that story and Change a few of the details to make it more relevant to North Carolina than just a general statement All right They want to promote citizen action by directly tying what they call calls to action Right, so the whole you know act today call your congressman make a donation But they want those to be very very targeted on specific pages and on specific sites in their network And as I said, they have this legal status of different offices So from a technical standpoint They want to be able to push stuff around Right, and one of the reasons that they like Drupal is that Drupal actually has not one but several different techniques for doing this Right, and so I'll just show you again. You might have again a national Advocacy piece I just mentioned so here's something coming from the environment the national research center That could filter down to the local research center. All right now in Drupal and this is sort of different than many of the other open source Content management systems you don't even have one way to do this You have multiple ways to actually accomplish this right the multi-site configuration was actually what? One way to do it, but doesn't automatically give you content sharing Organic groups is a great module for this the feeds module can be used for this and you might see these other names in the program The feeds module however requires communicating from site to site over RSS So it's it creates some brittle points that are a little bit tricky We said multi-site configuration can do this and then domain access and I'm actually I'm the maintainer domain access I talked a lot in a lot, so I'm going to tell you why we use it I'm gonna tell you where it comes from and how it can affect how you think How you think about building websites perhaps how you think about interacting with your own website So domain access allows for some flexibility and some consistency at the same time because it's one single Drupal installation You have a shared administrative interface for everything that you're publishing I actually met a guy in San Francisco who's running 2,000 websites off of one installation And then he's Google bombing the Iranian government with Because the Iranian government will censor one of his sites, so he just pops up another one and then they But lots of shared administration and lots for publishing syndications and configuration management and a lot of extensibility So I'm gonna talk a little bit about where domain access came from and why so this is back in Wow 2006 so I'm still working for a newspaper company and they are Publishing in a magazine this magazine skirt which is targeted to women from 25 to 40. It's basically It's a it's a lifestyle magazine and they have city editions It started in a place called Charleston, South Carolina And they wanted to be able to launch a national brand and have local affiliates when we started the project This was the map of where they were Right, so they had a cluster of things here in the southeast and they were starting to branch out and sell franchises And what they wanted to be able to do was have a national brand skirt dot com Skirt dot com is going to publish the best stories from around the country and it was also going to feed stories To the local affiliates right and in particular what they wanted to be able to do was say hey We want to go out here to California and sell a franchise in Los Angeles And I want to spin up a website while I'm sitting in the room During the sales call and show them what it would look like if they became a skirt affiliate And because the way domain access is written to those requirements if we spun up a new site over here in Los Angeles It could be automatically populated with content. We've selected from these sites already Does that make sense? so Fascinating and From a user experience you get this kind of choice right so like hey, where do you want to go? so The basic way this works and this is as technical as this talk gets The basic way that this whole thing works is all you have to do on the web server side is point all the domains You want to the same place right? You have one IP address. That's how domain names work right you point a name to an IP address You just point your domains all to the same place. You sit in them all to the same root Drupal installation All right domain access reads the inbound request and then makes changes on the fly in order to change the presentation okay What that means is? From a from a publishing concept You have a primary domain in the case. We were just talking about skirt calm or in the environment America's case It's environment America or the primary domain sets the standard for everyone else All right, and if you don't change settings on the other domains It'll be it'll behave and look just like the primary domain right so just like you have One website that has multiple entry points where things get interesting is that you do have the option To change the individual settings and we'll look at those in a minute You also have the option to say with any piece of content on your website. Does this belong to everybody? Or does it belong to certain domains along the pipe right? So is this relevant to North Carolina and a Tennessee and to Wisconsin? Maybe you can say that you can also say and this is again very important for them. This is relevant to the tax exempt North Carolina site, but not the advocacy North Carolina site So what it actually happens when you're an editor you basically just have to make a decision Right as part of the editing process you get asked. Hey, does this go to everybody or does it go to alert? You know some of the affiliates Right and it's worth noting that you can hide some of these options from people It's written such that if you had an editor who could only publish to the environment Arizona website They would never see these options at all than anything that they publish would automatically go right there okay One of the things that people like about I'm gonna brag a little bit One of the people like about domain access as we're gonna see and why it works really well for this model Is that it's very mature. It's actually been around for almost six years and we built it While people were developing skirt.com so it hits the business case very very cleanly So I actually say to people quite frequently. Oh, yeah I want to run multiple domains and I'm thinking about using domain access and the first question that I have for them In all cases is this are you sharing any content among those sites or are they? Independently the entirely independent because if you're not sharing content, you don't really need this Right, you just don't And I should say you can do something very very similar here with organic groups very similar So the technical profile What they want is again the same thing that the folks at skirt wanted they want to be able to spin up sites very Very quickly again, they have a limited staff And it's interesting it says Jesse says it takes them You know about a week to get a site up and running and that's because they do a lot of content generation They do a lot of customization that we've allowed them Technically with domain access you can get a new site up and running in five minutes So that's pretty exciting to us. So at the heart of it You have a Drupal interface for registering the inbound domain requests So what happens is the system understands the difference between a request that came from environment California dot org versus environment Delaware dot org and can then set the system up According that means among other things only showing content that's relevant to environment Delaware and Changing any of the system settings that we might need Very very easy process of domain creation Just a form it asks you a couple of questions When you set up a domain it kind of looks like this says, oh, this is how it's set up There's a site name for it. You can tell it to use secure protocols whenever writing links and things like that one of the other really really awesome features to Think about when you're planning a site along these lines is a module There's actually written by a German contributor a couple years ago called domain alias Which is really really helpful if you're doing development work domain alias allows you to say hey environment America or environment Arizona dot dev is Functionally equivalent to environment America dot org in terms of determining where you are in the network What this allows you to do in this case is we had something like six different development environments And what we're doing is we're registering development environment environments against the canonical domain so that it can be treated the same way Does make any sense? Think of it another way. So let's say that you had Let's say we had Munich twenty twelve dot Drupal dot org or we just had Drupal con Munich comm Right, you would make Drupal con Munich comm an alias of Munich twenty twelve dot Drupal dot org Right, and when you set up an alias you can actually tell it you can tell domain access redirect this to the main to the canonical domain or not and you can do that on a per alias basis Which is actually kind of nice for the marketing folks in the room Do we have any marketing folks in the room? Okay, good so I talked about configuration so By default all configuration is inherited from the primary site But there's a domain configuration module that actually exposes very very common things that you might want to change Through a user interface We realized we needed this module a long time ago because and I said we were trying to sell to Los Angeles But we were in Atlanta. Well For those of you who don't know much about US geography, Los Angeles is three time zones away So if it's 12 12 o'clock in In Atlanta, it's nine o'clock in Los Angeles And if you're displaying the time on your web posts, it's going to be wrong So we had to put our heads together and say well, how can we change the time zone? And so domain configuration module allows So it allows you to get exposed to some very common settings In Drupal to let you say hey on this domain use this setting on this other domain use this You can do some pretty wild stuff with that in fact This is probably the feature people use the most. This is domain theme. You can select different themes per site And in this case they have two to choose from primarily You can even then configure those themes on a per domain basis, which is really really nice And we had an interesting challenge for this project for site navigation and If you know anything about how you build night navigation in Drupal You basically set up a block that's going to display your primary navigation. The problem is If I'm running 60 sites, I don't want to have to have 60 blocks That I have to configure because that doesn't make any sense So we leveraged a great module called menu block and menu block literally allows you to Define what part of your site menu you want to expose as navigation? And then we wrote a module on top of that called domain menu block And what that allows you to do is automatically set up domain sensitive navigation so in the case of Environment America they have four navigation blocks That then end up having 60 variants a piece But there's only one block you have to configure You can manage the menus independently, which is really really helpful, right? So that means that the Arizona site has their own menu system and the Colorado site has their own menu system, but they don't have to worry about how it gets configured. Yeah Go to my site slash about and is that 60 different pages or is that a single page? So yeah, that's a good question. So the question. Yeah, the question was what about path aliases? So if you have an about page What do you do with that because you might have 60 different there? There are a couple of answers to that one is yeah, maybe the about page is the same every time Now that's possible. The other is there's a domain path module now and domain path will allow you to register different paths for Excuse me, it'll allow you to register the same path for different nodes on a per domain basis The problem is that it gets really confusing trying to manage that So we did some other tricks for pages like that You can do some interesting things with panels and some other stuff in order to localize Common pages But that is an interesting problem So we also give some configuration management tools. This is just a little Overview we there's actually a page in the domain access system that says hey here are all the configuration options that are domain sensitive Which one would you like to do and it's also? configurable Which is really really nice and so I was going to zoom in on one of these They have social media links on their site And so every one of the sites in the network It can declare their own Facebook page and they can declare their own Twitter page We literally take them to a page that lets them enter them and The way the theme is designed the way things are set up If they don't have a Twitter account, it just doesn't show up. We just hide it All right, but this is the kind of when I talk about settings overrides. This is exactly what I'm talking about. So yeah and am Horrible Twitter handle, but that's their primary Twitter handle can be changed on a per-domain basis And this is really easy to extend. That's the other nice thing If you have developers it takes about 20 minutes to do this if you want to expose a new A new setting to be it's a very it's in the variables to be a domain the domain configuration module actually keeps track of Domain specific variable overrides It's similar to those of you who'd run multi-lingual websites It's similar to how the I-18 and the internationalization module handles variable overrides on a per language basis So this allows them a lot of flexibility and we have some local action bits these are two examples of global settings That are per domain you can declare If no contact person is specified for in the Pennsylvania site use this this person The donation link is tied into another setting because those are all go to a third-party e-commerce system Those things are then enhanced by localization settings on individual pages That'll let you say, you know, I want the media contact to come from this category of person or the I want Different things to appear on this local page and what we have are default settings You have default settings from the primary domain that are then customizable on Each other domain and then overridable on a per page basis right Yeah Why okay, let me stop Why would you do that you would do that so that the editors or the marketers or the person who's responsible for updating the web page Doesn't have to know anything about how the thing the system works. They don't have to know anything about html I don't know anything about how the pages laid out. They just have to answer the right question All right designed to make things simple and easy to manage so What this gives them is Pretty good flexibility out of the box. All right gives them a lot of ability to make changes Excuse me gives them some ability to experiment with things which is really really important for them But there's some other business challenges that I want to talk about and in the Drupal community. We are often Accused of ignoring the designers for any design folks in the room anybody one just two okay, so If you wanted to break down the environment American design in a trip typical grid by the way But we wanted to hit Ryan the designer because he made us do some hard things We were angry the big thing we didn't like he moved the logo on the homepage Yeah, the logo is not in a consistent place, which made us pretty angry, but we got over But these are the things that they're trying to hit from a design perspective brand consistency is hugely important Right in this kind of network site It can become very important. I was at a talk yesterday at the aqueous sessions Where the first of the greatest victory for a multinational organization over the last two years was to get everyone using the same logo? Spread across like 80 different websites that we're running on totally different platforms Right now if those 80 different websites were running the same way we're running environment America It wouldn't be a problem because they'd all inherit the same logo But as you saw what I'm showing the different sites they have the ability to change the logo All right, but it still fits in the same position still has the same design So yeah, brand consistency is huge design integrity local iconography the idea that you should be able to go to one of these sites and instantly Understand where it is Right They have really good photography and they want to do some customizing with page colors And then in certain places they have either photo or video features that we have to support So from a brand consistency, they give us some very nice very detailed layout documents very detailed design documents That talk about how things are supposed to be positioned, but where it gets complicated is The background colors on this little piece of text they want matched up to this photo All right, they want editors to be able to make that decision on the fly And they want it to be Again Different from site to site. So this is environment America in the best of America the best of America They can put pictures of almost anything they want to here But here in this is Pennsylvania. They want to be able to give you again a very localized Experience and you'll notice this nice blue color matches the water very nicely There's a transparency on there, too We can talk about so one of the first things that we did is we exposed some custom background settings to the theme Right. These are all running off one theme But we can declare what the background image should be so in Arizona It's a bunch of cactus in the desert and in North Carolina. It's mountains because North Carolina's got some nice mountains They can add I love they can change the donate button color They can't change the text it always says donate they can change the color of it to match the mood They're going for which is kind of interesting What we ended up having to do with that is Map out all the different parts that they wanted to control what we had to and this was the hardest conversation We had with the designer actually was We had to break his design into little pieces and he wasn't really prepared for that We had to say now How much of these things do we want to be able to change and how do we change them right because of this this part I've got labeled number two this background image. Is that something that's swappable on a per site basis? We know the logo is going to be what about this background color here. Is this standard or not? No, it's not it's customizable All right, you can change the background color of the whole page. This has a background image You can barely see and that's why I like the donate button color That color doesn't really go with this page design, which is why we made it configurable All right, and again keep in mind This prevents them from having to build a totally separate website just because they want some small design tweaks All right, it also prevents the folks in Colorado from breaking his very nice design By putting some parameters around what they're allowed to do So yeah, we put together these design structure documents that said look This is the way your page is actually laid out and this document is Maps exactly to the page. We were just looking at but as much more Analytical Right and help this build things from the ground up and it also helped us identify points that were common and points That were not common across the various sites So yeah a word about photography They have some really really nice photography the sort of sweeping vistas and things and the thing to note This area is what they call their splash header This was there and they did the splash header on three of the site clusters we built for them We actually built two other site clusters that operate the exact same way for different organizations But in for environment America in particular They might want to put a panoramic background image on a story page All right, or they might want to put some lead text with a small image Or they might want to put some lead text with a video Okay, these are all maps of how this happens Right where we're working with the designer to identify what might be changeable here, right? Default treatment uses the theme background color is what we said Actually, no they wanted this background color to be configurable on a per page basis So having these kind of conversations help us plan the site properly And what you end up with in the user interface is so when someone is creating a page And they go to make the splash header they get a series of questions to answer right again The designers put some good constraints around what they're capable of doing All right, and then we put tools in place to make that happen This is a really good example. I think actually of why Drupal isn't really a product out of the box It's a tool for building content management systems Right these guys had some very very definite ways they wanted to manage their content They had some very definite ways about why they wanted their content designed and laid out And so we present that to the editors. Yeah These are fields on a note these are fields on a note. Yeah, it's just media module I can't remember what the name of this little widget is Yeah, Jay, you click it and boom you get a color pictures. It's awesome. And if you if you Jumped over there's this little background transparency to piece because they wanted the ability to have The first time I saw these designs I Didn't know how we were going to do it. I got to be honest I had no idea how we were going to pull it off We got some really talented people and they went well if we just break it into the little pieces And that's I think the important part being able to plan out what you're trying to do So the last bit I want to cover and we're going to finish Nice and early if I have a question so you can go and yeah So this is fields on a note Every node type have that set of fields or there's only certain nodes only certain ability to override I think the splash headers are on every single node type because that's what they wanted Yeah, what we what they really wanted was well originally they wanted absolute creative control over over that area But you can't really give non-technical people a whizzy wig and say hey make this look pretty It doesn't work that way. So we did some iteration with them They did in fact not want normal normal editors to have free design hand, right? They wanted to put Some limits around it. So it's funny. I'm doing a talk tomorrow about data migration And about moving from another system onto Drupal, and it's really about mapping out The actions you want people to perform Right because we can do it that way So the last bit I was going to cover some of the editorial things that they wanted We talked about they wanted to do some editorial content sharing But then they might want to localize that content Then they have this concept of legal review because literally if if they accidentally publish an advocacy article on the research website They can lose their nonprofit tax status Which is a massive massive penalty So they also have this ability to opt out of content So if a piece of content is syndicated to all the affiliates in the nation the folks in Pennsylvania can go Yeah, that's great, but this this solar article talks about banning coal production And Pennsylvania is the leading coal producing state in the United States. So you don't really talk about that Seriously in Pennsylvania, so they might want to opt out of that So we built some tools to let them do it Great example So from a content management perspective the domain access comes with the domain content module which essentially gives you a dashboard view into how your content is Affiliated For people who are not super admin users. You only get to see the domains that you belong to so most people Would only see for example environment Colorado and the environment Colorado Research and Policy Center, right? Because if you worked in Colorado, this is all you'd care about. So this is all we'd show to you And we give you an overview page that lets you go. Whoops. I Cut a slide and I didn't know it. Sorry There's an overview page that lists all the content on the different Domains so you can if you're the the legal compliance officer You can instantly go in to the Colorado Research and Policy Center Scan through the titles and you might know wait a minute this one I have to make sure is allowed to be here. We also give batch tools for reassigning things from one domain to another You have the ability to copy it This is how they they clone and personalize or localize something. So if there's a great story about solar energy This is a huge victory for Mount Rainier. This is from Washington If there's a great story about solar energy, but the folks in Pennsylvania want to take out the paragraph about coal mining They would come in hit the copy button and say hey, give me a copy of this And just send it to my site and what it actually will do is it will remove Your site from the list of affiliates Spin up a clone of the original story and then let you edit it just for yourself And this is actually a common problem, but I should point out that I haven't released this code yet I'm about to put it in a sandbox for someone else to maintain though I'm maintaining too much code. So if you're interested in this functionality, you can come talk to me later You may also have the ability again baked into the same thing to opt out of content This is that case where so you have again You're an editor right and you see this story about solar energy and it's great But it's talking about the coal industry and you don't want to start that fight in Pennsylvania So you have two choices you can copy it and change the parts you don't like or you can just say, you know what take me off I don't want this anymore right Again really really useful piece of tool and the idea again is to put these editorial tools and these Configuration options in the hands of folks so that they can produce What a really quite beautiful Websites I have to say when they launched this thing I was stunned that they were able to make it look good because it's it's fairly complicated It's like really gonna be able to hit that design target And they hit the design target because the tools there again allow them to do that and that's what made them very very happy As you point out, this is Jesse little wood little wood again They're not in the business of spending, you know donation money Building websites they want to be able to Concentrate on the issues and not have to worry about HTML and worry about The design integrity of things if someone uploads the wrong size photo So we handle all that for them and again we wrap it up into a package That is all hosted in one site One Drupal installation One database I'll point out for those of you who care it is Hock we are hosted They have a slightly special arrangement with aquia because of the nature of the way they're doing things but again what we were able to do was sort of Clear away the complications in a way that might come from trying to run I mean just imagine for a minute trying to run 60 separate websites to get your message out Right the folks at the national office can go in and support all of these sites through a single login All right, they can go and help everybody they can troubleshoot everything because there is consistency. There is standardization So I'm pretty excited about that. It's a huge win. So that is actually the formal end We have almost 20 minutes left in this time slot, but I'm okay with that. I like ending early Again, this is my contact information. We have plenty of time for questions That's okay One thing that we see a lot in the German market is Thank God really really well staffed Departments that have like an editor in this department. It's a large organization with multiple departments and They and there's one person kind of the webmaster slash content creator for this department And you want to have a website that basically has events articles blah blah blah blah But you want to only allow the people to edit the stuff in their department. Yeah, so This looks amazing, but usually they have one domain and a lot of sub right sub Areas within within the website that are based off of slash my department name slash something Does this do anything for that or this doesn't do anything for that? In fact, there's an experimental module that tries to do that, but it actually turns out to be really hard But So I think it does everything Well, it just won't do the sub and the sub path thing turns out to be hard to do in Drupal. It's it's just hard The way we typically break it down, however Actually maintain two modules that do this sort of thing So there's domain access and then there's workbench access workbench access is built around that hierarchical department model Which basically says you can you can take a taxonomy or a menu and say this taxonomy Structure is the hierarchy of my organization and then It assigns hierarchical access controls to different Sections of your website. So you can say for instance, this is the the public relations department and inside the public relations department there's you know media relations and advertising and commute up You know the Facebook's, you know Social media there we go. So under that structure you could have someone who's only responsible for social media Right, but their supervisor could be responsible for all of public relations and their supervisors supervisor could be responsible for the entire site structure and then you would just use taxonomy based path aliasing to sort of fake it in the case of Barnard College Barnard edu Barnard is One of the seven sisters colleges. It's the back before Most universities were co-educational the seven sisters are the sister colleges to the Ivy League schools So Barnard is paired with Columbia. So it's one of the top Colleges in the entire country They use both domain access and workbench access at the same time Yes, coming they still do that, right? Yeah, so they'll have biology dot Barnard edu And then that is sub-segregated Using workbench access is a general rule domain access is a Display to it's about giving a different experience if you're on Again, and environment America is a good example different experience if you're in Colorado or Pennsylvania Workbench access is an editorial back-end tool designed to let you segregate that sort of hierarchical structure Right, you can do something similar in organic groups to I shouldn't say Similar to that. I want to do things by directory that sort of thing. Yeah the reason there it's funny because I wrote domain access originally in Drupal 5 when the only other access control modules out there were og and there was a taxonomy access and Part of the question that comes used to come up was well Why would you do it differently and it really had to do with? Ordinary groups has a concept of you belong to this group therefore you can see these things That's not relevant in my model in the domain access model. It doesn't care who you are It cares where what context you're looking at things and for those of you who are Drupal developers It predates the context module by like three years. Okay, other questions and not him Yeah The entire build was probably about 1600 hours But that's again. We actually built four clusters of these things. I Don't know the actual number off the top of my head, but 1600 sounds about right Was it and and we had to trim it? I mean, I'll be honest We had to work with them pretty hard to standardize a lot of the functionality Because they had cases where they are we want to do this special thing over here just for Colorado We'd be like, yeah, but your budget doesn't really allow for that So there was there was some very interesting back and forth on that and one of the things that I tell people when they're getting into Development projects like this. I mean how many of you are? Not vendors how many of you end up are in the position where you hire people to build your website for you, right? So you hire people like me to build your website the important thing there is We can spend all the money you have I Don't care how much money you have we can spend it. We will find features We will we will build cool stuff the editorial tools that I showed you They could be a hundred times better if we had a hundred times the budget and time, but we don't and so your Web projects aren't like building a hotel, right? It's not like oh you have to have one bathroom for every room and you you know, they're like Building codes and things web projects are really squishy and people have great ideas I mean, I just read a I just read a proposal in the It's a 4,000 hour project and they have a thousand hour budget and So what you have to do is you have to get in a relationship with someone that you can trust someone is a professional Who understands the needs that you have and understands the limitations both of the medium and of the budget? In order to bring the project in that's again sort of why we were brought into this project was because the original the original vendors Proposal was triple the cost of what we ended up building All right, but it was because we did make them make some hard choices All right because again, there's flexibility and then there's everything has to be unique and The big thing I say about Drupal and other content management systems They are systems. This was the debate I had with the designer. The designer didn't quite get how to design Little systems. He didn't understand necessarily How each little component needed to be thought about he just he just cared about how it looked At least that's my opinion. I'm being a little I'm being a little unfair to it. Yeah Okay world vision Okay Budget limitations and stuff like that. Basically a department in the company. Well, it's all we need a website for So rather than and rather than get the Internet business unit to build it for the most go hire a higher end offender and sort of Another stuff World vision resources Right I'm not really understanding the use case for, you know, when, what, what, what, what Yeah. Right. Right. Right. Right. You can, you can totally change themes. I mean, you could have a totally different theme on a per site basis. I mean, and I showed the one screenshot of domain theme for this site. They have two choices. They have this more complicated version and then the simpler one for the research sites. But there's nothing stopping you from having, you know, five or six themes if you wanted to. The interesting, and this is the common question that people have. It's like, okay, is this right? Is my use case right for domain access? The answer is maybe. How much cross-pollination of content are they doing? One of the things that we didn't talk about, and I will use this article as an example. Right. So the best of America. So this is, this is an article that's published on the Environment America website. There's a module in the package called domain source. Domain source allows you to specify the canonical URL for any content published to more than one affiliate. Okay. So here we have the best of America and it's, we'll just say it's published to everybody. So everyone has a copy of this article. The question then becomes, so this will show up on the home page, right? When someone clicks it, where do they go? And with domain source, you can tell it, stay on the domain you're currently on, or always go to this canonical domain. And it's actually one of those things, if anyone was wondering, how do you avoid SEO penalization for duplicate content? Canonical URLs is the answer. So they do a lot of cross-pollination, right? And so in your case, if blogs.worldvision.com, you know, if that needed to show up on the worldvision.com home page, it might make sense to do it in a domain access way, right? And you, it might. Right. Correct. And then when you click the link, it would take you to the blog page. Right. It might make sense to do it that way. One of the interesting technical things is domain access doesn't actually, well it will stop you, hold on a second. If you have something published to all affiliates, you can see it at like node 10 on every single affiliate. But all the actual links point to the canonical URL. Does that make sense? Right. That's why the syndication model is the one that usually makes more sense to people. I mean, generally when I talk about domain access, or people, you know, are introduced to the module, it hits them like a ray of light on a cloudy day. They're like, oh, this is what I've been looking for all this time. Or they're just like, yeah, that's cute. It doesn't really work. You're in that gray middle area. Yeah. What are some of the pitfalls or challenges that we're going to run into? The biggest one probably is administrative management. Because, you know, you might have five sites under a multi-site. You could share users, so you have a shared user login. That might work. But you got to go to five different places to configure five different things and do this and do that. Domain access solves that problem. And then the other one, though, that I think is more important is that content sharing. Do you have the concept that, you know, content from site A might be promoted to site B? Right. That's why the skirt model and having the map makes a lot of sense to people. Like, think of it as hub and spoke. You could use feeds if you're sharing content. You could use feeds. You can use feeds in multi-site, sure. But then you got a lot of moving parts. Yeah. Right. You can run it all the time. And you just got a lot of break points that, and to be honest, feeds didn't exist when I wrote this. A lot of things didn't exist when I wrote this. Because I've been around for a long time. Any other questions? Yeah. But at the same time, they should have the option to log in on different domains. Or nodes having different aliases on different domains. Content sharing through the domains or weird caching rules. So there were a bunch of stuff that domain doesn't support autotubes. And the important part was the configuration for each domain. And the problem was that domain keeps configuration not so friendly in a way. Did you just submit a patch to my issue queue? My mind. I send a couple of patches. Yeah. Yeah, I just rejected one of those, actually. Domain keeps the configuration in database. What it's actually doing there is it's mimicking how core uses the cache table to cache all the variables. Because trying to load them individually would be prohibitive. With more than 30 domains. So it's a bit hard to keep the database up to date. So we had to work on our own tools to manage the integration. So we're keeping it in XMLs and updating, you know, a specific way. Because the site has a lot of traffic, so we can't put it down for too much time. Interesting. Is there an option built in domains that could help us, I think, about features integration or so? We should talk about that in the hallway. That is a complicated and detailed question. I have another one. Related to Chrome. Yeah. Many modules are not aware about domains. So if you run a Chrome Jam, they work on the whole site. So if you have a different configuration for each domain, and you run Chrome on a domain ID one, for example, then we have a problems. You can potentially have problems, yes. I've actually never seen any good reports about that behavior. There's actually a hook in the module. There's a hook domain cron, which allows you to put... If you invoke that hook, when cron runs, domain access will... Domain access has the ability to contextually load a domain other than the one you're on. And during cron, it will do that and then notify every other module, hey, cron is running. Would you like to act as domain one, domain two, domain three, domain four? That's a nasty little problem, actually. That's another great hallway question. The module must be aware of this hook, or you have to write some custom code of your own. I don't think so, except potentially running cron against each domain. That won't necessarily work and you'd have to stagger it. That's a nasty problem. I'd love to see what problems that's causing. One thing you can do, one thing that typically happens is you can disable domain access control rules while cron is running, which helps for some things like sitemap generation, things like that. Did you have a question? Yeah, the performance is an interesting problem and there are people who are here at this conference that will tell you domain access and OG are both node access modules by their very nature cause performance problems. I've never seen any really, really horrible reports. In the case of Environment America, we kind of get off lucky. Across the entire network, they get about a million page views a day. About a million page views a month and it's all anonymous traffic. We just put varnish in front of it and call it a day. Again, it's trade-offs. You're going to have to plan ahead and have a little bit beefier database server, a little more memory to get things running correctly. And there is the problem, of course, that now you have a single point of failure also. Because if the Environment America Drupal site goes down, they all go down. I mean, that's an awkward. That's not my problem. Yeah, I think this is our last question. Drupal 6, our next challenge is get that Drupal 7. Is there any initiatives in that area? Well, I mean, there's a smooth upgrade path. The upgrade path from 6.x.2 to 7.x.3 should be seamless. There's some instructions on Drupal.org about it. You have to disable some things, but the upgrade path is supported. The interesting thing he mentioned is he's running 300 domains. You typically won't run into extra performance problems. You'll run into more performance problems when you have a lot of content. If you have, like, half a million nodes, then you'll run into performance problems. What you run into when you have 300 domains are user interface problems. And I'd love to talk to you about those. But Drupal in general kind of has that problem of a lot of things like the taxonomy system or the menu system. They work great when you've got 20 of them and 30 of them, but when you have 3,000 of them, the user interface has become very, very hard to manage. So, yeah. One of the big things I did, I think it's in 6, it might not be until Drupal 7 as I paginated the domain management list. Because you can't put 300 domains on a big list. Oops, I hit the wrong button. I'm supposed to tell you to go take the survey. You can go back to the website. I want to thank everybody for your time in this slightly warm room. If you have questions, I'll be around. I'm fairly easy to spot. Thank you.