Shortly about other popular features of social networks and how they may be implemented in Moera.
All public data including the public part of user profiles is indexed by web search engines. So it is possible to use Google, Bing, DuckDuckGo etc. to find a Moera user or a public post. But sometimes it is easier to have a simple search that allows to quickly find a user by his name right from the Moera client interface.
This search may be implemented as a separate service located on its own host that subscribes to notifications from a naming server about any nodes that appear and then fetches their profile data via REST API. It may also subscribe to notifications from the nodes about changes in their profiles.
The search engine provides a simple API that Moera clients can use. It may provide a web UI as well.
It is possible to integrate a small search engine into the node that will index all the content, including private. The search results will be accessible by the node’s owner only.
Since the home node is used anyway for signing all posts and comments, it is possible to keep a copy of them on the home node. This way you can always find everything you have posted, even if it was deleted from the node where you published it.
You can repost somebody else’s post in one of two ways: (a) post a link to it; (b) copy it. If you make a copy, your home node subscribes to notifications from the original node to know when the original post is edited or deleted. The behavior is the same as for posts in your newsfeed. And you are able to preserve your copy of the post even if the original post was deleted.
It is not possible to prevent reposting of your non-public posts (you cannot block copy-paste and screenshots). But the Moera client should display a warning if somebody tries.
You can publish a poll like any other post. You may allow anybody to vote or require every voter to authenticate to be sure nobody have voted several times. In this case you will know who voted and how. That’s your decision whether to publish the detailed results.
Anonymous (but fair) voting is more complicated, because the voter must be sure that the node owner doesn’t know his identity. But there are cryptographic algorithms that may be useful for this. For example, blind signatures.
It is possible to create a service that will recommend you people that may be your friends or posts that you may like. But to make it working, you will need to compromise your privacy and allow this service to see your list of friends and the list of posts you’ve liked. Do this on your own risk.
How can you be sure that some Moera user is indeed the person he pretends to be?
You can choose which organizations or persons you trust to verify identity of others.
If you allow anybody to comment, some heuristics can help you to avoid spam comments: for example, you may not allow users without registered names or with names registered not so long ago to comment or to put links in comments. Or you can use spam lists.
Spam list is a service located on a separate host. It works as following:
There may be many different services that use various definitions of “unwanted behavior”. You may choose which of them to trust.