279 lines
12 KiB
HTML
Raw Normal View History

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://wiki.status.im/proposals/discover/">
<link rel="shortcut icon" href="../../img/favicon.ico">
<title>Discover (WIP) - Status Wiki</title>
<link href="../../css/bootstrap-custom.min.css" rel="stylesheet">
<link href="../../css/font-awesome-4.5.0.css" rel="stylesheet">
<link href="../../css/base.css" rel="stylesheet">
<link rel="stylesheet" href="../../css/highlight.css">
<link rel="stylesheet" href="../../css/custom.css">
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
<![endif]-->
<script src="../../js/jquery-1.10.2.min.js"></script>
<script src="../../js/bootstrap-3.0.3.min.js"></script>
<script src="../../js/highlight.pack.js"></script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-79146816-1', 'wiki.status.im');
ga('send', 'pageview');
</script>
</head>
<body>
<div class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<!-- Collapsed navigation -->
<div class="navbar-header">
<!-- Expander button -->
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="../.."></a>
</div>
<!-- Expanded navigation -->
<div class="navbar-collapse collapse">
<!-- Main navigation -->
<ul class="nav navbar-nav">
<li >
<a href="../..">Welcome</a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Getting Started <b class="caret"></b></a>
<ul class="dropdown-menu">
<li >
<a href="../../getting-started/mission-and-core-values/">Mission & Core Values</a>
</li>
<li >
<a href="../../getting-started/user-guide/">User Guide</a>
</li>
<li >
<a href="../../getting-started/faq/">FAQ</a>
</li>
<li >
<a href="../../getting-started/code-of-conduct/">Code of Conduct</a>
</li>
<li >
<a href="../../contributing/development/introduction/">Developer Introduction</a>
</li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Contributing <b class="caret"></b></a>
<ul class="dropdown-menu">
<li class="dropdown-submenu">
<a href="#">Developers</a>
<ul class="dropdown-menu">
<li >
<a href="../../contributing/development/introduction/">Introduction</a>
</li>
<li >
<a href="../../contributing/development/building-status/">Building Status</a>
</li>
<li >
<a href="../../contributing/development/adding-dapps/">Adding DApps</a>
</li>
</ul>
</li>
<li >
<a href="../../contributing/ux-and-design/">UX & Design</a>
</li>
<li >
<a href="../../contributing/testing-and-feedback/">Testing & Feedback</a>
</li>
<li >
<a href="../../contributing/documenting/">Documenting</a>
</li>
<li >
<a href="../../contributing/marketing/">Marketing</a>
</li>
<li >
<a href="../../contributing/translations/">Translations</a>
</li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Community <b class="caret"></b></a>
<ul class="dropdown-menu">
<li >
<a href="../../community/slack/">Slack</a>
</li>
<li >
<a href="../../community/newsletter/">Newsletter</a>
</li>
<li >
<a href="../../community/blog/">Blog</a>
</li>
<li >
<a href="../../community/tell-a-friend/">Tell a Friend</a>
</li>
<li >
<a href="../../community/development/">Development</a>
</li>
</ul>
</li>
<li class="dropdown active">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Proposals <b class="caret"></b></a>
<ul class="dropdown-menu">
<li >
<a href="../contact-sharing/">Contact Sharing (WIP)</a>
</li>
<li >
<a href="../chat-api/">Chat API (WIP)</a>
</li>
<li class="active">
<a href="./">Discover (WIP)</a>
</li>
<li >
<a href="../messaging/">Status Messaging (WIP)</a>
</li>
<li >
<a href="../erc20-exchange/">Exchange (WIP)</a>
</li>
<li >
<a href="../sticker-market/">Sticker Market (WIP)</a>
</li>
<li >
<a href="../visual-programming/">Visual Programming (WIP)</a>
</li>
<li >
<a href="../moments/">Moments (WIP)</a>
</li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">License <b class="caret"></b></a>
<ul class="dropdown-menu">
<li >
<a href="../../licenses/mpl2/">MPL2</a>
</li>
<li >
<a href="../../licenses/lgpl-v3.0-static/">LGPLv3-static</a>
</li>
</ul>
</li>
<li class="repo-link">
<a href="https://github.com/status-im/wiki.status.im/">
<i class="fa fa-github"></i>GitHub
</a>
</li>
<li class="search-link">
<a href="#" data-toggle="modal" data-target="#mkdocs_search_modal">
<i class="fa fa-search"></i>
</a>
</li>
</ul>
</div>
</div>
</div>
<div class="container">
<div class="col-md-3"><div class="bs-sidebar hidden-print affix well" role="complementary">
<ul class="nav bs-sidenav">
<li class="main active"><a href="#discover">Discover</a></li>
</ul>
</div></div>
<div class="col-md-9" role="main">
<h1 id="discover">Discover</h1>
<p>This document describes the Discover feature of Status. Ethereum is its community, and with Discover we want to connect other Ethereum users with other Ethereum users - to trade and exchange ideas. Ultimately this will reduce transaction costs and increase the utility of ETH.</p>
<p>Discover is done through a users Status (hence the application name). This status is a 140 char sub-headline to a users profile which can be seen on <a href="https://zpl.io/22nSfB">my profile</a>, <a href="https://zpl.io/CFBa8">user profile</a> and <a href="https://zpl.io/Z1p9XlV">discover</a> screens.</p>
<p>A status is private and not shared with anyone except their immediate contacts, unless a <strong>#hashtag</strong> is introduced. These #hashtags are locally searchable on the discover screen.</p>
<p>The Discover application protocol is built ontop of Whisper, possibly utilising our messaging protocol and is implemented in <a href="https://github.com/status-im/status-lib/tree/master/src/cljs/status_im/protocol">status-im/status-lib</a></p>
<p>Periodically the client should request from it's contacts, a package of statuses that is an aggregate compilation of discoverable statuses (created using the specifications below), this package should contain no more than 100-500 statuses and the period in which the client requests the package is after when the user is back online and/or after waiting X hours has elapsed. Whisper penalizes larger payloads so we may have to chunk this. <code>140chars × 4bytes (utf-8) × 100 contacts = 54kb</code></p>
<p>The 100 contacts the user decides to return is weighted by;
- the newest available information (latest status from that user),
- the most seen contact statuses by other contacts. (that user who has seen the same contact status from all his contacts)
- and actual interactions with contacts, favor contacts that the user has actually messaged themselves.
- if contact is online</p>
<p>The Discover screen then takes this aggregate search space
<code>100-500 statuses × users in contact list</code> and organise them by #hashtags, the hashtags that have more than X contacts are put into the carousel under that #hastag category.</p>
<p>Below it the statuses are listed by most recent.</p>
<p>On tapping one of these messages a chat session is attempted with that user.</p>
<p>Each user should cache no more than 1000 statuses</p></div>
</div>
<footer class="col-md-12">
<hr>
<p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</p>
</footer>
<script>var base_url = '../..';</script>
<script data-main="../../mkdocs/js/search.js" src="../../mkdocs/js/require.js"></script>
<script src="../../js/base.js"></script><div class="modal" id="mkdocs_search_modal" tabindex="-1" role="dialog" aria-labelledby="Search Modal" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
<h4 class="modal-title" id="exampleModalLabel">Search</h4>
</div>
<div class="modal-body">
<p>
From here you can search these documents. Enter
your search terms below.
</p>
<form role="form">
<div class="form-group">
<input type="text" class="form-control" placeholder="Search..." id="mkdocs-search-query">
</div>
</form>
<div id="mkdocs-search-results"></div>
</div>
<div class="modal-footer">
</div>
</div>
</div>
</div>
</body>
</html>