Planet Jabber

October 16, 2020

Ignite Realtime Blog

Openfire 4.6.0 is released

The Ignite Realtime Community is elated to be able to announce the release of Openfire version 4.6.0!

This release is the first non-patch release in 10 months, which brings a healthy amount of new features, as well as bug fixes.

I’d like to explicitly thank the many people in the community that have supported this release: not only were a significant amount of code contributions provided, the feedback that we get in our chatroom and on our community forums is of great value to us!

Highlights of this release include extensively improved XMPP protocol support, particularly around Pubsub and PEP and better compatibility with higher-end encryption parameters out-of-the-box, which should particularly benefit environments that make heavy use of server-to-server federation.

This release includes experimental support for federated multi-user chat for constrained environments (as defined in XEP-0289). This feature aims to reduce the dependency on highly reliable, high volume network connectivity.

The complete changelog contains approximately 80 issues that have been resolved in this release.

We invite you to give this release a try. The process of upgrading from an earlier version is as lightweight as ever. It is outlined in the Openfire upgrade guide. Please note that, if desired, a significant amount of professional partners is available that can provide commercial support for upgrading, customization, or other services.

We’re always happy to hear about your experiences, good or bad! Please consider dropping a note in the community forums or hang out with us in our web support groupchat.

You can find Openfire release artifacts on the download page. These are the the applicable sha1sums:

3747eb30a9c301cb4e169ea58682bffaec928d45  openfire-4.6.0-1.i686.rpm
446dd40b68e89311f4e7de62af4cb1dfe44cff2d  openfire-4.6.0-1.noarch.rpm
74023de1be0211bbc6879173bc9a5875605cd375  openfire-4.6.0-1.x86_64.rpm
0db33511ff833dc904ea7845d6eb3294cf418782  openfire_4.6.0_all.deb
fe7684d7ddf12896d138af64adb2d79f62874c29  openfire_4_6_0_bundledJRE.exe
cb490c5762c2f2f4ccd70a5a09b5faab59dc5e99  openfire_4_6_0_bundledJRE_x64.exe
fb915d112f522860fdd419c8bc0371f7a4a2105a  openfire_4_6_0.dmg
a5fada882ace449df9056205618e86312a08ec6e  openfire_4_6_0.exe
43a5b890e52b4baa7e8096410a7b398c89ad4d33  openfire_4_6_0.tar.gz
d11cfed06901fef69fcac1c3c4e28f60256baf62  openfire_4_6_0_x64.exe
86e150c2cb9b74c63b3907e3c036cc046c78c5ba  openfire_4_6_0.zip
436f9833fe8d7185c800daf3d35c2d5d11d1f6ea  openfire_src_4_6_0.tar.gz
a3a274b2f12d4cf9f15cb981e6c2b18c78ca07c6  openfire_src_4_6_0.zip

As per usual, we have created a 4.6 branch in our source code repository, that will hold follow-up bug fixes for this release, which will be numbered with 4.6.x identifiers. The main branch will over time evolve into release 4.7. We do not expect to perform more releases on the 4.5 branch.

Thank you for using Openfire!

For other release announcements and news follow us on Twitter

2 posts - 4 participants

Read full topic

by guus at October 16, 2020 15:36

October 15, 2020

Erlang Solutions

What's new in MongooseIM 4.0 - The friendly Mongoose

Hello from the team at MongooseIM

It’s been busy four months. As most of us were locked in our homes, we decided to put it to use and prepare a really special release. We introduced a new configuration format, structured logging and many new features and extensions that add up to the product we are proud to share with you. MongooseIM has always empowered users to create a customised, owned chat application without the struggle of building one from scratch, now we’ve made these amazing features even more accessible and easy to use.

Friendly to developers with TOML configuration

We want everyone to be able to benefit from MongooseIM, and so it was a rude awakening to hear the configuration described as ‘the trenches of the Somme’ by one of our users. Given we love Erlang, we hadn’t considered that its configuration might be a barrier for some developers. Once we read the feedback we knew that had to change. In the release of 4.0 we are introducing a new configuration format. For that task we’ve decided to go with TOML. Thanks to its merits we managed to get rid of most of the nested lists and tuples that sometimes were followed by a comma and at other times by a dot. We have simplified the syntax and disassembled the trenches while keeping the required configuration capabilities.
If you want to have a closer look at the new configuration format, please have a look at the Configuration section in our docs.

Friendly to Kubernetes with Helm Charts

We all like to have the installation procedure as simple as installing a package. So we’ve made it possible to install MongooseIM and MongoosePush on Kubernetes through the Helm Chart.
You can find the Helm Charts of our organisation at the link below:
https://artifacthub.io/packages/search?page=1&org=mongoose

Friendly to DevOps with structured logging

In MongooseIM 4.0 we’re introducing structured logs. This can help to have more precise and clearer structure when we query events that are logged. This is a tool you may need not often, but when you do need it, you’ll be so glad you have it because it makes it significantly easier to find exactly what you’re looking for.
If you are not yet familiar with the new OTP logger and structured logs we recommend having a look at this https://ferd.ca/erlang-otp-21-s-new-logger.html blogpost.

Friendly for users with video and voice calling

With the new release, we added the implementation for XEP-0215: External Service Discovery which assists in discovering information about services external to the XMPP network. The main use-case is to help discover STUN/TURN servers to allow for negotiating media exchanges.
So if you want to have a video/voice call using MongooseIM and Conversations now you can. You can use MongooseICE as a STUN/TURN relay, configure MongooseIM with mod_extdisco enabled and start having video calls between connected users.
For more details on how to use and setup mod_extdisco and our STUN/TURN server stay tuned to our future blog posts and in the meantime, please see our documentation page: https://mongooseim.readthedocs.io/en/latest/modules/mod_extdisco/

Friendly for everyone with improvements to MongoosePush

We’ve released a new MongoosePush. In the 2.1 release you will find:
OpenAPI Specs
Phoenix as the Web Framework
Structured Logs, logfmt and JSON formatters
Metrics: Exometer to Telemetry, Multidimensional metrics
Many improvements in the testing pipeline

For more information on the new MongoosePush, please have a look at the release notes https://github.com/esl/MongoosePush/releases/tag/2.1.0

Friendly for managers with AMOC 2.1 Load testing

We released AMOC 2.1. This release focuses on the REST API, which is now powered by OpenAPI Specifications generated by openapi-generator. We’ve also significantly reworked the RestAPI so you can upload files with simple put requests. With the newly introduced documentation API for scenarios you can now check what the scenario is about before running it. Finally, the execution API was updated and now you have full control of options such as starting, stopping scenario, adding, removing users. This makes load testing even easier so you can demonstrate the value of MongooseIM to your management team.

Let’s be friends!

