That's the goal. The problem is discovering it. If x has me on the list and I have x on the list, how can our two Signal apps discover that? Without telling the Signal server, and without telling random third parties?
> If x has me on the list and I have x on the list, how can our two Signal apps discover that? Without telling the Signal server, and without telling random third parties?
There needs to be a decentralized way to tell [some of] your contacts directly that you have app X installed (or that you support messaging protocol Y).
Tell all of the contacts is simple, just send them an SMS. But you probably don't want that, right? Maybe you even don't want everyone to know what apps you use? So it's "some of", at which point you're back to the same problem: Discovering which of the contacts to tell.
Like so many networking problems, this one is easy to solve provided that it's already solved by someone else. See RFC 1925 points 6 and 6a.
RFC 1925 has no points 6 and 6a. Did you mean 2.6 and 2.6a?
What you could do is publish the information which apps you have or which protocols you support using FOAF spheres [http://reagle.org/joseph/2003/09/foaf-spheres.html]. Encrypt the information using the public keys of your friends. Publish the information on your private web server so no central entity can see who retrieves it.