OverviewGT-Mconf - "Sistema de multiconferência paraacesso Interoperável web e móvel"(multiconference system for interoperable access between web and mobile devices)Main objectives: ● Provide a complete webconference environment ● Integration with mobile devices ● Usability ● Open Source ("low cost")Compared to: ● Adobe Connect ● Cisco WebEx
Demonstration web portal webconferen ce system mobile client
Architecture 1. BigBlueButton 2. Mobile 3. Web portal
Architecture: Our current setupOne physical machine Intel i7 with 4 cores, 4GB RAM, enough HDOperating System: Ubuntu 10.04BigBlueButton is installed in this machine using Ubuntupackages.This machine has also: ● Mconf-Web running in a virtual machine ● Two other development VMs
Why BigBlueButton?In the beginning, we were looking for an opensource webconference system with: ● Audio and video sharing ○ HD video if possible ● Document sharing ● Mobile clients ● Peer-to-peer or client-server ● Multiple clients ● Integrated with collaborative environmentsTo be used for: ● Virtual meetings ● Virtual synchronous classes ● Collaborative work
Why BigBlueButton?After 1-2 months, we came up with a list of possible solutions: ● Isabel Videoconference ● Global Plaza ● Virtual Conference Centre (VCC) ● OpenMeetings ● MediaMosa ● Kaltura ● DimDim ● VMukti ● EVO ● Opencast Matterhorn ● Opencast Steeple ● Access Grid ● CineGrid ● Janet ● BigBlueButton* *It really was the last one in the list
Why BigBlueButton?Not all of them are open source or for webconference... webconference is here! http://www.terena.org/activities/media/
Why BigBlueButton?Video/Web conference: ● Isabel ● OpenMeetings ● BigBlueButton ● EVO (not open source) ● DimDim (not open source anymore)Media management and distribution: ● Global Plaza ● VCC ● MediaMosa ● Opencast Matterhorn ● Kaltura
Why BigBlueButton?We have also considered developing a new solutionOptions: ● HTML5 ● Flash or a new plug-in ○ Google Talks style ● Using code from IVAWhy we decided not to do it: ● Would require too much time given our budget and team size ● Theres no point in starting something new if theres a good open source solution
Why BigBlueButton?So why BigBlueButton?It has most of what we need: ● Its webconference ○ The client runs in the browser (using Flash) ● Open source ● Audio/video sharing ● Document sharing ● Chat ● Easy to setup ● Can be integrated with collaborative systems ○ Ex: Moodle, Sakai, Drupal, etc.
Why BigBlueButton?So why BigBlueButton?Plus: ● Great support from the developers (+3 years of development) ● Active community (~900 members, ~11k messages) ● Good documentation ● Good code base and roadmap
BigBlueButton - OverviewDeveloped by Blindside Networks, based on CanadaOpen source (LGPL) Note: uses red5phone, thats under GPLDevelopment started in 2007Website: http://bigbluebutton.org/Blindsite Networks: http://www.blindsidenetworks.com/
BigBlueButton - ArchitectureBuilt on top of ~15 open source components
BigBlueButton - ArchitectureSIP for voice Client: Flash Server: mostly Java, but not only Asterisk or FreeSWITCH Red5 http://code.google.com/p/bigbluebutton/wiki/ArchitectureOverview
BigBlueButton APIThird-party applications can interact with BigBlueButtonthrough its web APITo: ● Create meetings ● Join a meeting ● End meetings ● Get info about current meetings ● Fetch recordings (in the next version)Docs: http://code.google.com/p/bigbluebutton/wiki/API
BigBlueButton APIResponses are in XMLExample: http://<server>/bigbluebutton/api/getMeetingInfo?meetingID=RNP-123...<response> (...cont.) <returncode>SUCCESS</returncode> <participantCount>1</participantCount> <meetingID>RNP-123</meetingID> <moderatorCount>1</moderatorCount> <attendeePW>attendee_pass</attendeePW> <attendees> <moderatorPW>mod_pass</moderatorPW> <attendee> <running>true</running> <userID>xczenpd3hhrq</userID> <startTime> <fullName>John Doe</fullName> Tue Aug 13 17:30:44 UTC 2011 <role>MODERATOR</role> </startTime> </attendee> <endTime>null</endTime> </attendees> (cont...) </response>
BigBlueButton APISecurity modelEach server has a unique 64-char string called saltThe salt is used to calculate a checksum, used in all API callsSo only authorized apps can make API calls ● Apps that know the server salt ...create?meetingID=prav-123&checksum=ba87d6a8 ...join?fullname=Ana&password=pass&checksum=ba87d6a8 ...isMeetingRunning?meetingID=prav-123&checksum=ba87d6a8 ...end?meetingID=prav-123&checksum=ba87d6a8 ...getMeetingInfo?meetingID=prav-123&checksum=ba87d6a8 ...getMeetings?random=231412&checksum=ba87d6a8
BigBlueButton APIWorkflow example Third-party app BigBlueButton (e.g. web portal) API User X wants to join his meeting authentication, permission check, etc. isMeetingRunning? XML: No, not running. create XML: Ok, created. join XML: Ok, go to <url> Redirect the user to <url> He will join the session.
BigBlueButton APIUsing the API, BigBlueButton was integrated to several third-party applications:
BigBlueButton RolesUser roles and permissions in a meeting:Viewer ● Users with no authority within the conference ● Can view the presentation, videos and chat ● Ex: students in a virtual classroomPresenter ● The same capabilities as a participant, plus ● Can upload and control presentations ● Can share desktopModerator ● Controls the session: can kick users, switch presenter, mute users, and others.
BigBlueButton RolesUser roles and permissions in a meeting:Important: ● Only the presenter role can be assigned/unassigned during the conference! ● Viewer and moderator roles are defined when the user joins the session.
Things we developed in BigBlueButton● Configurable resolutions config.xml
Things we developed in BigBlueButton● Improvements on video windows resizing ○ Its possible do resize your own video window ○ Better usability
Things we developed in BigBlueButton● Video windows layout (deprecated)
Things we developed in BigBlueButton● Video dock
Things we developed in BigBlueButton● Overlay buttons
Some technical info about BigBlueButton● Audio codec: 16KHz wide-band Speex● Audio bandwidth: ~48 Kb● Video codec: H.263 (Sorenson Spark)● Video bandwidth - depends on the configured quality (values between 0 and 100, we use 80) ○ 160x120: ~88 Kb ○ 320x240: ~224 Kb ○ 640x480: ~420 Kb ○ 1280x720: ~446 Kb● Both audio and video communication are RTMP over TCP
Overview - Why do we need a web app?BigBlueButton provides webconference rooms but you stillneed a system to provide management tasks such as: ● User authentication ● Permission control ● Webconference management ○ Manage multiple meetings ○ CRUD (create, read, update, delete) (cont...)
Overview - Why do we need a web app?BigBlueButton provides webconference rooms but you stillneed a system to provide management tasks such as: (cont...) ● Server management ○ Manage multiple servers ○ CRUD ○ Monitoring and load balancing ● Conference scheduling ● Usage statistics ● Access to the recordings (audio, video, presentations) ● Pre-upload of documents
About Global PlazaGlobal Plaza or VCC (Virtual Conference Centre)Web application to provide videoconferencing as a service http://globalplaza.orgDeveloped in the European Global Project http://www.global-project.eu/ "Global Plaza delivers a virtual event service for the Internet, which will enable you to perform videoconferencing, streaming, recording and electronic publishing of your meetings, lectures, training sessions, conferences, congresses or workshops."
About Global PlazaUses Isabel as the webconference system Isabel interface example
About Global PlazaThe full "Global Plaza stack" is a bit more complicated We are using only this block, the web application
A bit more about Global PlazaMain focus: events! ● Users can create events ● Events can be virtual ● Can be recorded (and published later) ● Can be streamedEvents can be: ● In person ○ You just have a date and agenda in the website. ● Virtual meetings ○ Using Isabel. Has streaming and recording. ● Virtual congress ○ Large virtual meetings, usually needs an on-site operator.
Why Global Plaza?We needed a way to test BigBlueButton and its integration withthird-party applications (as fast as possible).We found in Global Plaza the features we needed for the firstprototype: ● User authentication ● Permission control ● A web environment to start and manage webconferencesLots of people talking about it in TF-Media lists.Among the open source solutions found, it was the closestrelated to our ideas and needs.
How Mconf-Web worksNote: we will talk about Mconf-Web, that has differences from theoriginal Global PlazaMconf-Web is a fork of Global Plaza (something like a copy).The main difference is that Mconf-Web uses BigBlueButtoninstead of Isabel.But there are many others.
How Mconf-Web worksIt is a social network of users, spaces and eventsUsers can create and join spaces (communities)Users can create and participate in eventsEvents are held inside a spaceEvents have a start and end dateUsers events: that will be held in the space PRAV
How Mconf-Web worksSpaces can be public or privatePublic spaces ● Viewable by anyone, even by visitors ● Only authorized people can alter itPrivate spaces ● Only viewable by authorized people ● Nobody else will be able to see the activity inside this space
How Mconf-Web worksWhat about the webconferences? ● Every user has his/her webconference room ● Every space has its webconference room
How Mconf-Web worksUser webconference room ● Its a single room that the user can share with anyone he wants to ● Only the owner can start the conference ● The room is public, anyone with the link can join ○ Obs: he will be able to set it as private soon The conference is not running
How Mconf-Web worksSpace webconference room: The conference is running!
How Mconf-Web worksPermissions in the webconferencesIn a users room: ● Only the owner is a moderator ● All others are viewersIn a spaces room: ● All members are moderators ● All others: ○ Public space: are viewers ○ Private space: must enter a password to join
How Mconf-Web worksHow to join a webconference?Go to your home or space and click "join":Copy and paste the conference link in the browser: http://mconf.inf.ufrgs.br/webconf/prav http://mconf.inf.ufrgs.br/webconf/leonardo-daronco
How Mconf-Web worksHow to invite people to a conference? ● Just send them the link http://mconf.inf.ufrgs.br/webconf/prav ● Or use the invite dialog:Can invite Mconf users or using emails
How Mconf-Web worksWhen invited: ● If the room is private, the user need to enter a password ● If the user is not logged, he needs to enter his name
Other featuresUsers recent activity and upcoming events
Other featuresLanguagesWe maintain "en" and "pt-br". The others are from Global Plaza. (and need to be updated)
Other featuresInternal messages Notifications in the homepage
Other featuresThe rest we will see during the activities...
Implementation detailsMconf-Web is developed in Ruby on Rails (version 3)Rails is a web framework for the Ruby languageA simple example of how it compares to other languages: PHP Java Ruby CakePHP Spring OpenLazslo Rails Joomla! Apache Struts Sinatra Drupal http://en.wikipedia.org/wiki/Comparison_of_Web_application_frameworks
Implementation detailsMconf-Web is developed in Ruby on Rails (version 3)Rails has been a "trending topic" in the web development areain the last years.It is also usually associated to agile developmentmethodologies.We started using it because of Global Plaza and we dontregret it.
Implementation detailsIts important to mention that: The integration with BigBlueButton was developed in libraries (called gems in Ruby) Any Rails application!
Implementation detailsTwo gems:1. bigbluebutton-api-ruby:Provide methods to communicate with the BBB API.Can be used by any Ruby application (not only Rails).
Implementation detailsTwo gems:2. bigbluebutton_rails:Has the logic of all the interaction with BigBlueButton (seenext slide)
Implementation detailsTwo gems:2. bigbluebutton_rails: Features (mostly copied from "Why do we need a web application?") ● Webconference management ○ Manage multiple meetings ○ CRUD (create, read, update, delete) ● Server management ○ Manage multiple servers ○ CRUD ● Server monitoring ● Pre-upload of documents ● Helps verifying user permissions ● And several others...
Implementation detailsTwo gems:2. bigbluebutton_rails: Future (lots of possibilities) ● Load balancing ● Limit the number of users per meeting ● Access to the recordings (audio, video, presentations) ● Server administration ○ Change configs in the server ○ Restart the server ○ Check if everything is OK ● Usage statistics ● And several others...
Implementation detailsWith these libraries, we can change our front end applicationand still reuse all the integration with BigBlueButton.And we can also integrate Mconf/BigBlueButton into otherapplications.(the libraries would work somehow like a Moodle module)
Differences: Mconf-Web and Global PlazaMigration to Rails 3 - it was using Rails 2.3. This was specially important for our gems.Replaced Isabel by BigBlueButton.In Global Plaza, only events have webconference rooms.In Mconf-Web: Users have personal rooms Spaces have roomsLots of changes in the interface.We are trying to make it simpler and easier to use. With that we removed some features that we dont need. Or that are not ready yet for BigBlueButton.
Overview● Goal: transparent interaction between desktop and mobile users● Developing a native Android application● First iniciative on building a mobile client
Architecture● flazr is a Java library which handles the RTMP communication ○ Support to Remote Shared Objects developed by our team● bbb-java is a client side Java API to interact with the BigBlueButton server● bbb-android-core is a native Android library ○ Mostly developed in Java - some code in C++ ○ Some code from the IVA project ○ Integrated with Sipdroid to provide voice functionalities ○ Uses FFmpeg for video encoding and decoding
Main functionalities ● View meeting informations
Main functionalities 11 ● User status updates 1. Viewer 12 1 2. Moderator 3 3. Is transmitting video 10 4. Presenter token 2 4 5. Has raised hand 5 6. Muted 7. Unmuted 8. Speaking 6 9. New public chat message 10. New private chat message 8 11. App notifications 7 9 12. Connection status
Main functionalities ● Public and private chat
Main functionalities ● Voice interaction ○ Tap to speak
Main functionalities ● Voice interaction ○ Audio configuration
Main functionalities ● Administrative actions ○ Assign presenter ○ Kick user ○ Lower hand ○ Mute / unmute
Main functionalities ● Video visualization (one at a time)
Main functionalities ● Video capture and publish
BBB-Android and Mconf-MobileBBB-Android accesses directly the BigBlueButton server by aJSP demo application ● Can join freely all the running meetings, also as a moderator ● Needs to know the server addressMconf-Mobile accesses the web portal ● Same permissions as in the web portal ● Can join only his own rooms, rooms from spaces that the user is member and rooms from public spaces ● Just needs to know the mconf.inf.ufrgs.br (or mconf.org)
BBB-Android + Web portalJoin a meeting ● clicking on a hyperlink (in the device browser)
BBB-Android + Web portalJoin a meeting ● scanning a QR Code
BBB-Android security modelOn BigBlueButton 0.71a: ● JSP application removes the need of the security salt (!)On BigBlueButton 0.8 (under development): ● JSP application requires a checksum with a unique security salt per server ● Salt must be small enough to be entered in the device, probably a 5-char string
Mobile JSP applicationSupports the calls above: ● getMeetings ● createMeeting ● join
Development toolsGoogle Code (http://code.google.com/p/mconf/) ● Wiki ● Issue tracker ● DownloadsGithub (https://github.com/mconf) ● Public source code repository ● 15 projects under the Mconf organization
Developing Mconf-Mobile ● Eclipse + ADT Plugin ○ Emulator ○ Debugger ○ "Live debugging" on a device ● Android SDK ● Android NDK* All multiplatform tools
Developing BigBlueButton ● Development virtual machine of BigBlueButton ● Eclipse ○ Remote System Explorer Plugin ○ AS Development Tools Plugin ● Adobe Flash Player - Debugger ● SSH + Apache Ant* All multiplatform tools
DeploymentMconf-Mobile is easy: you install it in your phone and thats it!But Mconf-Web and BigBlueButton require a server setup.
DeploymentIdeally, Mconf-Web will be in a standalone machine andmanage several BigBlueButton instances. We can have several servers if needed
Deployment: BigBlueButtonThe latest version is 0.71a (February 2011).Version 0.8 will be out soon.BigBlueButton runs on Ubuntu 10.04 (latest LTS version).You can also install it in other Linux distributions, but itsharder.There are guides to Debian and FreeBSD:http://code.google.com/p/bigbluebutton/wiki/InstallationBigBlueButtonDebianhttp://code.google.com/p/bigbluebutton/wiki/InstallingBigBlueButtonFreeBSD
Deployment: BigBlueButtonAs an open source software, BigBlueButton can be installedfrom source. But this is the hardest way to do it.http://code.google.com/p/bigbluebutton/wiki/InstallingBigBlueButtonThere are also easier options: ● Using the Virtual Machine: you have the entire development and production environments. Great for development and testing, but not the best solution for deployment. ● Installing from packages: ○ Just three apt commands http://code.google.com/p/bigbluebutton/wiki/InstallationUbuntu
Deployment: BigBlueButtonBigBlueButton also has a very useful script called "bbb-conf"It can: ● Start/stop/restart the server ● Check for errors ● Change the IP or domain namehttp://code.google.com/p/bigbluebutton/wiki/BBBConf
Deployment: BigBlueButtonWe have a script called mconf-bbb-conf that helps adeveloper to setup a BigBlueButton environment from theMconf repositoryIt includes: ● the source code ● the right configurations to use SpeexAlso it deploys the source code to be used in the developmentvirtual machineExample: mconf-bbb-conf mconf.inf.ufrgs.br:80https://github.com/mconf/installation-scripts
Deployment: BigBlueButtonTipically you dont want to have the development environmentinstalled in a production environmentbbb-deploy is an Apache Ant script to deploy BigBlueButtonfrom a development environment (most probably thedevelopment virtual machine) to a production serverIt does: ● deploy in one command and no interaction ● backup the old production version ● restore an old versionhttps://github.com/mconf/installation-scripts/tree/master/bbb-deploy
Deployment: Mconf-WebIts a Rails application and can be deployed as any other Railsapplication.We use it on Ubuntu (10.04 or newer).But it should work on any operating system that has support toRuby on Rails (almost all of them have).
Deployment: Mconf-WebTo deploy a Rails application you need: ● The source code ● A web server ● An application server Rails application Passenger Apache
Deployment: Mconf-WebHow-to: ● Install Apache ● Install the Ruby environment ● Install Passenger ● Install the Apache-Passenger module ● Copy the application code to a configured pathMore information at:http://code.google.com/p/mconf/wiki/MconfWebDeploymentManual
Deployment: Mconf-WebWe have also a script called "mconf-web-conf" that can helpthe setup of a production serverExample: mconf-web-conf --install-packages production mconf-web-conf --install-ruby mconf-web-conf --setup-prodDetails at:http://code.google.com/p/mconf/wiki/MconfWebDeploymentWithScript
Deployment: Mconf-WebAlso...We use a library called Capistrano to help the deployment: Your development machineNot required, but recommended.
Deployment: Mconf VMWeve made a virtual machine with: ● Mconf-Web ● BigBlueButton + customizations ● Both enabled to be accessed by Mconf-MobileIt can be used to: ● Have a fast testing version of Mconf ● Have a pre-configured development environmentMore information at:http://code.google.com/p/mconf/wiki/MconfVM
Deployment: CloudAnother possibility is to deploy Mconf in the cloud.BigBlueButton has already been used in the Amazon EC2cloud. Theres information about it in their wiki + mailing lists.Mconf-Web can also be deployed in infrastructure clouds likeAmazons, but we have not tested yet.Also, Mconf-Web can be deployed in application clouds, suchas Heroku (http://www.heroku.com/)
Deployment: SecurityHTTPS for Mconf-Web ● Not hard to implement ● Requires configuration in the web server ● Requires some development on Mconf-MobileRTMPS for BigBlueButton ● Theres people talking about it in the mailing lists ● It seems possible, but we dont know how hard it is
Deployment: ScalabilityOne BigBlueButton server supports around 80 voice users and20 webcams** This is the result of the lastest stress test and is very dependent on the machine whereBigBlueButton is installed (Xeon 3450 quad core 2.66 Ghz with hyperthreading).
Deployment: ScalabilityHow to improve it: ● Use several servers in a cluster ○ The easier solution but not the best ○ Individual rooms will still be limited to the capacity of 1 server ● Use several audio servers ○ BBB uses FreeSWITCH for voice, that can be scaled ● Use several video servers ○ It requires allowing several Red5 instances to run in parallel
Feedbacks and statisticsBBB-Android in numbersVersion 0.2 ● Released on May 6th ● 162 downloadsVersion 0.3beta (used on WRNP 2011) ● Released on May 28th ● 351 downloadsVersion 0.4 ● Released on August 25thVersion 0.5 ● Will be released on Android Market soon
Feedbacks and statisticsBigBlueButton ● +3 years of development ● Community with ~900 members, ~11k messages ● Increasing worldwide interest in the software Interest in BBB during the last Terenas TF-Media meeting
BigBlueButton Developer SummitThe Mconf Team was invited to give a presentation about theMconf-Mobile project in an online developer summiton August 28thhttp://bigbluebutton.eventbrite.com/
Feedbacks and statisticsWe also had some good feedbacks from the BigBlueButtondevelopers, including: ● Messages in the mailing lists ● Blog posts ● References in presentations
Future - 2nd year proposal1. Escalabilidade / Monitoramento2. Integração com padrões de videoconferência3. Suporte a iPhone OS4. Melhorias no núcleo do BBB5. Melhorias no aplicativo Android6. Melhorias no Portal WEB7. Status de usuário
Thank youTime to debate... GT-Mconf Transfer of technology course Authors: Felipe Cecagno Leonardo Crauss Daronco Valter Roesler
Some technical info about BigBlueButtonVideo stream flow (end-to-end) ● Video capture (Flash plugin) ● Video publishing - RTMP over TCP to the video server (Flash plugin) ● Stream forward (Red5 server) ● Video receiving (Flash plugin) ● Video playback (Flash plugin)
Some technical info about BigBlueButtonAudio stream flow (end-to-end) ● Audio capture (red5phone) ● Audio publishing - RTMP over TCP to the video server (red5phone) ● Audio forward from Red5 to FreeSWITCH (or Asterisk) ● Audio forward from FreeSWITCH (or Asterisk) to Red5 ● Audio receiving (red5phone) ● Audio playback (red5phone)