4. Overview
GT-Mconf - "Sistema de multiconferência para
acesso 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
5. Demonstration
web portal
webconferen
ce system
mobile client
7. Architecture
1. BigBlueButton
2. Mobile
3. Web portal
8. Architecture: Our current setup
One 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
10. 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
11. 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
12. Why BigBlueButton?
Not all of them are open source or for webconference...
webconference
is here!
http://www.terena.org/activities/media/
13. 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
14. 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
15. 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.
16. 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
17. BigBlueButton - Overview
Developed by Blindside Networks, based on Canada
Open source (LGPL)
Note: uses red5phone, that's under GPL
Development started in 2007
Website:
http://bigbluebutton.org/
Blindsite Networks:
http://www.blindsidenetworks.com/
19. BigBlueButton - Architecture
SIP for voice Client: Flash
Server: mostly Java,
but not only
Asterisk or
FreeSWITCH
Red5
http://code.google.com/p/bigbluebutton/wiki/ArchitectureOverview
21. BigBlueButton API
Third-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
22. BigBlueButton API
Web 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
23. BigBlueButton API
Responses are in XML
Example:
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>
24. BigBlueButton API
Security model
Each server has a unique 64-char string called salt
The salt is used to calculate a checksum, used in all API calls
So 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
25. BigBlueButton API
Workflow 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.
27. BigBlueButton Roles
User 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.
28. BigBlueButton Roles
User 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.
34. 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
36. 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...)
37. 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
38. About Global Plaza
Global 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."
41. About Global Plaza
The full "Global Plaza stack" is a bit more complicated
We are using only this
block, the web application
42. A bit more about Global Plaza
Main 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.
43. 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.
44. How Mconf-Web works
Note: 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.
45. How Mconf-Web works
It is a social network of users, spaces and events
Users can create and join spaces (communities)
Users can create and participate in events
Events are held inside a space
Events have a start and end date
User's events:
that will be held in the
space PRAV
46. How Mconf-Web works
Spaces 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
47. How Mconf-Web works
What about the webconferences?
● Every user has his/her webconference room
● Every space has it's webconference room
48. How Mconf-Web works
User 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
50. How Mconf-Web works
Permissions 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
51. How Mconf-Web works
How 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
52. How Mconf-Web works
How 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
53. 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
60. Implementation details
Mconf-Web is developed in Ruby on Rails (version 3)
Rails is a web framework for the Ruby language
A 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
61. Implementation details
Mconf-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.
62. Implementation details
It's important to mention that:
The integration with BigBlueButton was developed in
libraries (called gems in Ruby)
Any Rails
application!
63. Implementation details
Two gems:
1. bigbluebutton-api-ruby:
Provide methods to communicate with the BBB API.
Can be used by any Ruby application (not only Rails).
65. Implementation details
Two 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...
66. Implementation details
Two 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...
67. Implementation details
With 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)
68. Differences: Mconf-Web and Global Plaza
Migration 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.
71. Overview
● Goal: transparent interaction between desktop and mobile
users
● Developing a native Android application
● First iniciative on building a mobile client
72. 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
74. 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
82. BBB-Android and Mconf-Mobile
BBB-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)
84. 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
85. 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
89. BBB-Android security model
On 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
94. Development tools
Google 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
95. Developing Mconf-Mobile
● Eclipse + ADT Plugin
○ Emulator
○ Debugger
○ "Live debugging" on a device
● Android SDK
● Android NDK
* All multiplatform tools
96. 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
98. Deployment
Mconf-Mobile is easy: you install it in your phone and that's it!
But Mconf-Web and BigBlueButton require a server setup.
99. Deployment
Ideally, Mconf-Web will be in a standalone machine and
manage several BigBlueButton instances.
We can have several
servers if needed
100. Deployment: BigBlueButton
The 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/InstallationBigBlueButtonDebian
http://code.google.com/p/bigbluebutton/wiki/InstallingBigBlueButtonFreeBSD
101. Deployment: BigBlueButton
As 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
102. Deployment: BigBlueButton
BigBlueButton 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
103. Deployment: BigBlueButton
We 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
104. Deployment: BigBlueButton
Tipically 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
105. Deployment: Mconf-Web
It'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).
106. Deployment: Mconf-Web
To deploy a Rails application you need:
● The source code
● A web server
● An application server
Rails application
Passenger
Apache
107. Deployment: Mconf-Web
How-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
108. Deployment: Mconf-Web
We 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
109. Deployment: Mconf-Web
Also...
We use a library called Capistrano to help the deployment:
Your development
machine
Not required, but
recommended.
110. Deployment: Mconf VM
We'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
111. Deployment: Cloud
Another 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/)
112. Deployment: Security
HTTPS 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
113. Deployment: Scalability
One 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).
114. Deployment: Scalability
How 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
119. Feedbacks and statistics
BBB-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
120. Feedbacks and statistics
BigBlueButton
● +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
121. BigBlueButton Developer Summit
The 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/
122. Feedbacks and statistics
We also had some good feedbacks from the BigBlueButton
developers, including:
● Messages in the
mailing lists
● Blog posts
● References in
presentations
124. Future - 2nd year proposal
1. Escalabilidade / Monitoramento
2. Integração com padrões de videoconferência
3. Suporte a iPhone OS
4. Melhorias no núcleo do BBB
5. Melhorias no aplicativo Android
6. Melhorias no Portal WEB
7. Status de usuário
125. Thank you
Time to debate...
GT-Mconf
Transfer of technology course
Authors:
Felipe Cecagno
Leonardo Crauss Daronco
Valter Roesler
126.
127.
128. 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)
129. 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)