close
  • chevron_right

    We are looking for some help for the Movim Android application

    Timothée Jaussoin · pubsub.movim.eu / Movim · Monday, 31 May - 20:17 edit · 2 minutes

Hi,

I am writing this little post today to ask for (a bit) of help on the official Movim #Android application that is currently available there.

I am maintaining #Movim for more than 10 years now, mostly without asking for any help from the hundreds of daily users that we have now (on the servers we're aware of, at least). I am also maintaining and updating the infrastructure hosting the website, the official pod and the #XMPP server and related services.

However Movim is a little more than that, there is also an Android app, and a desktop app (currently abandoned).

I am maintaining the Android app with the really thin knowledge that I have on this platform. Most of the code of the application is basically copy/pasted from StackOverflow and a bit hacky. Fixing and developing this app is always really time consuming as the environment, and the way of dealing with it, is really different than the knowledge that I have on the web development side.

So basically today I'm asking from some help for the official Movim Android application. If you have a little bit of experience in Android development (or if you want to learn !) and if you're willing to help me to improve the application do not hesitate to contact me through our official chatroom, directly on Github or as a comment of this post.

The app is quite simple. It is basically a WebView that shows one of the configured pods. And… that's mostly it.

What would be really helpful would be to have (non exhaustive list):

  • Another pair of eye to check and maybe refactor the few classes that are contained in the application
  • Create two flavors of the app, one "Play Store ready" and one "free of Google Play" integration (the current app cannot be published on F-Droid because there is some strong dependencies there)
  • Fix the mic/camera support and authorizations
  • See if the current notification system can be improved
  • Send an event to Movim when the app is "put in background" in a chat conversation to ensure that the notifications are re-enabled in this specific case
  • And any other nice feature that you would like to see integrated

There is no pressure or deadline, any pull requests that could help improving or fixing things in the application would be really appreciated.

I am currently dealing with Google to re-enable the application on the Play Store as well, I will keep you updated about that.

Regards,

edhelas

  • chevron_right

    Signal hops on the Dunning-Krugerrand bandwagon

    wgreenhouse · Saturday, 10 April, 2021 - 21:46

Nothing surprising here, but I have to appreciate the clarity of all the scammers taking their masks off at once. Come try #xmpp. Don't be part of another #coin #scam.

  • Signal hops on the Dunning-Krugerrand bandwagon

    Not only is Signal a sketchy-as-fuck privacy-violating social network wearing "security" cosplay, now it also has a climate-incinerating Ponzi scheme bundled in. Cool, cool. Stephen Diehl: Do they think we don't see through the thinly veiled pump and dump scheme that's proposed? It's an old scam with a new face. Allegedly the controlling entity prints 250 million units of some artificially ...

  • favorite

    2 Like

    Czar Chunk of Asteroid 29 , Ben Harris

I've been on IRC, off and on, for something like 20 years.

I've used XMPP for about half as long. I originally lost interest in 2014, when a plurality of XMPP site administrators pushed a de facto ban on server-to-server federation in the clear, meaning (among other things) that essentially all of the public XMPP servers other than Google Talk stopped talking to Google Talk. Facebook's chat service had recently migrated away from XMPP to their own MQTT-based protocol. Around the same time, developers of XMPP clients became divided between those who supported OTR and those who supported OMEMO as end-to-end encryption extensions (that divide apparentlypersists).

Those developments in the middle of the last decade added up to completely breaking my use-case: talking to people stuck using gtalk and facebook's XMPP-compatible messaging services, but often savvy enough to use free software clients like Pidgin and Adium, using OTR. So I slunk off back to IRC.

