Difference between revisions of "BigBlueButton"

From CDOT Wiki
Jump to: navigation, search
(Created page with ''' <span style="color: red;">***Page is currently under construction***</span>'' ==BigBlueButton Overview== ===What is BigBlueButton?=== [http://www.bigbluebutton.org BigBlueB…')
 
m (CDOT BigBlueButton Contributors)
 
(38 intermediate revisions by 7 users not shown)
Line 5: Line 5:
 
===What is BigBlueButton?===
 
===What is BigBlueButton?===
  
[http://www.bigbluebutton.org BigBlueButton] is a free and open source web conferencing system, primarily targeted towards online lecturing, and small group collaboration. It provides a virtual classroom environment for instructors to teach, and for students to collaborate in small groups. However, BigBlueButton is by no means limited to classroom settings and small groups; it just means that the core features and components of BigBlueButton were developed with this target demographic in mind. The BigBlueButton name comes from the notion that starting a web conference should be as simple as pressing a metaphorical big blue button.
+
[http://www.bigbluebutton.org BigBlueButton] is a free and open source web conferencing system, primarily targeted towards online lecturing by providing a virtual classroom environment, and tools for small group collaboration. However, BigBlueButton is by no means limited to classroom settings and small groups; it just means that the core features and components of BigBlueButton were developed with this target demographic in mind. The BigBlueButton name comes from the notion that starting a web conference should be as simple as pressing a metaphorical big blue button.
  
BigBlueButton contains a set of components, called "modules", each containing a bunch of features. Such modules include and features include:
+
===Who Develops BigBlueButton?===
 +
 
 +
BigBlueButton was started in 2007 by Richard Alam, who at the time was a Master's student at Carleton University. Since then, many other individuals and organizations have become involved. The core team of developers come from [http://blindsidenetworks.com/ Blindside Networks] and [http://cdot.senecacollege.ca/ Seneca CDOT].
 +
 
 +
===What Features Does BigBlueButton Have?===
 +
 
 +
BigBlueButton contains a set of components, called "modules", each containing a bunch of features. Such modules and features include:
  
 
*The users module, that contains and displays the list of users in a meeting, along with their state (whether they are a presenter, moderator or normal viewer, whether they are sharing any media, whether their permissions are restricted in some way, etc..).  
 
*The users module, that contains and displays the list of users in a meeting, along with their state (whether they are a presenter, moderator or normal viewer, whether they are sharing any media, whether their permissions are restricted in some way, etc..).  
Line 27: Line 33:
 
*Lock Settings, which allow moderators of a meeting to restrict some users' access of the modules. For example, a moderator can disable webcam sharing, or chatting between participants.
 
*Lock Settings, which allow moderators of a meeting to restrict some users' access of the modules. For example, a moderator can disable webcam sharing, or chatting between participants.
  
 
+
Try out BigBlueButton for yourself at http://demo.bigbluebutton.org/! Just enter any user name in, and play around with it!
Try out BigBlueButton for yourself at http://demo.bigbluebutton.org/! Just log enter any user name in, and play around for yourself!
 
  
 
==BigBlueButton Architecture==
 
==BigBlueButton Architecture==
Line 34: Line 39:
 
===Background Information===
 
===Background Information===
  
BigBlueButton was initially a Flash application. The server, written initially in Java, sat on a Flash media server called Red5, and the main client was a Flash web application (the "Flash client") that was downloaded by the browser upon joining a BigBlueButton meeting. As a Flash client, this meant that users had to install a Flash Player into their web browser in order for them to use it (like old YouTube videos). Though the main BigBlueButton client is still Flash based, all of the new features that HTML5 requires browsers to be able to support natively (without having to install plug-ins) allowed developers to begin development of a second client for BigBlueButton, that used only the capabilities of web browsers (the "HTML5 client"). Additionally, around late 2013, development began on a cross-platform mobile application for Android and iOS that allowed people to join a BigBlueButton meeting from mobile devices (the "mobile client"). Both the HTML5 client and the mobile client are still under development.
+
BigBlueButton was initially a Flash application. The server, written in Java (now moving to Scala), sat on a Flash media server called Red5, and the main client was a Flash web application (the "Flash client") that was downloaded by the browser upon joining a BigBlueButton meeting. As a Flash application, this meant that users had to install a Flash Player into their web browser in order for them to use it (like old YouTube videos). Though the main BigBlueButton client is still Flash based, all of the new features that HTML5 requires browsers to be able to support natively (without having to install plug-ins) allowed developers to begin work on a second client for BigBlueButton, that used only the built-in capabilities of web browsers (the "HTML5 client"). Additionally, around late 2013, development began on a cross-platform mobile application for Android and iOS that allowed people to join a BigBlueButton meeting from mobile devices (the "mobile client"). Both the HTML5 client and the mobile client are still under development.
  
 
===Server-side===
 
===Server-side===
  
Behind the scenes, the BigBlueButton server uses the following frameworks, technologies:
+
See [http://docs.bigbluebutton.org/ this] for a recent overview of BigBlueButton's server-side architecture. Behind the scenes, the BigBlueButton server uses the following technologies:
  
 
*[http://www.red5.org/ Red5]: a Flash Media Server, with "room management" (a Red5 room corresponds to a BigBlueButton meeting) allowing easy handling of message sending and streaming to only those users who connected to a specific room. Red5 holds the following BigBlueButton components:
 
*[http://www.red5.org/ Red5]: a Flash Media Server, with "room management" (a Red5 room corresponds to a BigBlueButton meeting) allowing easy handling of message sending and streaming to only those users who connected to a specific room. Red5 holds the following BigBlueButton components:
Line 48: Line 53:
 
*[https://github.com/bigbluebutton/bigbluebutton/tree/master/bigbluebutton-web BigBlueButton-Web] running on [https://grails.org/ Grails] and [http://tomcat.apache.org/ Tomcat]: BigBlueButton's web API, allowing programmers to create meetings, join meetings, get [https://github.com/bigbluebutton/bigbluebutton/blob/master/bigbluebutton-client/resources/config.xml.template configurations] for a meeting, get information to set the state of the client when joining a meeting, to use the presentation services for uploading presentations, and to use the recording services to record meetings.
 
*[https://github.com/bigbluebutton/bigbluebutton/tree/master/bigbluebutton-web BigBlueButton-Web] running on [https://grails.org/ Grails] and [http://tomcat.apache.org/ Tomcat]: BigBlueButton's web API, allowing programmers to create meetings, join meetings, get [https://github.com/bigbluebutton/bigbluebutton/blob/master/bigbluebutton-client/resources/config.xml.template configurations] for a meeting, get information to set the state of the client when joining a meeting, to use the presentation services for uploading presentations, and to use the recording services to record meetings.
  
*[http://redis.io/ Redis]: a key-value database used by BigBlueButton to communicate between the different server-side components, and to record all of the events of a meeting. Redis provides a publish and subscribe ("pub-sub") messaging system, that allows applications to subscribe to channels, which means every message published to that channel will be received by all subscribers of that channel.
+
*[http://redis.io/ Redis]: a key-value store used by BigBlueButton to communicate between the different server-side components, and to record all of the events of a meeting. Redis provides a publish and subscribe ("pub-sub") messaging system, that allows applications to subscribe to channels, which means every message published to that channel will be received by all subscribers of that channel. Try this [http://try.redis.io/ interactive Redis tutorial!]
  
 
*[http://www.freeswitch.org/ FreeSwitch]: used by BigBlueButton as a VOIP server to manage voice conference calls between WebRTC audio clients, connecting them and streaming their audio data to others in the same conference. Additionally, since Flash Audio and WebRTC audio use different audio codecs (Speex vs Opus), FreeSwitch is used to transcode between these two codecs, and send the audio data to BBB-Voice for repackaging and delivery to those Flash clients that are using Flash audio (Flash clients needn't use Flash audio, but can now use WebRTC audio).
 
*[http://www.freeswitch.org/ FreeSwitch]: used by BigBlueButton as a VOIP server to manage voice conference calls between WebRTC audio clients, connecting them and streaming their audio data to others in the same conference. Additionally, since Flash Audio and WebRTC audio use different audio codecs (Speex vs Opus), FreeSwitch is used to transcode between these two codecs, and send the audio data to BBB-Voice for repackaging and delivery to those Flash clients that are using Flash audio (Flash clients needn't use Flash audio, but can now use WebRTC audio).
  
 
*[https://www.meteor.com/ Meteor.js] on [http://nodejs.org/ Node.js]: Node.js is JavaScript environment which is not a web browser. This is the server to which HTML5 clients connect. It communicates with Red5 through Redis.
 
*[https://www.meteor.com/ Meteor.js] on [http://nodejs.org/ Node.js]: Node.js is JavaScript environment which is not a web browser. This is the server to which HTML5 clients connect. It communicates with Red5 through Redis.
 +
 +
*[http://nginx.org/ Nginx] (pronounced "engine-x"): used as a reverse proxy, to forward HTTP requests to other applications on a BigBlueButton server, depending on the structure of the URL.
  
 
==BigBlueButton Development==
 
==BigBlueButton Development==
Line 58: Line 65:
 
===For New Developers: Getting started on BBB===
 
===For New Developers: Getting started on BBB===
  
'' <span style="color: red;">***Under construction: write something here!!***</span>''
+
If you would like to start voluteering or working for CDOT, please read these step by step instructions for setting up your environment, as well as a tutorial for how to create a react component within BigBlueButton: [https://docs.google.com/document/d/1_ujOMX1AvODRsEkg54GFrknNKL4Ld78jCSpd9gUHImk/edit?usp=sharing Starting at BBB]
 +
 
 +
To read the documentation about BigBlueButton written for Employees of Blindside Networks, visit this link: [http://docs.bigbluebutton.org/ BlindSide Networks BBB documentation]
 +
 
 +
First, you will likely want to subscribe to the following BigBlueButton mailing-lists:
 +
 
 +
*http://groups.google.com/group/bigbluebutton-dev
 +
*http://groups.google.com/group/bigbluebutton-setup
 +
*http://groups.google.com/group/bigbluebutton-users
 +
 
 +
Next, since all of the source code for BigBlueButton is hosted on GitHub, you should try to gain a rudimentary understanding of how to use Git. Nothing too fancy, but at the very least, you should know how to clone repositories, create and navigate local branches, add files to the staging area, commit staged files, pull changes from remote repositories, push your changes to remote repositories, and submit pull requests. If you get stuck, or get some weird error message, usually you can [http://www.google.ca Google] the message and read forum posts or [http://stackoverflow.com/ Stack Overflow] answers, as other people have likely encountered the exact same issue before. Some good Git resources include:
 +
 
 +
*[http://git-scm.com/book A free online book] - The first three chapters should be sufficient
 +
*[https://try.github.io/levels/1/challenges/1 A cute interactive tutorial]
 +
*[http://chadpilkey.wordpress.com/2013/05/08/making-a-change-to-bigbluebutton-with-git/ A blog post from Chad Pilkey,] on the usual git work flow used by BigBlueButton developers
 +
 
 +
After that, the resources you will need will depend on which parts of BigBlueButton you want to develop.
 +
 
 +
For the steps on setting up a BigBlueButton version 1.0 development environment for the server, and for the Flash client, see http://docs.bigbluebutton.org/install/setup.html.
 +
 
 +
For the steps on setting up a development environment for the HTML5 client, see http://docs.bigbluebutton.org/html/html5-dev.html
 +
 
 +
For the steps on setting up a development environment for the mobile client, see http://docs.bigbluebutton.org/dev/client-configuration.html#phone-module
 +
 
 +
As of September 2014, the most important component of BigBlueButton that has yet to be implemented is the video module for the HTML5 client. This is because there is no suitable WebRTC live video streaming server that BigBlueButton can use. The way the Flash client does this, is by capturing webcam media, encoding it in H.264, and streaming it to BigBlueButton-Video using the RTMP protocol. BigBlueButton-video is Flash based, and can handle the re-streaming of this video stream to the other Flash clients. The HTML5 client does not use Flash, but instead uses WebRTC to capture and stream media. The philosophy of WebRTC is to use completely open and non-proprietary codecs and protocols, and both the RTMP protocol, and the H.264 video codec are proprietary. The most widely used WebRTC video codec is VP8. What BigBlueButton needs is something that can re-stream this video stream to all HTML5 clients, and something that can transcode between VP8 and H.264 so that the different clients (HTML5 and Flash based) can share video between them.
  
 
==BigBlueButton at Seneca CDOT==
 
==BigBlueButton at Seneca CDOT==
Line 66: Line 97:
 
=====HTML5 Client=====
 
=====HTML5 Client=====
  
With mobile devices dropping Flash support, and HTML5 rising to replace Flash on the web, we are looking into adapting BigBlueButton to an HTML5 and JavaScript application. The first step in this is to develop an HTML5 client that can participate in an existing meeting (where the presenter is using the Flash client) at the most basic level. As of autumn 2014, the only core component missing is the video module. This is because, as of yet, there is no suitable WebRTC based video streaming media server (see the architecture section above for more details on this).
+
With mobile devices dropping Flash support, and HTML5 rising to replace Flash on the web, we are looking into adapting BigBlueButton to an HTML5 and JavaScript application. The first step in this is to develop an HTML5 client that can participate in an existing meeting (where the presenter is using the Flash client) at the most basic level. As of autumn 2014, the only core component missing is the video module. This is because, as of yet, there is no suitable WebRTC based video streaming media server (see above for more details).
 +
 
 +
In the summer of 2016, Danny Perrone, Matthew Marangoni, Laily Ajellu, Oleksandr Zhurbenko, and Jaeeun Cho, students from Seneca, along with with Anton Georgiev, a co-op student from Carleton university working at Blindside Networks in Ottawa, rewrote the existing HTML5 client, moving it over to the [https://www.meteor.com/ Meteor.js] framework.
  
In the summer of 2014, Danny Perrone, a co-op student from Seneca, along with with Anton Georgiev, a co-op student from Carleton university working at Blindside Networks in Ottawa, rewrote the existing HTML5 client, moving it over to the [https://www.meteor.com/ Meteor.js] framework.
+
=====HTML5 Client and React=====
  
'' <span style="color: red;">***WRITE STUFF HERE!!!***</span>''
+
React is an MVC framework for Javacsript that seamlessly and quickly updates your web app as soon as a change is made to it. 
  
=====Mobile Client=====
+
How? It "diffs the return value from the previous call to render with the new one, and generates a minimal set of changes to be applied to the DOM". 
  
The BigBlueButton mobile client is a mobile application that allows users to participate in a BigBlueButton meeting from their smartphone or tablet. It was started in late 2013 by a team of software developers from [mconf.org/ Mconf]. Beginning in early 2014, the mobile project was taken over by a team of developers at Seneca CDOT. Chad Pilkey, Gary Deng, Stanislav Yeshchenko,  and Adam Sharpe each worked on implementing features, rewriting components, and fixing bugs in the mobile client. In the summer of 2014, we:
+
Read here to find out more about React's features: https://facebook.github.io/react/blog/2013/06/05/why-react.html
  
*[https://github.com/bigbluebutton/bbb-air-client/pull/28 Allowed mobile users to receive and view desktop sharing streams]
+
Find the official docs for React here: https://facebook.github.io/react/
*[https://github.com/bigbluebutton/bbb-air-client/pull/29 Rewrote and upgraded the mobile client to connect with new versions of BigBlueButton]
 
*[https://github.com/bigbluebutton/bbb-air-client/pull/30 Improved the user interface, which was previously minimalistic and did not support tablets very well]
 
*[https://github.com/bigbluebutton/bbb-air-client/pull/36 Added unit testing capabilities and framework]
 
*[https://github.com/bigbluebutton/bbb-air-client/pull/43 Allowed the mobile client to respond to polls and view poll results]
 
*[https://github.com/bigbluebutton/bbb-air-client/pull/44 Rewrote the user interface to conform with the UI designer's specifications]
 
*[https://github.com/bigbluebutton/bbb-air-client/pull/45 Added support for receiving video streams on iOS (previously, video streams would not play on iOS devices as they do not support Adobe AIR very well)]
 
*[https://github.com/bigbluebutton/bbb-air-client/pull/48 Enforced the meeting's lock state (permission settings) on the mobile client]
 
*[https://github.com/bigbluebutton/bbb-air-client/commits/master As well as lots of bug fixes, small improvements and features!]
 
  
 
===Completed/Inactive Projects===
 
===Completed/Inactive Projects===
Line 98: Line 123:
 
=====Accessibility=====
 
=====Accessibility=====
  
'' <span style="color: red;">***WRITE STUFF HERE!!!***</span>''
+
<span>One of the requirements of the BigBlueButton project is for it to be accessible to all users without limitation, which encompasses both direct access (native to the application) and indirect access (compatible with assistive technologies) methods. Accessibility has already been fully implemented in the Flash client and is in development in the HTML5 client. The main accessibility features that were implemented include screen reader support, keyboard navigation, and localization. Since a large portion of the users of this application are students, the content and interface of the application is required to be equally functional for individuals with physical impairments and disabilities. All accessibility features have been implemented in compliance with the [https://www.w3.org/TR/wai-aria-1.1/ ARIA (Accessible Rich Internet Applciations) standards] and [https://www.w3.org/TR/WCAG20/ WCAG (Web Content Accessibility Guidelines)].
 +
 
 +
In regards to screen reader implementation, all text within the application and anything that the user can interact with (including buttons, menu's, and more) have a description which is interpreted by the screen reader and read out to the user to give meaning to the things they cannot see. Keyboard navigation and keyboard shortcuts have also been implemented to assist users with vision impairment so that they can still navigate through the entire application without having to see it on a screen.
 +
 
 +
For international students or users of the application whose first language is not english, localization has been implemented to support the user's native language, with a wide variety of languages to choose from. These language localizations are constantly being improved and updated by the community as the application develops further.</span>
 +
 
 +
=====Creating the Mobile Client=====
 +
 
 +
The BigBlueButton mobile client is a mobile application that allows users to participate in a BigBlueButton meeting from their smartphone or tablet. It was started in late 2013 by a team of software developers from [http://mconf.org/ Mconf]. Beginning in early 2014, the mobile project was taken over by a team of developers at Seneca CDOT.
 +
 
  
 
===CDOT BigBlueButton Contributors===
 
===CDOT BigBlueButton Contributors===
  
[[File:Bbbteam20122.png|thumb|right|350px|From left to right: Justin, Fardad, and Chad]]
+
[[File:Bbbteam2016Fall.jpg|thumb|right|400px|From left to right: Kert, Oleksandr, Fardad, Laily, Chad, Jaeeun, Danny, Matthew]]
  
 
====Current====
 
====Current====
Line 108: Line 142:
 
*[http://zenit.senecac.on.ca/wiki/index.php/User:fardad Fardad Soleimanloo] - Project Supervisor
 
*[http://zenit.senecac.on.ca/wiki/index.php/User:fardad Fardad Soleimanloo] - Project Supervisor
 
*[http://zenit.senecac.on.ca/wiki/index.php/User:capilkey Chad Pilkey] - Developer
 
*[http://zenit.senecac.on.ca/wiki/index.php/User:capilkey Chad Pilkey] - Developer
 +
*[http://zenit.senecac.on.ca/wiki/index.php/User:Danny_Perrone Danny Perrone] - Developer
 +
*[http://zenit.senecac.on.ca/wiki/index.php/User:Oleksandr_Zhurbenko Oleksandr Zhurbenko] - Developer
 +
*[http://zenit.senecac.on.ca/wiki/index.php/User:Laily_Ajellu Laily Ajellu] - Developer
 +
*[https://wiki.cdot.senecacollege.ca/wiki/User:Mmarangoni Matthew Marangoni] - Developer
 +
*[https://wiki.cdot.senecacollege.ca/wiki/User:Jaeeun.cho Jaeeun Cho] - Developer
 +
*[http://zenit.senecac.on.ca/wiki/index.php/User:KBrowne Kert Browne] - Developer
 +
 +
====Previous====
 
*[http://zenit.senecac.on.ca/wiki/index.php/User:Gary Gary (Xinggui) Deng] - Developer
 
*[http://zenit.senecac.on.ca/wiki/index.php/User:Gary Gary (Xinggui) Deng] - Developer
 
*[http://zenit.senecac.on.ca/wiki/index.php/User:Stanislav_Yeshchenko Stanislav Yeshchenko] - Developer
 
*[http://zenit.senecac.on.ca/wiki/index.php/User:Stanislav_Yeshchenko Stanislav Yeshchenko] - Developer
 
*[http://zenit.senecac.on.ca/wiki/index.php/User:Adam_Nicholas_Sharpe Adam Sharpe] - Developer
 
*[http://zenit.senecac.on.ca/wiki/index.php/User:Adam_Nicholas_Sharpe Adam Sharpe] - Developer
*[http://zenit.senecac.on.ca/wiki/index.php/User:Danny_Perrone Danny Perrone] - Developer
 
 
====Previous====
 
 
 
*[http://zenit.senecac.on.ca/wiki/index.php/User:aspektors Anatoly Spektor] - Developer
 
*[http://zenit.senecac.on.ca/wiki/index.php/User:aspektors Anatoly Spektor] - Developer
 
*[http://zenit.senecac.on.ca/wiki/index.php/User:JTRobinson Justin Robinson] - Developer
 
*[http://zenit.senecac.on.ca/wiki/index.php/User:JTRobinson Justin Robinson] - Developer
Line 121: Line 159:
 
*[http://zenit.senecac.on.ca/wiki/index.php/User:Dkarp Dale Karp] - Developer
 
*[http://zenit.senecac.on.ca/wiki/index.php/User:Dkarp Dale Karp] - Developer
 
*[http://zenit.senecac.on.ca/wiki/index.php/User:Bo_Li Bo Li] - Developer
 
*[http://zenit.senecac.on.ca/wiki/index.php/User:Bo_Li Bo Li] - Developer
 +
*[http://zenit.senecac.on.ca/wiki/index.php/User:Maxim_Khlobystov Maxim Khlobystov] - Developer
  
 
==Resources==
 
==Resources==
  
*[http://142.204.133.24/ CDOT Development Server 1 (often offline)]'''
+
*[http://docs.bigbluebutton.org/ The Official BigBlueButton documentation]
*[http://bbbdev1.googool.com/ CDOT Development Server 2 (often offline)]'''
+
*[http://zenit.senecac.on.ca/wiki/index.php/BigBlueButtonOldLinks Old links]
*[http://bbbdev0.googool.com/ CDOT Development Server 3 (often offline)]'''
 
 
 
==== Source Code Repositories ====
 
 
 
*[https://github.com/myprogrammingblog/polling-module Polling Module Repo]'''
 
*[https://github.com/bigbluebutton BigBlueButton Repo]'''
 
*[https://github.com/jtrobinson/bigbluebutton BigBlueButton + Polling Module]'''
 
*[https://github.com/jtrobinson/Seneca-BBB-LDAP-work Seneca BBB LDAP Portal]'''
 
 
 
==== GitHub Help ====
 
*[http://help.github.com/linux-set-up-git/ Setting Up Github (SSH Keys)]'''
 
*[http://myprogrammingblog.com/2012/01/20/github-how-clone-github-repo-how-to-push-to-github-how-to-get-files-from-github-ubuntu/  GitHub tutorial - how to push, git, commit, pull and checkout]'''
 
 
 
==== Documentation ====
 
 
 
*[http://groups.google.com/group/bigbluebutton-dev BigBlueButton Developer Forum]'''
 
*[http://groups.google.com/group/bigbluebutton-setup BigBlueButton Setup Support Forum]'''
 
*[http://code.google.com/p/bigbluebutton/wiki/PollingModule Polling Module wiki page]'''
 
*[http://myprogrammingblog.com/category/project-bbb/ Blog About BBB ]'''
 
 
 
==== Redis Database Documentation ====
 
 
 
*[http://www.jarvana.com/jarvana/view/redis/clients/jedis/1.3.1/jedis-1.3.1-javadoc.jar!/redis/clients/jedis/Jedis.html Jedis (Redis Java library) Documentation] '''
 
*[http://redis.io/commands Redis Database Command List ]'''
 
 
 
==== Red5 server Documentation ====
 
 
 
*[http://trac.red5.org/wiki/Documentation red5 documentation]'''
 

Latest revision as of 11:35, 2 November 2016

***Page is currently under construction***

BigBlueButton Overview

What is BigBlueButton?

BigBlueButton is a free and open source web conferencing system, primarily targeted towards online lecturing by providing a virtual classroom environment, and tools for small group collaboration. However, BigBlueButton is by no means limited to classroom settings and small groups; it just means that the core features and components of BigBlueButton were developed with this target demographic in mind. The BigBlueButton name comes from the notion that starting a web conference should be as simple as pressing a metaphorical big blue button.

Who Develops BigBlueButton?

BigBlueButton was started in 2007 by Richard Alam, who at the time was a Master's student at Carleton University. Since then, many other individuals and organizations have become involved. The core team of developers come from Blindside Networks and Seneca CDOT.

What Features Does BigBlueButton Have?

BigBlueButton contains a set of components, called "modules", each containing a bunch of features. Such modules and features include:

  • The users module, that contains and displays the list of users in a meeting, along with their state (whether they are a presenter, moderator or normal viewer, whether they are sharing any media, whether their permissions are restricted in some way, etc..).
  • The video module, where people in a meeting can share their webcam to be viewed by everyone else in the meeting.
  • The audio module, that allows people in a meetings to share their microphone and speak to everyone else in the meeting.
  • The desktop sharing module, that allows the presenter in a meeting to have other users in a meeting view what they are doing on their screen.
  • The chat module, that allows users to broadcast chat messages to everybody in the meeting (public chat), or to send chat messages only to a specific user (private chat).
  • The presentation module, that allows the presenter of a meeting to upload documents (a PowerPoint presentation or PDF, for example) to be viewed by everyone else in the meeting.
  • The whiteboard module, that gives the presenter the ability to manipulate a canvass overlaid on top of the presentation window, allowing them to write, draw shapes, and insert text onto the virtual whiteboard.
  • The polling module, which allows a presenter to query participants, letting them vote on questions asked, and to view the results.
  • Lock Settings, which allow moderators of a meeting to restrict some users' access of the modules. For example, a moderator can disable webcam sharing, or chatting between participants.

Try out BigBlueButton for yourself at http://demo.bigbluebutton.org/! Just enter any user name in, and play around with it!

BigBlueButton Architecture

Background Information

BigBlueButton was initially a Flash application. The server, written in Java (now moving to Scala), sat on a Flash media server called Red5, and the main client was a Flash web application (the "Flash client") that was downloaded by the browser upon joining a BigBlueButton meeting. As a Flash application, this meant that users had to install a Flash Player into their web browser in order for them to use it (like old YouTube videos). Though the main BigBlueButton client is still Flash based, all of the new features that HTML5 requires browsers to be able to support natively (without having to install plug-ins) allowed developers to begin work on a second client for BigBlueButton, that used only the built-in capabilities of web browsers (the "HTML5 client"). Additionally, around late 2013, development began on a cross-platform mobile application for Android and iOS that allowed people to join a BigBlueButton meeting from mobile devices (the "mobile client"). Both the HTML5 client and the mobile client are still under development.

Server-side

See this for a recent overview of BigBlueButton's server-side architecture. Behind the scenes, the BigBlueButton server uses the following technologies:

  • Red5: a Flash Media Server, with "room management" (a Red5 room corresponds to a BigBlueButton meeting) allowing easy handling of message sending and streaming to only those users who connected to a specific room. Red5 holds the following BigBlueButton components:
    • BigBlueButton-Apps: this IS BigBlueButton :) It holds the master state of all meetings on that server
    • BigBlueButton-Video: the video application, which sends webcam streams from one user to all the others connected to that meeting and using Flash video.
    • BigBlueButton-Voice: the audio application, which sends audio streams from one user to all the others connected to that meeting and using Flash audio. In order to send the audio data to clients using WebRTC audio (the HTML5 client, and now Flash clients have the option of using WebRTC audio if their web browser supports it), BBB-Voice connects each Flash client using Flash audio to FreeSwitch (see below), and sends the audio data to FreeSwitch which transcodes the audio data to a format that clients using WebRTC can use.
    • BigBlueButton-Desktop: the desktop sharing application.
  • BigBlueButton-Web running on Grails and Tomcat: BigBlueButton's web API, allowing programmers to create meetings, join meetings, get configurations for a meeting, get information to set the state of the client when joining a meeting, to use the presentation services for uploading presentations, and to use the recording services to record meetings.
  • Redis: a key-value store used by BigBlueButton to communicate between the different server-side components, and to record all of the events of a meeting. Redis provides a publish and subscribe ("pub-sub") messaging system, that allows applications to subscribe to channels, which means every message published to that channel will be received by all subscribers of that channel. Try this interactive Redis tutorial!
  • FreeSwitch: used by BigBlueButton as a VOIP server to manage voice conference calls between WebRTC audio clients, connecting them and streaming their audio data to others in the same conference. Additionally, since Flash Audio and WebRTC audio use different audio codecs (Speex vs Opus), FreeSwitch is used to transcode between these two codecs, and send the audio data to BBB-Voice for repackaging and delivery to those Flash clients that are using Flash audio (Flash clients needn't use Flash audio, but can now use WebRTC audio).
  • Meteor.js on Node.js: Node.js is JavaScript environment which is not a web browser. This is the server to which HTML5 clients connect. It communicates with Red5 through Redis.
  • Nginx (pronounced "engine-x"): used as a reverse proxy, to forward HTTP requests to other applications on a BigBlueButton server, depending on the structure of the URL.

BigBlueButton Development

For New Developers: Getting started on BBB

If you would like to start voluteering or working for CDOT, please read these step by step instructions for setting up your environment, as well as a tutorial for how to create a react component within BigBlueButton: Starting at BBB

To read the documentation about BigBlueButton written for Employees of Blindside Networks, visit this link: BlindSide Networks BBB documentation

First, you will likely want to subscribe to the following BigBlueButton mailing-lists:

Next, since all of the source code for BigBlueButton is hosted on GitHub, you should try to gain a rudimentary understanding of how to use Git. Nothing too fancy, but at the very least, you should know how to clone repositories, create and navigate local branches, add files to the staging area, commit staged files, pull changes from remote repositories, push your changes to remote repositories, and submit pull requests. If you get stuck, or get some weird error message, usually you can Google the message and read forum posts or Stack Overflow answers, as other people have likely encountered the exact same issue before. Some good Git resources include:

After that, the resources you will need will depend on which parts of BigBlueButton you want to develop.

For the steps on setting up a BigBlueButton version 1.0 development environment for the server, and for the Flash client, see http://docs.bigbluebutton.org/install/setup.html.

For the steps on setting up a development environment for the HTML5 client, see http://docs.bigbluebutton.org/html/html5-dev.html

For the steps on setting up a development environment for the mobile client, see http://docs.bigbluebutton.org/dev/client-configuration.html#phone-module

As of September 2014, the most important component of BigBlueButton that has yet to be implemented is the video module for the HTML5 client. This is because there is no suitable WebRTC live video streaming server that BigBlueButton can use. The way the Flash client does this, is by capturing webcam media, encoding it in H.264, and streaming it to BigBlueButton-Video using the RTMP protocol. BigBlueButton-video is Flash based, and can handle the re-streaming of this video stream to the other Flash clients. The HTML5 client does not use Flash, but instead uses WebRTC to capture and stream media. The philosophy of WebRTC is to use completely open and non-proprietary codecs and protocols, and both the RTMP protocol, and the H.264 video codec are proprietary. The most widely used WebRTC video codec is VP8. What BigBlueButton needs is something that can re-stream this video stream to all HTML5 clients, and something that can transcode between VP8 and H.264 so that the different clients (HTML5 and Flash based) can share video between them.

BigBlueButton at Seneca CDOT

Current Projects

HTML5 Client

With mobile devices dropping Flash support, and HTML5 rising to replace Flash on the web, we are looking into adapting BigBlueButton to an HTML5 and JavaScript application. The first step in this is to develop an HTML5 client that can participate in an existing meeting (where the presenter is using the Flash client) at the most basic level. As of autumn 2014, the only core component missing is the video module. This is because, as of yet, there is no suitable WebRTC based video streaming media server (see above for more details).

In the summer of 2016, Danny Perrone, Matthew Marangoni, Laily Ajellu, Oleksandr Zhurbenko, and Jaeeun Cho, students from Seneca, along with with Anton Georgiev, a co-op student from Carleton university working at Blindside Networks in Ottawa, rewrote the existing HTML5 client, moving it over to the Meteor.js framework.

HTML5 Client and React

React is an MVC framework for Javacsript that seamlessly and quickly updates your web app as soon as a change is made to it.

How? It "diffs the return value from the previous call to render with the new one, and generates a minimal set of changes to be applied to the DOM".

Read here to find out more about React's features: https://facebook.github.io/react/blog/2013/06/05/why-react.html

Find the official docs for React here: https://facebook.github.io/react/

Completed/Inactive Projects

Polling Module

***WRITE STUFF HERE!!!***

Seneca's BigBlueButton Server

***WRITE STUFF HERE!!!***

Accessibility

One of the requirements of the BigBlueButton project is for it to be accessible to all users without limitation, which encompasses both direct access (native to the application) and indirect access (compatible with assistive technologies) methods. Accessibility has already been fully implemented in the Flash client and is in development in the HTML5 client. The main accessibility features that were implemented include screen reader support, keyboard navigation, and localization. Since a large portion of the users of this application are students, the content and interface of the application is required to be equally functional for individuals with physical impairments and disabilities. All accessibility features have been implemented in compliance with the ARIA (Accessible Rich Internet Applciations) standards and WCAG (Web Content Accessibility Guidelines).

In regards to screen reader implementation, all text within the application and anything that the user can interact with (including buttons, menu's, and more) have a description which is interpreted by the screen reader and read out to the user to give meaning to the things they cannot see. Keyboard navigation and keyboard shortcuts have also been implemented to assist users with vision impairment so that they can still navigate through the entire application without having to see it on a screen.

For international students or users of the application whose first language is not english, localization has been implemented to support the user's native language, with a wide variety of languages to choose from. These language localizations are constantly being improved and updated by the community as the application develops further.

Creating the Mobile Client

The BigBlueButton mobile client is a mobile application that allows users to participate in a BigBlueButton meeting from their smartphone or tablet. It was started in late 2013 by a team of software developers from Mconf. Beginning in early 2014, the mobile project was taken over by a team of developers at Seneca CDOT.


CDOT BigBlueButton Contributors

From left to right: Kert, Oleksandr, Fardad, Laily, Chad, Jaeeun, Danny, Matthew

Current

Previous

Resources