Code Monkey home page Code Monkey logo

chatmosphere-app's Introduction

๐Ÿ˜ฝ Chatmosphere

The Open Source Videochat for Cozy Talks

Chatmosphere Demo

Chatmosphere is an open source project that aims to make video calls informal and natural. We missed the dynamics of a self-organizing crowd hanging out at one big table together. The big table in a bar, where so many discussions, jokes, comforting talks, utopias and ideas happen. With chatmosphere you can move and zoom in the area and hear people that are located near by louder and have dynamic talks. To learn more about the Chatmosphere project and ideas have a look in our ABOUT.md

Helpful Links

Funded from September 2020 until February 2021 and September 2021 until February 2022 by

Logo of the German Ministry for Education and Researchย  ย  ย  ย  ย  ย  Logo of the Prototype Fundย  ย  ย  ย  ย  ย  Logo of the Open Knowledge Foundation Germany

chatmosphere-app's People

Contributors

baklaci-humain avatar bumi avatar dkgrieshammer avatar enidkapelsen avatar kaiberthold avatar nawed2611 avatar niklasfi avatar rasos avatar t0biii avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

chatmosphere-app's Issues

Volume & Radius - total cutoff vs. constant fading

Note: This is part of a bigger debate and the mental models users have of the chat venue; todo: elaborate

Problem Statement

The volume going to zero at a certain radius was disturbing with 2 main critics:

  • When you talk, it's difficult to realize who could really hear you, and who couldn't. We think the volume between 2 persons should vary in the same way as it does in real life: decrease slowly with the distance and go to zero only if there is a wall in the obstacle in the background, but not otherwise.
  • When you are talking with one person on your left and one person on your right, both of them can hear you, and you can hear both of them but they cannot hear each other. This also doesn't feel natural.

Add Welcome Message for First Person in Room

Hello,

some days ago I had my first chatmosphere-talk. I was the first person in the room - not knowing what to expect.

Audio and video worked fine but I got a big blue "Please reload" message / button.
So I reloaded the chat several times (which was unnecessary) until the next person eventually joined in.

Suggestion:

  • Add a welcome message for the first person in the room, like in Cisco WebEx "You're the first one here. Please wait a moment" ("Sie sind der erste Teilnehmer. Bitte warten Sie einen Augenblick")

User feedback testing Chatmosphere for use in education

First of all congratulations for this amazing app. We loved the demo and installed it on our servers with the intention to test it in contexts of education.

Here are some feedback from our team, not final users yet. As you will see, some issues would be quite problematic in production but we can already imagine what chatmosphere will be in a few months ๐Ÿ‘ We would like to help build it:

  • When we tested with >30 users, several users could not be heard. We found out that muting and unmuting was resolving the issue. It is stressful if you are not sure to be heard each time you speak.
  • The fact that faces can superpose was disturbing for many. We would expect bubbles to be solid and bump into each other, or at least that a person who speaks would be brought to the foreground.
  • The volume going to zero at a certain radius was disturbing with 2 main critics:
    - When you talk, it's difficult to realize who could really hear you, and who couldn't. We think the volume between 2 persons should vary in the same way as it does in real life: decrease slowly with the distance and go to zero only if there is a wall in the obstacle in the background, but not otherwise.
    - When you are talking with one person on your left and one person on your right, both of them can hear you, and you can hear both of them but they cannot hear each other. This also doesn't feel natural.
  • Security issues with the related Jisti instance: if a user connects to the same room on the Jitsi server, he/she can see and hear everybody in the Chatmosphere discussion, but no one sees him/her from the Chatmosphere room. It allows spying on a conversation without being seen ๐Ÿ˜ฑ
  • People had difficulty understanding that the cats icons meant "muted". Lack of explanations maybe?
  • We are unable to join a room without a webcam (e.g. no webcam detected by the browser). We can see that it's also a feature and that talking to plain blue bubbles is not an option... but maybe if you don't have a webcam you could be forced to upload an avatar?
  • Keyboard shortcuts to mute/unmute are missing (very helpful in Jitsi)
  • Mute is removed when you move your sphere
  • Chatmosphere would be a great tool for education with a few additional features (that could also be interesting for a generic usage):
    * organizer status for the teachers,
    * a loudspeaker feature so that the organizer (or other participants when allowed) can be heard all across the board,
    * The ability to build rooms in the background, the walls of which would cut the sound to outside users,
    * Groups that can be sent to a corner of the board by the organizer in one click (or to rooms as in the previous point). An organizer could randomly assign participants to groups or build groups manually,
    * A central space in which the organizer (or other participants when allowed) can share their screen.

