Agregador de noticias

Tigase Blog: Connecting a distributed workforce with Tigase

Planet Jabber - 30 August, 2016 - 23:49

It’s not uncommon to find a company deciding to forego the traditional office environment and instead choose to hire a distributed workforce.

Stefan Strigler: Compile MongooseIM on OS X with openssl

Planet Jabber - 29 August, 2016 - 13:38

Another tricky thing I always struggle with: Get MongooseIM compiled on OS X (since they removed openssl). So if you have openssl installed via homebrew just do

diff --git a/apps/ejabberd/rebar.config b/apps/ejabberd/rebar.config index c693471..4e5ff1f 100644 --- a/apps/ejabberd/rebar.config +++ b/apps/ejabberd/rebar.config @@ -8,8 +8,15 @@ {require_otp_vsn, "R?1[678]"}. {port_specs, - [{".*", "priv/lib/", ["c_src/tls_drv.c"], [{env, [{"LDFLAGS", "$LDFLAGS -lssl"}]}]}, - {".*", "priv/lib/", ["c_src/ejabberd_zlib_drv.c"], [{env, [{"LDFLAGS", "$LDFLAGS -lz"}]}]}]}. + [{".*", "priv/lib/", ["c_src/tls_drv.c"], [{env, [{".*apple-darwin.*", "CFLAGS", "$CFLAGS -I/usr/local/opt/openssl/include"}, + {".*apple-darwin.*", "LDFLAGS", "$LDFLAGS -L/usr/local/opt/openssl/lib"}, + {"LDFLAGS", "$LDFLAGS -lssl"}]}]}, + {".*", "priv/lib/", ["c_src/ejabberd_zlib_drv.c"], [{env, [{"LDFLAGS", "$LDFLAGS -lz"}]}]}, + {".*", "priv/lib/", ["c_src/sha_drv.c"], [{env, [{".*apple-darwin.*", "CFLAGS", "$CFLAGS -I/usr/local/opt/openssl/include"}, + {".*apple-darwin.*", "LDFLAGS", "$LDFLAGS -L/usr/local/opt/openssl/lib"}, + {"LDFLAGS", "$LDFLAGS -lcrypto"}]}]}, + {".*", "priv/lib/", ["c_src/xml.c"], []}, + {".*", "priv/lib/", ["c_src/expat_erl.c"], [{env, [{"LDFLAGS", "$LDFLAGS -lexpat"}]}]}]}. {xref_checks, [undefined_function_calls, undefined_functions,

Monal IM: Tracking Progress on OMEMO encryption

Planet Jabber - 29 August, 2016 - 01:49

For those who are interested in the collaborative effort to have a standard modern encryption scheme on the major mobile and desktop clients. You can see where things are for Monal and Chatsecure at the github issue.



Monal IM: TV Portal UI Finalized

Planet Jabber - 25 August, 2016 - 19:11

Now that the app is mostly done I’ve put in some nicer images in TV portal.  IT also supports viewing scheduled recordings now. Going to keep testing (aka watch tv) to see what bugs arise but this is mostly done at this point. Please contact me at if you would like to help test this. 

Ignite Realtime Blog: Spark 2.8.0 Released

Planet Jabber - 25 August, 2016 - 15:31

The Ignite Realtime community has just released Spark 2.8.0 and it can be downloaded from Ignite Realtime: Downloads.


This is a major release marking the end of support for Java 7 (which has reached the end of life state more than a year ago). Full Spark installers have already been bundled with Java 8 for some time. Online installer won't work with Java 7 starting with 2.8.0 version. We recommend updating to Java 8. Underlying Smack library has been updated to the latest version in this release. Roar plugin has received new popup control options as well.


There is a huge list of changes in this version. So this most probably has introduced new issues (though we have tried to catch and fix most of them before the release). Please report in the forums, if you find them. Again, please do not post bug reports in the comments of this blog post.


For a complete list of changes please check Spark Changelog


As usually we encourage new developers to join Spark project and provide patches. Those familiar with Smack can join the development easier, as we are now on the current version of it (4.1.8 at the moment of this release). Patches can be attached in the forums or submitted as PRs on GitHub.


Here are the contributors to this release (besides myself):

Wolf  updated Roar plugin to have separate settings for group chat and keyword matching popups, added system style popups

Alexander198961 · GitHub  added option to save room's password, added URL support to admin's broadcast dialog

Леонід  added Ukrainian translation

nicoben (Nico Ben) · GitHub  updated Italian translation

speedy  fixed failed login process with self-signed certificates, updated Substance skin library, fixed an issue with idle on Windows 10 lock screen

Daryl Herzmann  fixed Debian build


We owe Guus der Kinderen  a separate mention. Guus has done a huge job of updating Spark to the current Smack version, which contains a lot of bug fixes, security patches and new features. He has also fixed many other issues along the way. Such as group chat window size issues, room occupants presence management, annoying word wrapping issue with long text lines, SSO/GSSAPI problems, etc.


Important information for SSO (Single Sign On) users, if they are using SRV records: SSO (Single Sign On) configuration changes with Spark 2.8.0


UPDATE: Important information for those having login issues with 2.8.0: Login issues with Spark 2.8.0


[SIP phone] SIP plugin is not working since the Smack 4 update. We hope to have it fixed for 2.8.1.

[Voice Chat] Jingle (PC to PC) calls are not working at this point.

[Linux] Flashing plugin is not working on Linux systems.


Here are sha1 checksums for the downloads:

6fa1265e7def8800e0a4356bd1b7d8cf58bb85f8  spark_2_8_0.dmg

741c20d9141c88ecde08d60fbc11145887d32573  spark_2_8_0.exe

b76e36da81469561fdad4a227fa4ad68d792ca7b  spark_2_8_0_online.exe

e2fcdddb4e84f6f1abe9d62a39aa0c7c9e06d814  spark_2_8_0.tar.gz

a772028ba10db2084ea7e2b7b1fb408803c77a5b  spark-2.8.0.rpm

38ca0d9ab5ccd7d61be03b702a0abd5c8939ada5  spark-2.8.0.src.rpm

fba8705d54f49bceb62f19a30348482f9bbeacfb  spark_2_8_0.deb

Ignite Realtime Blog: Openfire 4.0.3 is Released

Planet Jabber - 17 August, 2016 - 16:16

The Ignite Realtime Community is pleased to announce the 4.0.3 release of Openfire.  Openfire is a cross-platform real-time collaboration server based on the XMPP (Jabber) protocol.  This release signifies our ongoing effort to produce a stable 4.0 series release while continuing to work toward a 4.1 release. A changelog of fixes is available and indicates 14 issues resolved.


Note: There was an unfortunate and complicated problem with the distributed 4.0.2 .deb Openfire installer.  If you had troubles with it and reverted to 4.0.1, we hope that you try 4.0.3 now.  See OF-1116 for some more details.  Also, if you are an experienced Debian/Ubuntu packager, we would certainly love your feedback on how the .deb package for Openfire is generated and distributed.


Additionally, this update contains an updated truststore. This truststore is used by Openfire to secure remote connections.  If you are using an installer and have manually updated this file in the past, it is likely that the installer will not overwrite your changes with the new truststore.  Please review your resources/security directory after install and rectify differences you may find.


As always, please report issues in the Community Forums and you can download this release from our website.  Here are the sha1sum's for the downloads available.




openfire_4_0_3.dmgWindows690d3b2114b98f45836191f73d242ee9702c6771openfire_4_0_3.exeBinary (tar.gz)


a2222bbef28342553a8ec00500064929dc77029d (updated 19 August 2016)

openfire_4_0_3.tar.gzBinary (zip)



openfire_4_0_3.zipSource (tar.gz)87aa9a17938c3ce9441d61802e669f87fd0e324fopenfire_src_4_0_3.tar.gzSource (zip)698c598a73dd01cec4037df98190f017dbb19444openfire_src_4_0_3.zipRPM Installer


ad42faaa8da58de463124fa35d0ae0271a20e4bd (updated 19 August 2016)

openfire-4.0.3-1.i386.rpmDEB Installer5c53afd72cf527edf81915d2aaa0fe68d96b6346openfire_4.0.3_all.deb


Update 19 August 2016: A problem was found with the 32bit RPM containing a 64 bit JRE.  This artifact has been refreshed on the website for download. Also Binary (tar.gz) package has been replaced to include the usual binaries.


As a reminder, Openfire's source code and development can be found on Github and an active developer discussion occurs within our groupchat.  Please consider helping out with Openfire's development!  We can use help in about all areas of development, but especially:

  • experienced packaging developers to improve the install/upgrade experience on various platforms
  • developers interested in transitioning Openfire to Maven
  • testing of bamboo generated builds


Thank you for your interest in Openfire!

Remko Tronçon: HAProxy Alerts with WebHooks

Planet Jabber - 15 August, 2016 - 22:00

I want to be notified immediately when one of the backend servers behind my HAProxy instance goes down. HAProxy offers alerting functionality, but only via SMTP: when a backend goes down it sends an email to a list of recipients via an SMTP server you provide. Unfortunately, email isn’t an ideal mechanism for real-time notification, and I don’t have an SMTP server accessible from my HAProxy instance. In this post, I’ll show my setup of HAProxy posting its alerts to a Slack channel and the Pushover push notification service, using smtp-http-proxy and AWS Lambda.

Continue reading post

Peter Saint-Andre: Working for Freedom

Planet Jabber - 14 August, 2016 - 00:00
Almost four years ago to the day, I posted some hopeful thoughts about working for freedom within the Republican party, specifically within the framework of the Republican Liberty Caucus. I changed my voter registration to Republican, attended a few meetings and caucuses, and started to learn a bit about how electoral politics works at the local level (which, in the county where I live, mostly means Republican party politics).

Tigase Blog: Message Archive Component

Planet Jabber - 13 August, 2016 - 00:30

The Message Archive Component provides for storage of messages and stanzas.

Christian Schudt: Babbler 0.7.1 (Bugfix) Released

Planet Jabber - 11 August, 2016 - 10:57
A bugfix version of the XMPP client library has been released to Maven Central: 0.7.1

Here's the changelog:

  • Discovering services should not fail immediately if one sub-query fails.
  • Make sure abnormal WebSocket disconnections trigger the reconnection.
  • Make sure RECONNECTION_SUCCEEDED event is triggered for external components.
  • Add listeners to listen for successful or failed send operations.
  • Add public constructor for the SASL challenge class.
  • Add public constructors to SASL Failure class.
  • Make sure to not write XMLConstants.XML_NS_URI to XML elements (FasterXML Aalto’s XMLStreamWriter implementation writes it)
  • Add DataForm.Field#getValue() and implement toString() method.
  • Add convenient API to compare two MUC affiliations and roles (i.e. Affiliation.OWNER.isHigherThan(Affiliation.ADMIN))
  • Compare presences of MUC occupants in the Occupant’s Comparable implementation.
  • Minor performance improvement by using a ListIterator in collection based result sets.
  • Discover PubSub services by identity, not by feature name (it’s more reliable)
  • Add nextPage() and previousPage() method and refine the naming of other methods in result set management (e.g. having forCount() and forItemCount() was confusing)

Tigase Blog: Tigase JaXMPP Client v3.1.3 Release

Planet Jabber - 10 August, 2016 - 19:31
Announcing a maintenance release of Tigase JaXMPP Client Library v3.1.3!

Alexander Gnauck: Unity development with MatriX

Planet Jabber - 10 August, 2016 - 11:27

A question which comes up very often is the following:

Can I use MatriX with Unity 3d?
Of course you can. Many of our customers are using it with great success in their Unity projects.

Unity is based on Mono. MatriX is designed for cross platform and works on all major .NET platforms, including Mono.

Many Unity developers have some problems to get started with MatriX on Unity.
This post should be a small tutorial and address some of the issues you may be facing during your Unity development.

1) Download the correct MatriX dll (Mono build). MatriX builds are not universal, which means you need to download and reference the MatriX library for Mono.
You can get the latest Mono build from NuGet here:

2) MatriX requires System.Xml.Linq.dll. Make sure that you reference System.Xml.Linq in your project as well and add it to your assets. Otherwise Unity may throw an exception when you run your project.

