 So first a little introduction. So I am Christiane van den Ender. I work at Deeson in the UK. And I've had quite some experience with Drupal about eight years. I'm the maintainer of the group module. I first wrote it for Drupal 7. Deeson gave me the opportunity to do a full rewrite for Drupal 8 during company time. So thanks for that. I live near Antwerp in Belgium and I'm a highly sensitive person. I always put that in my slides because I'm prone to hypervinylation, panic attacks, just generally feeling bad. So I like to mention it to like open up to the crowd so that if I do start feeling weird or acting weird it's probably that. So you don't need to worry. It's like all alarms going off in my head but you don't generally see it from the outside. So on DEEDA though, I'm very creative. I just use my own name as my Drupal handle. And on Twitter I use McGentix. Yes, so I'm Jochen van Nieuwenhuizen. I also work as a software engineer for a company called Gogarilla. I have little over four years experience with Drupal. One of the maintainers of the open social project and it's my first time so be gentle. I'm Drupal.org. I'm Jochen van Nieuwenhuizen and on Twitter I'm also that. So before we get to open social which is the distribution that was built using group and several other modules. I'm going to give a short introduction to what the group module is about so that you all get an idea of its functionality. And then when Jochen presents open social to you guys you can see it in action. Because like any module if you use it out of the box with the bardic team it looks like shit. But open social looks really nice so that's why I have Jochen sitting next to me. Because he's part of the team that made something that actually looks nice. So group is like a marriage of access and collections. It's a little bit of both. So when you have a regular Drupal site all you have is your content and your users. And that's it. Your users are part of the access layer that defines who can do what. But sometimes you want smaller sections within your site. You want like smaller communities or you want people to only be able to perform certain actions on a small subset of the content. So this is where a group comes in. It allows you to create smaller groups and potentially put content within that group. And then have people in that group being able to either view that content, edit that content, add new content, control the members of that group. You can hide a group. You can make it public. So you can do all sorts of things. But the basic idea is that you can divide your website into sort of smaller websites. And there are some advanced cases you can do. So when you push this to the limit you can sort of create subsites like smaller spaces that are available only to the people within that space. But they are all coming from the same shared user base of that one Drupal installation. And if you want to go really far you can slap URLs on those subsites and then you really have a tool to build multi-sites but still have that shared user base which has always been a pain to pull off with stock Drupal. So when should you be using group? So there are a handful of obvious use cases when you want to use group and one of them is when you want to split up your user base into smaller communities like when you have a school. So schools have obvious hierarchies within them. Like a classroom has a teacher and has students but then above that you have a faculty etc. So you can use groups to divide your user base into such hierarchies and then assign teachers certain permissions over their students. You can also use this for news desks where you have like several sections like sports lifestyle and you only want a certain editor to be in charge of the content within his section so that a sports editor can't go and write an article on the website about how awful Madonna's new dress looks. You definitely don't want people overstepping their bounds like that. You can also use group to create a platform where content is only available to a handful of people. Think press area. So when you want to have press releases that can only be accessed by certain journalists you can create a group called press area and put downloads in there and they will only be visible to those journalists that are a member of that group. And when you need to have more granular access control you can use groups as well. Like when regular site roles don't cut it anymore and you want to have a more fine grained difference between people that actually have the same role on the site level you can use groups as well. Or you can combine them and go nuts and do all of the above. So when shouldn't you be using group? And this is really important. I've had people send me emails with questions like can I do this or that with group and the answer is usually yes but you don't necessarily want to do it. So what people have been asking me basically boiled down to I want to categorize all of these notes or these articles as being part of a specific topic. And then the answer is why don't you just use taxonomy? Group is a very heavy module. Don't get me wrong. It's a big module that tries to solve a very complex use case. So it would be like shooting a mosquito with an elephant gun. So you can do it but it's not going to look nice on your walls. So don't. So people also try to categorize people with group but it's the same thing. Just use fields, slap on taxonomy on users and be done with it. They also want to try and use it as another type of notes like they feel to their groups and then they want to display content but that's it. Then please don't use group, use notes. And then there's always these people. I love them. Like Facebook sucks, I'm making my own. So yeah the answer is hell note. Please don't use group for that. Either reply to Facebook or just drop the ID. There's a reason that it's a billion dollar company and it's not because they use the Drupal module to build their website. That said, please do send me these emails. They cracked me up. I love them. It's like in a world where everyone tries to follow the norm, being different is the only thing that's not boring so really those people interest me. So keep sending me those emails. Just don't start trolling me and sending me those on purpose trying to see what response you get because I'll start trolling you. So here's a little visualization of the whole situation and this is the thing that we all were taught in junior high school like when you have vendiograms like this, I could present this and tell you like, you know, you have the yes scenario on the left to you guys, you have the right scenario and then there's this little gray area like maybe you could use group, maybe not, it depends on the use case but then reality hits you and it's more like this. So you have some clear cut cases saying, yeah, definitely use group for this. You have some clear cases that, you know, are definitely not intended to be used with group and then you have a large pool of potential use cases where you're like, yeah, maybe you can use it, maybe you don't. By the way, for anyone in the room who's used organic groups in the past, this slide applies to group versus organic groups as well. It's like group works really well for some cases, organic groups for other cases and then it's all down to preference. So that whole section in the middle could be the same. No, it hasn't got a release for group all eight yet, but people sometimes ask me, use whatever you want. So let me quickly explain a few key concepts in group. So groups inherit from group types. This basically means like when you have nodes like content, they inherit from node type, right? So you have your articles and pages. Every article you create has the same fields that you specified for the article node type. So it's the same in this case. So groups inherit from group types like nodes inherit from node types or content from content types is what it's called for site builders. So all groups follow the same set of rules defined by their group type. So I have more information on that coming next. And aside from that, just like nodes, just like articles can be unique with the content they have within them. Like they have a different article body. Groups can be unique as well. They can have their own content, but they can take it a little step further. They can have, you know, their own members. Two groups don't necessarily need to have the same members, obviously, and they can have their own field data as well. Like a node can have different fields. Group can have different fields as well. So what are these rules defined by a group type? So first and foremost, group types define what kind of content can be added to groups of that type. So you can have groups that only allow for articles, and you can have groups from a different type that only allow for downloads, and you can configure them whatever way you want. You can also have multiple content types within one group. It's just do whatever you want. It also defines who can do what within a group. So there's this permission layer to it, where you can define group roles, and you can assign permissions to those roles, just like the global permission system in Groupall. And those apply to all groups. So this is a very important concept to keep in mind. Like all groups follow the rules set out by their group type. So this has the benefit that when you're a site builder and you configure a group type and you say, you know, members can do this, admins in a group can do that, you're sure that no one will ever be able to do anything that you didn't want them to do. All groups follow those rules. There's no per group overrides. And yeah, just like content types, as I said before, it also defines what fields are available, so what data you can actually show when you display the group itself. So the group permission layer is a little bit different to the regular one in Drupal Core. So the interface definitely looks the same for now. I'm going to spice it up a little bit because I'm actually not too happy about the one in Core. It doesn't really help, but with Group there's too many permissions. So I'm going to make that look a little nicer before the 1.0 release. But there are three audiences, and this is an important concept as well. Like when you have Drupal site, you actually only have two audiences. You have anonymous and you have authenticated. Anonymous is basically, well, you don't have an account, authenticated is you do. Within the authenticated audience you can have roles, but they're still all the same. They are still all people who have an account. So that is what I like to call an audience. So Group has three audiences because it differentiates between anonymous users. They have very few capabilities within a group because they don't have an account so we can't keep track of them. So anonymous is still anonymous. But then authenticated I like to call outsiders because then we have two people within the regular authenticated user audience that actually behave differently based on the fact whether they're in a group or not. So suppose like in this room you're all authenticated users. You all have this awesome badge which allows you to enter the room. But there are people on the right side for me of the room and people on the left side. So that could be two groups. So even though you're all authenticated users in this room, the left side are outsiders to the group on the right and the people in the group on the right are members of that group. So even though you're all authenticated users as far as Drupal is concerned, as far as that group is concerned, you guys are outsiders, you guys are members. So group introduces a third audience called members. So they're unlike in Drupal where you can assign permissions to just any audience. In group it's a little bit more limited because some permissions don't make sense when you assign them to a certain audience. So a great example is when you want to join a group. It doesn't make sense to assign that to a member. They're already part of the group. It's like you guys are in this room. You're already part of this room. So if I were to tell you, you're free to enter this room. That wouldn't mean shit because you're already in this room. So it doesn't make sense. So group doesn't allow you to assign certain permissions to certain audiences because they just don't make sense. And it would just cause a button to appear that it wouldn't really do anything. And just like on the global Drupal website install where you can divide your authenticated users into multiple sub- audiences with roles, group allows you to do the same to the member audience. You can assign permissions to group admin, which is a group role. So here are the three audiences. So I'm just quickly going to give you a little overview of which hard-coded rules ship with group. So first of all, you have the anonymous audience. It's just the anonymous role. It's very easy like that. Then you have the outsider audience, which I just explained. It comes with an outsider role. So when you assign permissions to that role, it applies to those people. And I'm just going to keep this slide. So for the outsider audience, also any global site role appears in that, but in a separate UI. So it's for an edge case, but if you want your global site admins to be able to administer all groups without having to join them, you can use the outsider role that syncs with the global site admin role. So every site role gets synced to an outsider role, but those are hidden in a separate UI because it's an advanced use case, but they are there. And then you have the member role, which is like the catch all role. So when you have authenticated user in Drupal, the permission you assign to it applies to all global roles. Same goes for the member role. Any permission you assign to the member role assigns to any role you may define after that point. And as you can see by the arrow, you're free to add any roles to the member audience as you see fit. So this thing is... I see it. The button is a little sticky. So when you want to add content to groups, so this is the last concept that I'm going to share with you before I hand over to Jochum to show you how awesome OpenSocial is. So... as I said earlier, I scratched the surface. You can choose what content is available to a group type, so you can say that only articles are available to a group type or only pages or all of them. So the way you do that is you configure it on the group type by installing a plugin, which sounds really weird, and then you get a configuration screen and ta-da, it works. And the things those plugins do is they actually... first of all, they tell the groups that you can put that content inside of them, but it also tells you how that content should behave when put inside of a group. So in case of the group nodes, submodular chips with a group, it tells you that when content is within a group, you can control access. And whether people outside of the group can view it, who as a member can create it, so it defines the rules. Group ships with two of them so far, group membership and group nodes. Group membership allows you to add users to a group and then assign roles to those members. Group nodes obviously allows you to add nodes or content to a group. Okay, so... but group also tracks the relation between the entities you put inside of a group and the group itself. So those are called the relation entities. They have a horrible name in the codebase, but in my slides I call them relation entities. And they are fieldable as well. So when you add a user to a group as a member, there is already one field on there that allows you to select the roles, but you can add multiple fields to that. So if that is not enough for you, you can ask members when they join for their bio, for their nickname. So if you have a gaming clown website, you can ask for their in-game handle or something. You can do the same when you add content to a group, but I found that generally people don't care about that. And they started complaining that I forced them to go through that screen. So now I put a toggle in that allows you to disable that. So when it doesn't make sense for you to have to fill out a relation, you can disable that at your own risk. But it's fine if you did fill it. Well, people are not going to see that screen and those fields won't have data, but that's up to you. I hate myself for putting toggles like that in the module because the more freedom you give users, the more pain you suffer as a developer. But, yeah, I'm still thinking on this and maybe one day I'll find a great solution that doesn't even require a toggle and just works for everyone, but right now it's a toggle. The relation matters as I just said, members, examples where it usually doesn't matter, nodes. Although there are use cases, so I do keep the functionality in. One use case would be a book club where the admin of the book club adds book nodes to the group and then they have a field in the relation saying, you know, why do I want to add this group, this book to my group because I think it's awesome or whatever. So then the relation does make sense. So that should be it. Let's have a look at OpenSocial. So what is OpenSocial? OpenSocial is like how we like to call it, it's a full featured Drupal 8 distribution. You can find us our project page on drupal.org slash project slash social or on getopensocial.com We build it, we build it to make online communities, that's what it's primarily built for. Some of the key features that we have is that it's fully responsive when you install it, the vanilla version. It has an activity stream, it has on-screen notifications, events and obviously group. So I have a small video to show you guys so let me quickly press so if you if you install OpenSocial this is actually what it looks like in this case it comes with a module that installs demo content so I've installed it in this case the anonymous homepage looks like when you installed it. So you can see on top there's a big header, this is all customizable obviously. You have your welcoming text for the community and your inevitable call to action buttons that are always there. You can sign up login, you can just customize this to anything you want, you can lead your users to anywhere you want to so in this case I'm going to quickly login. Okay now we're on the logged in user home page this looks a bit different obviously we have a menu on top which isn't there for the anonymous users we have the home button so you can go back home normal. We have an explorer menu where you can explore the community where you can see all relevant content in the community an overview of all groups events, topics and members that are in the community next to that we have the search button so you can just search for any type of content you have access to and then on the right side there's more like the action part so there's the plus symbol using the plus symbol you can add new events you can add new topics and of course you can add new groups here so next to that we have another button that's the my group button where you can go to your page with all the groups that you have joined you can see the amount of members that are in that group next to that we have the notification center where you have the on-screen notification so you already saw that there were three unread notifications you can't really see on the screen but they have a slightly different background so you can see that they're unread if you click on one of them for instance this is that someone liked my post I put out this post of my holiday so it's pretty awesome and you can see at the top left that there's one like so someone liked my photo if you click on it you can see Chris Hall liked my post it's pretty cool next to the notification center you have the personal setting menu in it there's the overviews you can go to your profile you can see your events the ones you created or the ones you enrolled in you can see the topics you created the groups you're a part of settings is for editing your Drupal profile and the profile is for editing the profile module that we have attached to it and of course also you can log out there now to take a closer look at the homepage on the left side you already saw a little bit that there's an activity stream, a timeline thing going on there on the homepage you get sort of like personalized information there so what you see there is content that is potentially interesting to you so it could be post from within the community topics from within groups that you have joined so here you can see it's a topic a topic is in OpenSocial a topic is like a blog or a discussion or a news item and we've categorized them into one node type also you just saw the posts we also have events so here you have an event you can see where when the event is taking place also the location of the event you can also add geolocation scroll up again on the right side you can see there's also a little bit some blocks on the side those are your upcoming events so the events you've enrolled in the ones you're going to attend below that we have the upcoming events in the community so that's basically all the events in the community regardless of whether you're going to attend them or not below that some topics so these are just all the latest topics that have been added to the community so regardless whether they're interesting to you or not and the groups it's also just all the groups that have been added to the community and also the newest members so the people that just signed up for this community so it's open social a couple of years ago we built a website for Greenpeace for the Netherlands department of Greenpeace where they want to engage their volunteers more so they wanted to have a bottom up organization where the volunteers could create their own action stuff that they wanted to do later the international Greenpeace also saw this community and they said we want this as well multi-domain, multi-group multi-lingual site for them runs in over 20 countries has like 25 languages and loads of groups in them lots of people engage in the community big user based we want an award with that one in the Netherlands the Dutch interactive award is a pretty big thing in the Netherlands and of course after that everyone wants the community so they call so they called us and we couldn't just say here's the Greenwire community we're just going to put it on your doorstep and have fun with that because it was way too customized for Greenpeace so many Greenpeace features you couldn't just put it somewhere else so we came to think we have to build something more generic so this is how we actually came up with building open social and why do we have groups in open social group module Christian always gets angry with me when I say groups because it's actually group module sorry if anyone says groups from this point on I'm going to hunt you down you've heard him so the group module sorry about that versus organic groups we had some experience with organic groups because in Drupal 7 we used it for the Greenpeace Greenwire project but at the time that we had to make this decision there was not really an organic groups there still isn't an official release of the module so also our experience with the interface was not that good so we thought maybe we should switch the groups group and then it turned out to be that the architecture also was a little bit more how we saw that it should be so that's basically the reason why we chose to use a group module and how does this look in open social then so when you install open social you get two group types out of the box so we have the open groups and the closed groups open groups are free to join for all members of the community so you have to be like a member of the community to join the groups and closed groups cannot be joined by members of the community you have to be added to the group by the group manager the group types have preconfigured settings for permissions group content so what kind of content can you add to the group there's a couple of roles predefined so you can assign these roles to members if you want to and obviously content visibility which is the main distinction between open and closed groups for content placed in closed groups will not be shown in the timeline if you're not a member of the group so next up I would like to show you a small video I made which is about group in open social from a site building perspective so what I'm basically going to show is how you can manage group types how you can create a new group type how you can manage permissions add permissions there also add content types that you want to have available in the group so I'm logged in as an admin and I'm going to the group types where you can see the two preconfigured group types that we already have there I'm just going to add a new one I'm going to call it the Drupal group just put some description there so that's basically groups that are only about Drupal you can already see the the yeah so if you there's a couple of settings you can do there's also the sorry I'm going to go back there so the setting if you want to become a member automatically if you want to complete your membership this has to do with you feel the membership and you have to fill out some extra fields when you become a member of the group so we're not going to check that in this case and also the administrative role is not important now so we just created a group type you can see it over there it's shown up in the list now we go to the site and then we're going to manage the content types that are going to be available so you can just go to set available content you see all the plugins that are there in this case we're going to install the event plugins for nodes here we can say to how many groups can an event be connected in this case it's only one and now we've added the node event type to this group so basically we can now add event to the group so set a couple of permissions there's one setting on the general permission overview that you have to set because there's a specific setting for a group type so this one is pretty important if your regular users can create this group type so we set that one now we're going to go back to the group type permission page and on the group type permission page you can set a lot of other settings so here's the three audiences that Christian was talking about anonymous, the outsider and the member like he said you can just add new types of roles if you want to we're not going to do that in this case but if you look at the pre-configured group types you can see that we have another role there you can also assign some more permissions to so in this case we're just going to make sure that everyone can join the group anonymous people can join the group and view content in the group so basically it's just a copy of the open group that we're going to create here if there's do make some settings for the content types as well to make sure that people can create the events in the group that they can post in a group a post is an entity in open social that you can just quickly post something it's a little bit like a Facebook post so I've saved the settings here I'm going to switch to another user so login as the user I've logged in as before that didn't happen so now I'm going to you have the same overview again you have the toolbar and everything else I'm just going to add a new group here and you can see that you can now add a Drupal group so in this case I'm going to create a Drupal group just give it a title because I didn't add any fields to the group type we did that in open social with the pre-configured type we added some about sections we didn't do that now you can just add any fields that you want so now you can see that you have your own stream within your website basically you can see that there's a member section there's an event section there's no events yet we're going to create one now so I'm just going to add an event make sure that it's in a group you just fill out your title nice image header and then you add of course you have a start date and end date and of course also the time you can also select the location based on the geolocation I'm not going to do that now in this case I'm just going to put in some location name so for the sake of having the field filled out some text and we're good to go so now I've added my first event to my Vienna group you can see that first I'm going to enroll in the event so now you can see that some people have enrolled in the event you can also see on the enrollment tab that I've enrolled on the sidebar here you can see also in the newest groups in the community that the Vienna group is now there available and if you go back to the group you're on the stream of the group and you can now see that your activity stream now also shows that you created an event in the group other things you can do is like making posts in a group like if you have a small photo you want to share with your audience with your group you can just share a photo there and you can see it that it's immediately added to the timeline of your group and since this is an open group so basically everyone has permission to view it you can also see it on the timeline on your homepage stream so you can see here that the content is immediately visible on the homepage stream the groups there still so the event is going to be shown up there on the side as well so this is basically how quickly you can add a group type, set permissions add content types and you're basically good to go so next I think yeah, I'm up now so I quickly want to discuss what's next for a group so I'm going to be adding new features and I'm going to do some refactoring but seeing as we now have a release candidate and there are a few bug reports I'm first going to focus on a full release main reason being full releases are covered by the security team so I become their problem from that point on but there are a few items that I still want to add and one of them is the permissions UI and I also want to do a few I want to tidy up the user experience just a little bit as well I want to make it feel more natural so one of the main concerns I still have is that you can't view a grouped node yet within the context of a group I want to fix that before 1.0 should be easy enough but that will improve side builders enjoyment of the group module a lot so obviously like any release there's also going to be bug fixes and adding more tests and whatever so this is scheduled to be finished by the end of this year I have a lot of time on my hands to work on it over the next quarter so that should be finished by then in 2018 I'm going to start work on 1.1 and I'm going to add some commonly requested features such as subgroups like putting groups within groups it's already possible if you write a code but that answer doesn't help side builders so I'm going to try and collaborate with the people who have been working on that so far they have a working patch but it needs some cleaning up before it can go into group I'm going to improve the performance because right now group uses the node access system which is like a special snowflake within Drupal all other entities don't get it nodes do, it's ridiculous and it can really do a number on your site performance when used with the module like group or organic groups so that kind of sucks so I want to make the performance as good as it gets before we work on a core issue to actually remove that node access layer because it doesn't make sense and then at the same time I want to work on group 8.2 like a second version so it will have an upgrade path because there won't be that many changes for side builders like hardly any but it will require module maintainers to adjust their code just a little bit it's mainly going to be an API cleanup so I started building group when Drupal 8 was just released I still needed to teach myself quite a bit about Drupal 8 I'm really proud about certain parts I really have the feeling that I've written those perfectly but I also have some oopsies in there, like some really nasty codes, I mean what the fuck is even a group content enabler who knows, it doesn't make any sense I could have just as easily called my class as I see dead people and I would have made just as much sense so yeah in hindsight that wasn't the best choice so I really need to fix that because that would break backwards compatibility I can't do that in a 1.x release so it's going to have to become 2.0 and similarly when we do get entity access in core I'm not going to bother getting that into 1.x because that would mean removing all of that nasty node access stuff so I'm going to try and land entity access there's a buff on that tomorrow and I'm going to sprint on it on Friday I'm going to try and land entity access MVP in core somewhere next year and that should really improve group 2.0 because then you could even add stuff like commerce products and define access on those so that grouped products can only be viewed by certain people hence only bought by certain people so that should really kick ass but we haven't got it yet so hopefully next year fingers crossed and as for open social we also have a lot of stuff on the roadmap so requesting memberships inviting people to groups secret groups so that are totally not visible stuff like the most active groups in the community and also archiving groups that are no longer really used or stuff like that so yeah mandatory slides like always so basically a few things we want to mention like both decent and open social are recruiting so if like building custom modules working in core or just doing agency work is really your thing have a chat with us or tweet at decent labs likewise for open social if you want to work for a more product-orientated company then reach out to us on open social HQ and we both have a buff about our part of the talk so mine's today at 1545 and it's open to site builders and developers it's basically come tell me about everything that annoys you about group that is essentially the buff it's just me sitting there taking notes and going like you have a point or yeah I'm gonna smile at you but ignore everything you say it depends on what you have to say so yeah and then open social still has a buff tomorrow yes that's mostly about how to use open social as a distribution it's tomorrow I think yeah tomorrow it's quarter to 11 and gallery oh yeah we forgot the dates yeah so open social is tomorrow so if you feel like contributing like this has been a theme for the past months or years now like you don't need to be a coder to contribute if you have an awesome use case or a very common use case that either of us missed but I can't fix it with group or open social come tell us we're not almighty we don't have every possible use case in mind so please come tell us and we may actually be able to work together on something and get it in there and then of course more mandatory slides so join us for the contributions prince so wrong audience because this was aimed at side builders but I'm guessing same goes like if you have awesome ideas please come and contribute by providing us with awesome ideas if you know how to code please come and write some code yeah it's like it's you know people tend to think about sprinting like bunch of people writing code but it's more than that like there's several ways to contribute it's just yeah whatever like this slide wouldn't probably even make sense in a quarter whatever yeah sorry I tend to do that sometimes I just tend to drift and talk out loud when I should shut up oh one more thing that's probably not in the slides yeah so oh no it is so next one is what did you think so we're always supposed to ask people to leave notes on the session like tell us what you thought of it great as whatever last year funnily enough I so I had a session on something totally different last year I told people that I really don't care about this if you want to do it that's fine if you don't that's also fine and I got a metric ton of reviews so it must be like reverse psychology or something so if you do want to leave one that's awesome and do me a favor if you really don't care and you feel like dicking around just write a haiku or something like just put something in there let's go for the record like so last year I asked you to do nothing now just put down anything let's see how far we can get and that's basically it right unless you have something to say yeah I think we still have like 14 templates go through so here we go I think we have some room for questions yeah right sorry totally forgot about that questions please step up to the microphone so it's on the recording yeah first of all thank you for a great session very interesting I have two questions the first one is regarding group module and upcoming features for that so you mentioned subgroups there and I was just wondering if you could say a bit about that in terms of are you thinking that the ideal scenario for that is that you have like a master group with a couple of subgroups to that or are you thinking that you could be like a full hierarchy so it's supposed to be unlimited so it's supposed to support a full hierarchy like take a school for instance it goes way beyond just a class with students but then you have a faculty and then you have like a campus and then you have the board and whatever and whatever so the way it's supposed to work and the way I actually wrote it in Drupal 7 but it's really un-maintainable to write it that way in Drupal 8 by which I mean the code sucks is that you can nest groups indefinitely and depending on how high you are of the hierarchy you will inherit memberships so for instance a staff of faculty would have a lot of permissions in all of the classrooms without having to manually join them because it would just trickle down like a waterfall effect so that is the main challenge that should be possible to pull off in group 8 it won't just require a lot of thinking because obviously the node access system is already really heavy and taxing on the site performance so once we add even more logic that you could have possibly inherited memberships from all over the place that's going to be even more taxing which is really why we need entity access in core because that would use a totally different approach which would work perfectly with this it would be really performance but sadly node access isn't so yeah it will support a full hierarchy that's the main idea that was the exact use case thinking about universities and that the second question is related to I saw that in Q4 there was a plan for working on big pipe support in OpenSocial and it sounds like a very good use case for things like that but I was on a session yesterday about the big pipe and basically there was no configuration needed to just work out of the box so I was just wondering if you could say a bit about what kind of work would need to be done there and how we're planning to do that well I think we experimented with it a little bit and for us it didn't really work there was nothing going on and we're like okay we can turn it on but we're not 100% sure what it does so we really want to look into that before we enable such a feature on a distro so to add to that basically big pipe works out of the box you can just turn it on and it works but it works there is no gain in performance when the code isn't optimized for it but when you write your code which allows for dynamic placeholders like late rendering then you start seeing a difference so yes you can turn on big pipe with OpenSocial but once OpenSocial starts optimizing their codes for it then you will see a huge difference and that explains why they can't just support it out of the box they need to actively adjust their code where do you need help so if you got an army of contributors tomorrow what would you point them at for both of you yeah so with regard to groups a group is like the sort of box of Legos that you use to build something so mainly like what would you like to build with it because I always fall back to the same scenarios like schools news desks if you have other use cases come tell me if you are struggling with the module like I am trying to do this but it doesn't work that way come tell me I may have an answer for you why it is not working but I may also be stunned by the fact that the module doesn't support it and create an issue saying okay we need this so come tell me and if you happen to be a developer and you think some code could be optimized come tell me as well it's just like IDs the whole thing is we need IDs this is what modules are built on people's needs to do something or to be able to do something and how they would like it to be if you think the user experience in groups acts come tell me I won't be offended I am like very hard to offend you can yeah see now I know you are trying so I am not offended it takes a lot to offend me because I really appreciate criticism like if you disagree with me that's fine it's conversations with people who disagree with you that are actually the most interesting otherwise we are just cheap in an echo bubble I think for us it's the same if you have an issue come up to us and tell us because like Christian said there is a lot of use cases we cannot think of we have this vision of how we want to use OpenSocial but there are so many other use cases out there that we just cannot think of let us know it's very interesting Hi it's Taco from OpenSocial first of all I want to thank you for your time you put in a group module correctly I think it's a great example of how two different companies in different countries can work together on something so yeah I think it's a great example for Drupal as well you guys skipped over the differences between organic groups and group quite fast so Dries mentioned it in this keynote yesterday that there is a lot of help needed for organic groups so why do you think he mentioned that and can you say a bit more maybe about the differences between these two modules because I think there's a lot of people having this question there's two questions here one is why was organic groups and Dries' slides the answer is probably very simple organic groups used to have a lot of reported users on Drupal 7.6, 5.4 it goes back a long time so on Drupal.org if you add all of those together they are nearing like 30,000 reported installs and group has only been around since Drupal 7 as a proof of concept to see whether we can come up with an alternative and in Drupal 8 it's more polished already so group currently has 3,000 something like that installs on Drupal 8 and organic groups has 50 or something because it doesn't have a full release yet so my guess like I'm no for sure but my guess and I think it's a fair guess is that they ran a query on Drupal.org looking for all the modules that had a very large user base and don't have a Drupal 8 release yet and then they just listed them because all of the ones on those slides don't have a Drupal 8 release yet and they were big modules back in the day so they potentially could be now so I'm actually curious to see what will happen when organic groups get a Drupal 8 release to see whether it still goes up to 30,000 or people prefer group or I don't know and then you know the difference so I need to be careful here because I promised myself that I would no longer bash other people's work because that's just bad karma and I think it would be unfair but the main difference between group and organic groups like there are several there is UX, there is UI but the main difference is how we treat the data so group has a dedicated data structure to add stuff to a group so you have a group you have whatever you want to add like a user as a member or a node as content and then you have that relation in the middle so it's all built to be dedicated so groups are built as a dedicated thing to represent groups that relation is built as something dedicated to connect the two together and then you know you have everything else that Drupal 8 modules provides organic groups does it differently so they use existing data structures and they add some magic fields to it to then tell something that it's a group it's basically just slapping on someone a label saying hi I'm Joe that's what organic groups basically does it just tell someone you're a group now and it has merits for some use cases but it also has quite a few drawbacks if you look at it purely from a data architect point of view I'm really confident that group handles it better but it also means that sometimes they have to write some really lengthy code to get something to work where organic groups could take a shortcut or vice versa because right now one of the things blocking organic groups from a full release is the fact that entity reference fields can behave weirdly sometimes and because they're banking all of their stuff on entity reference fields that kind of sucks for them I mean no offense but that kind of sucks for them because entity reference is in core and getting something fixed in core takes a longer time than getting something fixed in contrib and then it's just down to preference whether you like groups UX more whether you like organic groups UX more whether you like the UI better that's just preference but the main difference is how we treat the data that's really important to know how you build your site or distribution or your extending module anyone else? Hello, this question would be more for open social four years ago everybody was like making his own social network it was something really fashionable and I've seen a lot of them and the question is more on how do you think with what the work you're doing it would be possible in the future to join social networks I mean if I'm making a fork social network and another one is making a knife social network maybe in the future we would like to make common social network or make them I don't know cross and I don't know if this question has a sense for your work Do you mean that you want these two different platforms to communicate with each other or do you want to Yes, something like that I don't think that we currently have something like that on the roadmap I think we talked about something similar like that yesterday but that's maybe not for use in a distro but one thing to add to that is if you meant that you want to join two networks together then that should be fine because that's what the migrate module is for the data structure between one install of open social and another is exactly the same so if you want to make a new fresh third install and move all of the content to that central one that would be possible You can always build your own API and make it happen but you need a lot of work there Unless anyone else has any questions I guess that's it so thank you for joining us I hope you enjoyed it