[jitsi-dev] Exploring Jitsi on Ubuntu Touch


#1

Hey, Jitsi devs! I'm looking at the idea of Jitsi on Ubuntu Touch, and so I
have a bunch of tech questions about how that might work which I think you
can help with :slight_smile:

As I understand it, the "standard" Jitsi app is Java+Swing, on X for the
Linux builds. Ubuntu Touch doesn't have X by default, although it's
possible to add it. So one way to do this would be to run the standard
Jitsi app with UT's X support. However, for my use case I don't necessarily
need everything Jitsi can do, so it's worth me exploring the idea of
implementing a different UI. What facilities are there for providing a
different UI for Jitsi? I think this might be what libjitsi is for -- I
write the UI in an app, and use libjitsi to do the actual work -- but I'm
not sure I've understood that correctly. Libjitsi is still a Java library,
so I imagine I'd have to write my custom UI app in Java as well, or perhaps
a Java bridge to something like D-Bus or a local socket over which a
separate UI app could communicate?

There's also the https://jitsi.org/Documentation/UIService2 docs, which
suggest that it's possible to write plugins to customise the existing GUI;
is it possible to replace the existing GUI with a UIService plugin, or is
that not really what it's for?

Next, and potentially most attractive, there was a project in last year's
GSoC to build an HTML5 front end for Jitsi. This would be marvellous if
possible. I'm having difficulty finding out whether that happened, or was
just a suggestion for a project, and if it happened how far it got.

Basically, here, I'm looking for suggestions from people who understand the
Jitsi architecture on how to bring it to a new platform. I'm happy to
answer questions or whatever you need.

A second, separate question: if I have two users connected to one another
by VPN (or connected to the _same_ VPN), and they want to video chat, I
think I can use the serverless SIP setup for that. That way, no server is
required: it's entirely point-to-point. Is my understanding there correct?
(Obviously the users will need to exchange contact details for the call in
order to set it up, but that's being taken care of by something else, so
you can assume that it exists.)

Many thanks,

Stuart Langridge

路路路

--
New Year's Day --
everything is in blossom!
I feel about average.
聽聽聽-- Kobayashi Issa


#2

Hey, Jitsi devs! I'm looking at the idea of Jitsi on Ubuntu Touch, and so I
have a bunch of tech questions about how that might work which I think you
can help with :slight_smile:

As I understand it, the "standard" Jitsi app is Java+Swing, on X for the
Linux builds. Ubuntu Touch doesn't have X by default, although it's possible
to add it. So one way to do this would be to run the standard Jitsi app with
UT's X support. However, for my use case I don't necessarily need everything
Jitsi can do, so it's worth me exploring the idea of implementing a different
UI. What facilities are there for providing a different UI for Jitsi? I think
this might be what libjitsi is for -- I write the UI in an app, and use
libjitsi to do the actual work -- but I'm not sure I've understood that
correctly. Libjitsi is still a Java library, so I imagine I'd have to write
my custom UI app in Java as well, or perhaps a Java bridge to something like
D-Bus or a local socket over which a separate UI app could communicate?

libjitsi is just for media acquisition (v4l, alsa, portaudio, etc.) and processing (encoding to h264, [S]RTP, etc.). It doesn't contain all the protocols to connect to e.g. XMPP or SIP servers.

There's also the https://jitsi.org/Documentation/UIService2 docs, which
suggest that it's possible to write plugins to customise the existing GUI; is
it possible to replace the existing GUI with a UIService plugin, or is that
not really what it's for?

Plugins would extend the existing UI, not replace it. You could however write your own UIService (which is a HUGE task) and it needs to be with a UI framework that has Java bindings.

Next, and potentially most attractive, there was a project in last year's
GSoC to build an HTML5 front end for Jitsi. This would be marvellous if
possible. I'm having difficulty finding out whether that happened, or was
just a suggestion for a project, and if it happened how far it got.

It didn't happen because we couldn't find a way to pass media (i.e. audio/video) from the Java backend into the HTML renderer (we tried, chromiumembedded (cef), a custom java wrapper for Chromium, and Electron).

Basically, here, I'm looking for suggestions from people who understand the
Jitsi architecture on how to bring it to a new platform. I'm happy to answer
questions or whatever you need.

I was once looking into JavaFX, but the task was too big to handle it by myself. It also wouldn't solve your problem of not having X around.

A second, separate question: if I have two users connected to one another by
VPN (or connected to the _same_ VPN), and they want to video chat, I think I
can use the serverless SIP setup for that. That way, no server is required:
it's entirely point-to-point. Is my understanding there correct? (Obviously
the users will need to exchange contact details for the call in order to set
it up, but that's being taken care of by something else, so you can assume
that it exists.)

As long as there is no (host-)firewall and/or NAT preventing communication between the two clients, that should work. But I'm not sure if video works at all with serverless SIP accounts. If audio works, video /should/ work too.

Many thanks,

Stuart Langridge

Ingo


#3

Thank you for the detailed answers! It looks like what I want may be very
hard to do with stock Jitsi. I'm now looking at jitsi-meet, with the idea
of running a server myself, and which has a web UI and so should be more
doable. A couple of questions about its security: Jitsi "desktop" uses
zrtp, and has been through external security assessments, both of which are
good. What's the story around Jitsi Meet?
https://jitsi.org/Projects/JitsiMeet certainly says that it's "encrypted by
default": does this mean that conversations are secure from outside
attackers, or are they secure from outside attackers _and_ the person
running the server? Any other thoughts on Jitsi Meet's use as a secure
messenger (not only for video/audio calls, but possibly text messaging as
well) are invited.

Cheers,

Stuart

路路路

On 20 August 2016 at 12:30, Ingo Bauersachs <ingo@jitsi.org> wrote:

> There's also the https://jitsi.org/Documentation/UIService2 docs, which
> suggest that it's possible to write plugins to customise the existing
GUI; is
> it possible to replace the existing GUI with a UIService plugin, or is
that
> not really what it's for?

Plugins would extend the existing UI, not replace it. You could however
write your own UIService (which is a HUGE task) and it needs to be with a
UI framework that has Java bindings.

> Next, and potentially most attractive, there was a project in last year's
> GSoC to build an HTML5 front end for Jitsi. This would be marvellous if
> possible. I'm having difficulty finding out whether that happened, or was
> just a suggestion for a project, and if it happened how far it got.

It didn't happen because we couldn't find a way to pass media (i.e.
audio/video) from the Java backend into the HTML renderer (we tried,
chromiumembedded (cef), a custom java wrapper for Chromium, and Electron).