We have some internal systems for videoconferencing like Big Blue Button or OpenMeetings. But in my experience none of them can compare to Google Hangouts, which is still the best free (as in free beer) alternative for videoconferencing with integrated screen sharing.

While implementing an alternative to Sqwiggle on previous hackweek, I discovered Janus, a lightweight WebRTC gateway that proved to be a quite capable tool to implement video applications.

The plan is to use Janus and Javascript (AngularJS) to implement an browser-based alternative to Google Hangout with the ability to have several rooms with a flexible number of participants (only limited by the server's bandwith), an integrated chat, screen sharing capabilities and any other feature that can be useful for our meetings (like, for example, a visual timer for time-boxing).

Since it will be an almost completely client side application, it will be a great opportunity to learn AngularJS, structuring a whole application starting from scratch.

Looking for hackers with the skills:

javascript video web

This project is part of:

Hack Week 12

Activity

  • over 9 years ago: srinidhi liked this project.
  • over 9 years ago: abonilla liked this project.
  • over 9 years ago: ganglia liked this project.
  • over 9 years ago: digitaltomm joined this project.
  • over 9 years ago: mvidner liked this project.
  • over 9 years ago: jsuchome liked this project.
  • over 9 years ago: bear454 liked this project.
  • over 9 years ago: m_meister liked this project.
  • over 9 years ago: lslezak liked this project.
  • over 9 years ago: pgonin liked this project.
  • over 9 years ago: abergmann liked this project.
  • over 9 years ago: tampakrap liked this project.
  • over 9 years ago: AndreasStieger liked this project.
  • over 9 years ago: mlin7442 liked this project.
  • over 9 years ago: mlin7442 liked this project.
  • over 9 years ago: IGonzalezSosa joined this project.
  • over 9 years ago: ancorgs added keyword "javascript" to this project.
  • over 9 years ago: ancorgs added keyword "video" to this project.
  • over 9 years ago: ancorgs added keyword "web" to this project.
  • over 9 years ago: bkutil disliked this project.
  • over 9 years ago: bkutil liked this project.
  • over 9 years ago: ancorgs liked this project.
  • over 9 years ago: ancorgs started this project.
  • over 9 years ago: ancorgs originated this project.

  • Comments

    • tampakrap
      over 9 years ago by tampakrap | Reply

      https://github.com/mofarrell/p2pvc

    • bear454
      over 9 years ago by bear454 | Reply

      Check out http://appear.in as a nice model of how WebRTC videoconferencing can be nice to use. :-)

      I'd suggest, as a minor scope change, going with Polymer, or raw web components, over Angular at this time.

    • IGonzalezSosa
      over 9 years ago by IGonzalezSosa | Reply

      I don't have strong feelings about AngularJS anyway, but I have some experience with it. Polymer sounds good (also I'd like to give React.js a chance). We'll see. Of course, you're invited to join the project ;-)

    • ancorgs
      over 9 years ago by ancorgs | Reply

      Finally we implemented a rather complete prototype using AngularJS, thanks to Imo's previous knowledge of the framework. We wouldn't have make it with a completely unknown framework/technology. Anyway the code is a mess and needs heavy refactoring (not to mention a README for github). https://github.com/ancorgs/hackweek12

    • ancorgs
      over 9 years ago by ancorgs | Reply

      The company has decided that the development of this project will not be stopped by the end of Hackweek 12. The only technical problem that is left to be resolved is a very high usage of CPU in the server in some situations. After a lot of testing in different scenarios, we think we found a way to always reproduce it. Let's see if it leads us to a fix.

    • ancorgs
      over 9 years ago by ancorgs | Reply

      We have spent almost 4 extra days after hackweek and we already have most things working and initial documentation at https://github.com/ancorgs/jangouts.

      A SUSE-internal demo system can be found at http://d247.suse.de (just a workstation in NUE). We are working on installing another more stable instance in a virtual machine hosted in a proper servers room. We are currently facing some stability problems, being discussed with Janus developers.

      Next action item (beside the abovementioned): call for help from the UX team.

    Similar Projects

    Agama installer on-line demo by lslezak

    Description

    The Agama installer provides a quite complex user interface. We have some screenshots on the web page but as it is basically a web application it would be nice to have some on-line demo where users could click and check it live.

    The problem is that the Agama server directly accesses the hardware (storage probing) and loads installation repositories. We cannot easily mock this in the on-line demo so the easiest way is to have just a read-only demo. You could explore the configuration options but you could not change anything, all changes would be ignored.

    The read-only demo would be a bit limited but I still think it would be useful for potential users get the feeling of the new Agama installer and get familiar with it before using in a real installation.

    As a proof of concept I already created this on-line demo.

    The implementation basically builds Agama in two modes - recording mode where it saves all REST API responses and replay mode where it for the REST API requests returns the previously recorded responses. Recording in the browser is inconvenient and error prone, there should be some scripting instead (see below).

    Goals

    • Create an Agama on-line demo which can be easily tested by users
    • The Agama installer is still in alpha phase and in active development, the online demo needs to be easily rebuilt with the latest Agama version
    • Ideally there should be some automation so the demo page is rebuilt automatically without any developer interactions (once a day or week?)

    TODO

    • Use OpenAPI to get all Agama REST API endpoints, write a script which queries all the endpoints automatically and saves the collected data to a file (see this related PR).
    • Write a script for starting an Agama VM (use libvirt/qemu?), the script should ensure we always use the same virtual HW so if we need to dump the latest REST API state we get the same (or very similar data). This should ensure the demo page does not change much regarding the storage proposal etc...
    • Fix changing the product, currently it gets stuck after clicking the "Select" button.
    • Move the mocking data (the recorded REST API responses) outside the Agama sources, it's too big and will be probably often updated. To avoid messing the history keep it in a separate GitHub repository
    • Allow changing the UI language
    • Display some note (watermark) in the page so it is clear it is a read-only demo (probably with some version or build date to know how old it is)
    • Automation for building new demo page from the latest sources. There should be some check which ensures the recorded data still matches the OpenAPI specification.

    Changing the UI language

    This will be quite tricky because selecting the proper translation file is done on the server side. We would probably need to completely re-implement the logic in the browser side and adapt the server for that.

    Also some REST API responses contain translated texts (storage proposal, pattern names in software). We would need to query the respective endpoints in all supported languages and return the correct response in runtime according to the currently selected language.

    Resources


    obs-service-vendor_node_modules by cdimonaco

    Description

    When building a javascript package for obs, one option is to use https://github.com/openSUSE/obs-service-node_modules as source service to get the project npm dependencies available for package bulding.

    obs-service-vendornodemodules aims to be a source service that vendors npm dependencies, installing them with npm install (optionally only production ones) and then creating a tar package of the installed dependencies.

    The tar will be used as source in the package building definitions.

    Goals

    • Create an obs service package that vendors the npm dependencies as tar archive.
    • Maybe add some macros to unpack the vendor package in the specfiles

    Resources


    Agama Expert Partitioner by joseivanlopez

    Description

    Agama is a new Linux installer that will be very likely used for SLES 16.

    It offers an UI for configuring the target system (language, patterns, network, etc). One of the more complex sections is the storage configuration, which is going to be revamped. This project consists on exploring the possibility of having something similar to the YaST Expert Partitioner for Agama.

    Goals

    • Explore different approaches for the storage UI in Agama.


    Design the new UI for storage configuration at Agama by ancorgs

    Description

    We are in the process of re-designing the web user interface to configure storage at Agama. We expected to have a clear idea of what we wanted before starting Hack Week. But the idea is still not that clear. So I will use use my Hack Week time to try several prototypes since I really want this to be done.

    Goals

    Have a prototype using Patternfly components and addressing all the use-cases we want to cover. Easy for the easy cases. Capable for the complex ones.


    Editor mode at Agama web interface by ancorgs

    Description

    Agama is a new Linux installer that will be very likely used for SLES 16.

    It takes a configuration (in JSON format) as input. And offers several interfaces to build that configuration in an easy and interactive way.

    I was considering the possibility to add to the web interface a "text editor" mode similar to the XML editor available at virt-manager. That could be used to see how the changes in the UI translate into changes on the configuration.

    Goals

    • Refresh my knowledge about UI development for Agama, since there was a major overhaul recently (adopting TanStack Query) and I need to learn the new way to do things.
    • Please hackers who always want to know how things work internally. :-)


    Update my own python audio and video time-lapse and motion capture apps and publish by dmair

    Project Description

    Many years ago, in my own time, I wrote a Qt python application to periodically capture frames from a V4L2 video device (e.g. a webcam) and used it to create daily weather timelapse videos from windows at my home. I have maintained it at home in my own time and this year have added motion detection making it a functional video security tool but with no guarantees. I also wrote a linux audio monitoring app in python using Qt in my own time that captures live signal strength along with 24 hour history of audio signal level/range and audio spectrum. I recently added background noise filtering to the app. In due course I aim to include voice detection, currently I'm assuming via Google's public audio interface. Neither of these is a professional home security app but between them they permit a user to freely monitor video and audio data from a home in a manageable way. Both projects are on github but out-of-date with personal work, I would like to organize and update the github versions of these projects.

    Goal for this Hackweek

    It would probably help to migrate all the v4l2py module based video code to linuxpy.video based code and that looks like a re-write of large areas of the video code. It would also be good to remove a lot of python lint that is several years old to improve the projects with the main goal being to push the recent changes with better organized code to github. If there is enough time I'd like to take the in-line Qt QSettings persistent state code used per-app and write a python class that encapsulates the Qt QSettings class in a value_of(name)/name=value manner for shared use in projects so that persistent state can be accessed read or write anywhere within the apps using a simple interface.

    Resources

    I'm not specifically looking for help but welcome other input.


    WebUI for your data by avicenzi

    A single place to view every bit of data you have.

    Problem

    You have too much data and you are a data hoarder.

    • Family photos and videos.
    • Lots of eBooks, TV Shows, Movies, and else.
    • Boxes full of papers (taxes, invoices, IDs, certificates, exams, and else).
    • Bank account statements (multiple currencies, countries, and people).

    Maybe you have some data on S3, some on your NAS, and some on your local PC.

    • How do you get it all together?
    • How do you link a bank transaction to a product invoice?
    • How to tag any object type and create a collection out of it (mix videos, photos, PDFs, transactions)?
    • How to store this? file/folder structure does not work, everything is linked together

    Project Description

    The idea is a place where you can throw all your data, photos, videos, documents, binaries, and else.

    Create photo albums, document collections, add tags across multiple file-formats, link content, and else.

    The UI should be easy to use, where the data is not important for now (could be all S3 or local drive).

    Similar proposals

    The closest I found so far is https://perkeep.org/, but this is not what I'm looking for.

    Goal for this Hackweek

    Create a web UI, in Svelte ideally, perhaps React.

    It should be able to show photos and videos at least.

    Resources

    None so far, this is just an idea.