Navigation Menu

Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bigbluebutton: init at 2.2.2 #83072

Closed
wants to merge 1 commit into from

Conversation

jluttine
Copy link
Member

Motivation for this change

Add BigBlueButton package and NixOS service. Fixes #82737 .

BigBlueButton is a web conferencing system designed for online learning: https://github.com/bigbluebutton/bigbluebutton

NOTE: This is just a draft PR at the moment. It looks like it's going to be a massive effort to actually package this. I wanted to open a draft PR so that a) people know that someone is working on this, b) others can join and help, c) discussion and questions can be had on this PR.

Things done
  • Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
  • Built on platform(s)
    • NixOS
    • macOS
    • other Linux distributions
  • Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
  • Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
  • Tested execution of all binary files (usually in ./result/bin/)
  • Determined the impact on package closure size (by running nix path-info -S before and after)
  • Ensured that relevant documentation is up to date
  • Fits CONTRIBUTING.md.

@jluttine
Copy link
Member Author

I couldn't find any good instructions on how to actually build the beast from source. Perhaps this script is somewhat useful: https://github.com/bigbluebutton/bigbluebutton/blob/develop/bbb.sh

I couldn't find any packaging for this in Debian/Ubuntu nor Arch/AUR, so no help from there. If I understood correctly, the official installation instruction are just about using their own pre-built binary and then setting up all the stuff on the server to make it work: https://docs.bigbluebutton.org/2.2/install.html So there are no instructions on building from source.

I suppose it uses gradle at least for some components. Not quite sure how to handle that..

Any help, comments and ideas how to package this are very much appreciated.

@nixos-discourse
Copy link

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:

https://discourse.nixos.org/t/package-services-for-schools-covidsupport/6335/11

@nixos-discourse
Copy link

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:

https://discourse.nixos.org/t/package-services-for-schools-covidsupport/6335/1

@KoviRobi
Copy link
Contributor

Also worth looking at https://docs.bigbluebutton.org/2.2/install.html; also it's worth asking the developers, they might be helpful, I'll do that now :)

@flokli
Copy link
Contributor

flokli commented Mar 30, 2020

This fails to build, as gradle tries to download things from the internet:

Here are the highlights of this release:
 - Incremental Groovy compilation
 - Groovy compile avoidance
 - Test fixtures for Java projects
 - Manage plugin versions via settings script

For more details see https://docs.gradle.org/5.6.4/release-notes.html

Starting a Gradle Daemon (subsequent builds will be faster)
> Task :resolveDeps FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':resolveDeps'.
> Could not resolve all files for configuration ':default'.
   > Could not resolve aopalliance:aopalliance:1.0.
     Required by:
         project :
      > No cached version of aopalliance:aopalliance:1.0 available for offline mode.
   > Could not resolve org.easymock:easymock:3.6.
     Required by:
         project :
      > No cached version of org.easymock:easymock:3.6 available for offline mode.
   > Could not resolve org.apache.commons:commons-pool2:2.6.0.
     Required by:
         project :
      > No cached version of org.apache.commons:commons-pool2:2.6.0 available for offline mode.
   > Could not resolve com.google.code.gson:gson:2.8.5.
     Required by:
         project :
      > No cached version of com.google.code.gson:gson:2.8.5 available for offline mode.
   > Could not resolve org.bigbluebutton:bbb-common-message_2.12:0.0.20-SNAPSHOT.
     Required by:
         project :
      > No cached version of org.bigbluebutton:bbb-common-message_2.12:0.0.20-SNAPSHOT available for offline mode.
   > Could not resolve org.bigbluebutton:bbb-apps-common_2.12:0.0.4-SNAPSHOT.
     Required by:
         project :
      > No cached version of org.bigbluebutton:bbb-apps-common_2.12:0.0.4-SNAPSHOT available for offline mode.
   > Could not resolve javax.servlet:servlet-api:2.5.
     Required by:
         project :
      > No cached version of javax.servlet:servlet-api:2.5 available for offline mode.
   > Could not resolve org.apache.mina:mina-core:2.0.19.
     Required by:
         project :
      > No cached version of org.apache.mina:mina-core:2.0.19 available for offline mode.
   > Could not resolve org.apache.mina:mina-integration-beans:2.0.19.
     Required by:
         project :
      > No cached version of org.apache.mina:mina-integration-beans:2.0.19 available for offline mode.
   > Could not resolve org.apache.mina:mina-integration-jmx:2.0.19.
     Required by:
         project :
      > No cached version of org.apache.mina:mina-integration-jmx:2.0.19 available for offline mode.
   > Could not resolve org.springframework:spring-web:4.3.12.RELEASE.
     Required by:
         project :
      > No cached version of org.springframework:spring-web:4.3.12.RELEASE available for offline mode.
   > Could not resolve org.springframework:spring-beans:4.3.12.RELEASE.
     Required by:
         project :
      > No cached version of org.springframework:spring-beans:4.3.12.RELEASE available for offline mode.
   > Could not resolve org.springframework:spring-context:4.3.12.RELEASE.
     Required by:
         project :
      > No cached version of org.springframework:spring-context:4.3.12.RELEASE available for offline mode.
   > Could not resolve org.springframework:spring-core:4.3.12.RELEASE.
     Required by:
         project :
      > No cached version of org.springframework:spring-core:4.3.12.RELEASE available for offline mode.
   > Could not resolve ch.qos.logback:logback-core:1.2.3.
     Required by:
         project :
      > No cached version of ch.qos.logback:logback-core:1.2.3 available for offline mode.
   > Could not resolve ch.qos.logback:logback-classic:1.2.3.
     Required by:
         project :
      > No cached version of ch.qos.logback:logback-classic:1.2.3 available for offline mode.
   > Could not resolve org.slf4j:log4j-over-slf4j:1.7.25.
     Required by:
         project :
      > No cached version of org.slf4j:log4j-over-slf4j:1.7.25 available for offline mode.
   > Could not resolve org.slf4j:jcl-over-slf4j:1.7.25.
     Required by:
         project :
      > No cached version of org.slf4j:jcl-over-slf4j:1.7.25 available for offline mode.
   > Could not resolve org.slf4j:jul-to-slf4j:1.7.25.
     Required by:
         project :
      > No cached version of org.slf4j:jul-to-slf4j:1.7.25 available for offline mode.
   > Could not resolve org.springframework:spring-aop:4.3.12.RELEASE.
     Required by:
         project :
      > No cached version of org.springframework:spring-aop:4.3.12.RELEASE available for offline mode.
   > Could not resolve org.apache.commons:commons-lang3:3.7.
     Required by:
         project :
      > No cached version of org.apache.commons:commons-lang3:3.7 available for offline mode.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 3s
