GT-Mconf
Transfer of technology course
Authors:Felipe Cecagno
Leonardo Crauss DaroncoValter Roesler
Agenda1. Overview + Initial demonstration2. Architecture and Components
○ BigBlueButton○ Mconf-Web
■ Activities○ Android client
■ Activities1. Transfer of Technology
○ Development○ Deployment
2. Feedbacks, Statistics and Others3. GT-Mconf in the future + Debate
1. Overview + Initial demonstration
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
Demonstrationweb portal
webconference system
mobile client
2. Architecture
Architecture
1. BigBlueButton
2. Mobile
3. Web portal
Architecture: Our current setupOne physical machine Intel i7 with 4 cores, 4GB RAM, enough HD
Operating System: Ubuntu 10.04
BigBlueButton is installed in this machine using Ubuntu packages.
This machine has also:● Mconf-Web running in a virtual machine● Two other development VMs
2. Architecture
1. BigBlueButton
Why BigBlueButton?In the beginning, we were looking for an open source 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 environments
To 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
Not all of them are open source or for webconference...
Why BigBlueButton?
http://www.terena.org/activities/media/
webconference is here!
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 solution
Options:● HTML5● Flash or a new plug-in
○ Google Talk's style● Using code from IVA
Why we decided not to do it:● Would require too much time given our budget and team
size● There's no point in starting something new if there's a good
open source solution
Why BigBlueButton?So why BigBlueButton?
It has most of what we need:● It's 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, that's under GPLDevelopment started in 2007
Website: http://bigbluebutton.org/
Blindsite Networks: http://www.blindsidenetworks.com/
BigBlueButton - ArchitectureBuilt on top of ~15 open source components
BigBlueButton - Architecture
http://code.google.com/p/bigbluebutton/wiki/ArchitectureOverview
Client: FlashSIP for voice
Server: mostly Java, but not only
Red5
Asterisk or FreeSWITCH
BigBlueButton - Architecture
http://code.google.com/p/bigbluebutton/wiki/ArchitectureOverview
Modular architecture
BigBlueButton APIThird-party applications can interact with BigBlueButton through its web API
To:● 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 APIWeb API
Format: API URL + method + parameters Examples: http://<server>/bigbluebutton/api/ +
...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
<response> <returncode>SUCCESS</returncode> <meetingID>RNP-123</meetingID> <attendeePW>attendee_pass</attendeePW> <moderatorPW>mod_pass</moderatorPW> <running>true</running> <startTime> Tue Aug 13 17:30:44 UTC 2011 </startTime> <endTime>null</endTime> (cont...)
BigBlueButton APIResponses are in XML
Example: http://<server>/bigbluebutton/api/getMeetingInfo?meetingID=RNP-123...
(...cont.) <participantCount>1</participantCount> <moderatorCount>1</moderatorCount> <attendees> <attendee> <userID>xczenpd3hhrq</userID> <fullName>John Doe</fullName> <role>MODERATOR</role> </attendee> </attendees></response>
Security model
Each 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 API
BigBlueButton APIWorkflow example
Third-party app(e.g. web portal)
BigBlueButtonAPI
isMeetingRunning?
join
XML: Ok, created.
XML: Ok, go to <url>
create
XML: No, not running.
Redirect the user to <url>He will join the session.
authentication, permission check, etc.
User X wants to join his meeting
Using the API, BigBlueButton was integrated to several third-party applications:
BigBlueButton API
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 classroom
Presenter● The same capabilities as a participant, plus● Can upload and control presentations● Can share desktop
Moderator● 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○ It's 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
2. Architecture
2. Web portal(Mconf-Web)
Overview - Why do we need a web app?BigBlueButton provides webconference rooms but you still need 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 still need 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.org
Developed 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 Plaza
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 streamed
Events 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 it's integration with third-party applications (as fast as possible).
We found in Global Plaza the features we needed for the first prototype:
● User authentication● Permission control● A web environment to start and manage webconferences
Lots of people talking about it in TF-Media lists.
Among the open source solutions found, it was the closest related to our ideas and needs.
How Mconf-Web worksNote: we will talk about Mconf-Web, that has differences from the original Global Plaza
Mconf-Web is a fork of Global Plaza (something like a copy).
The main difference is that Mconf-Web uses BigBlueButton instead of Isabel.But there are many others.
How Mconf-Web worksIt is a social network of users, spaces and events
Users can create and join spaces (communities)Users can create and participate in eventsEvents are held inside a spaceEvents have a start and end date
User's events:that will be held in the
space PRAV
How Mconf-Web worksSpaces can be public or private
Public spaces● Viewable by anyone, even by visitors● Only authorized people can alter it
Private 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 it's webconference room
How Mconf-Web worksUser webconference room
● It's 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 webconferences
In a user's room:● Only the owner is a moderator● All others are viewers
In a space's 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 usersor using emails
How Mconf-Web works
When 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 featuresDocuments within a space
Other featuresWall - community messages
Other featuresUser's recent activity and upcoming events
Other featuresLanguages
We maintain "en" and "pt-br". The others are from Global Plaza.
(and need to be updated)
Other featuresInternal messages
Notifications in the homepage
Other features
The 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
RailsSinatra
CakePHPJoomla!Drupal
SpringOpenLazslo
Apache Struts
Ruby
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 area in the last years.
It is also usually associated to agile development methodologies.
We started using it because of Global Plaza and we don't regret it.
Implementation detailsIt's 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 (see next slide)
Implementation detailsTwo gems:
2. bigbluebutton_rails:
● 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...
Features(mostly copied from "Why do
we need a web application?")
Implementation detailsTwo gems:
2. bigbluebutton_rails:
● 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...
Future(lots of possibilities)
Implementation detailsWith these libraries, we can change our front end application and still reuse all the integration with BigBlueButton.
And we can also integrate Mconf/BigBlueButton into other applications.(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 rooms
Lots of changes in the interface.We are trying to make it simpler and easier to use. With that we removed some features that we don't need. Or that are not ready yet for BigBlueButton.
2. Architecture
2. Web portal:Activities
2. Architecture
3. Mobile Client(Mconf-Mobile)
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● User status updates
1. Viewer2. Moderator3. Is transmitting video4. Presenter token5. Has raised hand6. Muted7. Unmuted8. Speaking9. New public chat message
10. New private chat message11. App notifications12. Connection status
11
1
6
2
7
34
5
8
9
10
12
Main functionalities● Raise / lower hand
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 a JSP demo application
● Can join freely all the running meetings, also as a moderator
● Needs to know the server address
Mconf-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 and Mconf-Mobile
BBB-Android and Mconf-Mobile
Compatible with Android 2.0 and above (~96,7%* of the devices)
Constantly tested on:● Samsung Galaxy S (Android 2.2)● Samsung Galaxy Tab (Android 2.2.1)● Motorola Milestone (Android 2.0.1)
Recommended: Android 2.2 or above
* http://developer.android.com/resources/dashboard/platform-versions.html on August 2011
BBB-Android and Mconf-Mobile
We maintain both English and Portuguese (BR) languages● It is automatically detected by the device● Easy to translate to others
Mconf-Mobile + Web portal
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
2. Architecture
3. Mobile Client:Activities
3. Transfer of technology
3. Transfer of technology
1. Development
Development toolsGoogle Code (http://code.google.com/p/mconf/)
● Wiki● Issue tracker● Downloads
Github (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
3. Transfer of technology
2. Deployment
DeploymentMconf-Mobile is easy: you install it in your phone and that's it!
But Mconf-Web and BigBlueButton require a server setup.
DeploymentIdeally, Mconf-Web will be in a standalone machine and manage 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 it's harder.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 installed from source. But this is the hardest way to do it.http://code.google.com/p/bigbluebutton/wiki/InstallingBigBlueButton
There 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 name
http://code.google.com/p/bigbluebutton/wiki/BBBConf
Deployment: BigBlueButtonWe have a script called mconf-bbb-conf that helps a developer to setup a BigBlueButton environment from the Mconf repository
It includes:● the source code● the right configurations to use Speex
Also it deploys the source code to be used in the development virtual machine
Example: mconf-bbb-conf mconf.inf.ufrgs.br:80
https://github.com/mconf/installation-scripts
Deployment: BigBlueButtonTipically you don't want to have the development environment installed in a production environment
bbb-deploy is an Apache Ant script to deploy BigBlueButton from a development environment (most probably the development virtual machine) to a production server
It does:● deploy in one command and no interaction● backup the old production version● restore an old version
https://github.com/mconf/installation-scripts/tree/master/bbb-deploy
Deployment: Mconf-WebIt's a Rails application and can be deployed as any other Rails application.
We use it on Ubuntu (10.04 or newer).But it should work on any operating system that has support to Ruby 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
Apache
Passenger
Rails application
Deployment: Mconf-WebHow-to:
● Install Apache● Install the Ruby environment● Install Passenger● Install the Apache-Passenger module
● Copy the application code to a configured path
More information at:http://code.google.com/p/mconf/wiki/MconfWebDeploymentManual
Deployment: Mconf-WebWe have also a script called "mconf-web-conf" that can help the setup of a production server
Example: mconf-web-conf --install-packages production mconf-web-conf --install-ruby mconf-web-conf --setup-prod
Details at:http://code.google.com/p/mconf/wiki/MconfWebDeploymentWithScript
Deployment: Mconf-WebAlso...
We use a library called Capistrano to help the deployment:
Not required, but recommended.
Your development machine
Deployment: Mconf VMWe've made a virtual machine with:
● Mconf-Web● BigBlueButton + customizations● Both enabled to be accessed by Mconf-Mobile
It can be used to:● Have a fast testing version of Mconf● Have a pre-configured development environment
More 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 EC2 cloud. There's information about it in their wiki + mailing lists.
Mconf-Web can also be deployed in infrastructure clouds like Amazon's, but we have not tested yet.
Also, Mconf-Web can be deployed in application clouds, such as 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-Mobile
RTMPS for BigBlueButton● There's people talking about it in the mailing lists● It seems possible, but we don't know how hard it is
Deployment: ScalabilityOne BigBlueButton server supports around 80 voice users and 20 webcams*
* This is the result of the lastest stress test and is very dependent on the machine where BigBlueButton 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
4. Feedbacks, statistics and others
Feedbacks and statistics
Visitors
Mconf @ Google Code (wiki + issues)
Feedbacks and statisticsMconf @ Google Code (wiki + issues)
Feedbacks and statisticsmconf.inf.ufrgs.br
Current statistics:● 138 users● 49 spaces ● ~1200 visits
Feedbacks and statisticsBBB-Android in numbers
Version 0.2● Released on May 6th● 162 downloads
Version 0.3beta (used on WRNP 2011)● Released on May 28th● 351 downloads
Version 0.4● Released on August 25th
Version 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 Terena's TF-Media meeting
BigBlueButton Developer SummitThe Mconf Team was invited to give a presentation about the Mconf-Mobile project in an online developer summit on August 28th
http://bigbluebutton.eventbrite.com/
Feedbacks and statisticsWe also had some good feedbacks from the BigBlueButton developers, including:
● Messages in the mailing lists
● Blog posts● References in
presentations
5. GT-Mconf in the future + Debate
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-MconfTransfer of technology course
Authors:Felipe Cecagno
Leonardo Crauss DaroncoValter Roesler
Some technical info about BigBlueButton
Video 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 BigBlueButton
Audio 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)
Top Related