motivation
The one mobile messaging service that shall not be named destroyed the world of "unified communication" by constructing a walled garden in recent years although there was a bright outlook with XMPP/jabber in before bundling all communication by providing an open standard and especially transports. I would like to revisit the state in 2017 and combine my text chat based communication needs from different end devices, namely my work notebook and my private smartphone.
goals
- run one client on work notebook
- run one client on the smartphone
execution
My personal plan is to follow the following steps in this order and priority
- revisit current state of XMPP and server implementations by research
- look into bitlbee running on a near-permanent server installation with plugins (had it locally on notebook)
- try "conversations" android app or how it was called
- research and potentially try out alternative android apps with energy and data usage efficient approach
- come up with a result documentation, probably on this project page
current status and findings
starting situation
I use
- google hangouts on my android smartphone, sporadically also telegram, sporadically xabber (for jabber)
IRC on my work notebook, connected to
- a hangouts-IRC bridge (pickups)
- private znc instance for irc.suse.de
- private znc instance connected over ssh tunnel to home server for chat.freenode.net and others (the latter sparingly used)
a gaming PC connected to steam and a private IRC server
research
So I have been researching the last days and collecting some ideas. Still not at the end.
Currently it seems there are three alternatives to follow:
- matrix&riot (thanks to bear454 for the reminder): Looks promising although one can still feel the ecosystem is young. There are enough clients spawning up but a bit more "polish" feels necessary.
- XMPP with a recent server (public or private) plus conversations.im Android client which can be bought from google playstore or installed for free from f-droid
- private instance of bitlbee&znc
Interesting history of instant messaging
matrix/riot/...
this is a pretty nice introduction and one gets the point what matrix is about. this gives a good explanation how matrix wants to be better than e.g. SIP or XMPP (esp. last slide) while providing an open HTTP based protocol connecting "all other" networks. The question for the why, if it is not yet clear is answered in "why"
Registered on matrix server and using riot webfrontend as well as the android app. Looks quite good. Registered for IRC chat rooms and chatted a bit with the bot in the riot freenode bridge to #openqa-test.
- telegram support seems in early development phase and is probably not available on matrix.org server, see telematrix
- google hangouts support seems even worse: CyrusTheHedgehog/Hangouts-Bridge
- it should be possible in theory to connect to matrix with an IRC client but I am not expecting it to be easy, see matrix-ircd
further: purple-plugin
XMPP server
jabjab.de, one of the jabber server I used previously supports many new transports, including Whatsapp, not that I care for myself, and Telegram Messenger but as it looks like no google hangouts. So at least I registered the telegram bridge for experiments, at least I tried but so far no action done. Also, trying to use the skype bridge from my gaming PC with miranda IM trying to register on the transport stays on "please wait..." so something does not go on as planned.
bitlbee/znc
These services do not seem to be an overkill for running them on a private server. Also, support for different protocols is quite neat, e.g. bitlbee supports steam and I like the cleanliness of IRC clients like weechat, irssi but konversation.
clients
weechat seems to provide good defaults and offers plugins with python as well as support for other protocols, e.g. matrix and telegram, whereas irssi counts on perl (1, 2, 3)
This project is part of:
Hack Week 15
Activity
Comments
-
almost 8 years ago by okurz | Reply
So I have been researching the last days and collecting some ideas. Still not at the end...
interesting history of instant messaging
-
about 7 years ago by okurz | Reply
for now for my personal communication needs what seems to work most reliable is bitlbee+znc running on my private server and connecting to that with an IRC client. On my mobile phone it's ok for the time being to run the mobile clients for the specific networks + riot with matrix.org as a mobile IRC client to freenode. Using matrix.org with bridges sounds like a nice idea but the according projects don't seem to be mature enough or even stale with just empty promises.
-
over 5 years ago by okurz | Reply
Situation as of 2019-06: I am still running bitlbee+znc and my main chat client is konversation on my notebook work computer. As at work we use now more and more "RocketChat" today which recently also is available from outside I compiled https://bitbucket.org/EionRobb/purple-rocketchat/ to integrate into my bitlbee setup and configured bitlbee according to https://github.com/jsegitz/rocket2irc-suse#how-to-use-it . Also I built https://bitbucket.org/EionRobb/purple-hangouts for which one needs to gather an oauth token as shown in https://www.youtube.com/watch?v=hlDhp-eNLMU and I retired my pickups service.
Similar Projects
Hacking on Profanity by mvetter
Description
Like earlier I plan to spend hacking on Profanity.
There are various things that could be worked on, see the issue tracker especially the issues tagged as next.
Something that I would love to get done is finally fixing a couple of memleaks, which blocks us from creating a new release. I have tried to summarize the situation here.
Goals
Fix the memleaks in Profanity to make it ready for a new release.
Hack on libstrophe by sjaeckel
Description
libstrophe has some open PR's and issues that I'd like to work on and finalize.
Since libstrophe is also targeted for embedded devices, it would make sense to have support for mbedTLS.
Also I've recently discovered rustls as TLS library. If time allows I'd like to integrate that into libstrophe.
Goals
- Merge most open PRs
Maybe
- Add mbedTLS as TLS provider
- Add rustls as TLS provider
Resources
https://github.com/strophe/libstrophe
https://github.com/rustls/rustls
Grapesss: a physical Shamir's Secret Sharing application [ESP32-C3 + Mobile] by ecandino
Description
A couple of years ago I created StegoSecretS, a small cli used to encrypt and split a secret into multiple keys, using the Shamir's Secret Sharing algorithm.
The idea is to re-implement the project using physical devices. One device alone will be useless, but when close together they can be used to decrypt the secret.
On a practical side the user encrypts the secret with a mobile application. The same application is used to split the secret, and load the partial keys into different micro-controllers. Another user will be able to decrypt the secret only having at least N devices close together (using the application).
I'm planning to use a couple of ESP32-C3 I bought, and build a very simple Android mobile application.
Goals
- Learn about Rust and micro-controllers (ESP32-C3)
- Learn about mobile applications (Android and Kotlin)
Resources
Create an Android app for Syncthing as part of the Syncthing Tray project by mkittler
Description
There's already an app but code/features already in Syncthing Tray could be reused to create a nicer app with additional features like managing ignore patterns more easily. The additional UI code for the app could then in turn be re-used by other parts of Syncthing Tray, e.g. to implement further steps in the wizard as requested by some users. This way one "UI wrapper codebase" could serve GNU/Linux, Windows and Android (and in theory MacOS) at the same time which is kind of neat.
Goals
- DONE: Learn more about development for Android and development of UIs with Qt Quick
- DONE: Create an experimental app reusing as much existing Syncthing Tray code as possible
- DONE: Build Syncthing as a library also for Android and use it in the app (already done but needs further testing and integration with the rest of the app configuration)
- DONE: Update the Syncthing Tray website, documentation
- Extend the app so it has at least a start page and an import that can cope with an export of the other app
- Update forum thread
- Upload an experimental build on GitHub
- Extend the Syncthing API to download single files on demand (instead of having to sync the whole directory or use ignore patterns)
Resources
- Android SDK/NDK and emulator
- Qt Quick
Sipario, less mobile phone, more social interactions by baldarn
Mobile phone usage is addictive. There are adults addicted, but a huge problem is kids addiction We must do something to help avoid problems in this context.
The solution
Sipario, an app and community aggregator in order to help with smartphone addiction.
Description
The more you use Sipario, the more points you earn. If you use the smartphone, you will lose your points
Business model
How is this sustainable?
I personally don't care, but sutainability of the business is key to possible investments.
Sipario will allow commercial entities to join the network. The idea is to give commercial activities (eg: restourants, cinemas, theathers, ....) the ability to certify that users are not using the smartphones during the permanence in the place. this will allow then commercial activities to give coupons to users, in order to promote a good behavior and retain the customer
Tech challenge
if resources allows it, i would like to create an algorithm that leverage bluetooth for certify people proximity presence in order to avoid attacks from points rouge in the context of the app
Goals
Deliver:
- android app
- IOs app (some apple developers must join in order to do this)
- backoffice app
- BLE algorithm to certify nearby presence
Resources
https://en.wikipedia.org/wiki/Problematicsmartphoneuse
Similar app
https://play.google.com/store/apps/details?id=com.ascent&hl=en
Website
Migrate from Docker to Podman by tjyrinki_suse
Description
I'd like to continue my former work on containerization of several domains on a single server by changing from Docker containers to Podman containers. That will need an OS upgrade as well as Podman is not available in that old server version.
Goals
- Update OS.
- Migrate from Docker to Podman.
- Keep everything functional, including the existing "meanwhile done" additional Docker container that is actually being used already.
- Keep everything at least as secure as currently. One of the reasons of having the containers is to isolate risks related to services open to public Internet.
- Try to enable the Podman use in production.
- At minimum, learn about all of these topics.
- Optionally, improve Ansible side of things as well...
Resources
A search engine is one's friend. Migrating from Docker to Podman, and from docker-compose to podman-compose.