Things that are clear in 2020:

  1. IRC on its own is a bad fit for multi-device usage. You either run many separate clients with their own nicks, or a bouncer, or put your client on some always-on box somewhere. Bouncers are pretty terrible in that they generally provide either way too much or not enough context to follow a conversation from one device to another. At the moment my compromise is to access a long-running client (specifically, these days, ERC) over SSH, with IRCCloud as my mobile backup.

  2. File transfer in IRC is kind of a pain. Few people have good experiences using DCC, and it doesn't work at all behind a bouncer or over a SOCKS proxy. Any relatively complete IRC client setup involves some out-of-band way to share interesting files with a channel. For a long time, XMPP had similar woes with in-client file transfer being terrible, but it got better and now has a pretty robust way to share files with both individuals and groups.

  3. Most of the people I talk to about my free software hobby are on IRC (it might be almost as accurate to say that I have an IRC hobby that's aided and abetted by yak-shaving a lot of free software).

  4. From an extensibility and yak-shaving point of view, IRC has the better clients. For XMPP, the protocol might have "Extensible" in the name, but clients are usually either barely-working proofs of concept or slick, finished products without a lot that needs configuring or that can be configured. In my first go-around with XMPP, my main client was BitlBee, which let me subject XMPP to the whims of my IRC client of the moment (usually an Emacs one).

  5. 2020 XMPP looks a lot different than mid-2010s XMPP, thanks to wider adoption of OMEMO and things like Message Archive Management and Message Carbons making multi-device XMPP a sane experience. Sadly BitlBee hasn't really kept up with a lot of that.

  6. I run too many damn messaging clients. I'm very far from the utopia of connecting to everything from one client.

  7. I mostly use IRC even for one-to-one chats, but (aside from a few people using irssi-otr or something) IRC does not have an end to end encrypted private chat option. This is in contrast to every other thing I use. Maybe it'd help me toward harm reduction to have me spend most of my time somewhere that end-to-end encryption is easily available when desired.

So, I'm considering trying something different, and letting XMPP eat IRC, where once I let IRC eat XMPP. I think in the new year I'll try using Biboumi as my main connection to IRC and see how it goes.

What do you think?

  • 1 Comments

  • 28 December, 2020 Ben Harris

    maybe https://profanity-im.github.io/ will be the savior we need - biboumi and you still get the power of a terminal client?

  • chevron_right

    Movim 0.18 – Oterma

    Timothée Jaussoin · pubsub.movim.eu / Movim · Sunday, 27 September, 2020 - 16:58 edit · 5 minutes

It's been six months since the last #release, and for the 0.18 – Oterma one there's a lot to show!

So let's dive in this list of exciting features and changes that you will find in this new release.

Notifications

0.18 is coming with quite some changes regarding how the notifications are handled and displayed within Movim. This also came with lots of bug fixes to ensure that the counters are up-to-date everywhere across the UI and between all the devices.

One of the first notable changes you will find is how the global chat counter is behaving. This counter is now displaying the total number of unread discussions and not the total number of unread chat messages anymore.

picture chat counter

Related to this change, an update on the chatrooms bookmark specifications is now allowing you to save a per-chatroom notification configuration. With this new feature you'll be able to choose, for each chatroom, if you want to “always be notified” for each new messages, “only when you're mentioned”, or “never”.

picture chatroom config

Movim can now use sound to notify you of a new incoming message, if you allow it to (see the configuration panel).

audio notif screenshot

Stickers, drawing and emojis

We also improved some existing chat features. Some work has been done by Christine Ho on the Draw widget. The drawn lines are now smoother, even on large resolution pictures. The feature has also been extended to allow you to draw on existing pictures you upload from your device.

picture draw upload

Christine Ho also improved the existing emoji picker to add useful search bar, you can find it when trying to add a reaction bellow a message.

A new pack of fresh meme stickers was also added to the stickers panel.

meme

And finally, the Movim emojis support has been updated to Unicode 12.0, bringing a pack of new emojis in.

emojis

Video conferencing

A big part of the time spent on this release was focused on the video-conference features. The related code was heavily reworked to ensure a smooth compatibility with the #Conversations Android client, it's still not perfect but works already quite well.

This was especially because of the integration of XEP-0215: External Service Discovery in the project. Allowing the web browser to easily perform STUN/TURN discovery (it's a way to discover alternative routes on the Internet for the video and audio feeds to be streamed on) using the #XMPP server services.

The call flow was also split to conveniently allow audio-only calls.

And the screen-sharing feature was integrated on the video-side. Useful when you want to quickly show a document or a presentation during your call!

The new videoconferencing features

Video-conferencing is hard. For this release we made quite a lot of work to improve the user experience but we are still not totally satisfied with the result. Some more work will be needed in the upcoming releases to really deliver the best we can offer for that feature.

And a many other things…

Chat and chatrooms

The interfaces between the chat and chatrooms (header bar, drawer menu) are now unified to display general information the same way. A little gallery was added which displays recently sent and received pictures.

emojis

The pictures handling in chat messages has been improved. Movim is now trying to resolve picture URLs, even if they were sent using a client that doesn't embed pictures in messages.

The scrolling behavior in chat was greatly improved and simplified, a little "go to bottom" button was also added.

scroll

Movim now handles the XEP-0319: Last User Interaction and can therefore be more precise to tell you the last time your contacts were seen active.

Post publication

Movim was already automatically saving your draft posts while you were writing, but since this version it actually displays when a draft has been saved. The post publication panel was also slightly redesigned to be clearer and more accessible.

publish form

Performance

On the technical side, a PresenceBuffer system was added to handle wave of presences coming from the network and mass insert them in the SQL DB. This reduces by a factor of 10 to 100 the number of requests that are done to the database during those "spikes" of incoming presences from the network. This little feature greatly improves logins speed and shortens the time it takes to join a new chatroom.

Favicon

The favico.js library, that was handling the little counter in the browser tab icons had been removed and rewritten using only vanilla JavaScript, keeping only the required bits which also made it way smaller. This was actually the last (external) JavaScript dependency coming with Movim.

XMPP Authentication

Regarding the authentication process, Movim now supports XEP-0368: SRV records for XMPP over TLS to directly connect to XMPP using an encrypted socket (better than the historical STARTTLS negociation system that is still used as a fallback mechanism). Regarding the IP resolution Movim now uses the Happy Eyeballs mechanism to resolve the server IP on IPv4 or IPv6.

Android application

Finally, the official Android app gained nice features thanks to the improved integration of Movim on your phone.

The notification handler has been reworked to handle newer Android versions, conversations are now stacked properly.

android notifs

From any application you can now share a URL to Movim directly and publish it in a Post. In the future we are planning to add more sharing capabilities like this one (share to contacts or chatrooms for example).

share

Related to the video-conferencing improvements, audio and video calls are now launched in a separate task to allow you to switch back easily to your chat or publications while having your call. This makes it close to the experience you can already have on desktop.

Finally some work was done in #Movim and on the Android app to improve the general performance, especially regarding the touch features and general responsiveness.

To conclude…

As always you can test all those features on our official pod, or deploy them in a few steps on your own server :)

We always need some funding to help us promoting Movim and covering project costs, feel free to help on our Patreon.

And stay tuned for the upcoming releases, it seems that there are some interesting features already planned ;)