That's it for the moment ๐Ÿคทโ€โ™‚๏ธ

Choose which person will stay on top, when many participants join (moderator feature)

Goal:
See the person talking, even if the group is getting bigger/more chaotic

Context:
Can a participant get chosen/activated to stay "on top" / in the foreground. When many participants join, it gets quite crowded within the circle. As videos overlap it can be quite confusing to figure out who is speaking.

Additional Information:
This feature request could also be solved in different other ways:

  • If no overlays are possible
  • If there is a "Redeobjekt" mechanism
  • If the circle grows, when a group is growing

Related to #39

Problems with CORS at http-bind when setting up own server

I setup the whole project and it runs nicely against the public meet.jit.si server. To ensure stable availabilty I setup an own server with jitsi-meet. Fixed IP, with a domina A-records, SSL with let's encrypt. All is working fine.

But when I try to connect the frontend, I always get a CORS-error in the console, when try to connect to bosh (https://mt-server/http-bind?room=asdf)

cors-err

I also explicit set allow-all at CORS-settings on the nginx-server. Also requesting the resource shows me allow-all cords settings.

image

Can someone give me a pointer what could be the issue here?

Evaluate event-based "Analytics" for Feedback-Form

  • When user sends feedback automatically send hardware footprint
  • Problem with legally requested tracking popups ?
    • Not instead of website analytics, more event-focused "Hey I have a problem..." will be sent with logs/hardware description

Join button misplaced

Expected Behavior

Join button ist right next to inputfield

Current Behavior

Join button is below (left) inputfield

Steps to Reproduce

Using enids setup ๐Ÿ˜œ

Context (Environment)

localhost, Chrome (Version 80.0.3987.132 (Offizieller Build) (64-Bit))

Detailed Description

see screenshot

Bildschirmfoto 2021-01-24 um 21 52 32

Screen sharing functionalities

First of all, I would like to thank you for this wonderful project. It has helped me in conducting classes with a greater level of interaction.
It would really be great if you add the functionality of sharing our screen. Just a suggestion :)

Cat Mute is not clear for some users

People had difficulty understanding that the cats icons meant "muted". Lack of explanations maybe?

to small or just not clear enough / comprehensible?

Documentation Tool Test

  • change thumbnail to a pic with better quality/saturation
  • Create structure per Tool: (What do they offer, how was our experience, what is great, what do we want to do differently?)
  • Reduce amount of pictures - only use pictures that explain features/functionalities / remove pictures that show test people in really awkward situations/poses.
  • More important than setup/what we did: How we decided to differ. T=

UPPER CASE letters in session name seem to block session

When creating a new session after the update, I noticed that session name"HelloBerlin" would not work (Chrome, Firefox), whereas "helloberlin" works.

Expected Behavior

I can use upper case as well as lower case to create a session name

Current Behavior

Names with Uper Cases trigger a blank screen.

Possible Solution

no clue

Steps to Reproduce

  1. Visit our internal build
  2. Type in HelloBerlin or Lunch
  3. See a blank screen
  4. Try again with helloberlin or lunch

Video positions out of sync

Description

In some cases Video Position is out of sync, so users position is not equal on all views / differs between one user and another.

Problem Scope

sometimes last action is not transferred (also in last letter when name change happens)

Related Issues

Feature request: "touchpad-style" navigation

Hey,
first of all, thanks for creating chatmosphere :).

For me, it would be really nice to be able to use the touchpad to pan normally and zoom only if a modifier (ctrl?) is pressed.
This is the navigation style I am used to and would feel more natural for me.

Evaluate use of one Store with reducers -> testable

One Option as suggested by zustand staff out of their experience was using one store in the end (makes picking way easier)

I think with using reducers this could work since the store object is not bloated with all method details; also the methods itself would be pure and thus testable

