BigBlueButton 1.0

    This document covers the new capabilities in BigBlueButton 1.0. Our goal for this release was to increase interactivity between the teacher and students with three new features:

    • Polling (see 1586)
    • Improved Video Doc (see 2790)
    • Emote Icons (see 2791)

    As with every release, we’ve refactored components to improve stability:

    • Refactoring of message passing bbb-apps (see 2684)
    • Automatic reconnect of client (see 1634)

    We’ve added enhancements for developers/administrators as well, which include

    • Deskshare TLS over Stunnel (see 2792)
    • API Updates (see 2793)
    • Puffin Browser detection (see 3138)

    We’ve also updated the build scripts to work with servers that have HTTPS installed.

    Welcome to BigBlueButton 1.0. We hope you enjoy this release.

    Features

    Polling

    We designed polling based on the following user story:

    As an instructor I want to easily poll my students to increase their engagement and use the results help teach key concepts.

    We focused our efforts on the word ‘easy’. We wanted to make easy for the instructor to initiate a poll, see the incoming results live, and publish them for students.

    In looking at many lectures, we observed that the current slide provides the context for discussion and, in many cases, the context for a poll-type question. Consider the following slide:

    Context

    It would be natural for the instructor to ask students “What do you think is the answer?” and initiate a poll (ideally using a single click). Polling in BigBlueButton offers three types of interactions:

    1. Pre-configured choices
    2. Smart Polling
    3. Custom Choices

    Pre-configured choices

    The presenter can initiate a poll at anytime. To initiate a poll, the presenter clicks the polling button (located in the lower left of the Presentation window) and chooses from a list of pre-defined questions.

    Pre-defined

    When the presenter initiates a poll, the Live Results dialog box appears showing the incoming results in real-time.

    Live Results

    At any point in watching the Live Results, the presenter can close the dialog (this ends the poll) or click ‘Publish’ to close the poll and publish the current results as a whiteboard annotation to the current slide.

    Publish

    Like any annotation, the presenter can zoom into, further annotate them with the whiteboard tools (maybe call attention to one of the results), and clear the published results with whiteboard ‘x’ clear button. If the user has accessibility options enabled in their operating system, the BigBlueButton client will also publish the polling results to the chat so it can be picked up by a screen reader.

    From the user’s perspective, when the presenter initiates a poll they will hear a soft beep and see the poll choices appear under the slide.

    Response

    This way users can still read the contents of the slide and respond with a single click.

    Polling is anonymous. When the Live Results dialog is open, the presenter may see ‘12/14’ responses and keep waiting until the remaining two uses respond. However, if they are away from their keyboard they will not. If the presenter wanted to identify which users are at their keyboard, they could ask all students to raise their had, which is not anonymous. The two users who do not raise their hand are away from the keyboard.

    Any published poll results will appear in the recordings.

    Response

    Smart Polling

    Let’s look again at the sample slide.

    Context

    Notice it follows the pattern of a statement followed by options prefixed with ‘A.’, ‘B.’, and ‘C.’. You’ll get the same pattern using PowerPoint, KeyNote, Libre Office, Google Slides, or any presentation software to create an alphabetically numbered outline.

    BigBlueButton client recognizes this pattern and, if found, will present the instructor a Smart Poll button with the matching pre-defined choice. This enables the instructor to initiate a poll based on the content in the slide with a single click.

    Response

    The BigBlueButton client also scans for the text ‘true/false’ and ‘false/true’ in the slide and, if found, put a Smart Poll button for ‘True/False’.

    Response

    In a similar manner, it will scan for the text ‘yes/no’ and ‘no/yes’ and, if found, put a Smart Poll button for ‘Yes/No’.

    Response

    In this way, the presenter can put a set of polling questions in their slides so during their lecture they can quickly and easily poll the students with a single click per slide.

    Custom Choices

    Polling does not require the presenter to upload slides. The presenter can poll the students anytime. The pre-set choices for ‘Yes/No’ are good examples. The presenter can also enter their own polling choices (up to six) for a custom poll.

    Custom Choices

    Just as before, when the presenter clicks ‘Start Poll’ the range of choices will appear for students underneath the current slide.

    Custom Choices

    As before, the presenter can watch the incoming Live Results and publish them to the slide.

    If a user has the accessibility options enabled in their OS, the BigBlueButton client will also print the poll results to the chat so it can be picked up by a screen reader.

    Accessible Poll Results

    Improved Video Dock

    We removed the borders from the webcam videos so to give the maximum amount of space to the videos. Here’s an example of four webcams

    Webcam 1

    The videos will flow to make the maximum use of space. Here’s how the videos flow into a horizontal window.

    Webcam 2

    Here are eight webcams being shared and one has been clicked on to make it larger than others.

    Webcam 3

    When the user shares their video, the resolution options seen in the drop-down menu are now defined in a separate configuration file profiles.xml.

    Emote Icons

    Sometimes the instructor may want to ask the class “How is everyone feeling about the lecture?”. The addition of emote icons enables students to raise their hand and give feedback to such questions.

    Emote Icons

    The emote icons appear to the left of the user’s name in the Users window.

    Emote Icons

    Stability Improvements

    Refactoring of BigBlueButton apps

    We’ve extracted the core messaging in red5 into two external servers. The messaging for bbb-apps now goes through bbb-akka-apps and the messaging for FreeSWITCH using the Event Socket Layer now goes through bbb-akka-fsesl.

    Akka is a toolkit and runtime for building highly concurrent, distributed, and resilient message-driven applications on the Java Virtual Machine. Using Akka simplified the design of the messaging passing and also exposed all the messages in a session via redis (using pub/sub) integration with other systems.

    Automatic reconnect of the client

    The BigBlueButton client now detects if one of its media connections (i.e. video) drops when the user is connected. If it detects a drop, it will automatically reconnect the user.

    Reconnecting

    This is similar to Skype’s dialog indicating it is reconnecting a user due to network interruption.

    If the user is connected to audio using WebRTC (which is the default audio for FireFox and Chrome), it may stay connected as it uses UDP, in which case the user can still talk with the class while the client automatically reconnects.

    Core Updates

    API Extensions

    We extended the data returned for getMeetings and getMeetingInfo.

    getMeetings

    This release added the following new parameters to the getMeetings API call.

    Response:

    Change Param Name When Returned Type Description
    Added voiceBridge (within <meeting>) Always Number The voice bridge configured when the meeting was created (param voiceBridge).
    Added dialNumber (within <meeting>) Always String The dial number configured when the meeting was created (param dialNumber).
    Added participantCount (within <meeting>) Always Number Number of participants in a meeting. It’s the same participantCount returned in getMeetingInfo.
    Added listenerCount (within <meeting>) Always Number Number of participants listening to a meeting (using the listen only mode). It’s the same listenerCount returned in getMeetingInfo.
    Added voiceParticipantCount (within <meeting>) Always Number Number of participants in the audio conference of a meeting. It’s the same voiceParticipantCount returned in getMeetingInfo.
    Added videoCount (within <meeting>) Always Number Number of participants sharing video in a meeting.

    Example Response:

    <response>
      <returncode>SUCCESS</returncode>
      <meetings>
        <meeting>
          <meetingID>Demo Meeting</meetingID>
          <meetingName>Demo Meeting</meetingName>
          <createTime>1411067830029</createTime>
          <createDate>Thu Sep 18 19:17:10 UTC 2014</createDate>
          <voiceBridge>74518</voiceBridge> <!-- Added -->
          <dialNumber>613-555-1234</dialNumber> <!-- Added -->
          <attendeePW>ap</attendeePW>
          <moderatorPW>mp</moderatorPW>
          <hasBeenForciblyEnded>false</hasBeenForciblyEnded>
          <running>true</running>
          <participantCount>2</participantCount> <!-- Added -->
          <listenerCount>1</listenerCount> <!-- Added -->
          <voiceParticipantCount>1</voiceParticipantCount> <!-- Added -->
          <videoCount>1</videoCount> <!-- Added -->
          <duration>0</duration>
          <hasUserJoined>true</hasUserJoined>
        </meeting>
      </meetings>
    </response>
    

    getMeetingInfo

    This release added the following new parameters to the getMeetingInfo API call. We added a new meta API call to getRecordings to help search for specific recordings.

    Response:

    Change Param Name When Returned Type Description
    Added internalMeetingID Always String The internal identifier of this meeting. Can be used to access a video stream directly from Red5, for example.
    Added listenerCount Always Number Number of participants listening to a meeting (using the listen only mode). It’s the same listenerCount returned in getMeetings.
    Added voiceParticipantCount Always Number Number of participants in the audio conference. It’s the same voiceParticipantCount returned in getMeetings.
    Added videoCount Always Number Number of participants sharing video. It’s the same videoCount returned in getMeetings.
    Added isPresenter (within <attendee>) Always Boolean True if the attendee is the current presenter. There can only be one presenter at a time in a meeting.
    Added isListeningOnly (within <attendee>) Always Boolean True if the attendee is listening to the voice conference using the listen only mode.
    Added hasJoinedVoice (within <attendee>) Always Boolean True if the attendee has joined to the audio conference and shares audio with other attendees.
    Added hasVideo (within <attendee>) Always Boolean True if the attendee is sharing a webcam.

    Example Response:

    <response>
      <returncode>SUCCESS</returncode>
      <meetingName>Demo Meeting</meetingName>
      <meetingID>Demo Meeting</meetingID>
      <internalMeetingID> <!-- Added -->
        183f0bf3a0982a127bdb8161e0c44eb696b3e75c-1411067830029
      </internalMeetingID>
      <createTime>1411067830029</createTime>
      <createDate>Thu Sep 18 19:17:10 UTC 2014</createDate>
      <voiceBridge>74518</voiceBridge>
      <dialNumber>613-555-1234</dialNumber>
      <attendeePW>ap</attendeePW>
      <moderatorPW>mp</moderatorPW>
      <running>true</running>
      <duration>0</duration>
      <hasUserJoined>true</hasUserJoined>
      <recording>false</recording>
      <hasBeenForciblyEnded>false</hasBeenForciblyEnded>
      <startTime>1411067830152</startTime>
      <endTime>0</endTime>
      <participantCount>2</participantCount>
      <listenerCount>1</listenerCount> <!-- Added -->
      <voiceParticipantCount>1</voiceParticipantCount> <!-- Added -->
      <videoCount>1</videoCount> <!-- Added -->
      <maxUsers>20</maxUsers>
      <moderatorCount>1</moderatorCount>
      <attendees>
        <attendee>
          <userID>r4osda8xzlsg</userID>
          <fullName>stu</fullName>
          <role>VIEWER</role>
          <isPresenter>false</isPresenter> <!-- Added -->
          <isListeningOnly>false</isListeningOnly> <!-- Added -->
          <hasJoinedVoice>true</hasJoinedVoice> <!-- Added -->
          <hasVideo>true</hasVideo> <!-- Added -->
          <customdata/>
        </attendee>
        <attendee>
          <userID>jgkgwilgigcf</userID>
          <fullName>mod</fullName>
          <role>MODERATOR</role>
          <isPresenter>true</isPresenter> <!-- Added -->
          <isListeningOnly>true</isListeningOnly> <!-- Added -->
          <hasJoinedVoice>false</hasJoinedVoice> <!-- Added -->
          <hasVideo>false</hasVideo> <!-- Added -->
          <customdata/>
        </attendee>
      </attendees>
      <metadata/>
      <messageKey/>
      <message/>
    </response>
    

    getRecordings

    We added a meta parameter to the getRecordings API call to filter recordings.

    Parameters:

    Change Param Name When Returned Type Description
    Added meta Optional String You can pass one or more metadata values to filter the recordings returned. The format of these parameters is the same as the metadata passed to the create call. For more information see the docs for the create call.

    Example Requests:

    http://yourserver.com/bigbluebutton/api/getRecordings?meta_presenter=joe&meta_category=education&checksum=1234
    

    Miscellaneous

    Updated FreeSWITCH

    We upgraded the version of FreeSWITCH to 1.4.21. This brings in the latest improvements FreeSWITCH has made to supporting WebRTC audio.

    Disable audible notification for new chat message

    BigBlueButton now gives the user an option to enable/disable the new chat notification sounds the ‘Options’ tab in the Chat window.

    Disable New Chat Notifications

    Audio alert when leaving audio

    This helps avoid the case when the user has started desktop sharing, minimized the browser, and subsequently been disconnected (such as due to a drop in network) and are unaware they are no longer broadcasting. When the disconnect occurs from the audio bridge, the BigBlueButton client will immediately emit an audio tone to inform the user they are no longer broadcasting audio.

    Support for Puffin browser

    Puffin Browser supports the latest Flash Engine over the cloud for iPad, iPhone and Android devices. Puffin browser version 4.6 (and later) enables the user to broadcast their webcam and microphone within their iOS device in BigBlueButton.

    The following is a screen shot of BigBlueButton running on an iPad using the Puffin Browser.

    Puffin Browser