3) Depending on your Unity version you may get compiler errors on iOS. When you use the latest Unity version this should be no problem. On older Unity versions this problem is related to obfuscation. To resolve this please contact us directly.

4) The iOS stripping feature causes problems. It does not work when reflection gets used. The core Xml serializing engine in MatriX is build on reflection using a factory pattern. You either have to remove stripping from your complete project, or exclude the MatriX classes.
Here is an example of a link.xml file excluding all MatriX classes:

<linker> <assembly fullname="Matrix"> <type fullname="Matrix.*" preserve="all"/> </assembly> <assembly fullname="mscorlib"> <namespace fullname="System.Security.Cryptography" preserve="all" /> </assembly> </linker>

It looks like disabling all stripping in Unity is not enough and the link.xml file above must exist.

5) Some of our users reported that connecting to an XMPP server does not work inside the Unity editor because of some networking problems of the IDE. When the code gets executed or published on a device it works fine. This is a restriction of Unity and not related to MatriX.

If you run into any other problems please contact us directly. We do our best to solve them.

ProcessOne: XMPP Radar Newsletter #13

Planet Jabber - 9 August, 2016 - 13:49

Welcome to the 13th issue of our newsletter. Here are the links we found interesting in July:

Go’s March to Low-latency GC

Twitch uses Go for many of their busiest systems. Its simplicity, safety, performance, and readability make it a good tool for the problems they encounter with serving live video and chat to millions of users.