Session is accessible from other clients - thus people could listen in

It's possible to access a Chatmosphere Session with normal Jitis Frontend and listen in to all conversations when Jitsi Frontend is installed on same Instance or when external access is enabled in Server Config (we're doing that for dev purposes, as well as official Jitsi.meet to be open for experimentation). If you don't want that, don't install Jitsi-Frontend on same Instance as Chatmosphere ;)

Todo

Make clear in Documentation how that is done

Original Issue from Samuel:

"Security issues with the related Jisti instance: if a user connects to the same room on the Jitsi server, he/she can see and hear everybody in the Chatmosphere discussion, but no one sees him/her from the Chatmosphere room. It allows spying on a conversation without being seen ๐Ÿ˜ฑ"

Handle Users without video (we don't want to encourage that)

We are unable to join a room without a webcam (e.g. no webcam detected by the browser). We can see that it's also a feature and that talking to plain blue bubbles is not an option... but maybe if you don't have a webcam you could be forced to upload an avatar?

-> Use Letters of Name for now ? Option to upload avatar & random avatar until own is uploaded? Could encourage upload / webcam by using funky default avatars?
needs some design & thinking

Check combining Stores in Zustand as option

One option of course is to have some kind of component handling the combination of stores -
but would it be possible to have one store pick from the other without the need of some external combiner component?
Thus the store objects are clean and kind of simpl(er) - but -
They would obviously have dependency then - do we want that? does it make sense ?

Mute Bug on some Systems

Description

When we tested with >30 users, several users could not be heard. We found out that muting and unmuting was resolving the issue. It is stressful if you are not sure to be heard each time you speak.

Needs more Investigation

Would be helpful to know more about the systems the bug occurs - we know that Firefox had some problems;
also cam request on first time use delayed cam stream so it was not ready on attach. @yusuf fixed that afaik;

"Join call" interaction via drag and drop

Goal:

A playful, interactive onboarding sequence that lets you experience the interaction pattern drag and drop.

Info:

Some users need assistance in learning to move their video representation within the canvas. This is a learning from our first and second user test: We are so used to static video representations that it is not a learned gesture yet, to click and drag your video.
Where should it go: It will be a step between starting a new session and entering the call. You can find a flow suggestion here.

Style Information:

Designed based on our UI. A link to more detailed design documentation will follow. The gif attached shows how the concept can work, not how it should be styled.

Deadline:

Whenever someone has the time or we get another funding ๐Ÿ˜‡

Tag:

[Design Needed, Developer Needed, Question]
screencast_drag_drop

Cat overlay when muted too big

If i mute myself i still want to be able to see my face. I get really anxious when i don't see what others see of myself in a video call situation. The cat overlay that shows that i am muted is sadly way too big and i see nothing of myself.

Add Night mode

Is your feature request related to a problem? Please describe.
Screen is really bright at night time use - night/darkmode would help a lot

Re-rendering of PanWrapper

I found out, that my jumping bug had to do with the PanWrapper being re-rendered on state changes (for example: joining of new users, name change)

The fix was to remove scale, positionX, positionY from the panWrapperOptions, since they were resetting the users panning on each re-render of the component.

I am not sure why it is no issue with out my additional Layers in the master branch, but I would recommend to remove all three from the options or further investigate what's causing the re-renders and their relation to the store update.

Loudspeaker

a loudspeaker feature so that the organizer (or other participants when allowed) can be heard all across the board,

Implement Mobile Zoom and Drag

To make chatmosphere work in mobile, touch events need to be added to the drag system. Shouldn't be too hard. Still there is bandwidth (all streams are currently delivered even when they're not on the screen) & battery drain (might be jitsi / rtc, if and what can be done there needs further investigation)

Keyboard Shortcut Mute / Unmute

Keyboard shortcuts to mute/unmute are missing (very helpful in Jitsi)
-> also indicate shortcut in bottom bar menu to easily remind the shortcut (e.g. M mute)

Mute is removed when you move your sphere

-> we want to make sure you absolutely know that you're muted because speaking while muted is a pain in all video chat applications.
to remove click->unmute we need an easy alternative to unmute (shall also work on mobile / touch)

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.