 Awesome, so before we jump into the presentation, just a quick fun thing, if you do me a favor, everybody's sort of on this half of the room, okay, on the count of three, if you would make a sound like you just saw something that was really impressive and you were kind of like this, like, ooh, like that, okay, on the count of three, do that for me, just on this side of the room, one, two, three, ooh, perfect, that's awesome, and on this side of the room, on the count of three, a cheer, like what you just saw is amazing, it's like hooray, okay, one, two, three, hooray, okay, now, on the count of three, we're going to have to ooze and the hooray's going, there's no rule that we can't make a little noise in here, so let's get a little volume, okay, and we'll make the people outside of the conference hall a little confused about what's going on in here, okay, on the count of three everybody, one, two, three, hooray, hooray, hooray, hooray, hooray, hooray, so welcome to Collaborative Spaces, this is a session on integrating Drupal with Google Drive, Dropbox, and more. My name is Dave Sawyer, you can find me on Twitter and on Drupal.org, I'm a Solutions Architect at a firm in Cambridge, Massachusetts called OHO Interactive, and I'll let my co-presenter introduce himself. My name is James Barnett, I'm a software architect at Babson College, and I also am teaching some courses at Babson, and it's very exciting, we're actually teaching a Drupal course to some of the undergraduates, so that's pretty exciting to get Drupal into the teaching environment. Alright, so the slides for this presentation will be available online, as will be a recording of this presentation, we'll also have time at the end of the session for questions. So before we get into the presentation, by a show of hands, how many people use Dropbox, either personally or at work? Okay, so for the purpose of the recording, pretty much everyone in the room just raised their hand. Similarly, by a show of hands, how many people use Google Drive, either personally or at work? Okay, me too, and again, for the recording, pretty much every single person in the room today just raised their hand. And finally, how many people use Google Talk, instant messaging, and or Google Plus Hangouts for video conferencing? Wow, again, almost every single person in the room. So some quick numbers, these are just gathered through some quick Google searches, but in general, it's estimated that today about 120 million people use Google Drive. And by comparison, some of the numbers I found estimate that there are about 200 million Dropbox users out there. Are there any Canadians in the audience by any chance? Cool, population of Canada, 35 million. So this gives you a sense of the scope of how many users out there are using these massively deployed services to collaborate on documents and share files. And so the premise of the talk today is that Drupal provides the platform. It's not only our CMS, it's the place where we create the exchange of information, it's the user experience, and it stores our web content. But cloud services like Google Drive and Dropbox store our documents and files. And services like Google Talk and Google Plus Hangouts facilitate our real-time communications. And up until more recently, these three different pieces have been pretty much separate. In other words, you can imagine having one browser tab open, connecting into a Drupal site where you might connect with others, another browser tab open on Google Drive or editing a document, and then another window to have a chat or a video conference. So the premise is that there's an increasing need to bring these platforms together to improve the user experience and increase collaboration. I think these systems should all be BFS. So we take these kind of three pieces, what I'm calling the web platform, the documents piece and the conversations piece, the real-time communications, and collectively I'm referring to these as what we're calling today, collaborative spaces. This type of concept of a collaborative space can apply to lots of different types of Drupal sites. User communities, online learning platforms, social communities, intranets, portals, publishing platforms, et cetera. Basically any type of Drupal site where the users need to connect and share information with each other. So why? Why are we doing this session? Why is this important? Well, number one, improved collaboration between your Drupal sites users and content contributors means better engagement of those users with your site. Number two, increased accessibility. Your site's files can be synchronized to the desktop and available across mobile devices. All of us that raised our hands before that use Dropbox know how easy it is to load a file into our Dropbox folder and have that synchronized everywhere instantly on our phones and our desktop computers. Why not in our Drupal sites as well? Reduce costs associated with infrastructure and web hosting by putting our files out on these cloud services that are designed to store massive amounts of files and to synchronize those files for us. We don't need to put them up on our web servers, which are really designed to be web servers, not necessarily document storage systems. Increased site performance by moving our documents off of your little old server and let the cloud storage services serve them and store them. Does anyone have had an issue with their production hosting environment where you're just running out of space on the server? Yeah, number of people raised their hands. So the idea is that by looking at the Google drives of the world, we can let the Drupal site be good at what it's doing, serving up web pages and web content and let the Google drives of the world be good at what they're doing. Also, high availability, these cloud providers, Google Drive Dropbox, have massive, massive networks with redundancy, reliability, and backups. And they're typically much, much more powerful than the production server of a typical Drupal site. So there are numerous contrib modules on Drupal.org today that integrate with these services in a variety of ways. As we always say in Drupal, there's a module for that. But despite the widespread usage of these cloud services, the Drupal contrib module adoption levels are relatively low and many of the best practices are still being established. So what I mean by that is if you go to any module page on Drupal.org, you do see an indication of usage, the number of sites that are reporting usage of the given module. And you'll see the modules that we're going to show today as examples have relatively low numbers. So it is our impression that there's still quite a ways to go to bring these types of integrations to Drupal. There will actually be a demo later in the session today where we'll show you some actual working examples. There's also plenty of opportunities to get involved because of this. Here's a shot of a good old-fashioned issue queue we'd like to see. So at a high level, what does it like to integrate with Google Drive with your Drupal site? From a development perspective, if you've never integrated with Google before, they have something called the developer console. We're not going to get into too many of the development specifics here. But basically, you log into this console with a Google account and you register an application. And by doing so, Google provides you with the credentials, such as API keys, et cetera, that you need to integrate with your Drupal site. It's actually really easy to do, pretty straightforward task for most web developers. And there's great documentation on this online. So a few considerations. It's easy to set up new projects with the Google development console. There's good documentation and a tip, set up and use a separate test Google account. And I say this out of a mistake I made when I was first starting to play around with this stuff. I used my actual Google account and that ended up being a bad idea. Another piece to keep in mind is that APIs do change. Whether it's Google, a large company like Google, or some other small system that provides an API, whenever you're doing development against a third-party API, they of course can change that API at any time, which means that your stuff, no fault of your own, can break. More on that later. So let's talk about a specific example of integrating Google Drive with Drupal. This module, Drupal, is actually created by James, who you see here. And what it does is it demonstrates usage of the Google API. It allows you more specifically to list, move, create and share Google Docs all from inside of Drupal. So the example I gave at the top of the talk today about having different browser tabs open, this sort of eliminates that need and allows you to interact with Google Drive, again, all inside the context of a Drupal site. And for the designers of the world, we're able to create engaging digital experiences instead of a sort of a bland document view that you see on a Google Drive interface, we can create a custom design interface and pull some of those document listings into that. This module works with organic groups and creates a number of possibilities for integrating with group workflows. And it's available for Drupal 6 and Drupal 7. This module will be showcased in the demo a little bit later in the talk. It was developed at Babson College where James works. And they've been beta testing Drugal to service the Babson community by bringing document collaboration to their classes and social groups at the institution. So lessons learned and some considerations. As I mentioned before, APIs do change and that's exactly what happened to James here. He can elaborate on that. Google actually changed the XML structure after the module was first developed. In other words, when the Drupal site is communicating with Google servers via the API and pulling in those lists of documents and files, Google is sending that information back in a structured way in XML format. And the module is expecting that XML to come back in a certain way so that it can parse it and use it. Google changed that XML structure, which essentially breaks the module. That has been resolved, but it's a lesson learned in building against a third-party API. The Google Docs XML, it return isn't meant for listing all documents on one page or block. It's really geared towards listing folders or documents within a specific folder. And again, you'll see this in the demo. So that's sort of a high-level thought on what it's like to integrate with Google Drive. Again, at a high level, what would it be like to integrate with Dropbox? Similarly to Google Drive, there is a process of registering your application, or in this case, your Drupal site with Dropbox. Much like Google, very well documented, lots of information online that you can read for how to do that. It's a simple process that allows you to use their API. There's good documentation available. And again, as before, I do recommend, if you're going to play around with this, to set up a separate test Dropbox account if you can. Full access to that Dropbox account will be needed. So you might not want your personal Dropbox files exposed in a web prototype. Another piece of advice is to understand the way Dropbox calculates disk space quotas, that should say, particularly with shared folders. A lot of you use Dropbox as we found out before, and you may know that when you have a shared folder, that typically counts against both of your allowed amounts of disk space in that way. So just to be aware of that, as you set up shared folders that your Drupal users can upload content into. There are two key Drupal modules for Dropbox integration, a user-oriented integration and a multi-purpose integration with site-wide support. I'll be commenting on those specific modules in just a couple of moments. At a high level, what are the benefits of doing this? By leveraging Dropbox's web interface and mobile apps, you can allow your users and content contributors to upload and share files with your Drupal users. I'll give you a very simple example. Let's say you're here at the conference and you pull out your smartphone and you take a photo and you just want to make that photo now available in your Drupal CMS. The old way of doing that would be to take that photo, email it to yourself or to your web producer, have that person then open up a Drupal site, log into the Drupal site, do a file upload so that it's in the Drupal site, and after all those steps, that file can be accessible. With Dropbox integration, by using the mobile app on your smartphone, you simply move that photo that you just took with your phone into a Dropbox share folder and you're done. It's instantly synchronized to Drupal. So it creates a lot of new possibilities to streamline workflow for content contribution as well. The other benefit, of course, is that Dropbox provides automatic synchronization. So just by adding a file into a Drupal site, that file can be automatically synchronized to all of the devices that are associated with that share folder. Lots of possibilities there. One of these modules that you can use to provide Dropbox integration is called the Dropbox integration module. There's the project URL on the slide. This is a user oriented integration. It allows users to have a send file page where users can send a file directly to a Dropbox account. It's a relatively straightforward implementation. It's stable and available for Drupal 6 and Drupal 7. And it was created by Andrew Berry, the senior architect at Lullabop. The other notable module is a module called the Dropbox client module. Excuse me. It provides a multi-purpose integration. This means Dropbox folder navigation, file download, search for files and folders in Dropbox, et cetera. And basically where it can be handed is it provides blocks that you can easily drop into a page template. And those blocks would have listings of Dropbox files. It also has the concept of a site-wide Dropbox mode. So the idea is that Dropbox files can be made available across the site in that way. No per group support for organic groups at this time. Would love to see that and may help to contribute to that as well. That would allow individual shared folders per group in a Drupal site. Okay. So at a high level we've kind of talked about why these types of integrations are useful and what it looks like just at a high level to integrate with Google Drive or Dropbox. Now let's talk about what are some specific useful things you can do once you connect with these services. And this is the cool stuff. So one thing you can do is you can automatically create nodes for your Google documents. And depending on your workflow or what you're trying to do, this could be a handy workflow. The idea is that you create unpublished nodes that represent references to docs in Google Drive. In other words, by establishing this link someone goes into Google Drive, creates a new word processing document, and then Drupal will automatically create a corresponding unpublished node in the Drupal site. And that might be useful, for example, for creating a view that automatically lists all unpublished nodes with a certain tag or certain criteria. And this way you sort of are bridging the gap between documents created in Google Drive and nodes that represent those documents in Drupal. The files are not downloaded, the nodes only contain references back to the Google Drive documents in this case. This module is in alpha status so there's work to be done, but it's a good choice for people who are looking to create that type of a workflow. Another thing you can do is insert web form submissions as new rows in a Google spreadsheet. This one is so simple but really really useful. If you ever use web form and you want to export that web form data, what a lot of people do, a web form module, of course allows you to export your web form submissions in CSV format or TSV format. You would then download that exported CSV file, load it into Excel, and you know there you're in a spreadsheet. But this does it sort of bridges the gap a little bit. It allows you to essentially click export to Google Drive and in a click your web form submissions are made available in a Google spreadsheet. From there you can create charts and graphs and analyze the submissions. Some really cool stuff. It's super easy to implement. It's worth noting that this provides an sort of an on-demand export as opposed to something that's automatically synchronized back to a spreadsheet in that way. Basically it saves clicks, it saves steps. This is just a quick screenshot here. You can see this is the web form screen where you would normally download web form results to Excel or a CSV file. You can see it adds the additional option there to send to Google Drive. Very straightforward. Another thing you can do, allow your Drupal users to browse and upload files into a Dropbox account. That can be an individual user's Dropbox account or a site-wide Dropbox. You would use one of the Dropbox modules I mentioned just a short while ago to accomplish that. That's the Dropbox client module for Drupal 7. Another thing you can do, not necessarily a benefit to the end user, but a benefit nonetheless, is to use Google Drive or Dropbox as a destination for your backups. Really cool. Many of us use the backup and migrate module to make backups really simple to download from our Drupal sites. What this does is it extends the backup and migrate module and allows you to specify Dropbox in this case as a backup destination. So if I wanted to do a big backup of the site instead of downloading that to my laptop, I just click a button it sends it into my Dropbox. Again, the benefit of that is by doing that that backup file is automatically synchronized to the other devices that I've set up in my Dropbox account. Another thing you can do, no Drupal module is necessarily required, but it's another possibility using these services to actually serve images and media. As you know with a service like Dropbox, you can share any file which creates a public web URL for the file, and in some cases it may be useful to let Dropbox or Google Drive host and serve specific media files, particularly if you're on a lower tier hosting account and traffic and storage quotas or bandwidth usage may be a factor for you. This could be a handy way to offload some of that. Just be aware of traffic limits if applicable with these services. Another thing you can do is extend a content type with a document field. This particular module G Drive Sync uses a custom field type to connect nodes to Google documents. It's really just more of a simple way of just saying this node is associated with this Google document to provide a synchronization in that way. Again, not pulling the Google documents into Drupal as much as associating Drupal pages or nodes to corresponding documents. Another very simple one but very handy at the top of the session we established that pretty much every single person in this room uses Google Drive. If you have a website with files on it that users typically download to their computers you can use this module which is called Save to Drive that what it does is it adds a button next to the file link and allows that person in a click to save that file to their Google Drive. In other words, instead of clicking to download the file to their computer they click the Save to Drive button and provided that they're logged into Google the file will automatically be sent into their Google Drive account. Basically just making it a little bit handier for the users of your site that do use Google Drive and would prefer to put the file in their drive rather than downloading to their computer. Here's a screenshot kind of showing a simple example of what that looks like. You can see the Save to Drive button appearing where the file link would normally show up on a page. Another thing you can do is is create an embedded document content type this particular module GDocField adds a new formatter to the file field using the field API. This one is really awesome. It displays PDF files, Microsoft Word documents, PowerPoint presentations, or Excel spreadsheets directly within a Drupal node. In fact the author of this module is in the audience today. I want to give him a nod. Jeff is over there. Thank you Jeff for this one. Let me let me tell you this is actually really really handy. There are many types of files that you might make available in your site that aren't able to be displayed in the web browser and a good example of that is a Word document. Imagine you have a .doc file and there's a Drupal page that links that file. Typically when we click on that file what happens? It downloads to our computer, right? What this does is it basically leverages a service that Google provides for free that actually will render a preview of that document. So formats like Excel, Word, PowerPoint, PDF, anything that Google Drive can can understand and display, but that would never be able to be seen in a web browser. This gives you a way to allow your users to preview them, click through the pages, see what the page looks like before they download it. And in some cases sometimes you want to just take a look at a document. We don't necessarily want to download the whole document. This provides a way you can do that. Another thing you can do is to create a group files repository. This is particularly useful for sites that leverage organic groups. With Dropbox you have the added benefit of the local backup on your computer of any files that go up into the Drupal site. Those files automatically synchronize back to Dropbox. You can use the module OG Drive for this. It associates organic groups with Google accounts and lets group members share documents. Each group can be associated with one Google account and all the documents in the Google account drive are shared with all the group members. And lastly, not necessarily a technical integration, but seems worthy to note in a conversation about using Google Drive on Drupal site development is using Google Docs to document your site. We certainly do this at our firm at Ohono Active in Cambridge. Google Docs make great collaborative documents with the ability to comment and see and work on documents in real time. We actually use these for technical documentation for site builds. There was a session on this very topic at DrupalCon Prague last year. So it's demo time and I'm going to turn things over to James right now who's going to show you a little bit what this stuff looks like including a glimpse of some of the real-time communication pieces with Google Hangouts integrated to Drupal. Thanks Dave. First I'd like the Babson team. I see them in the back to raise their hands. I want to give a shout out to them. They did a lot of work on what you're about to see and I want to give them credit and it's been a lot of work and a lot of fun working with Google. I love the Google Universe. I'm going to take the time to tell you the truths about working with the Google API as well. So I want to say up front I love Google. I love the tools. I love all that but I'm also going to be pointing out some of the frustrations along the way and I definitely poke at them a little bit. But how many of you have tried integrating with some of the Google stuff out there? How many of you find it frustrating sometimes? It is sometimes. It is sometimes. They change things on you and they're always keeping things up to date and giving you the best new stuff. So it is changing all the time and it can be frustrating. We're going to get into that into some detail. First I'm going to show you some of our stuff. I hope it looks okay on the side there. What we have here is something we have at Babson. I work at Babson College as a software architect. We have classes as you can expect at a college and also social groups like the soccer soccer club or different sports teams. So we have organic groups for the classes and the social groups. Then for each of these classes we also have what we have here. This is a chat drawer. We call it a chat drawer and actually I already have it expanded a little bit. You can see each of the organic groups has a drawer. This is what we call a drawer. It's just the jQuery accordion you'll notice that's been themed and you can see each of the groups has all the members listed. So you know if there was a let's see if I have a real course here. Actually mine I finished teaching a few weeks ago so it's already scrolled off but let's pretend this is a course a real course and these are the members of the course right. And you can see this student let's pretend test 10 portal is a student and I can see they're online they're green right and I can click here. We also have a button start chat and we can just you know throw a chat over the wall first in a live demo which I here is dangerous and this looks like it went offline so let me in case the internet is off I did record this as well. But yeah live demos are dangerous this is what I've heard. So anyhow that does usually work. It worked two minutes before of course. Well let me just refresh the screen. You guys can do one of those hurrays again right now if you want. There you go. What is the left hand side of the group say. And here we say wow or something. Hurray okay. You know what I'm going to show I was worried about this they had this prepared just in case the internet or something was was going funny. Let's show this demo this way. I'm going to I'm going to talk over it you can see I've got the Princess Leia effect and you can see you can see my gray hair kind of glistens remember that 1980's cinematography I've got that that that's a special effect. But you're going to see pretty soon the chat drawer is going to open up and we're going to send chats across. Here we open the chat drawer here you can see the different organic groups you can look inside the different drawers and we're going to send a chat across in a second it might be faster for you just to assume and I suppose but we're also going to see is you can start a Google Hangout this way also and you can see that there are three buttons there when you open up the chat drawer and you can see one is the green button for chat one is to send an email and one is to start a Google Hangout or we're calling it a Droogle Hangout and it's pretty cool. You're going to see a chat go across here and of course when it's not live it worked fine. I don't know if it's the internet or what here but you're going to see the chats going back and forth and what's special about integrating with the Google Universe is you have chat you have Hangouts and it increases collisions between your community so if you have Babson students and they're trying to have a class and they want to exchange ideas during a class we'll be able to go into a forum and they'll start exchanging ideas in the forum we have very rich forums as you can expect in a business school and they're discussing business cases and then maybe they see someone's online what we have here is you see the little bubbles next to each person's username we've overridden a theme username so that there's a chat bubble next to each each username and you can see for every mention of a username you can see who's online who's not and that's useful if you're reading this is a discussion board you're seeing right here if you see a post in the discussion board this is completely custom if you see a post that you're interested in and they're online or the professor's online you can see their online and send them a chat and say hey that's a really great post why don't you tell me some more about it and you've socialized your Drupal installation the other thing that's really cool is we use one installation as the core installation right so you can actually have multiple Drupal sites connected to the base Drupal site and you can have chats between Drupal sites so if you go to one of your other portals we have a student portal we have a faculty portal and so if they're on a portal and they read some new announcement they can they can still have a chat with any of our other Drupal sites or they can start a Google hangout with any of the other Drupal sites and that kind of collaboration is something companies sometimes pay for Babson at one point was talking about ripping up the roads through the through the college and setting up you know beautiful path and and seeding and and they were trying to trying to not create a larger smokers lounge but create a you know a large area where people could interact and make me or they'd sit and they'd talk to each other and it's a heck of a lot easier to not rip up the entire campus but to you know to make it so that you can just chat with anybody at any time and to have it so that hook username is replaced with this chat experience it's it's pretty powerful and uh I think you're going to see at the end of this video let's see if let's see where it's at right now you can go into a hangout what happens is you click on let's see if I'm I'm in sync here it did show it a second ago okay so everybody saw it good if you click on that on that yellow button it starts to hang out it sends a chat to the other person and they'll also get an email and if you saw as I was talking you you click on the chat and you're instantly in that google hangout and that's very cool I mean everybody how many of you have used hangouts right so if you're in a in a google site if in a dribble site in any mention of hook username you know any any username on the site if you can click on that yellow yellow icon or whatever color you make it it's all themeable you know you're instantly in it in a google hangout and these collisions are what you know maybe you'll have maybe there'll be a great new idea that comes out of it or maybe a new collaboration at Babson we're creating businesses that might spur job job growth maybe more businesses will get created because more more ideas get exchanged and that's the kind of thing that that google is providing to us if we can ride ride on their coattails Adry's had an interesting keynote he said you know maybe we should fear google they're scraping all our sites and why do they need to go to our sites I see this I see that for certain sites you know for e-commerce they're scraping things and stealing traffic and google can even sell things to themselves I can see that aspect but the other aspect is they have this great universe of tools and if we ride on on that wave that's really exciting we can you can see here we're creating a google doc we're riding on the wave of google drive here this is the exciting new functionality that's coming to google drive at Babson we're making it so you can click on any any username in there in the chat drawer or remember anywhere there's a chat bubble and you can invite multiple people to a document and instantly be within a presentation at google doc and be collaborating in that in that rich google drive experience and I think google drive is incredible I mean you you can see what other people are typing as they type it it's all color coded and it's just a really nice nice experience and if we can get people in our Babson discussions we're using it was advanced discussions we've since you know really customized it to death but now anybody within our Drupal discussions they can instantly be collaborating in a google drive document as well and it's just a it's a very very powerful experience so now that you've you've seen what I'm talking about I'll go through some of the slides here so we're talking about google drive google talk and google hangouts that those are current integrations another developer is already we don't know how to use it yet we have our own single sign-on system but we know how to do single sign-on with google as well so we can have a sign-on through Babson and google at the same time so nobody has to log in there's some tricks there I think it's if I could I think it's important to note too that the types of functionality being demonstrated today this is not being done with commercial proprietary software this is being done with open technologies open standards some contrib modules some of which we've shown today so these are definitely integrations that that you can do yourself with your team depending on the the extent of the the functionality you're looking to do yep as as you can see here as Dave's saying Drugal has been published Jabber has been published but we still have to publish the most recent version of Jabber and I'll get into that in a little bit Jabber is a little bit more complex to set up Jabber is the chat functionality and it requires a Punjab server and it's a little complicated to set up one thing we're we're playing with the idea of Babson because it is Babson that may be having an open atrium sort of model and maybe monetizing it we don't know but there certainly is going to be something published 30 is a version of Jabber published we're not quite sure where it's going to go we think this is an exciting tool set to have Google Drive hangouts and G Talk integrated in every Drupal site and you know connecting all your Drupal sites we think that's pretty exciting so we are documenting and publishing a lot of this stuff Drugal is here as I say the old version of Drugal originally we thought that every organic group every classroom would be pulling a list of documents and this is a screenshot of a site-wide page of listing users documents the idea here is if you're using Google for business or Google education accounts you can create a pseudo user and maybe that pseudo user won't be a real person but it'll be like a site-wide user to store documents within and there's also the idea that every organic group can be connected to a pseudo user so you know there's a document storage area for each organic group and Drugal currently supports that as well we've updated I recently updated Drugal to use the new API so it's using the client ID and the client secret and the OAuth stuff now I promise to tell you that I love Google but there are some caveats they really don't document things superbly and things change all the time and it was a bit of a maze to get Drugal working with the latest API they've got it in SVN their classes and everything to use in PHP then if you look in the fine print somewhere it says this has been moved to GitHub then you get to GitHub you download that and then it says you know what the latest stuff if we want to use it you have to this is a very small print I don't even know where I found it all the class names have changed slightly and so nothing works unless you know to change the class names a little bit to get your stuff to work so I love I will see Google sprays they're awesome and it's very organic and they really spur a lot of innovation and it's awesome but it is tough to chase Google and it has its challenges and if anybody wants to get involved and help me with these modules it would be very welcome it's hard to always always be on top of all those changes so this is where JAVR is published and JAVR uses JAVR is what this technology this chat technology used to be called I think IBM officially has the rights to that name now and it's really called XMPP to have have the chatting going on you know if you use ADM on a Mac or or any any chat technology it's actually XMPP protocol there's HTML and then there's XMPP you know these are not competing technologies but XMPP is the underlying language beneath and I'll show you some of the XML that XMPP uses it's it's an XML based exchange of information and Punjab server is what mediates all the traffic when you send a message it kind of routes it all and you have to set it up with some complex DNS settings and it takes a bit to to get that set up it's all published online here's just some more screenshots JAVR two people chatting not during a live demo and we had some performance issues we learned you really have to load JAVR and this hangout stuff asynchronously using JavaScript I think it was the window.load event that eventually we realized that dawn upon us we had to use you really just can't wait for if you have 50 or 75 contacts eventually you know you can't wait for all that stuff to load to have your page come up we had for a few months we were struggling with some bad load times but we moved everything into window.load and jQuery and everything comes up after the page loads and if you look Google does the same thing they load up their Gmail page and then you'll notice chat comes in a little bit afterwards you know it takes an extra maybe two three seconds but this is definitely a picture of how I felt many times and struggling with this stuff no joke and but it's been very fun and interesting good projects I was joking with Dave he thought I should put the slide in where the sidewalk ends this is where the internet ends you know you go usually you go and you look at stack exchange and you're like thank god somebody saved me today you know I I know how to do this now when you're trying to make your own video good luck trying to make your own video client nobody's sharing that information yet I'm sure it can be done but you got to read the original specs you got to read you know the documentation that was clearly written by PhDs that don't talk to people very often and I had to do that sometimes with the jabber and it was fun and interesting but like I you saw that other slide of the guy with the hair out you know in every direction it's certainly certainly challenging so where the internet ends it does end at a certain point and it's kind of fun as a developer to to plow through that I you know we're still writing on Google's coattails but trying to integrate with hangouts they want you to use hangouts right now and my opinion is there aren't rich rich APIs for dealing with hangouts we kind of use a workaround and trickery to get it working with with Drupal but you know some of the stuff some of the stuff the companies aren't really sharing very much yet or maybe it's just they're busy who knows but it is what it is to get it working with PHP there's this handshake between I'm going to open up for questions very soon but there's an RID and an SID a session ID and what's known as an RID in XMPP and you don't want to get those things originally in JavaScript because it'll be in clear text in your JavaScript which is client side and people can steal your chat session so what you have to do is you have to create the SID and RID in PHP and then pass it over securely to the JavaScript and then the JavaScript can can pick up where the PHP left off and continue the conversation and there's some security around the RID every time there's a new bit of information passed the RID increases by one so it's it's literally a number like you know five thousand or something and then the next chat message would be five thousand and one and then five thousand two and if there's a gap of two in the RID between messages the chat will stop it means that it's not a secure session any longer for the non-technical people in the audience he's saying that getting this working was really hard yes I don't know who of you is technical or who is looking to download and install them but it was fun to develop then Strophe I should give credit is the JavaScript library that integrated with Strophe is a JavaScript library that integrates with XMPP I'm talking a little fast because there's a lot to give you the only definitive resource that's just really awesome on the internet for XMPP is this this guy Jack Motif and he wrote this book professional XMPP programming with JavaScript and jQuery and he's great and he is highly available on the internet although don't tell him I said that because you know you'll all bother him but but he was really instrumental in helping me understand some of the stuff I read his book and he's on the Google the Google forums answering questions so he was he was just really awesome he still is and his book was really well written it's a really complex subject and he did a good job again every every username has this effect where you can chat or hang out or start the Google Drive stuff and this is what XMPP looks like you don't have to memorize or whatever it's a bunch of XML and you can see it calls a PHP function I wrote Jabber Get Next RID as I said it just increments by one every time something happens this is our interface that one of our developers Bill Chung wrote it's really awesome you click on the Google Drive oh this is actually Hangouts you can see every name you add adds to this field here and then you can start a Hangout say three people having Hangout in this case after you click Start Hangout they get a chat message the sender of the Hangout clicks on this button they're in the Hangout you saw it in the demo the recorded demo and the other person gets a chat they click on the link everybody's in the demo all at once and it's pretty cool and that's me talking to myself because I only have one webcam and I can't manage more than that doing a screenshot so I wanted to show a couple of things this is the dull documentation I was talking about where you have to read the original specs of XMPP and it's very dry and here's the here's the Google console that Dave had mentioned I can't show you the credentials page because then you'll see my secret my Google secret but you have to configure some of the stuff and there's some good documentation around that this is the Strophe Library the JavaScript Library that is integrated into Jabber the Jabber module this is the Jack Motif stuff and again this is this is the interface here and you can see this is the dev version and we have Google Drive you can see you can name name who the owner is this is going to be posted soon hopefully it's going to be available so I got through a lot of stuff we're going to open up to questions right absolutely if you could put also the last slide of the presentation on your screen so just in closing then that the takeaway from from some of this is that all without ever leaving Drupal people can engage in chat engage in video conversation spin up a brand new document share it with each other and bring a lot of that collaborative experience into the Drupal interface so at this point well if you have any questions there's a microphone in the center of the room so that your question can be heard on the recording and for those of you who are heading out thank you so much for coming so on the Babson website did the users were they required to have Google accounts to log in or were they all assigned anonymous accounts yes everybody at Babson has a Google account and we force it so that they're able to have conversations there's an option so that you are not private you know if you get a chat you you automatically accept that chat there's no authorization is there a way to make it like you said in the Google for education or Google Google apps for business you can create anonymous users or anonymous buckets whatever you called them could you do that for users as well so people could just log in their normal way without logging in via their Google accounts we do have the option so they can turn off chat and it's the same as being offline in gtalk and no one knows that they're ever online they have the option of turning it off but everybody has a Google account okay that's how they're getting their email anyhow at the college so okay make sense hi Google APIs have some limits and it's usually very easy to hit that limits so do you have any recommendations on how to is the best way to increase these limits well I mean certain things like Google Hangouts for instance I really wish there was more integration circles there's PHP is in my opinion still a second class citizen in the Google universe they favor Python and Java and you know you can read the original specs and they have a lot of XML that you can learn to pass back and forth and in theory you could figure it out and write your own PHP library personally that's just way too frustrating I'm sorry I probably was not clear on the question I mean let's say you use the the gdog field module for displaying your port files for pf documents embedded in the Google viewer and they have some limit I mean limits on requesting these APIs and then sometimes it just displays the error message saying that you hit the limit of requests to the API I've talked about this Do you have a Google Business Account or a Google Education Account or are you just a user? No it's just a free account I don't think that happens on the Google for Business or Google Education Account has that has anybody seen a limit a thousand a day for what for okay I yeah so this gentleman here says that for Google Maps you can only make a thousand requests a day to Google Maps I haven't have you seen it with Google Drive I've seen it with the Google viewer where you can embed your document like work document using the Google viewer and the Google viewer doesn't render the document saying that you hit the limit daily limit I mean I've I've never seen limits in Google Drive or chat but or Hangouts but the only advice I have is see if upgrading to a business account helps I don't know if anybody has advice feel free to speak up it's a really good question thank you for bringing it up we suspect that the rate limiting is different on the paid you know on the paid Google account Google for Business as opposed to a free personal account but we'll look into that it's a good question thank you thank you for us I'm gonna have to go to the if you can go to the mic and yeah gentlemen in the audience I didn't know you were answering the question sorry yeah I couldn't quite hear if you if you could go over to the microphone I couldn't quite hear all everything we're saying I was just looking it up and it looks like there's 10 million hits a day in general that's allowed API calls are allowed but a hundred per second per user so if you're doing more than a hundred per second maybe there's something in the code that that's making making extensive extensive calls this guy behind you really fast 10 million a day is is enough for a lot of people it's a great question thank you for asking and thanks for the last question you demoed the integration of the hangouts and G talk into the the Drupal so is there any code examples that we can look at or download or as a module or just as a for which one do you want the Drupal or the chat well the integration of hangouts and G chat into Drupal that G chat you can look at the Jabber module it's online and you can download the code and and look you know you can add you can even sign up to help us with the module but yeah that's free the hangout stuff we haven't published yet that's the Jabber module on d.o okay thank you yeah I have a bit of a general question about if you're using if your site uses file entity to like add metadata to files are there any things you can do to integrate you know either Dropbox or Google Drive stuff so that you you can still use the metadata you're putting in with file entity if you're using you know embedded like G doc field or any of those those fields that is an awesome question I love the idea of using metadata and still synchronizing the files out to the provider that's not something I've I've tried I love the idea is that something you know about it's something we've we've thought of doing we're always playing with this idea that we can have this awesome repository of all our documents at the college you know that just solves all our problems and you have metadata and then it sits up at Kaltura or Google we're constantly trying to come up with this ideal solution but that's a good idea and we haven't we haven't eaten that pie in the sky just yet if you want to connect with us on Twitter be happy to continue the conversation on that yeah or if you're if you're a business or college is interested in collaborating on that kind of thing though you know be in touch thanks awesome can you talk about failing gracefully so you mentioned that APIs change and things break and do you plan ahead for how you can bring things down when things no longer work properly perhaps still provide links to the original service so that people can still do their jobs it's just not on the website integrated with Drupal well we can we can turn off chat if you know there's rumors always that hangouts is going to completely replace chat and we've made it so you can just turn off chat and they'll just be hangouts we don't nobody really knows if G Talk will live forever they keep threatening in blogs that it might not be there forever personally I don't think that's practical and that it's going to happen because just you know everybody's got a chat client and they have G Talk and I just think that would be against what Google needs which is more web traffic and more people you know using their services so you never know but failing gracefully by the way Javer is is a universal protocol that works with any federated Javer server it does not have to be G Talk it can work with Facebook it can work Facebook uses XMPP you can have a private Javer server so these are other things you can do is you can set up a private Javer server or have it ready to go with another federated service I guess I was talking more about the document services so say you're using the document you know displaying folders those sorts of things if that's no longer available how do you get people to my suggestion would be to have robust unit testing even on you know on the stage server and if anything changes you'll be notified immediately and you just got a scramble and this this is Google and trust me they don't they don't really send out warnings when they change things but your question is your point is well-taking you know I think with any API integration right there there are certain response codes status codes that come back from the third party service so in our in our application integration work we can make sure those are there make sure that the data is returned in the in the format it was it was expected and display and appropriate as you said graceful error message in the case that the service is down for whatever reason just along those lines I was just curious I know the best practice tends to be to version APIs and Google obviously versions their APIs but did and usually you build that version into your endpoint URL so did the XML changes that happen to you happen the no endpoint changing no warning and I joke in my head that one day they had some some interns and they were messing around and and it was weird honestly it changed I started trying to fix it and it changed back okay and it was almost like somebody said oops and then but you know this and I think it did change permanently at one point I had to change it and it it was kind of walkie the other thing is you don't really don't don't fall into this trap you get the XML you get you know how Google drives they like things where you have the folders and then you drill down and then you drill down again that's how you get the XML too you I wanted it so I could have the great Ajax experience and have it you know all the stuff loaded once and they don't give the XML the way you want it it's the way that they're using it and and you know again I love Google but I would have thought that you could have just had one hierarchical structure the hierarchy was was very wonky similar lines to an earlier question though the user accounts and you said you know everybody has a Google account did you were you also saying that everybody authenticates with their Google account or just that they're connected to their Google account does that become your authenticator I guess is what I'm saying yeah well we authenticate we have a Babson and proprietary authentication but then we also logged them in we logged them into their Google chat accounts uh through through that RID SID combination and that's I'm I'm thinking about the Jabber module that you're talking about so am I still yeah you're describing it that's all the yeah Jabber what we we have their passwords okay so this really is only practical if you're in a business or an educational institution and you have that information and if you do have a more open system and you know your users want to type in their password and you encrypt it on your server if they're willing to trust you with that you know that's not as likely I suppose but for a business or educational account you do need their passwords thank you you mentioned that there's a way to like with Google drive and draw box to integrate multiple accounts or have a like site white account for all of the storage so in that case if you have a single account how do you store files do you create folder or group and this is where like groups get their space can they create subfolders and how how does it work are you referring to the draw box integration or the google drive well both but probably google drive makes the most sense in this case so you're saying how do you have a site white account well how do you map things is there a folder on google drive for the group and this is where what I decided what I thought made sense was we happen to have our classes corresponding to black word courses and so there's a unique ID associated with each blackboard course and then when we were doing this it was each folder would have a unique ID so we could figure out which one which folder to look up in this universal account the other thing is if you look in the google the drill drive documentation what you do is you create an a cck field and you can let the user specify the name of the folder and then so you can you can pretty much tell the system what the folder is for each organic group can they create subfolders or is so yeah the way it would work is if that folder you input it had documents and subfolders it would work because google doesn't actually know the difference between a folder and a document and they're all just markers to something to the to the system and there is also the second option to have a different google drive account or google account per group as well or is that not the case with google drive with google drive you have you can associate a different account for each organic group not a different folder but but a a different account so that wasn't clear so you would need a different client to be in a different client secret for each organic group thank you cool thank you very much very much for when we're coming and that's all for today just a minute is before that's why we have to back it up you know right on time you can see why I say oh yeah a couple minutes for the questions sorry well the the chats you know the chats we do store it although some people don't really want us to the only reason we're storing it is because if you are having a chat and then you go to another page you know because you want to talk about this other page and you want to continue the chat where you left off and you need the chat history to follow you but it's not because we actually want the data yeah the other way we could have done it it's a clue to have another window open up and therefore it's not running on every page but that's not the way the business want it to go yeah like you're saying on every page refresh we have to go make the connection again get your history and show it yeah well mine my specific concern was that many organizations don't want to go online it's not reliable that's something that's something that's something that's something that's something that's something that's something that's that's something that's so so that was my question what you could do we we talked about that we talked about that but you don't you don't think you really do is part of the problem with collaborating in real time in the document is not really are no backups right so we were thinking like once a night to scrape and store it offline this is something we've been talking going on that's I think that's all you can do to make sure you still have your document I mean there's no version of it it's not sure not sure check in check in check in yeah but you're saying what's going to happen to you right like it's not your data it's up at google so yeah yeah yeah and you also actually do like the pseudo accounts that will yeah just you make pretend the content associated with working for example or I say I thought there was like one account that kind of holds all of the data this way you can you you still have access so you can to have this