XMPP : Swiss Army Knife for Internet of Things (IoT)

IoT communication is complex and varied, and XMPP is a great candidate for an application-layer protocol. Developers can use it in IoT for communication among devices and their corresponding servers and users in the cloud.


Mitto is a worldwide IoT SIM card for connected devices. It wants to make your IoT projects more about the actual project and (much) less about figuring out cellular carriers and connectivity.

Fighting XMPP Abuse and Spam with ejabberd

In this video, Mickaël Rémond explains the features, options and API that can be used to protect ejabberd servers from spam and various other types of attacks. The video was recorded at ejabberd Advanced Erlang Workshop in Paris.

XMPP Mobile groupchat: Introducing MUC Subscription

We are announcing MUC Subscription, a new experimental feature in ejabberd that makes group conversations in XMPP work seamlessly with mobile clients.

Open Source Contribution: XMPP Module for React Native

Working with React Native, a relatively new mobile app development framework has overall been a great experience. However, one of the common complaints of developers about react native has been the lack of off-the-shelf libs/modules for certain use-cases e.g. XMPP.

Read and Write to Devices With Converse.js

This tutorial is about using Converse.js to read values and write values to devices, and also retrieve history of fields.

New Jabber/XMPP Client for iOS

Intercambio is a Jabber/XMPP client for iOS. It is open source and you are welcome helping to improve it and shape it to your needs.