So if you ever considered MongooseIM for your product or a project but you didn’t choose it for some reason, it’s time to give it a try. It’s the most robust, scalable and now easiest to configure Instant Messaging solution available on the market. Learn more about how MongooseIM stacks up against the competitors in terms of key considerations like costs and features in our complete guide to choosing a messaging app. Or, explore the MongooseIM page.

One last word from your friends at MongooseIM

load testing diagram

After working hard to get the new release live, we wanted to show off a little creative spirit. Here’s the MongooseIM’s team summary of MongooseIM 4.0 as inspired by the theme song to Friends! https://www.youtube.com/watch?v=sLisEEwYZvw

So no one told your MongooseIM 4.0 was gonna be this way
When your app’s won’t scale, you’re broke
Your XMPP life’s DOA
It’s like you’re always stuck with a single node
When it hasn’t been your day, your week, your month
Or even your year, but
MongooseIM will be there for you
(When the rain of messages starts to pour)
MongooseIM will be there for you
(When you like to configure with TOML)
MongooseIM will be there for you
(‘Cause structured logs are for people too)

You may also like:

Our complete guide to Instant Messaging

MongooseIM - page

How to add messaging - webinar

Testing the scalability of MongooseIM - blog

How we can add value to your product with chat - blog

October 15, 2020 13:35

October 13, 2020

Erlang Solutions

The complete guide to Instant Messaging and in-application chat.

What you need to know about Instant Messaging and chat applications

Have you got the message? Chat is a critical feature for almost every business, in virtually every industry. Now, more than ever, digital communication is relied upon to share information and keep our contacts and users in touch. We’ve created bespoke chat applications for use cases as varied as large scale medical or digital health providers, industry-leading financial service providers and modern dating apps. For business-to-consumer uses, chat is a great way to turn your app or business into a community, keeping users engaged and adding a social element to your applications. On the other hand, in the B2B space, chat applications can be used to increase collaboration and productivity. In fact, external research conducted by one of our clients TeleWare found that instant messaging was the most in demand feature for a financial service app.

In this blog, we’ll look at some of the key considerations for an Instant Messaging service as well as the must-have features of the modern chat application and how MongooseIM 4.0 stacks up to deliver what you need.

Build vs buy

One of the first considerations a company needs to make when implementing a chat offering is whether to use an out-of-the-box product-as-a-service or software-as-a-service offering or build your own chat. Below we weigh up the pros and cons of each approach.


load testing diagram

Benefits of buying

The key benefits of an out-the-box purchase solution is that you are able to deploy quickly. The bigger players in this space often offer a comprehensive set of integrations and require little to no development from your team. They also provide users with a familiar user-interface, which means they’re incredibly quick for anyone to learn how to use. All of this means you can be up-and-running quickly with the peace-of-mind that you’re using a tried and tested solution.

Cons of buying

Both product-as-a-service and software-as-a-service options create the ongoing overhead of a subscription fee by their very nature. Over time, this cost inevitably adds up, making it a more expensive offering. Another drawback is that bought options are designed as one-size-fits-all products and seldom offer flexibility for bespoke features and changes. These options offer next to no control and data ownership is often shared. This makes it hard for your users to control their privacy and hard for your chat solution to meet any needs other than the most vanilla offering.The customer service and support can also be variable. All of this creates a huge potential for complication if something stops functioning in what is essentially a blackbox solution.

Benefits of building

Building provides you with the flexibility to create a specific chat solution for your needs and own every step in the functionality. In theory, building can be more affordable over the long-term as it reduces the ongoing costs of a software-as-a-service offering. An owned solution also minimises the risk of major changes in your chat application no longer being compitable with the rest of your application.

Cons of building

When building goes wrong, it is the most costly option, with high upfront and ongoing maintenance costs. Building your own chat application can run into difficulties when the app starts to scale (which is exactly when you want them least). Lastly, building something bespoke means there is no support or community to help you troubleshoot.

The MongooseIM way

MongooseIM is a massively scalable, battle tested, open-source chat server that has been proven to be able to handle 10’s of millions of connections with ease. With MongooseIM you have the freedom and flexibility to use the open-source product and develop it to your needs, or you can engage our experts to build bespoke features for you. Our team also offers the peace-of-mind of support should you ever need it. This gives you the freedom and flexibility to develop and own your chat solution without the cost or risk of starting from scratch.


load testing diagram

The most desired features in a chat application

With over a decade’s experience in building chat applications, we know the features required to ensure a success, taking everyone from the end-user to the DevOps team into consideration. Below is a list of the most used and desired features and how MongooseIM stacks up.

Real-time chat

It goes without saying that a chat application should allow users to reliably send and receive messages in real-time. MongooseIM’s scalability ensures that no matter what the spikes or loads of your user-base is, no important message will be lost in transit.

Push notifications

Push notifications are one of the most valuable parts of a modern chat application. Even if your user is not logged into the application, they’ll still be informed of the message. For B2C applications, that increases the chances of bringing them back to your app and for B2B applications, it ensures no important message goes missed, without requiring your team to be logged into a chat application at all times. MongooseIM has an in-house developed push notification management system, MongoosePush, which is designed to integrate with MongooseIM to easily enable push notifications for your chat app.

External integrations

MongooseIM rarely works alone, usually it is coupled with other microservices. We offer a rest API that these services can call, and an event pusher for MongooseIM to notify them, thus providing a two-way communication with other microservices over the REST API.

API

An easy to use API makes your chat application faster and easier to embed and integrate into your chat. We offer a REST API, which is simple, modern and easily understood by most developers. This can be used for both backend integration and client / service development.

Multi-user Chat

Group chat is one of the most popular features in social settings, and one of the most in-demand features for business collaboration. MongooseIM offers a multi-user chat functionality that is reliable and seamless for users whilst minimising demands on your server. We also provide a light-weight implementation of multi-user chat, tailored for mobile devices.

File Transfer and sharing

For a majority of use cases, allowing users to share and transfer files makes a chat more usable, keeping them engaged on your platform longer. MongooseIM uses an out-of-band transfer method which reduces the workload on the server side whilst still enabling an easier to use experience for users to share files within the chat application.

Batch permission

Batch permissions allow for privacy and control of access to information. MongooseIM uses access control lists to offer this functionality. Our chat applications have been approved by regulatory bodies in the health care and financial services worldwide.

Contact management

As an application built in XMPP, MongooseIM uses the tried and tested mod_roster functionality to allow for users to manage and customise their address books within the chat application.

History and version control

If something goes wrong, history and version control is vital. Having access to previous versions means you always have a proven version to fall back on. MongooseIM has a public history of its source code which you have access to at all times.

Contact sharing

Contact sharing from within a chat application encourages connections between groups of users, helps to grow user bases and increase collaboration.

Make sure your users get the message

MongooseIM 4.0 has just been released. In this release, we’ve gone a step further to ensure an easy to use product for developers, users and a DevOps alike. Explore the changes on GitHub