That's all folks!

  • chevron_right

    Audio (and soon video) calls between XMPP and SIP accounts!

    Timothée Jaussoin · pubsub.movim.eu / Movim · Sunday, 23 August, 2020 - 21:06 edit

Thanks to the awesome work of Singpolyma there is now a bridge between the #XMPP and the #SIP networks. Both standards are able to exchange information to setup audio calls.

A few things were fixed in Movim to do so (mostly related to the format of the account identifiers used for the protocol bridge system) but now everything seems to work fine. You can find the tool at this address: git.singpolyma.net/cheogram-sip. It is still in heavy development but it progressing quite rapidly.

Here is the same call from Movim and the #Linphone SIP client. Calls are also working with the Conversations client as well.

More than a simple tech demo, this can bring quite a lot of useful possibilities. SIP is widely deployed especially in telephony. Calling a remote IP phone directly from your XMPP account could be really convenient.

Using a simple movim.eu account nowadays you can already connect to several other networks, such as IRC or Telegram and group everything in one UI. Having SIP on top really brings the whole experience to another level.

Have fun with Movim and movim.eu and don't forget to support the project by sharing links around!

  • chevron_right

    WebSocket connections on movim.eu

    Timothée Jaussoin · pubsub.movim.eu / Movim · Monday, 3 August, 2020 - 22:09 edit

