Klaus Weidenbach
2 years ago
Adding Libravatar support
@Friendica Support @Mike

I would like to add Libravatar lookup as an optional replacement for Gravatar in ~friendica ~friendica. But I have some questions how it would be done best:

#Libravatar is a #federated #avatar hosting service. There is a central service comparable to #Gravatar, but you could also run your own instance of it. Unfortunately it is not so easy to set the hosting service up on your own server, but I would like to add support to query Libravatar. There exists a PHP class to query Libravatar that I would need to use. It is MIT licensed so that should be no problem to include. It requires PHP5.3 would that be a problem?

There is a config option to enable Gravatar support right now. So I thought if it would make sense to implement Gravatar support and then also Libravatar support as plugins?

I just looked shortly into the code and it seems that there is only 1 function I would need to hook into and this function is only used in 2 places. I have thought to rename the function gravatar_img($email) in include/network.php to a more generic avatar_img($email) and placing the hook inside that function that the plugin would use then.
I would also like to add options to the Gravatar plugin then to select the image-rating and default-image. Right now friendica's Gravatar implementation allows pg-rated images hardcoded. Libravatar only allows g-rated images and also only looks these up as a fallback at Gravatar. So no pg-rated images would be possible with the Libravatar plugin anymore as a downside. And a maybe bit slower lookup to find the right hosting service trough DNS or if it needs to fall back to Gravatar. But I don't think that should be a problem and the admin could anyway switch back to Gravatar-only lookup with the Gravatar plugin.

In include/Scrape.php the function gravatar_img() is also called once, but there is no check if $use_gravatar is enabled at all. Was there a special reason for that? Would it break if no avatar is returned?

How would a migration work? Friendica core and the addons would need to be updated at the same time and then there should be an update function that checks if $use_gravatar was enabled before and then enable the Gravatar plugin? Would that work somehow automatically? What if someone forgets to update the addons at the same time?
What would be the right way to check that only one of these two plugins is loaded at any time?

Would like to hear your comments about how this should be implemented in a correct way.

Thank you very much!
Categories: friendica , Libravatar , federated
Klaus Weidenbach
2 years ago
I have just opened two pull-requests for friendica and friendica-addons at github. Right now it only took the Gravatar support from core and made it a plugin.
Could you review this and see if it fits to the greater design of friendica and tell me if I need to change something.
When this is working I will create the Libravatar plugin.