If you need help with the perfect chat solution for your needs, talk to our team of scalability experts. We’re always happy to help.

You may also like:

MongooseIM - page

How to add messaging - webinar

Testing the scalability of MongooseIM - blog

How we can add value to your product with chat - blog

October 13, 2020 15:08

October 12, 2020

Monal IM

4.8 for iOS released, new mac beta

4.8 for iOS should be approved soon and should start showing up in the app store soon. Since there weren’t a ton of builds for it, the mac build is being tested still and the beta has been updated. Ideally that doesnt have issues and will be released soon too .

by Anu at October 12, 2020 03:21

October 05, 2020

The XMPP Standards Foundation

XMPP bites into the apple!

Welcome to the XMPP newsletter covering the month of September 2020.

Newsletter translations

Translations of the XMPP Newsletter will be released here:

XSF Announcements

The XSF started the application period for its annual XSF Board and XSF Council elections. Applicants for the council must be elected XSF members, while board seats are open to everyone. If you are interested to apply for any of those positions please visit the application page.

The Q4 2020 XSF membership application period is open as well. If you are interested to become an XSF member you can apply here.

Articles

The German blog kuketz-blog.de published part 6 of its messenger series [German] covering the Android client Conversations.

Tigase published an article on the development of their multiplatform XMPP Library Halcyon written in Kotlin. In another article later this month they wrote on publishing and subscribing via XEP-0060. And to close this article serie, Tigase explains the STUN & TURN setup with their Tigase XMPP server using XEP-0215.

Software news

Clients and applications

A new major version of Movim is out, with improved notifications, new video-conferencing, chat features and some major performance overhaul. A new version for the Android application is also available to integrate all those features in the Android environment. Discover all the improvements of this new release on the official release note Movim 0.18 – Oterma. Have a look at Movim’s improved draw widget:

Movim

Gajim Development News (September): this month's post marks one year of Gajim Development News! The rework of Gajim’s preferences window has been completed. We improved group chat invitations and made group chat settings easier to access. Also, joining a group chat is now much prettier.

MCabber, the venerable old text UI client, has been released in version 1.1.1 and 1.1.2. Apart from bugfixes, support for displaying the number of unread messages and refactorization of carbon message handling has been implemented.

The Python SDK for GE WiFi-enabled kitchen appliances, gekitchen, made its first GitHub release. The primary goal is to use it to power integrations for Home Assistant, though that probably needs to wait for some new entity types. It is using XMPP as a mean to authenticate, since it is what the GE SmartHQ app uses to communicate with devices.

XMPP on iOS and Mac is getting traction after all:

  • Hello BeagleIM 4.0 and SiskinIM 6.0! Their iOS and MacOS clients now speak Mediated Information eXchange (MIX) (XEP-0369, XMPP’s new group chat protocol). VoIP connectivity has been improved with Jingle Message Initiation (XEP-0353), Last Message Correction (XEP-0308) is available for editing messages which were already sent, and other features like Message Retraction (XEP-0424) and quick replies for quoting were introduced. Support for CAPTCHA forms has been added as well: Extended In-Band Registration (XEP-0158) is invoked for additional verification during account registration. Of course there are many more changes and bugfixes!

  • The iOS and MacOS client Monal got a new push server and received improvements for Message Archive Management. This is one of the many changes to arrive in future releases. Be prepared and get a glimpse in the Monal Beta Testflight.

Servers

No chance for SPAM: Openfire presents their new 'Spam blacklist' plugin which enables reporting for users. Everyone, please report potential spammers! Openfire’s monitoring plugin has been released in version 2.1.0, featuring full text search for personal archive messages.

The Prosody XMPP server team has been busy this month with several exciting things. Firstly, the Prosody 0.11.6 release announcement. They also published a suite of new modules to allow simple invite-based account registration which can help guide new users through choosing a suitable client and registering their first XMPP account. Finally, they published a round-up of advice for everyone on how to help address spam on the XMPP network.

Prosody

Libraries

Libstrophe, a lightweight XMPP client library written in C, released version 0.10.0 which, besides bugfixes and a new API, brings new features: SCRAM-SHA-256 and SCRAM-SHA-512 support, c-ares support, LibreSSL support and global timed handlers that fire periodically regardless of connections status

There is a new beta online for Smack 4.4.0 (Smack 4.4.0-beta2), the Ignite RealTime Java XMPP library.

Other

Google Summer of Code 2020: Anmol summarized his three months work on In-Band Real Time Texting (RTT) for Dino (XMPP Desktop Client) in a final blog post.

The owner of the joinxmpp.org domain is lacking time for further development of the project. He wrote a short summary describing the original goals and says he is now looking for somebody motivated to take on the project.

Extensions and specifications

Developers and other standards experts from around the world collaborate on these extensions, developing new specifications for emerging practices, and refining existing ways of doing things. Proposed by anybody, the particularly successful ones end up as Final or Active - depending on their type - while others are carefully archived as Deferred. This life cycle is described in XEP-0001, which contains the formal and canonical definitions for the types, states, and processes. Read more about the standards process.

Updated

  • Version 2.11.0 of XEP-0004 (Data Forms)
    • Further clarify the presence requirements for the type attribute on fields.

Last Call

Last calls are issued once everyone seems satisfied with the current XEP status. After the Council decides whether the XEP seems ready, the XMPP Editor issues a Last Call for comments. The feedbacks gathered during the Last Call help improving the XEP before returning it to the Council for advancement to Draft.

Proposed Extensions

The XEP development process starts by writing up an idea and submitting it to the XMPP Editor. Within two weeks, the Council decides whether or not to accept this proposal as an Experimental XEP.

  • XMPP Compliance Suites 2021
    • This document defines XMPP application categories for different use cases (Core, Web, IM, and Mobile), and specifies the required XEPs that client and server software needs to implement for compliance with the use cases.

Thanks all!

This XMPP Newsletter is produced collaboratively by the community.

Thanks to agnauck, emus, mdosch, mwild1, pep., pmaziere, Seve, wurstsalat3000 and zash for their help in creating it!

Spread the news!

Please share the news on "social networks":

Find and place job offers in the XMPP job board.

Subscribe to the newsletter

We suggest you Subscribe to receive the next editions in your inbox as soon as it is published! Promote this newsletter to whoever may be interested.

Help us to build the newsletter

We started drafting every new issue in the XSF Github repository and we are always happy to welcome contributors. Do not hesitate to join the discussion in our Comm-Team group chat (MUC) and thereby help us sustain this as a community effort.

You have a project and write about it? Please consider sharing your news or events here, and promote it to a large audience! Even if you can only spend a few minutes, these would already be helpful!