The movim.eu #XMPP server now supports connections through #WebSockets.

This means that if you're using a #web client like conversejs, you'll be able to connect directly using your movim.eu account.

If you are a #Movim user. Nothing changes as Movim is using standard good ol' TCP/TLS connections to login 😉

The clients that wants to connect to movim.eu using WebSockets will normally automatically discovers the endpoint (using the related XEPs). If not, it is available manualy at wss://movim.eu/xmpp.

That's all folks!

  • chevron_right

    Chat picture resolver and Telegram stickers

    Timothée Jaussoin · pubsub.movim.eu / Movim · Friday, 15 May, 2020 - 07:50 edit · 3 minutes

Movim 0.18 is planned to be released soon.

In the meantime, let's have a look at one specific feature that is really useful when you integrate Movim with the Spectrum2 - Telegram bridge.

For those that are not aware, XMPP can connect to other chat networks using tools called "transport". One of the most used is called Spectrum2 and can connect to many other networks thanks to its libpurple support.

Telegram transport setup

What will we do here is:

  • Setup telegram-purple in Spectrum2 on Debian
  • Connect it to a XMPP server (here ejabberd)
  • Adapt the transport to integrate with Movim

Setup Spectrum2 and telegram-purple

Here I will not detail the basic installation, the official Spectrum2 documentation is pretty complete.

Once the repository is setup, please install the base package and the libpurple module:

apt install spectrum2 spectrum2-backend-libpurple

For telegram-purple the README is also quite complete

Create a Telegram transport

Once all the packages are setup, we will create a transport configuration file. You can reuse the spectrum.cfg.example located in the /etc/spectrum2/transports/ as a base.

# nano /etc/spectrum2/transports/spectrum_telegram.cfg

This is basically the config file that I used for my own telegram.movim.eu transport:

[service]
server_mode = 0
user=spectrum

jid = telegram.movim.eu
password = spectrumpassword
server = 127.0.0.1
port = 5347
backend_host = 127.0.0.1

users_per_backend=10

backend=/usr/bin/spectrum2_libpurple_backend
protocol=prpl-telegram

web_directory=/home/movim/upload/spectrum
web_url=https://upload.movim.eu/spectrum

[identity]
name=Telegram Transport
type=telegram

[logging]
config = /etc/spectrum2/logging.cfg
backend_config = /etc/spectrum2/backend-logging.cfg

[database]
type = sqlite3

[registration]
enable_public_registration=1

When Spectrum2 will connect to the Telegram network, the stickers will be downloaded as files on the server. By default an ugly path is simply sent to the XMPP clients. We will turn it to a proper URL and let Movim to its magic.

To do that we need to configure the Web Storage module. You can also find more documentation about it there.

web_directory=/home/movim/upload/spectrum
web_url=https://upload.movim.eu/spectrum

It's pretty self explanatory. The downloaded stickers will be put in the web_directory directory. The second parameter, web_url, is basically telling Spectrum2 how to general its URL before sending them in the messages.

Configure ejabberd

Then we need to add a new service in our ejabberd.yml configuration file.

  -
    port: 5347
    module: ejabberd_service
    access: all
    ip: "127.0.0.1"
    global_routes: false
    hosts:
      "telegram.movim.eu":
        password: "spectrumpassword"

Once everything is setup, restart Spectrum2 and ejabberd. For Spectrum2 you can do it using spectrum2_manager or a dedicated systemd configuration file.

Configure our web server

We then need to expose those files to the web. A simple nginx configuration will handle it.

server {
    server_name upload.movim.eu;

    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    …

    root /home/movim/upload;

    location /spectrum {
        alias /home/movim/movim/spectrum;
    }
}

Fix the nasty file rights with Incron

If you start to use your Telegram transport at this point you'll notice that the stickers URLs are returning a 403 Forbidden error.

