-
Ghazi Triki authoredGhazi Triki authored
This document provides instructions for developers to setup their environment and work on the upcoming BBB 2.0 (tentative release version).
Install BBB 1.1
Follow the (install instructions)[http://docs.bigbluebutton.org/install/install.html] for 1.1.
Make sure you have a working BBB 1.1 before you proceed with the instructions below.
Setup development environment
Setup your development environment following these (instructions)[http://docs.bigbluebutton.org/dev/setup.html]
Checkout development branch
Checkout the development branch move-java-classes-from-bbb-web-to-bbb-common-web
from this (repository)[https://github.com/ritzalam/bigbluebutton]
Open nine (9) terminal windows so you will dedicate one window for each bbb-component. You can name them client, bbb-apps, apps-common, red5, akka-apps, akka-fsesl, bbb-web, common-web, and messages.
Building the client
On you bbb-client terminal, run the following commands.
cd ~/dev/bigbluebutton/bigbluebutton-client
Build build a specific locale (en_US default)
ant locale -DLOCALE=en_US
To build all locales
ant locales
This will take about 10 minutes (depending on the speed of your computer). Next, let's build the client
ant
This will create a build of the BigBlueButton client in the /home/firstuser/dev/bigbluebutton/bigbluebutton-client/client
directory.
Build BBB Red5 Applications
On your red5 terminal, turn off red5 service
sudo systemctl stop red5
You need to make red5/webapps
writeable. Otherwise, you will get a permission error when you try to deploy into Red5.
sudo chmod -R 777 /usr/share/red5/webapps
Build common-message
On your message terminal, run the following commands. Other components depends on this, so build this first.
cd ~/dev/bigbluebutton/bbb-common-message/
sbt clean
sbt publish
sbt publishLocal
Build bbb-apps
We've split bbb-apps into bbb-apps-common and bigbluebutton-apps. We need to build bbb-apps-common first.
On your apps-common terminal, build the bbb-apps-common component.
cd ~/dev/bigbluebutton/bbb-apps-common/
# Force updating of bbb-commons-message
sbt clean
# Build and share library
sbt publish publishLocal
On your bbb-apps terminal, run the following commands.
cd ~/dev/bigbluebutton/bigbluebutton-apps/
# To make sure the lib folder is clean of old dependencies especially if you've used this
# dev environment for BBB 1.1, delete the contents of the lib directory. You can only to
# do once.
rm lib/*
# Force updating dependencies (bbb-apps-common)
gradle clean
gradle resolveDeps
gradle war deploy
Manually start services
Run Red5
On your red5 terminal, start red5.
cd /usr/share/red5
sudo -u red5 ./red5.sh
Run Akka Apps
On your akka-apps terminal, start akka-apps
cd ~/dev/bigbluebutton/akka-bbb-apps
# To make sure the lib folder is clean of old dependencies especially if you've used this
# dev environment for BBB 1.1, delete the contents of the lib directory. You can only to
# do once.
rm lib_managed/*
# We need to stop the existing packaged akka-apps
sudo systemctl stop bbb-apps-akka
# Now we can run our own
sbt clean
sbt run
Run Akka FSESL App
On your akka-fsesl terminal, start akka-fsesl
cd ~/dev/bigbluebutton/akka-bbb-fsesl
# To make sure the lib folder is clean of old dependencies especially if you've used this
# dev environment for BBB 1.1, delete the contents of the lib directory. You can only to
# do once.
rm lib_managed/*
# We need to stop the existing packaged akka-fsesl
sudo systemctl stop bbb-fsesl-akka
# Now we can run our own
sbt clean
sbt run
Build bbb-web
We've split up bbb-web into bbb-common-web and bigbluebutton-web. We need to build bbb-common-web first.
On your common-web terminal, run these commands
cd ~/dev/bigbluebutton/bbb-common-web/
# To make sure the lib folder is clean of old dependencies especially if you've used this
# dev environment for BBB 1.1, delete the contents of the lib directory. You can only to
# do once.
rm lib_managed/*
# Force updating of dependencies especially bbb-commons-message
sbt clean
sbt publish publishLocal
Run bbb-web
First we need to remove the old bbb-web
app from tomcat to avoid duplicate messages
sudo cp /var/lib/tomcat7/webapps/bigbluebutton.war /var/lib/tomcat7/webapps/bigbluebutton.war-packaged
sudo rm -r /var/lib/tomcat7/webapps/bigbluebutton
On your bbb-web terminal, start bbb-web
cd ~/dev/bigbluebutton/bigbluebutton-web
Get the salt and BBB URL from /var/lib/tomcat7/webapps/demo/bbb_api_conf.jsp
Edit grails-app/conf/bigbluebutton.properties
and change the following with
the salt and IP you got from above.
bigbluebutton.web.serverURL=http://192.168.74.128
securitySalt=856d5e0197b1aa0cf79897841142a5f6
Start bbb-web
# To make sure the lib folder is clean of old dependencies especially if you've used this
# dev environment for BBB 1.1, delete the contents of the lib directory. You can only to
# do once.
rm lib/*
gradle clean
gradle resolveDeps
grails clean
sudo chmod -R ugo+rwx /var/log/bigbluebutton
grails -Dserver.port=8888 run-war
If things started without errors, congrats!
Converting and Adding new messages
In bigbluebutton-apps, from InMessages.scala choose the message to convert.
case class UserShareWebcam(meetingID: String, userId: String, stream: String) extends InMessage
In bbb-apps-common, add new message in BbbCoreEnvelope.scala
object UserShareWebcamMsg { val NAME = "UserShareWebcamMsg" }
case class UserShareWebcamMsg(header: BbbClientMsgHeader, body: UserShareWebcamMsgBody)
Define UserShareWebcamMsgBody
in MessageBody.scala
case class UserShareWebcamMsgBody(userId: String, stream: String)
From the client, send message as
{
"header": {
"name": "UserShareWebcamMsg",
"meetingId": "foo-meetingId",
"userId": "bar-userId"
},
"body": {
"streamId": "my-webcam-stream"
}
}
In ReceivedJsonMsgHandlerActor, deserialize the message with implementation in ReceivedJsonMsgDeserializer.
case UserShareWebcamMsg.NAME =>
for {
m <- routeUserShareWebcamMsg(jsonNode)
} yield {
send(envelope, m)
}
Route the message in ReceivedMessageRouter.