Open main menu

CDOT Wiki β

Changes

BigBlueButton

3,309 bytes added, 15:30, 2 September 2014
no edit summary
===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 by providing a virtual classroom environment for instructors to teach, and for students to collaborate in small groupsgroup 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 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], [http://cdot.senecacollege.ca/ Seneca CDOT], and [http://http://mconf.org/m/ Mconf]. BigBlueButton contains a set of components, called "modules", each containing a bunch of features. Such modules include 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..).
*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 for yourselfwith 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 clientapplication, 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 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===
Behind the scenes, the BigBlueButton server uses the following frameworks, 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:
*[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 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).
*[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==
'' <span style="color: red;">***Under construction: write something here!!***</span>''
 
All of the source code for BigBlueButton is hosted on GitHub. This means that one of the first things you should do before contributing, is 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 0.90 development environment for the server, and for the Flash client, see https://code.google.com/p/bigbluebutton/wiki/090Developing.
 
For the steps on setting up a development environment for the HTML5 client, see: <span style="color: red;">***Under construction: write something here!!***</span>
 
For the steps on setting up a development environment for the mobile client, see: <span style="color: red;">***Under construction: write something here!!***</span>
 
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==
=====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. 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:
*[https://github.com/bigbluebutton/bbb-air-client/pull/28 Allowed mobile users to receive and view desktop sharing streams]