1 actionable task: 1 executed
builder for '/nix/store/5vmqycfcy0fg294wggwm3n8837jhsfdm-bigbluebutton-2.2.2.drv' failed with exit code 1

One (ugly) way around it might be a fixed-output derivation (given gradle's output is stable) - see mxisd for some inspiration.

@dasJ
Copy link
Member

dasJ commented Apr 2, 2020

Okay, so today I tried looking at packaging myself by installing BBB into an Ubuntu 16.04 (it's what they recommend) VM.
So what's now running is:

  • haveged
  • nginx
  • Some NodeJS services
  • MongoDB
  • Etherpad
  • Some Tomcat/Spring/whatever Java services
    • Audio
    • Video
    • Screensharing
    • MCS
  • Libreoffice
  • Kurento Media Server
  • Red5
  • Some transcoder
  • Freeswitch
  • Redis

Also the webinterface only comes as Docker compose image and consists of:

  • Rails Puma
  • PostgreSQL

All (or probably most) of these components need some nixpkgs integration :/

@KoviRobi
Copy link
Contributor

KoviRobi commented Apr 3, 2020

I wonder if Apache OpenMeetings might be simpler to package? It seems to cater for a similar purpose

@samrose
Copy link
Contributor

samrose commented Apr 9, 2020

@samrose
Copy link
Contributor

samrose commented Apr 9, 2020

@samrose
Copy link
Contributor

samrose commented Apr 9, 2020

This fails to build, as gradle tries to download things from the internet:

Elsewhere I found work on gradle2nix
#17342
#77422
https://github.com/tadfisher/gradle2nix

So noting that here for reference

@ajs124
Copy link
Member

ajs124 commented Apr 10, 2020

For reference, this is our current greenlight package, which uses (a version of) dockerignored to filter out some stuff, but you can probably get away without doing that.
We're still looking into packaging other parts of bbb.

@jorsn
Copy link
Member

jorsn commented Apr 20, 2020

This fails to build, as gradle tries to download things from the internet:

The sbt builds of e.g. bbb-common-message are equally scary to me. When I tried, sbt didn't even find itself, and I haven't understood the black magic in Sbtix so far. EDIT: It seems to pin the sbt dependencies, that's good, but it uses a cache in my home directory. This should probably be done in the Nix store.

@ajs124
Copy link
Member

ajs124 commented Apr 20, 2020

mvn2nix also chokes on kurento, because of NixOS/mvn2nix-maven-plugin#15.

I couldn't get bbb-html5 to work with node2nix, because of fibers, but didn't spend that much time on that.

@Rizary
Copy link
Contributor

Rizary commented May 9, 2020

After digging a little bit about bbb (planning to use it in one of non-profits org) it seems there are so many configuration that need to be inserted as option in the default.nix.

and if it is similar to jitsi, do you think we need to move the folder into nixpkgs/pkgs/applications/networking/instant-messengers/ ?

@lheckemann
Copy link
Member

@Rizary jitsi (jitsi desktop) is not to be confused with jitsi meet, the latter of which is more similar to bbb.

@Rizary
Copy link
Contributor

Rizary commented Jun 2, 2020

@lheckemann I just realize that there are jitsi (desktop), and jitsi-meet-electron(also desktop). thank you for the correction.

@dasJ dasJ mentioned this pull request Jun 7, 2020
10 tasks
@yugawara
Copy link

yugawara commented Jul 5, 2020

I am interested in taking on this work, too!

@nixos-discourse
Copy link

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:

https://discourse.nixos.org/t/is-there-any-regular-casual-nixos-online-meeting/7806/23

@ajs124
Copy link
Member

ajs124 commented Sep 9, 2020

I'm going to close this for the following reasons:

  • we have packaged this and written modules for this here: https://github.com/helsinki-systems/bbb4nix
  • as you can see, it's several thousand lines of packages and modules
  • I'm convinced this software cannot be packaged to a standard fit for nixpkgs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Packaging request: BigBlueButton