Hello Ignite Realtime community,
I’m experiencing an avatar interoperability issue in Openfire Community Edition 5.0.3 and would appreciate your guidance.
Problem Description:
Different XMPP clients are using different avatar standards:
-
Conversations client uses XEP-0084 (User Avatar)
-
Psi client uses XEP-0153 (vCard-Based Avatar)
As a result, avatars are not visible across these clients.
What I’ve Investigated:
-
XEP-0398 (User Avatar to vCard Conversion) seems to be the proper solution
-
This feature is marked as “Advanced Server Supported” (Enterprise Edition only)
-
I found references to an “Avatar Synchronization Plugin” on GitHub, but the links appear to be broken/dead
-
Openfire Community Edition 5.0.3 doesn’t have built-in XEP-0398 support
Questions:
-
Is there any official or community solution for avatar synchronization in Community Edition?
-
Was there ever a working plugin for this, and if so, is it available somewhere?
-
Are there any configuration workarounds to enable basic avatar compatibility?
-
Would developing a custom plugin be the only option for Community Edition users?
Environment:
-
Openfire 5.0.3 Community Edition
-
Mixed client environment (Conversations, Psi, others)
Thank you for any insights or suggestions!
XEP-0398 is already implemented from Openfire 5.0.1 +. However i confess that there might be some issues going on. Since sometimes i can see Guus avatar, and sometimes it becomes a G. maybe it might also be a client, updating the avatar from other than what was uploaded or something. hard to track down, maybe upload an avatar(on Conversations, or PSI) then keep looking at the logs, and log in with the other client.
Dear Zoidberg,
Thank you for your helpful response! I’ve done some investigation based on your suggestions and wanted to share my findings about why Psi doesn’t see avatars from Conversations.
Problem root cause (based on my investigation):
-
Conversations uses XEP-0084 (PEP avatars) published to ofPubsubItem table:
text
Node: urn:xmpp:avatar:data
Payload: <data xmlns="urn:xmpp:avatar:data">/9j/4AAQSkZJRg... (base64 JPEG)
Node: urn:xmpp:avatar:metadata
Payload: <metadata><info type="image/jpeg" bytes="8800"... />
-
Psi uses XEP-0153 (vCard-based avatars) looking in ofVCard table.
-
Database queries confirmed:
sql
-- User 'active' (Conversations client):
SELECT * FROM ofPubsubNode WHERE serviceID='active@xmpp.free' AND nodeID LIKE '%avatar%';
-- Returns: urn:xmpp:avatar:data, urn:xmpp:avatar:metadata
SELECT username FROM ofVCard WHERE username='active';
-- Returns: NO RECORD (empty)
-- User 'psi' (Psi client):
SELECT username, LENGTH(vcard) FROM ofVCard WHERE username='psi';
-- Returns: psi | 15023 (has vCard)
Key findings:
Conclusion: Avatars exist in PEP but aren’t synchronized to vCard.
Why XEP-0398 isn’t working for me:
Although Openfire 5.0.3 should support XEP-0398 (Avatar Conversion), I’m experiencing either:
-
Synchronization isn’t activated/configured properly
-
Or there’s a bug in the specific implementation
Proposed solutions:
-
Short-term: Manual sync from ofPubsubItem to ofVCard via script/SQL
-
Long-term:
Question: Could you clarify how to activate/verify XEP-0398 in Openfire 5.0.3? I couldn’t find documentation on this specific feature configuration.
Thanks again for your assistance!
I will try to bring this up with Guus(the developer who introduced this feature, and one of the main developers for Openfire). But since we are at this New year period and so on, might take a while. I did test this feature in the past, and it was working, however i see that neither Gajim or Conversations are acknowledging the feature. I am wondering if i am misremember testing it or if something else is going wrong.
But AFAIK there is no setting, it should work right out of the bat. and should work both ways right? Vcard to PEP and vice versa(not sure didnt read the spec).
Sorry i was incorrect. there is a system property, create this property, and set its value to false
avatar.xep0398.disabled If you can, after creating it restart the server, and test it(probably need to upload avatar again?), then let us know(if not much trouble).
[edited] Sorry, after reviewing, i discovered that it is enabled by default. so should work. 
And Openfire is really not advertising this feature(at least mine).