Giter Club home page Giter Club logo

pitt's People

Contributors

drio avatar mjschranz avatar pbanaszkiewicz avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar

pitt's Issues

Chat

Add chat with these features:

  • chat interface (just like… maybe Facebook?)
  • username (just like Etherpad)
  • username color (just like Etherpad)
  • chat history
  • global chat / small groups chat

Voice-only connections

  • Test voice-only connections
  • improve appearance for this kind of connections
  • fix any state issues if any appear

Echo sound on local stream

Local streams should be muted by default.
(It's a really interesting effect: people who hear themselves are feeling very uncomfortable).

The fix is easy, we just need to make <video src="..." muted="muted"> element for local stream.

Variable room size

Bug: if we split 5 students into pairs, there's one student left alone. We should always join lone students to the last group.

Enhancement: for the next week I want to be able to specify what size groups of students should be.
Minimal size is 2, preferable: no more than 4.

Better media usage visual indication

I want to:

  • indicate if user's camera used
  • indicate if user's microphone used
  • provide a quick way to turn these on and off
  • indicate if stream has video
  • indicate if stream has audio

Preferably this should use some nice looking icons. There are some in Font Awesome but I would rather use something smaller.

Better instructor's broadcast routing

Right now to start a broadcast 1 instructor connects to ∞ (many) students and instructors.

But I can make students and instructors relay broadcaster's stream to other peers.
Therefore there's still about N connections, but everyone's helping the broadcaster to get their broadcast to other peers.

Look at the attached image.
peer instruction broadcast routing

The thing is, this is quite hard. I need to know shortest paths between peers (this is low-level stuff, idk if I can get to it) and then use some smart algorithms (minimal spanning tree perhaps?)

Horizontal stacking of video thumbnails for smaller screens

As a part of interface improvements for tablets and other screen resolutions, I wanted to put video thumbs under the main video element. I can't, this is why:

Remote streams are additional, I put them as <video> elements into #remote_streams div (one after another). They stack vertically, because that div has a fixed width.

I can force these <video> tags to stack horizontally by floating them. However, scrolling #remote_streams horizontally doesn't work, because <video>s, after filling up horizontal space, begin to stack vertically.

If you can't imagine what I'm trying to achieve is: I want to be able to swipe (or scroll) video thumbnails horizontally under the main video stream.

Better chat

Right now chat is very ugly and very limited. Change it!

Screensharing

This feature was requested by Raniere Silva. I can only guess that many more people are likely to drop Skype in favor of OSS webRTC application.

Timeout (countdown) to switch back from small groups discussions

No-one wants to be interrupted in the middle of the sentence.

We should add a countdown (15, 14, 13… 0) that runs when the instructor wants to switch back from small groups discussions to broadcast mode.

I think this is pretty easy, there's only 1 signal to add and some front-end JavaScript scripting.

Video resolution

If there is a way for browsers to get a video stream with specific resolution, we should definitely do that - it'll help save the bandwidth.

Signalling and the state of the application

Because this application is based upon pub/sub architecture, we have to propagate the state via signals. Which is hard in case someone joins in or leaves in the middle of some non default state (like students working in small groups).

I have to address two main issues with current design:

  1. race between instructors (for example for broadcasting)
  2. signalling in case instructor or student joins in or leaves the application
  3. (optional) rethink how students in small rooms should invoke calls to each other

TURN server

In order to use Pitt with calls into/from Mozilla office in Toronto, I probably need a TURN server.

Maybe Mike wouldn't mind if I set one up on his server.

Too loud beep

50% volume is too much. Change the GainNode to 25%.

NPM package and JavaSript patterns

The code right now is quite rough. Looks nice, but it's not easy to install it with npm install and doesn't use JavaScript patterns that will allow for easier enhancement in the future.

Work started in the branch new_structure.

Document "chat" feature

I'm introducing chat to the application, but the documentation has to be updated as well.

Rename directories

client_pubsubclient
server_pubsubserver
server_pubsub.js → server.js

Change documentation accordingly.

Thumbs and large video instead of remote/local streams

I want to have something similar to Google Hangouts. One main stream (either caller or any of the callees), and a strip of thumbnails of call's participants (including caller's stream).

And clicking! By clicking on one thumbnail, I should be able to show it on main "screen".

Task automation

Add Grunt support for:

  • front-end JS code minification
  • CSS minification
  • auto-server reload for development
  • auto start for CrossbarIO for development

Etherpad integration

Might come really useful. First time I looked at the API there wasn't much of an integration I was hoping for. I mostly want to integrate chat…

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.