differences between smack, tinder and whack - xmpp

Can anyone tell me what the differences are between smack, tinder and whack?
Are tinder and whack slim-down versions of smack? Do the 3 libraries serve different purposes?

Smack is a client library. You can use it to log into an XMPP domain and make use of the functionality it provides. Typically, Smack is used to implement a instant messaging client.
Tinder is a low-level XMPP library. It provides Java implementations of basic XMPP entities, such as Stanzas (called 'Packet' in XMPP), JIDs and Components (which typically implement part of the functionality of an XMPP server). Although in theory, Tinder could be used to implement client functionality, it currently is primarily used on the server-side. Both Whack and Openfire (an XMPP server implementation) use Tinder-defined entities. Smack does not use Tinder at all.
Whack is Java library that is used to implement external components. Whack allows a Component (as defined in Tinder) to run as a stand-alone process. Whack allows you to connect this process to an XMPP domain. This way, you can extend the functionality provided by that domain without modifying the implementation of the server software.

I suggest reading this Blog entry
Introducing Tinder, an XMPP object implementation library
Smack -> Cross-platform real-time collaboration client optimized for business and organizations
Whack -> Java XMPP component library
Tinder -> Java based XMPP library, providing an implementation for XMPP stanzas and components
Tinder builds on code from Openfire and Whack. Does not replace Smack but will most likley replace Whack, OpenFire (formerly WildFire)

If you wanna create an application:
Smack will be client side Library
Whack and/or Tinder will be Server side Library

Related

How to implement XMPP communication in Nativescript?

Is there any limitation in using a library like stanza.io for communication with an XMPP server like MongooseIM in Nativescript? What other alternatives are there?
If stanza.io supports NativeScript then there should not be any limitations.
On their GitHub main pager they say it's a Modern XMPP in the browser, with a JSON API. So it's mainly for browser env and I'm not sure about NativeScript.
As an alternative way - there is a xmpp.js lib which supports NativeScript. Their doc is a little bit shitty, but using src code there is a way to integrate successfully it.
There is a guide on how to use it for ReactNative, but you can some part from it for NativeScript, especially these part that are connected to the lib itself.
https://medium.com/#connectycube/xmpp-real-time-chat-in-react-native-8d6d5d23dd47
Also you can use some ready XMPP high level platforms for Chat, e.g. https://connectycube.com/2018/12/11/connectycube-textchat-code-sample-for-nativescript/
In this case you do not need to carte about XMPP server installation and monitoring
You will have to find a third party server or host your own one that implements XMPP protocols and connect to same using Websockets or XMPP plugin from your {N} application.
FYI, This XMPP plugin implements the same pod library explained in the MongooseIM docs, but the JavaScript apis are not fully implemented so you might have to access the native apis directly as needed.
You may also refer nativescript-xmpp-client, another exampel for XMPP implementation.

recursive muc creation possibility for openfire

Is it possible to create recursive muc for openfire under default service "conference"? some thing like:
groupchat1
-groupchata
-groupchatb
-groupchatc
Yes, it is possible. Openfire implements XEP-0045: Multi-User Chat, look at http://xmpp.org/extensions/xep-0045.html, Exist many libraries available for many different programming languages to connect the XMPP server(Openfire is a XMPP server) look at http://xmpp.org/xmpp-software/libraries/, I recommend you to use Smack.
Smack is developed by the creators of Openfire.

Is there any freeware to develop the XMPP Gateway ?

I am trying to develop the XMPP Gateway which can send/receive from standard XMPP client. This XMPP Gateway should support conversion of XMPP request to Soap and vice-versa. Server which i am trying to integrate support only soap.
I don't want to develop XMPP Gateway from scratch. I have seen Axis Vysper but could not found how to tweak this according to my requirement.
Apache Vysper can be used to do that. Even though Vysper has no built-in support for SOAP (like the standard XMPP extension http://xmpp.org/extensions/xep-0072.html), you can create your own module to capture XMPP messages and issue SOAP calls, just like in a web app you are creating your own Servlets to intercept HTTP request and issue database calls.
One example of how to create a Module and related stuff you can find under
https://svn.apache.org/repos/asf/mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0054_vcardtemp

Building an Openfire XMPP External Component - use Tinder or Whack?

I'm trying to build an external component for the Openfire XMPP server, but I'm a bit confused between Tinder and Whack. Tinder seems to be the newer library and has the AbstractComponent interface which Ignite Realtime are recommending over the standard Component, however, whenever anyone talks about building an external component, they seem to be using the Whack library.
Should I be using Tinder or Whack? Or a bit of both?
Many thanks
Tinder utilises the Whack library and wraps the component in an abstract component interface so you don't have to implement all the methods for handling all types of packets if you don't need to.
Have a look at the source for the weather example.
It's also worth looking at the whack source to see how it handles the packets as this is what is ultimately connecting to your server and sending packets.
Personally I use the externalcomponent manager from whack and setup an abstract component using tinder which is exactly what the weatherabstract example does.
That's the best place to start.

How to create a simple browser-based IRC client?

I want to implement a chat service on my site, and wonder how to create a simple browser-based IRC client from scratch?
I have a linux box and can install whatever I want on it. Google finds tutors on how to setup an IRC server but no instructions on how to create an IRC client.
(As client languages, I can use JavaScript or Flash.)
As you are already familiar with JavaScript, I would recommend a combination of Node.js, Now.js and node-irc.
Node.js is an application that enables you to run JavaScript server-side and to develop web-applications very fast.
Now.js is a library for Node.js that enables you to RPC between client and server. You can just call a function on the server from your client application and vice-versa; their developers guide is in fact a web chat ;)
node-irc is also a library for node.js that enables you to easily create an IRC client.
Combine these three and you get a very nice, very easy self-coded web chat. For the browser interface, there are many possibilities, including application frameworks like ExtJS, JQueryUI, KendoUI or something easier.
http://www.lightirc.com/
http://wdmedia.org/WFIC/index-en.html#sectiondescription