Tasks which need to be done on a regular basis are for example:

  • Aggregation of news in the XMPP universe
  • Short formulation of news and events
  • Summary of the monthly communication on extensions (XEP)
  • Review of the newsletter draft
  • Preparation for media images
  • Translations: especially German and Spanish

License

This newsletter is published under CC BY-SA license.

by emus at October 05, 2020 22:00

XMPP bites into the apple!

Welcome to the XMPP newsletter covering the month of September 2020.

Newsletter translations

Translations of the XMPP Newsletter will be released here:

XSF Announcements

The XSF started the application period for its annual XSF Board and XSF Council elections. Applicants for the council must be elected XSF members, while board seats are open to everyone. If you are interested to apply for any of those positions please visit the application page.

The Q4 2020 XSF membership application period is open as well. If you are interested to become an XSF member you can apply here.

Articles

The German blog kuketz-blog.de published part 6 of its messenger series [German] covering the Android client Conversations.

Tigase published an article on the development of their multiplatform XMPP Library Halcyon written in Kotlin. In another article later this month they wrote on publishing and subscribing via XEP-0060. And to close this article serie, Tigase explains the STUN & TURN setup with their Tigase XMPP server using XEP-0215.

Software news

Clients and applications

A new major version of Movim is out, with improved notifications, new video-conferencing, chat features and some major performance overhaul. A new version for the Android application is also available to integrate all those features in the Android environment. Discover all the improvements of this new release on the official release note Movim 0.18 – Oterma. Have a look at Movim’s improved draw widget:

Movim

Gajim Development News (September): this month's post marks one year of Gajim Development News! The rework of Gajim’s preferences window has been completed. We improved group chat invitations and made group chat settings easier to access. Also, joining a group chat is now much prettier.

MCabber, the venerable old text UI client, has been released in version 1.1.1 and 1.1.2. Apart from bugfixes, support for displaying the number of unread messages and refactorization of carbon message handling has been implemented.

The Python SDK for GE WiFi-enabled kitchen appliances, gekitchen, made its first GitHub release. The primary goal is to use it to power integrations for Home Assistant, though that probably needs to wait for some new entity types. It is using XMPP as a mean to authenticate, since it is what the GE SmartHQ app uses to communicate with devices.

XMPP on iOS and Mac is getting traction after all:

  • Hello BeagleIM 4.0 and SiskinIM 6.0! Their iOS and MacOS clients now speak Mediated Information eXchange (MIX) (XEP-0369, XMPP’s new group chat protocol). VoIP connectivity has been improved with Jingle Message Initiation (XEP-0353), Last Message Correction (XEP-0308) is available for editing messages which were already sent, and other features like Message Retraction (XEP-0424) and quick replies for quoting were introduced. Support for CAPTCHA forms has been added as well: Extended In-Band Registration (XEP-0158) is invoked for additional verification during account registration. Of course there are many more changes and bugfixes!

  • The iOS and MacOS client Monal got a new push server and received improvements for Message Archive Management. This is one of the many changes to arrive in future releases. Be prepared and get a glimpse in the Monal Beta Testflight.

Servers

No chance for SPAM: Openfire presents their new 'Spam blacklist' plugin which enables reporting for users. Everyone, please report potential spammers! Openfire’s monitoring plugin has been released in version 2.1.0, featuring full text search for personal archive messages.

The Prosody XMPP server team has been busy this month with several exciting things. Firstly, the Prosody 0.11.6 release announcement. They also published a suite of new modules to allow simple invite-based account registration which can help guide new users through choosing a suitable client and registering their first XMPP account. Finally, they published a round-up of advices for everyone on how to help address spam on the XMPP network.

Prosody

Libraries

Libstrophe, a lightweight XMPP client library written in C, released version 0.10.0 which, besides bugfixes and a new API, brings new features: SCRAM-SHA-256 and SCRAM-SHA-512 support, c-ares support, LibreSSL support and global timed handlers that fire periodically regardless of connections status

There is a new beta online for Smack 4.4.0 (Smack 4.4.0-beta2), the Ignite RealTime Java XMPP library.

Other

Google Summer of Code 2020: Anmol summarized his three months work on In-Band Real Time Texting (RTT) for Dino (XMPP Desktop Client) in a final blog post.

The owner of the joinxmpp.org domain is lacking time for further development of the project. He wrote a short summary describing the original goals and says he is now looking for somebody motivated to take on the project.

Extensions and specifications

Developers and other standards experts from around the world collaborate on these extensions, developing new specifications for emerging practices, and refining existing ways of doing things. Proposed by anybody, the particularly successful ones end up as Final or Active - depending on their type - while others are carefully archived as Deferred. This life cycle is described in XEP-0001, which contains the formal and canonical definitions for the types, states, and processes. Read more about the standards process.

Updated

  • Version 2.11.0 of XEP-0004 (Data Forms)
    • Further clarify the presence requirements for the type attribute on fields.

Last Call

Last calls are issued once everyone seems satisfied with the current XEP status. After the Council decides whether the XEP seems ready, the XMPP Editor issues a Last Call for comments. The feedbacks gathered during the Last Call help improving the XEP before returning it to the Council for advancement to Draft.

Proposed Extensions

The XEP development process starts by writing up an idea and submitting it to the XMPP Editor. Within two weeks, the Council decides whether or not to accept this proposal as an Experimental XEP.

  • XMPP Compliance Suites 2021
    • This document defines XMPP application categories for different use cases (Core, Web, IM, and Mobile), and specifies the required XEPs that client and server software needs to implement for compliance with the use cases.

Thanks all!

This XMPP Newsletter is produced collaboratively by the community.

Thanks to agnauck, emus, mdosch, mwild1, pep., pmaziere, Seve, wurstsalat3000 and zash for their help in creating it!

Spread the news!

Please share the news on "social networks":

Find and place job offers in the XMPP job board.

Subscribe to the newsletter

We suggest you Subscribe to receive the next editions in your inbox as soon as it is published! Promote this newsletter to whoever may be interested.

Help us to build the newsletter

We started drafting every new issue in the XSF Github repository and we are always happy to welcome contributors. Do not hesitate to join the discussion in our Comm-Team group chat (MUC) and thereby help us sustain this as a community effort.

You have a project and write about it? Please consider sharing your news or events here, and promote it to a large audience! Even if you can only spend a few minutes, these would already be helpful!

Tasks which need to be done on a regular basis are for example:

  • Aggregation of news in the XMPP universe
  • Short formulation of news and events
  • Summary of the monthly communication on extensions (XEP)
  • Review of the newsletter draft
  • Preparation for media images
  • Translations: especially German and Spanish

License

This newsletter is published under CC BY-SA license.

by emus at October 05, 2020 22:00

Ignite Realtime Blog

Openfire 4.5.4 is released

The Ignite Realtime Community is pleased to announce the availability of Openfire version 4.5.4. This release is hopefully the last in the 4.5.x series as version 4.6.0 is near imminent. You can find a changelog denoting 12 issues resolved since 4.5.3.