Stefan Strigler: Otalk IM

Planet Jabber - 4 August, 2016 - 09:34

A customer of mine asked for a WebRTC based, self hosted solution. So I started investigating and stumbled upon the great Otalk IM Client. Unfortunately it has not been maintained for a while. I decided to go with it nonetheless. I updated dependencies as required to make them work with latest stable NPM (3.x) and Node.js (6.x) as applicable and fixed bugs all along the way. Check out my fork if you are interested! Feedback would be very welcome. I think it makes for a very good starting point if you were about to create your own WebRTC solution. Or maybe even just a regular chat client.

ProcessOne: ejabberd 16.06

Planet Jabber - 3 August, 2016 - 15:07

We are proud to introduce our new ejabberd release, ejabberd 16.06. As usual it includes many bug fixes, but also several improvements.

The big improvement in this release is a new Access Control List (ACL) infrastructure. ACL rules are used in ejabberd config file to define fine-grained access to ejabberd features.

In ejabberd 16.06, the ACL configuration has been much improved to make it both simpler to use and easier to read. Moreover, ACL and access rules are not mandatory anymore when configuring access restrictions for a feature or a module: You can just inline the user, for example, making small configuration much easier to setup properly.

To make you even more comfortable, our new code is still supporting the old syntax and you can mix old and new syntax. It means that you can still use your existing configuration file and that you can migrate incrementally, as needed.

The new ACL syntax

New access rule will look like this:

access_rules: my_access: - allow: admins - deny: blocked - allow: - user: "" - ip: "" - allow: moderators

This is an example definition for my_access rule. It is composed of four groups. They are evaluated from top to bottom order. the first with all listed acl rules evaluated as true is used as result. If none of them matches, evaluation fallback to default value deny. Above definition can be parsed as: if user belongs to ACL definition admins, return allow, if not, and user belongs to ACL definition blocked, return deny. otherwise for user “” when connected from ip: “” return allow, and for users in ACL definition moderators return allow as well, in all other cases return deny.

We can see in this example two new additions that were introduced in this rewrite:

  • you can now directly specify ACL definitions inside access rules (you no longer will be required to define ACL rules for each case)
  • you now have the ability to require a match on several ACL rules types at this same time (in the example: ip and user).

