diff --git a/README.md b/README.md new file mode 100644 index 0000000000000000000000000000000000000000..7808534503157d8d620bd6dae2491f8af1a8dde8 --- /dev/null +++ b/README.md @@ -0,0 +1,189 @@ + + +PULT is the ULTimate Learning/Teaching Tool +=========================================== + +What is PULT? +------------- + * **PULT is a video platform for learning and teaching.** + + There are a lot of video systems designed for conferencing, + which are commonly used for learning and teaching. + PULT is *designed for* learning and teaching. + + * **PULT is simple.** + + To participate in a lecture you just go to a web page, type your + password, and watch. As a lecturer you have a few buttons to + control whether something becomes full-screen or whether someone + may contribute something. Focus on contents, not on the tool. + + * **PULT is reliable.** + + Even when the network connection isn't the best, you still get + your lecture through. + + * **PULT is 100% Free Software (Open Source).** + + You can run it on your own server for best-possible data + protection and privacy. You can study how it works, adapt + it to your needs, and publish your improvements for everyone + to benefit. Also, there are no licensing fees. + + * **PULT husbands your CPU power and network bandwidth.** + + Neither the server nor the client computers need to be high-end. + PULT can even work when the lecturer's Internet access is rather + slow. + + * **PULT integrates your favourite platform.** + + We didn't reinvent the wheel. When you like Jitsi Meet and you + want to use it to show your face to 120 participants, PULT + makes that possible – in a way which makes it even simpler + for your participants than if they joined Jitsi Meet. + + When you like the shared whiteboard of OpenMeetings, + PULT enables you to present it to a big audience, + where only those who actually write on the whiteboard + need to join and to understand OpenMeetings. + +Okay, more technically, what is PULT? +------------------------------------- +PULT is a collection of small programs, mostly Unix shell scripts. +It provides a console (in German: „Pult“:–) where the lecturer can +select which visual content is offered to the audioence via a web +interface, *noVNC*. These visual contents can be a shared desktop, +a camera view, an uploaded image or screenshot, or some arbitrary +content provided by some other tool via a web interface, for +instance a BigBlueButton presentation or the shared whiteboard of +OpenMeetings. + +PULT itself only handles video. For the audio part it cooperates +with Mumble. + +The virtual “meeting rooms” in PULT are called *channels*. For each +channel, there is one instance of noVNC, showing a virtual desktop, +provided by TigerVNC, to the audience. + +Each channel is controlled by a deamon, *pultd*, a shell script, +which loads the *modules* configured for this channel, also shell +scripts. The pultd takes the role of the window manager for the +channel's virtual desktop; the modules are the application software +running on it. + +For each channel, the lecturer has a web interface with a row of +buttons for each module to start and stop it, to make it fullscreen, +or to take a pre-configured window in the channel. We intentionally +*don't* let the lecturer drag and drop the window with the mouse. +Pressing a button is by far less distracting. + +The audience has, also intentionally, no control over the contents +of the desktop. They just view their channel via noVNC. That way +they can concentrate on the learning content rather than on the +viewing tool. + +Currently we provide the following modules: + + * **VNC** + + The lecturer can share a destkop content via VNC and/or invite + participants to share theirs. + + VNC provides a pixel-correct transmission of the desktop contents + at a reasonable speed, using only moderate CPU resources and + network bandwidth. + + For best performance, we recommand installing a local VNC server. + For a quick solution, we provide *yesVNC*, a VNC server via a web + interface. + + * **CVH-Camera*** + + The lecturer or a participant can place a camera view in the + channel. + + One of the videos provided this way can be transmitted via + the *Janus WebRTC Gateway*. This allows for a high-quality + transmission at a moderate, and adjustable, network bandwidth. + (We are working on making this possible for all camera views.) + + * **Upload** + + The lecturer or a participant can upload an image file or a + screenshot via a web interface. + + * **BBB-Camera** and **JM-Camera** + + The lecturer or a participant can transmit a camera view via + BigBlueButton or Jitsi Meet, which then becomes visible in the + channel. + + * **OM-Board** and **BBB-Board** + + OpenMeetings and BigBlueButton provide shared whiteboards, where + the lecturer and participants can draw and upload presentations. + This module makes these boards visible in the channel. + +Each channel is easily configurable to meet the needs of the +lecturer. One lecturer might want as few buttons as possible, +while another one might prefer to have all modules enabled, just +in case. + +For each configured module, the lecturer's console features a row +of buttons to start and stop the module, and to hide and show its +contents. Modules can also be configured to get an additional +button to make them run in a pre-defined region of the screen +rather than full-screen. For camera modules this is the default. +A typical application is to run a VNC shared desktop full-screen +and to show a camera view of the lecturer at the edge. + +How does this look like in practice? +------------------------------------ +Students S1, S2, ... want to take part in a lecture by lecturer L. +They connect to Mumble for the audio part. For the video part, they +go to the web page of the channel, type in the channel's password, +and see a welcome screen. + +Lecturer L goes to another specific web page, the PULT console. +L presses the buttons labeled “VNC start” and “Camera start”. +L starts the VNC server software and connects to the server. +L's shared desktop appears in the channel. L follows a link +from the PULT console to a separate web page to activate the +camera. The camera view becomes visible in the lower right +corner of the channel. + +For welcoming the students, L presses the button labeled +“Camera max“. The camera view becomes full-screen, hiding +the shared desktop. After the welcoming, L presses “Camera min” +to switch back to the previous screen arrangement. + +Student S1 wants to ask a question. For this purpose, S1 needs +to upload a screenshot. L presses the “Upload start”. The PULT +console displays a URL. L forwards this URL to S1 via the Mumble +chat. S1 follows the link and presses the “Screenshot” button. +S1's screenshot appears in the channel, hiding L's desktop, but +not the camera view. + +While L answers S1's question, L presses “Upload hide” to switch to +L's desktop, and later “Upload show” to switch back to S1's uploaded +screenshot. When the question is answered, L presses “Upload stop”. +S1's screenshot vanishes, we are back to the full-screen view of L's +desktop with a camera view in the corner. + +After a while, S2 wants to share a desktop to discuss some results. +L presses “VNC guest start”. Since S2 does not have a VNC server +installed, L copies a URL from the PULT console to S2 in the Mumble +chat. S2 follows the URL and presses a button. S2's desktop is +presented full-screen in the channel, with L's camera view in the +corner. L decides that the camera view hides important parts of +S2's desktop, and presses “Camera hide”. The camera view vanishes. +After the discussion, L presses “VNC Guest stop”. S2's desktop +vanishes; L's desktop is visible again. + +At the end of the lecture, L presses “Camera max” to make the +camera view full-screen to say goodbye. L presses “Camera stop” +and “VNC stop”. The channel shows a welcome screen again. +To end the session, everyone closes their browser windows. + +[To be continud.]