Download artifacts are available here with the following sha1sum values:

50aaf8dff71162ef34f3485857b56cfe13b95894  openfire-4.5.4-1.i686.rpm
c41002922fe64eaacd19ad1f36e020e2a4f67651  openfire-4.5.4-1.noarch.rpm
a9680aac2589b86f26136a0db0b646636c260271  openfire-4.5.4-1.x86_64.rpm
b02cb4b94ca7c534a8cdc903363568f41308d6db  openfire_4.5.4_all.deb
6f146bd83cf2234561818c584148afcade104fe2  openfire_4_5_4_bundledJRE.exe
027c0d4f01446375de9f949b3a41a25727f84290  openfire_4_5_4_bundledJRE_x64.exe
e96a108ad70e0a9c6569594d822290ec505dff6d  openfire_4_5_4.dmg
7948ef87b242fc818240910dd6b37acacb7ab9ae  openfire_4_5_4.exe
dd5a50bea54f41226985e7116045f8811a62bf85  openfire_4_5_4.tar.gz
efa97aa9f66116adb210b3c9a0187d401a298f7b  openfire_4_5_4_x64.exe
4c7f81188bc447315cceb4625828990ae32163a7  openfire_4_5_4.zip
ba7ff821dbc2de81d0f094e128c1d1a5369d494c  openfire_src_4_5_4.tar.gz
75f40bf35f2af0e3a0279d556d097f30766e887f  openfire_src_4_5_4.zip

Thanks for your interest in Openfire.

For other release announcements and news follow us on Twitter

1 post - 1 participant

Read full topic

by akrherz at October 05, 2020 14:39

October 01, 2020

Prosodical Thoughts

Prosody 0.11.7 released

We are pleased to announce a new minor release from our stable branch. This is a security release for the 0.11.x stable branch. It is strongly recommended that all users upgrade to this release, especially those whose deployments have enabled mod_websocket. As well as upgrading, we recommend all public deployments to review and configure the c2s_stanza_size_limit and s2s_stanza_size_limit options to values they are comfortable with. The value is specified in bytes, and the XMPP specification requires values to be at least 10000 bytes, however it also recommends against just setting the limit to 10000 bytes.

by The Prosody Team at October 01, 2020 15:09

September 27, 2020

Monal IM

Push server outages

There have been two outages to the push server in the last two days. We are working on identifying the issue. It is related to some new code we are using that allows text and image previews in messages the Monal 4.8 rolls out. I apologize for the inconvenience the end result will hopefully make it worth it.

by Anu at September 27, 2020 19:35

Gajim

Development News September 2020

🥳 This month’s post marks one year of Gajim Development News! The rework of Gajim’s Preferences window has been completed. We improved group chat invitations and made group chat settings easier to access. Also, joining a group chat is now much prettier.

Changes in Gajim

After reworking Gajim’s configuration backend, it was time to redesign the Preferences window. During this month, a lot of work went into improving the settings framework, which will simplify coding and reduce the amount of code necessary to add new settings. Many of these changes won’t become visible instantly, but they will help future development.