You can use any rule that is allowed inside acl: sections (like user, server, resource, user_glob, etc.) and one additional rule that is allowed only inside access_rules: section, acl: NameOfACL that will look for definition of NameOfAcl inside acl: section and use it for matching. If you have only one ACL rule name to use you can use short form - allow: acl_rule, additionally - allow: all or - deny: all can be shorted still to - allow and ‘- deny`.

Shapers can also be specified using new syntax, but they now go into shaper_rules: section and they look like that:

shaper_rules: my_shaper: - 100: admin - 10: all

Rules defined in access: section will use old syntax, and work as before, so you don’t need to update your old config, to adapt it to that change.

At last, one can define module specific access rules directly in modules configuration section, this is simpler to understand when reading configuration.

Let’s get a simple example of the changes. With previous ACL implementation, one could have this:

acl: bad_servers: ip: - "XXX.XXX.XXX.XXX/32" admin: user: - "aleksey": "localhost" access: muc_admin: admin: allow muc_create: local: allow muc: all: allow s2s: bad_servers: deny all: allow c2s_shaper: admin: none all: normal modules: mod_muc: access: muc access_create: muc_create access_persistent: muc_create access_admin: muc_admin

Which can be translated to this since ejabberd 16.06 with new ACL implementation:

acl: admin: user: "aleksey@localhost" access_rules: s2s: - deny: - ip: "XXX.XXX.XXX.XXX/32" - allow c2s_shaper: - none: admin - normal modules: mod_muc: access: - allow access_create: - allow: local access_persistent: - allow: local access_admin: - allow: admin

Shorter and clearer. Please also note that you can use the JID literally as a string. The previous awkward username: domain syntax can go away.


This is a selection of the most relevant changes:

  • New ACL infrastructure
  • Add shorter version of some common access rules definitions
  • Allow @ inside acl rules user, user_glob or user_regexp to pass both user and server
    in single string
  • Add acl rule access_rules_validator and shaper_rules_validator for use in mod_opt_type and opt_type callback functions.
  • Allow using shapers defined by name like in s2s_shaper: fast
  • Allow mod_opt_type and opt_type to transform values passed to it, and support
    better error reporting
  • Do not call transform_terms multiple times in configuration processing when merging them
  • Don’t halt program when include_config_file is missing/can’t be read
  • Allow again multiple fqdn values in configuration
  • Allow passing username and ip to ejabberd_commands, and use it in mod_http_api
  • Fix path to epmd in ejabberdctl
  • push_roster: must convert read strings to binaries
  • set_presence: Fix command API
  • Fix for modules_update_specs command
  • Add ejabberdctl commands to manage oauth tokens.
  • Bounce messages sent to server JID
  • Fix C2S session leak in rare cases
  • Fix handling of queued stanzas on session timeout
  • Give more time to stop and kill epmd
  • When stopping ejabberd, stop modules after broadcasting c2s shutdown
  • XEP-0198: Use different error message for bounces
  • XEP-0198: Add ‘h’ attribute to element
  • XEP-0198: Also count stanzas when socket is closed
  • Fix pgsql compatibility on delete_old_messages command
  • Handle Redis connection in a separate module
  • Report in SQL when scram is enabled but the stored password isn’t
  • Update SQL escaping
  • Use MEDIUMTEXT type for muc_room.opts in MySQL schema
  • Send unique stanza id and archived tag also in the message carbons
  • Fix “assume_mam_usage: if_enabled”
  • Fix typo in mod_mam:select()
  • Updated support of XEP-0313 from version 0.4 to 0.5.1
  • Mnesia: Avoid cleanup on bag when disc_only, switch in memory
  • Mnesia: Don’t exceed table size limit
  • Mnesia: Use transactions when writing
Client State Indication
  • Fix handling of chat states
  • Simplify check for carbon-copied chat states
  • Simplify handling of PEP stanzas
  • Pass chat states of other resources
  • Unwrap carbon copies when checking for chat states
  • Add queue_pep option
  • Queue chat state notifications
  • Move CSI queue handling code from ejabberd_c2s
  • When stopping, delete only the configured hooks
Other modules
  • ext_mod: Set HTTP/1.0 so Github accepts the request
  • gen_mod: Compile early to remove undefined behaviour warning
  • mod_http_upload: Let client retry HTTP upload on file size mismatch
  • mod_last: Produce mod_last entry on account creation
  • mod_muc_room: Notify on affiliation changes
  • mod_register: Check password with jid:resourceprep when registering account
  • mod_roster: respect roster item changes introduced with roster_process_item hooks upon pushing
  • PubSub: Fix PubSub RSM on get_items
  • PubSub: Add support for PubSub publishing options
  • PEP: Fix sender in case of explicit pep subscriptions
  • ejabberd_xmlrpc: Report error when conversion of argument type fails

As usual, the release is tagged in the Git source code repository on Github.

The source package and binary installers are available at ProcessOne.

If you suspect that you’ve found a bug, please search or fill a bug report on Github.

Tigase Blog: XMPP An Introduction Part VII: Multi-User Chat II

Planet Jabber - 3 August, 2016 - 01:21
The second part of MUC description, going over roles and affiliations.

Swift Blog: Swift 4.0 (Beta): What’s new

Planet Jabber - 3 August, 2016 - 00:00

Those of you keeping an eye on the Swift or Isode Twitter accounts will have noticed that a beta release of the new Swift 4.0 is now available for download.

Swift 4.0 includes a number of important functional changes compared to Swift 3.0 as well as a significant change to the look and feel of the product.

The main changes are listed in the changelog but there are two big changes that you’ll notice immediately on launching this Swift beta:

Better Chat Monitoring

Swift already makes it very easy to monitor events in multiple chat rooms through the use of keyword highlighting rules. In response to requests from a number of users we’ve supplemented this with the addition of a “trellis” layout option, allowing multiple chats and rooms to be tiled instead of being exclusively displayed as tabs within a single window.

This new option (Change Layout from the View menu) allows the user to define the number and arrangement of tiles to be displayed simultaneously and then move chats or rooms into an appropriate position. The trellis layout option and the existing tabbed layout option can be flexibly combined.

New Chat Design

We’ve introduced a new, cleaner chat design which we believe will enable users (especially in MUC rooms) to keep better track of their own contributions to conversations allows for better display of message receipts and better indication of unread messages.

The Swift 4.0 beta is available for Windows, MAC OS X, Ubuntu & Debian Linux. Please email ( or tweet (@swift_im) any feedback you have to help us further improve Swift.

Peter Saint-Andre: Philosophical Encounters

Planet Jabber - 1 August, 2016 - 00:00
As I begin the large and deep task of (re-)reading the complete works of Aristotle, I am spurred to ponder why I am drawn to working through various philosophers in this way. I've come to see that there is an almost visceral element here, of directly confronting the insights of a great thinker and gaining intimate knowledge about how that person approached life and the pursuit of wisdom. In order to do this, I find that I need to read the philosopher's original language of expression: Greek for Aristotle and Epicurus, English for Thoreau and Rand, and German for Nietzsche (which makes me consider learning classical Chinese so that I can directly encounter Lao Tzu). I also find that I need to immerse myself directly in the philosopher's own words and not spend too much time reading other people's commentaries. Ironically, the outcome of my doing so is in each case a book that comprises more commentary! Yet for me the book that I write is merely a record of my personal encounter, which I use primarily to remind myself of what I have learned. Secondarily, I hope that by recording my own philosophical encounters I might inspire you to do the same with the great thinkers you find most congenial (and I would love to read about similar encounters with philosophers I likely won't have the time or inclination to work through completely myself, such as Confucius, Krishna, Buddha, Plato, the Stoics, Montaigne, Kierkegaard, Emerson, and Sartre). What's most important is the encounter itself, because it helps me gain more wisdom as I adopt some of the outlook and practices of someone much more sagacious than I am.

Ignite Realtime Blog: Smack 4.1.8 and 4.2.0-beta2 released

Planet Jabber - 30 July, 2016 - 09:22

I've just uploaded Smack 4.1.8 and 4.2.0-beta2 to Maven Central.


Smack 4.1.8 fixes a few minor issues and is expected to be the last release of the 4.1 branch. As always, Smack releases with the same major and minor version numbers are drop in replacements. Ideally you just need to change a single variable somewhere in your build system.


Smack 4.2.0-beta2 is the latest beta of Smack's current development branch. Notable additions include support for XEP-0313: Message Archive Management (MAM) and the IoT XEP series.

Peter Saint-Andre: Aristotle Research Report #3: Ethical Beauty

Planet Jabber - 30 July, 2016 - 00:00
Until my current reading of Aristotle's ethical writings, I had never noticed the connection he draws between ethics and beauty. No, not the surface beauty of physical good looks with which people are so obsessed these days, but the desire for true beauty: to have a beautiful character, to perform beautiful actions, to live a beautiful inner and outer life. Indeed, he frequently argues that an action is not truly ethical if it is not done for the sake of beauty. For example, someone who does something outwardly courageous only for the sake of social conformity does a good thing but not for the right reasons, whereas someone who performs the same act because it is a beautiful thing to do is in a higher ethical realm.
Distribuir contenido