The idea behind this is to build a sort of news reader that can be used by communities or individuals alike.
- Articles can be pretty much anything on the web, like web pages, videos, etc... Anything with a URL can be an article.
- People share articles with each other. "Sharing" means they would like the other people to see the article.
- People have a list of articles that they might like to read. They own the algorithms used to determine what to show to them.
- People can comment on articles just like they can share articles.
The client is the key component. The client software is owned and managed by the user, much like email servers. A single client can host any number of users, or it can just host one. The users may or may not be actual humans.
The client operates as follows:
- The client is following some other clients. It gathers recommendations from those other clients. These recommendations may appear as new articles (such as from a blog or video sharing service) or it may be moderated lists of aggregated new material. Regardless, the client uses some source of articles, plus whatever metadata the source uses to classify or organize the articles.
- The client then curates the list by using a variety of algorithms, all determined by the users.
- The user may browse the recommended reading items at any time through any sort of device.
- The client may generate its own recommendations for consumption by other clients. It may serve these recommendations directly, or it may put its recommendations into a third party server that is always available. (The forwarding server is just another client that blindly forwards whatever it is fed by other clients.)
- The recommendations may be encrypted to prevent prying eyes from viewing lists and such. In this way, the client can operate only while the user wants it to, and only if it has the private keys available to it.
There is really only one API: get_recommended_articles() which returns a set of articles given certain criteria. Since this is the only API, we can use something like RSS or the equivalent to handle this protocol.
The user experience can be any of the following.
- A user finds the software and installs it on their machine.
- OR a user downloads a plugin into their web browser
- OR a user downloads an app for their OS / DE.
- The user must tell the client what sort of algorithm he wants to use and what sources to draw from.
- There may be some discovery mechanism to find recommended sources. These are, themselves, a source.
- The client downloads the articles from the source, applies its algorithms, and then presents the articles the user might find interesting.
- The user loads more articles.
- The user reads some articles.
- The user provides some sort of feedback to the algorithm, such as which kinds of articles he likes or dislikes, and perhaps categorizing articles, such as articles to remember, articles to read later, or articles that belong in a certain subject.
Publishing their own list
- Users may choose to share their lists with other clients by publishing a list of recommended articles.
- This need not be the source of articles they have themselves. It could be curated or an entirely different algorithm.
- The user ensures that their source is shared via popular source sharing sources.
- If their source gets popular, they use a service to broadcast the source broadly and ensure it is always available.