Gajim’s Notification settings for event handling have been split up. You can now decide if you want notifications to be shown in general, and if you want new message to be opened directly (without a notification icon in the contact list). All settings around sending Chat States (e.g. ‘Composing…') have been moved from the Preferences window to the Accounts window, completing the migration of account-related settings. These are just a few of many improvements which you’ll discover in the next release. These changes should make it easier for you to handle all of Gajim’s configuration possiblities.

Gajim’s new Preferences window

Gajim’s new Preferences window

Gajim uses a ‘Sync Threshold’ setting to decide how many messages should be synchronized when joining a chat. If you set a custom Sync Threshold, please make sure to check the setting after upgrading Gajim, since it could not be migrated.

Receiving a group chat invitation can sometimes be ambiguous. ‘Do I really want to join this chat, or should I decline the invitation?’ In order for you to make an informed decision, Gajim now shows some information about the chat (group chat’s picture, name, and description) before joining. Furthermore, many people want to join public group chats using a different nickname from the one they use for private group chats. Gajim now offers to choose a nickname directly before joining.

The new Group Chat Invitation window

The new Group Chat Invitation window

You already now that many group chat actions (for example Information, Change Nickname…) are shown on group chat ‘pages’. Group chat settings (e.g. Minimize on Close, Show Status Changes) are now organized on a new settings page. This reduces the menu layers needed to click through until you reached the setting you wanted to change, and it also puts all settings in a single place for a better overview.

By default, Gajim will keep your chat history forever. However, if you want to cleanup your chat history from time to time, Gajim now offers to automatically reduce the amount of baggage you’re carrying with you. Of course it’s you who decides for how long Gajim should keep your chat history.

Gajim’s features (protocol extensions, called XEPs) are now listed on gajim.org/support/extensions. The table is automatically generated from Gajim’s DOAP (Description of a Project) file, which reduces the amount of maintenance significantly.

What else happened

  • A/V menu entries are now updated (enabled/disabled) correctly when receiving the contact’s capabilities
  • If Gajim fails to join a group chat, it now offers a Retry button (and also ‘Forget Group Chat’)
  • When pasting images from the clipboard, a preview is shown before sending
  • A ‘Send message’ button is now available for chat windows
  • Notification for contact sign in/out has been removed
  • VCard and Avatar publishing code has been reworked
  • A bug has been fixed where the notification icon would stay after blocking/reporting someone who sent you a subscription request and a message (#10264)
  • There have been speed improvements for SQLite operations concerning chat message processing (#10027)
  • Escape key will not close chat windows by default in the future
  • Some shortcuts now use Primary (Ctrl/Cmd) instead of Alt (which is often used by Window Management): Change Subject (<Primary><Shift>S), Emoji Chooser (<Primary><Shift>M)

Plugin updates

Gajim’s URL Image Preview is now able to preview audio files. If you receive a voice message, you can play it directly from within the chat window. The Syntax Highlighter plugin now features a ‘Paste as Code’/‘Paste as Code Block’ entry for the chat input. ‘Paste as Code’ will surround the text you paste with backticks, which enables syntax highlighting.

Each chat message shows a little green shield icon if it is encrypted. Colors for these icons have been unified between OMEMO, OpenPGP, and incoming/outgoing messages. Additionally, some issues have been resolved with Gajim’s PGP/OpenPGP plugins on Flatpak.

Changes in python-nbxmpp

Support for VCard Temp (XEP-0054) has been added. Furthermore, the code for VCard and Avatar publishing has been reworked. Tasks (using Python Generators) have been introduced, which should simplify the flow of many operations in the future. So far, Pubsub, Avatars, and Discovery are using Tasks.

As always, feel free to join gajim@conference.gajim.org to discuss with us.

Gajim

September 27, 2020 00:00

September 25, 2020

Jabber.org Notices

Migration Update

This morning's migration of the conference.jabber.org groupchat service was a success. We are now planning the migration of end-user accounts and we will post again when we are ready to complete that task.

September 25, 2020 00:00

September 24, 2020

Tigase Blog

Publishing and Subscribing with Halcyon

Publishing and Subscribing with Halcyon

As you recall, Halcyon is multiplatform XMPP library written in Kotlin. In a previous article: “A look at Halcyon” we had a look at basic concepts in library and we created a simple client.

This time we will dive into more complex stuff. We will create simple solution to monitoring temperature at home :-) In this article we will not focus on measuring temperature. We will create a command-line tool to publish temperature provided as parameter.

First letter in XMPP acronym is from the word “eXtensible”. There is a lot of extensions for the XMPP protocol. One of them is XEP-0060: Publish-Subscribe - specification for publish-subscribe functionality. We will use it to create our temperature monitor.

You need to use XMPP Server with PubSub component. You can use your deployment (for example Tigase XMPP Server or use one of the publicly available servers, for example sure.im and its PubSub component pubsub.sure.im. A PubSub node with unique name (to avoid conflicts) will have to be created in the PubSub component. Please note that node created with default configuration is open, which means that everyone can subscribe to it (but only you will be able to publish data there).

Data structure

First of all we have to create data structure. In our case, it will be as simple as possible:

<temperature timestamp="1597946187562">23.8</temperature>

timestamp is time represented as a number of milliseconds after January 1, 1970 00:00:00 GMT.

We can use DSL (defined in Halcyon) to create such XML fragment:

val payload = element("temperature") {
    attributes["timestamp"] = (Date()).time.toString()
	+temperature.toString()
}

Publisher

Publisher is a simple XMPP client that connects to the server, sends information to PubSub component and immediately disconnects.

First of all, lets define global values to keep node name and PubSUB JID:

val PUBSUB_JID = "pubsub.tigase.org".toJID()
val PUBSUB_NODE = "temperature_in_my_house"

It cannot be called a good practice, but is good enough for us right now :-)

In the previous article we explained how to create a simple client. Now we will focus on PubSubModule. This module allows publishing and receiving events as well as managing PubSub nodes and subscriptions.

This is the main code that publishes events:

pubSubModule.publish(PUBSUB_JID, PUBSUB_NODE, null, payload).handle {
    success { request, iq, result ->
        println("YAY! Published with id=${result!!.id}")
    }
    error { request, iq, errorCondition, s ->
        System.err.println("ERROR $errorCondition! $s")
    }
}.send()

But what if the PubSub node doesn’t exist (e.g. it wasn’t created yet)? It’s simple: we have to create it using method create():

pubSubModule.create(PUBSUB_JID, PUBSUB_NODE).handle {
    success { _: IQRequest<Unit>, _: IQ, _: Unit? -> println("Got it! Node created!") }
    error { _: IQRequest<PubSubModule.PublishingInfo>, _: IQ?, errorCondition: ErrorCondition, msgs: String? ->
        println(
            "OOPS! Cannot create node $errorCondition $msgs"
        )
    }
}.send()

The question is: under what conditions we should call this part of code and automatically create the node? One of the possibilities would be moment when item publishing fails with error item-not-found.

pubSubModule.publish(PUBSUB_JID, PUBSUB_NODE, null, payload).handle {
    success { request, iq, result ->
        println("YAY! Published with id=${result!!.id}")
    }
    error { request, iq, errorCondition, s ->
        if (errorCondition == ErrorCondition.ItemNotFound) {
            println("Node not found! We need to create it!")
            pubSubModule.create(PUBSUB_JID, PUBSUB_NODE).handle {
                success { _: IQRequest<Unit>, _: IQ, _: Unit? -> println("Got it! Node created!") }
                error { _: IQRequest<PubSubModule.PublishingInfo>, _: IQ?, errorCondition: ErrorCondition, msgs: String? ->
                    println(
                        "OOPS! Cannot create node $errorCondition $msgs"
                    )
                }
            }.send()
        } else System.err.println("ERROR $errorCondition! $s")
    }
}.send()

To simplify the code, publishing will not be repeated after node creation.

It is good to use client.waitForAllResponses() before disconnect(), to not break connection before all responses comes back.

Listener

Listener is also a client (it should works on different account) that subscribes to receiving events from specific nodes of PubSub component. PubSub items received by PubSubModule are distributed in the client as PubSubEventReceivedEvent in Event Bus. To receive those events you have to register an events listener:

client.eventBus.register<PubSubEventReceivedEvent>(PubSubEventReceivedEvent.TYPE) {
    if (it.pubSubJID == PUBSUB_JID && it.nodeName == PUBSUB_NODE) {
        it.items.forEach { item ->
            val publishedContent = item.getFirstChild("temperature")!!
            val date = Date(publishedContent.attributes["timestamp"]!!.toLong())
            val value = publishedContent.value!!
            println("Received update: $date :: $value°C")
        }
    }
}

Note, that this listener will be called on every received PubSub event (like OMEMO keys distribution, PEP events, etc). That’s why you need to check node name and JabberID of PubSub component.

Your client will not receive anything from PubSub if it does not subscribe to specific node. Because subscription is persistent (at least with default node configuration), client doesn’t need to subscribe every time it connects to the server. Though, it should be able to check if it’s subscribed to the specific node or not. For that, you need to retrieve list of subscribers and see if the JabberID of the client is on the list:

val myOwnJID = client.getModule<BindModule>(BindModule.TYPE)!!.boundJID!!
pubSubModule.retrieveSubscriptions(PUBSUB_JID, PUBSUB_NODE).response {
    if (!it.get()!!.any { subscription -> subscription.jid.bareJID == myOwnJID.bareJID }) {
        println("We have to subscribe")
        pubSubModule.subscribe(PUBSUB_JID, PUBSUB_NODE, myOwnJID).send()
    }
}.send()

NOTE: In this example we intentionally skipped checking response errors.

PubSub component can keep some history of published elements. We can retrieve that list easily:

pubSubModule.retrieveItem(PUBSUB_JID, PUBSUB_NODE).response {
    when (it) {
        is IQResult.Success -> {
            println("Previously published temperatures:")
            it.get()!!.items.forEach {
                val date = Date(it.content!!.attributes["timestamp"]!!.toLong())
                val value = it.content!!.value!!
                println(" - $date :: $value°C")
            }
        }
        is IQResult.Error -> println("OOPS! Error " + it.error)
    }
}.send()

Length of the history is defined in node configuration.

Sample output

Submitting new temperature in Publisher…: publishing

yields receiving notifications in Listener: listening

Summary

We presented a simple way to create a PubSub publisher and consumer. You can extend it: for example you can run publisher on Raspberry Pi connected to some meteo-sensors. Possible applications of PubSub component are limited only by your imagination.

All source codes for this article can be found in GitHub repository.

September 24, 2020 00:00

September 22, 2020

Prosodical Thoughts

Simple Anti-Spam Tips

You can take it as a sign of success of a network when it becomes worthwhile for spammers to set up camp. If you’re an active user of XMPP, there is a chance you’ve been unfortunate enough to receive spam in recent weeks. Spam has always been an occasional issue on the network, as with any network, website or internet service. However a few years ago spammers really started to take things more seriously on XMPP.

by The Prosody Team at September 22, 2020 09:30

Jabber.org Notices

Groupchat Migration

This Friday, 2020-09-25, starting around 14:30 UTC, your admin team plans to migrate the conference.jabber.org groupchat service to a new machine and server software. If all goes well the downtime will be limited to ~30 minutes or less. Please note that this will not affect one-to-one chats, only groupchat rooms. Thanks for your patience.

September 22, 2020 00:00

September 20, 2020

Ignite Realtime Blog

Smack 4.4.0-beta2 released

The Smack developers are happy to announce the availability the second beta release of Smack 4.4.0. We expect Smack 4.4.0-beta2 to be the last beta before the first release candidate is published. Please consider testing this release in your integration stages and report back any issues you may found. The more people are actively testing pre-releases, the less issues will remain in the actual release.

1 post - 1 participant

Read full topic

by Flow at September 20, 2020 13:25

Peter Saint-Andre

Beyond Binary

As political polarization proliferates, it's beneficial to explore realms of thought that are not limited to left vs. right and us vs. them. Personally, I'm partial to philosophy: it's impossible to reduce all of philosophical thinking to, say, Epicureans vs. Stoics without ignoring the deep and unique contributions of Platonists, Aristotelians, Taoists, Buddhists, Confucians, Hindus, Christians, humanists, skeptics, existentialists, and many more....

September 20, 2020 00:00

September 17, 2020

Monal IM

News betas up for 4.8

There are new betas for iOS and macOS. Among many other fixes there are improvements to message archive management (MAM) which should allow you to scroll through your entire history. In addition there is a button to scroll to the newest message (like signal and WhatsApp)

by Anu at September 17, 2020 12:37

September 15, 2020

Tigase Blog

Using STUN & TURN server with Tigase XMPP Server with XEP-0215 (External Service Discovery)

Communication with your family and friends is not only about instant chats. Audio and Video calls are quite important and sometimes, under unfavourable network configurations establishing a call may prove difficult. Luckily, with the help of STUN (Session Traversal Utilities for NAT) and TURN (Traversal Using Relays around NAT ) servers it’s no longer a problem

In the following guide we will show how to setup TURN and STUN servers with Tigase XMPP Server, so that compatible XMPP clients will be able to use them. Our xmpp.cloud installation supports not only them, but also XMPP MIX

Assumptions

We are assuming that you have installed your preferred TURN server and created an account on the TURN server for use by your XMPP server users and that you have installed and configured Tigase XMPP Server.

At the end of the article there is a short guide hot to quickly setup CoTURN server.

Enabling external service discovery (required only for Tigase XMPP Server 8.1.0 and earlier)

First you need to edit etc/config.tdsl file and:

  1. Add following line in the main section of the file:

    'ext-disco' () {}
  2. Add following line in the sess-man section of the file:

    'urn:xmpp:extdisco:2' () {}

so that your config file would look like this:

'ext-disco' () {}
'sess-man' () {
    'urn:xmpp:extdisco:2' () {}
    …
}
…

Start Tigase XMPP Server

After applying changes mentioned above, you need to start Tigase XMPP Server or, in case if it was running, restart it.

Open Admin UI

Open web browser and head to http://<your-xmpp-server-and-port>/admin/ (for example: https://localhost:8080). When promped, log in by providing admin user credentials: bare JID (i.e.: user@domain) as the user and related password. Afterwards you’ll see main Web AdminUI screen:

web admin main page

and on that screen open Configuration group on the left by clicking on it.

Add external TURN service

After opening Configuration group (1) click on Add New Item (2) position which has ext-disco@… in its subtitle.

In the opened form you need to provide following detail: web admin add new turn item

  • Service - ID of the service which will be used for identification by Tigase XMPP Server (ie. turn@example.com)
  • Service name - name of the service which may be presented to the user (ie. TURN server)
  • Host - fully qualified domain name of the TURN server or its IP address (ie. turn.example.com)
  • Port - port at which TURN server listens (ie. 3478)
  • Type - type of the server, enter turn
  • Transport - type of transport used for communication with the server udp or tcp (usually udp)
  • Requires username and password - for notifying XMPP client that this service requires its username and password for XMPP service (leave unchecked)
  • Username - username required for authentication for TURN server (ie. turn-user)
  • Password - password required for authentication for TURN server (ie. turn-password)

After filling out the form, press Submit button (3) to send form and add a TURN server to external services for your server. Admin UI will confirm that service was added with the following result web admin add new item confirmation

Add external STUN service

While adding a TURN server is usually all what you need, in some cases you may want to allow your users to use also STUN. Steps are quite similar like on TURN server - after opening Configuration group (1) click on Add New Item (2) position which has ext-disco@… in its subtitle and in the opened form you need to provide following detail: web admin add new stun item

  • Service - ID of the service which will be used for identification by Tigase XMPP Server (ie. stun@example.com)
  • Service name - name of the service which may be presented to the user (ie. STUN server)
  • Host - fully qualified domain name of the STUN server or its IP address (ie. stun.example.com)
  • Port - port at which TURN server listens (ie. 3478)
  • Type - type of the server, enter stun
  • Transport - type of transport used for communication with the server udp or tcp (usually udp)
  • Requires username and password - for notifying XMPP client that this service requires its username and password for XMPP service (leave unchecked)
  • Username - username required for authentication for STUN server (if required)
  • Password - password required for authentication for STUN server (if required)

Note

If you are using the same server for STUN and TURN (you usually will as TURN servers usually contain STUN functionality) you will fill the following form with almost the same details *(only use different Service field value, Type will be stun and most likely you will skip passing Username and Password - leaving them empty, the rest of the field values will be the same).

After filling out the form, press Submit button (3) to send form and add a STUN server to external services for your server. Admin UI will confirm that service was added with the following result web admin add new item confirmation

And now what?

Now you have fully configured your STUN/TURN server for usage with Tigase XMPP Server allowing XMPP clients connected to your server and compatible with XEP-0215: External Service Discovery to take full advantage of your STUN/TURN server ie. by providing better VoIP experience.

CoTURN installation

You can quickly setup CoTURN server using Docker. Please follow Docker installation on your operating system and then install CoTURN using Docker Hub (instrumentisto/coturn). The bare minimum required to run it looks like that (please update realm with your domain and external-ip with IP on which server should be accessible):

sudo docker run --name coturn -d --network=host --restart always  instrumentisto/coturn -n --log-file=stdout --min-port=49160 --max-port=49200 --realm=awesomexmpp.net --external-ip=<external_ip> -a'

Subsequently, add user to CoTURN with password and domain:

sudo docker exec -i -t coturn turnadmin -a -u tigase -r awesomexmpp.net -p Ajbk7Ck38nIobLVl

September 15, 2020 00:00

September 13, 2020

Prosodical Thoughts

Great Invitations

There are two kinds of servers on the XMPP network today: those with public registration, and those without. The servers that support registration generally allow you to create accounts via the web, or using your XMPP client (XEP-0077). The problem is that this opens your server up to the world. Even when you add CAPTCHAs and other defences, even the most careful XMPP public server admin will at some point see spammers registering accounts on their server.

by The Prosody Team at September 13, 2020 17:08

September 11, 2020

Monal IM

Monal push server upgrade

In preparation for Monal 4.8, the push server has been upgraded. In addition to the usual fixes that come with a software update in this case, people using the Monal 4.8 beta should now see a single notification for every message that comes in with the message text in the notification. For those of you who used Monal in iOS 12 this will be very familiar. This should be functionally similar to how things were in iOS 12. Sorry this took so long, huge thanks to Thilo for doing the heavy lifting here and implementing both the server and the iOS extension that powers this.

by Anu at September 11, 2020 02:37

September 10, 2020

Ignite Realtime Blog

Openfire Monitoring plugin version 2.1.0 has been released

The Ignite Realtime community is happy to announce that version 2.1.0 of the Monitoring plugin has been released!

This release is mainly a bugfix release. Message archiving functionality has been improved (fixes have been applied for both XEP-0136 and XEP-0313), full text search has been added to the personal message archives of users, and a variety of smaller bug fixes have been applied.

In this release, the feature of retrieving messages ‘out of order’ has been removed.

The new version of the plugin will become available for installation in the admin console of your instance of Openfire in the next few hours. Alternatively, it can be downloaded from its archive page right now.

Note that for instances that have a lot of archived messages in their database, the initial load of this plugin might require a significant amount of time, as some database updates will be executed. For reference: it took our test instance, that has approximately 11 million archived messages in an external database approximately 9 minutes to perform this update.

For other release announcements and news follow us on Twitter

1 post - 1 participant

Read full topic

by guus at September 10, 2020 19:42

Anmol Chaudhary

GSoC 2020 Ends - Final Words

With the rise in the usage of the internet, the need for digital communication is increasing day by day, this has only been accelerated by the current COVID-19 pandemic in 2020. More and more people are using chat applications to communicate with each other whether it is their loved ones or for discussing work with colleagues.

This summer I was involved in implementing In-Band Real Time Text (RTT) for Dino. Real Time Text allows transmission of text instantly just as the user is typing. This allows for faster and more engaging textual conversations just as telephonic calls but at the same time keeping the discretion of text-based communication.

To sum it up here’s what I did in order to make RTT work:

  • Message Comparision that generates the difference between two strings, in this case, used to generate a difference between the message being typed in real-time to generate necessary action elements. The algorithm is based on “Gestalt pattern matching” (Details, see here)

  • Sending and receiving real-time texts in both single and multi-user chats. The Real-Time Text has support for all action elements (insert, erase, wait) and events (new, edit, reset, init, cancel) mentioned in XEP-0301. The RTT are displayed on the conversation view along with traditional messages. In MUC at a given time, only 3 RTT are displayed in order to keep the User Interface clutter-free, the priority for which is determined by the affiliation of the member. (Details : here, here, here, here, and here)

  • RTT Setting radio toggle to toggle between Off/Receive only/Send and Receive. This is handled by using events “init” and “cancel”. (Details, see here and here)

  • Handling of stale messages that removes the RTT widget from UI if there is no update in a given time interval. This may be due to peer stopped typing or loss of sync. (Details, see here)

  • Multi-Device Support to sync input between different instances of Dino. With this, a user can start composing a message on one device and finish on another. (Details, see here)

  • Compatibility with Last Message Correction. With this, RTT is also displayed for the messages being corrected. The live correction is displayed in place of the old message received.

The PR for which is available here.

Overall it has been a great 3-month long journey. From working with a completely new language - Vala to fixing a ton of bugs in the process, and from discussions with mentor to the weekly meetings; I enjoyed my time with XSF.

Although GSoC is now officially over, I look forward to contributing more to XSF and Dino in particular in the future. Next I plan on implementing message retraction and message moderation.

Finally, I thank my mentors especially Marvin for guiding me through the summer. They have always been present to solve any problems I faced whether it was regarding discussion on how to implement something or for some bug fix. I also thank the XSF community for having me as a student developer this summer.

September 10, 2020 00:00

September 09, 2020

Prosodical Thoughts

Prosody 0.11.6 released

We are pleased to announce a new minor release from our stable branch. This release brings a collection of fixes and improvements added since the 0.11.5 release improving security, performance, usability and interoperability. This version continues the deprecation of using prosodyctl to start/stop Prosody if it is installed system-wide. You should use your init system’s appropriate commands to manage the Prosody process instead. You can silence the warnings with the ‘prosodyctl_service_warnings’ option.

by The Prosody Team at September 09, 2020 13:46

Ignite Realtime Blog

New Openfire plugin to help reduce spam!

The Openfire community is happy to announce the immediate availability of a new plugin: the blacklist spam plugin.

With the growing popularity of XMPP-based solutions, we’re also seeing an increase of a less desirable application of XMPP: the distribution of unsolicited messages over instant messaging (SPAM, or SPIM).

In order to help our Openfire community combat known spam, we have now released a new plugin the “Spam blacklist” plugin. This is configured with a URL that is used to lookup addresses of known SPAM distributors and block all messages sent by these addresses.

By default, the plugin is configured to read from a blacklist that is hosted on the igniterealtime.org website, and block all messages sent by any user on a domain listed there. The blacklist hosted by the Ignite Realtime community is a periodically updated copy of the list that is curated by the https://github.com/JabberSPAM/blacklist project. You can help combat spam by contributing to that project!

In the next few hours, the plugin will pop up in the list of available plugins on all Openfire instances. Alternatively, you can manually download and install the plugin from its archive page.

For other release announcements and news follow us on Twitter

3 posts - 2 participants

Read full topic

by guus at September 09, 2020 08:02

September 05, 2020

Peter Saint-Andre

Aristotle Research Report #14: The Faults of Aristotle

Although I think Aristotle was the greatest mind who ever lived, he did have his faults. In modern times, he is especially criticized for supposedly being anti-science, anti-democracy, pro-slavery, and anti-women. Let us briefly consider these charges....

September 05, 2020 00:00