Indeed, Spectrum2 is writting the files in the directory using it's own rights. And this can't be configured.

We will then use another useful tool called Incron. This tool works like CRON but instead of working on time events, it works on file events.

You can find a pretty complete documentation there.

apt install incron 
nano /etc/incron.allow # add your spectrum user there
sudo -su spectrum
incrontab -e

In the incrontab file well then change dynamicaly the rights of the files once they are wrote in the directory (check the documentation for more details).

/home/movim/upload/spectrum   IN_CLOSE_WRITE          chmod 664 $@/$#

Enjoy your nice Telegram stickers in Movim

In Movim, nothing more to do. With the version 0.18, Movim will try to resolve the incoming messages that contains a URL and see if it's a valid picture. Which is the case for Telegram stickers.

Telegram stickers displayed in the Movim chat

You can also note that it works for any other incoming picture URL, including those sent using Conversations or other XMPP clients.

That's all folks!

#telegram #xmpp #movim #transport #stickers #ejabberd #admin

  • Pictures 1 image

  • visibility
  • favorite

    7 Like

    norz , psandeep2020 , meta , marzanna , debacle , slavko , felipe

  • 1 Comments

  • person

    15 May, 2020 thuraht

    Fantastic that libpurpl is still useful : ) I hope the bridge works out, not that I have any telegram contacts.

  • chevron_right

    A 3in1 surprise! Movim 0.17.1, Movim Android 0.17.0.0 and Movim Account Panel

    Timothée Jaussoin · pubsub.movim.eu / Movim · Sunday, 22 March, 2020 - 15:19 edit · 2 minutes

A bit more than a month after the #Movim 0.17.1 Catalina release I'm pleased to deliver two new releases and a new tool to all the movim.eu users. Let's dive in all those new exciting features.

Movim 0.17.1

This minor #release focuses on a few things. We could call it an "integration release". In fact most of the work done were to help with the new Debian package and for the new Android app release.

Regarding the Debian package, I'd like to personally thanks Dominik George aka Natureshadow from Teckids e.V. and mirabilos for their continuous work on the dependency packaging, patches and general maintenance of the .deb. They were both added in this release on the Core Contributors page. Thanks!

Upload widget improvements

The #Upload #widget, that is used to upload files and pictures during the Posts and Messages publication has been redesigned. You can now drag and drop files from your explorer directly in the drop area. The picture visualization has also been improved and now display more information about it.

Uploaded widget screen, uploaded using the upload feature, this is so META

Integration with the new Movim Android release

The Movim #Android app has not been updated for a while. This new release improves the integration experience one step further.

In fact, the top bar is now transparent and integrates with the rest of the user interface. The pod switching button is not shown anymore during the startup process (that was slowing down the launch of the app) but directly in the navigation bar (you will need to upgrade both Movim and Movim Android to handle this feature). This allows Movim to launch in only a few seconds on a standard 4G connection.

Movim now integrates even more within the Android UI

On the Chat page, it is now possible to close the conversations using a simple drag-to-left movement. Similar to what you can find on Telegram for example.

Movim Account Panel

Last but not least, all the movim.eu #XMPP accounts have now access to a new panel. Available on api.movim.eu/accounts it allows some account wise configuration to complete some features unavailable client side.

To authenticate a "one click link" mechanism has been added. Once your identifier entered this authentication link will be send directly by chat allowing you to access your Account Panel.

Through this panel you'll be able to list all the existing files you ever uploaded using your XMPP account, in the future you'll be able to also delete them.

Uploaded browser files on the Movim Account Panel

Email to XMPP

This Panel also contains an exclusive feature, the possibility to receive #emails on your XMPP account.

This feature is only working one way, in fact it's our mascot, and now postwoman Miho that will take care of delivering the emails as chat messages directly to you. Please notice that the attachments are not forwarded and we are not applying any form of SPAM filtering on them. The emails are transferred as it in their textual version to you.

The Email to XMPP feature

That's all folks! And don't forget, to prevent the spread of the #COVID19, stays safe at home!