Skip to content

Commit 64d7b2c

Browse files
committed
end of colins first draft of usage visual data welcome
1 parent 69fc1a7 commit 64d7b2c

17 files changed

+162
-58
lines changed

SUMMARY.md

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
* [User Authorization](usage/UserAuthorization.md)
1313
* [Embedding](usage/Embedding.md)
1414
* [Per User Config](usage/PerUserConfig.md)
15+
* [Events](usage/Events.md)
1516
* [Configuration Templates](usage/ConfigurationTemplates.md)
1617
* [Best Practices](usage/BestPractices.md)
1718
* [Visualization](visualization/README.md)

data/Analytics.md

+5-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Conversation Analytics
22

3-
The graphs below are from a real polis conversation and illustrate an important point. Polis engages [lurkers](https://en.wikipedia.org/wiki/Lurker) - users who don't engage if their sole option is to write a comment.
3+
The graphs below are from a real polis conversation and illustrate an important point. Polis engages [lurkers](https://en.wikipedia.org/wiki/Lurker) - users who don't engage if their sole option is to write a comment.
44

55
## Number of unique hits, voters, and comment authors over time
66
------------
@@ -10,29 +10,28 @@ This graph shows participation rates across three segments:
1010
* Users who wrote and submitted a comment
1111
* Users who clicked agree and disagree at least once
1212

13-
~1% of users commented. ~25% of users voted.
13+
~1% of users commented. ~25% of users voted.
1414

1515
![Hits, Voters, Comment Authors Image](../hitsVotersCommenters.jpg)
1616

1717

18-
1918
## Votes per participant
2019
--------------------
21-
The graph above begs a question: of those who voted, how much did they vote? The next graph gives us insight in to that. People vote a lot!
20+
The graph above begs a question: of those who voted, how much did they vote? The next graph gives us insight in to that. People vote a lot!
2221

2322
The light gray bars denote users who voted less than 7 times. These users are not included in the statistical computation or the visualization, because of a lack of data for them.
2423

2524
![Votes per participant image](../votesXPtpt.png)
2625

2726

28-
## Number of votes over time
27+
## Number of votes over time
2928
------------------
3029

3130
How many votes were cast, and when?
3231

3332
![Votes over time image](../Votes.jpg)
3433

35-
## Comments over time
34+
## Comments over time
3635
------------
3736
How does that compare to the number of comments submitted? In this conversation, there were ~250x more votes than comments!
3837

data/Export.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1-
Yes. [chris to fill in, in excruciating detail]
1+
# Data Export
2+
3+
[chris to fill in, in detail]

data/HowToUse.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Using Polis data
22

3-
3+
[Chris to fill in]
44

55
One of the most powerful things you can do with polis data is to correlate it with data you already have about your users. For instance, if there are 4 groups, try correlating the members of each group with gender, length of employment, geographic distribution, etc.
66

data/WhatWeCollect.md

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
Data
22

3+
[Chris to fill in]
4+
35
Polis generates groups of people correlated with comments they tended to agree on. It also produces comments with numbers of agrees and disagrees. You can also export the entire votes matrix of every person by every comment.

usage/BestPractices.md

+11-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,11 @@
1-
Do seed some comments, don't add too many comments. Is there a ratio? Power curve?
1+
# Best Practices
2+
3+
* Add seed comments. Add obvious, diverse perspectives to give groups initial structure
4+
* Don't let the number of comments get too high (a few hundred is a lot)
5+
* Moderate in the best example of each point - moderate out reptition
6+
* Comments submitted after most participants have already voted will be under represented. Try to:
7+
* Encourage participants to stop back a few times to vote on new comments
8+
* Disallow new comments towards the end
9+
* Use strict moderation, and moderate as soon as you see new comments (we will email you)
10+
* If appropriate, add some key identifying statements such as "I have completed university."
11+

usage/CommentModeration.md

+8-4
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,23 @@
11
# Moderation
22

3-
Strict mode: which means that no comments go out unless you have approved them to be shown.
3+
Strict mode: which means that no comments go out unless you have approved them to be shown.
44

5-
Lazy mode: all comments go out and you can hide a comment after-the-fact.
5+
Lazy mode: all comments go out and you can hide a comment after-the-fact.
66

77
Polis has a built-in profanity filter you can toggle on and off. The profanity filter will automatically moderate out comments that contain profanity.
88

99
To moderate comments:
1010

1111
`pol.is/m/55555 >> Comments >> TODO`
1212

13+
Note that rejected comments cannot be moderated back into the conversation, but that you can copy and paste it back in as a seed comment.
14+
1315
To turn on / off strict moderation:
1416

1517
`pol.is/m/55555 >> Config >> Strict Moderation`
1618

17-
To turn on / off profanity filter:
19+
To turn on / off profanity filter:
20+
21+
`pol.is/m/55555 >> Config >> Profanity Filter`
1822

19-
`pol.is/m/55555 >> Config >> Profanity Filter`
23+
#### Meta Moderation (on react dashboard across all conversations)

usage/ConfigurationTemplates.md

+5-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,5 @@
1-
Right now, you have to do this manually every time. Templates are due in a future release of polis to make this process easier.
1+
# Templates
2+
3+
Coming soon!
4+
5+
Templates will reduce the pain of per-user config across multiple conversations.

usage/Embedding.md

+16-6
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,21 @@
1-
Using polis on your site is as easy as dropping in a script tag. The biggest consideration is whether you want to use polis in a template system like Wordpress across your entire site, in which polis creates the conversations automatically based on the URL of the page they are embedded on, or drop it in here and there and create each conversation manually.
1+
# Embedding
22

3-
Creating each conversation manually:
3+
You can embed polis on your site or in your app the way you would a YouTube video or a comment system. The process is simple: add a script tag which loads an `<iframe/>` asynchronously.
44

5-
If you're going to create each conversation manually, click +new from the inbox and add your topic and description. Then grab the script tag and put it wherever you like on your site.
5+
There are two options: manually creating embedded conversations or having Polis create them automatically in your templates.
66

7-
Creating conversations automatically:
7+
#### Creating each conversation manually:
88

9-
Copy and paste this into the template for your pages (blog posts, news articles, etc)
9+
1. In the [inbox](https://pol.is/inbox), click [+new](https://pol.is/conversation/create)
10+
2. Give your conversation a topic and description (*default none*)
11+
3. Decide what flavor of [moderation](usage/CommentModeration.md) you'd like, lazy or strict (*default lazy*)
12+
4. Click create
13+
5. Copy out the script tag
14+
6. Paste it into the HTML of your site where you'd like the `<iframe/>` to appear.
1015

11-
When this embed code loads on your website, it will either create a new conversation (if one doesn't already exist) or load an existing conversation. It keeps track of what conversations belongs on what pages via the data-page_id HTML attribute. Simply replace "PAGE_ID", either manually or in your templates, to create new conversations and load existing ones in the right place.
16+
#### Creating conversations automatically:
17+
18+
Copy and paste this into a template (blog posts, news articles, etc).
1219

1320
```
1421
<div
@@ -18,3 +25,6 @@ When this embed code loads on your website, it will either create a new conversa
1825
</div>
1926
<script async="true" src="https://pol.is/embed.js"></script>
2027
```
28+
29+
When this embed code loads, it will either create a new conversation (if one doesn't already exist) or load an existing conversation. Your job is to replace `PAGE_ID` in your template. `PAGE_ID` is the lookup Polis uses to keep track of what conversations belongs on what page.
30+

usage/Events.md

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Events
2+
3+
The Polis embed code and `<iframe/>` are configured to emit a "vote" event each time a participant votes.
4+
You can subscribe to those events on the page that instantiates the `<iframe/>` like this:
5+
6+
```
7+
window.addEventListener("message", function(event) {
8+
var data = event.data||{};
9+
if (!event.origin.match(/pol.is$/)) {
10+
return;
11+
}
12+
if (data.name === "vote") {
13+
alert("vote!");
14+
}
15+
```

usage/PerUserConfig.md

+10-15
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,17 @@
1+
# Per User Config
2+
3+
Each time Polis loads into an embedded context, you can *optionally* configure Polis at the user level to hide or show facets of the interface.
4+
5+
#### Hiding the comment submit form
6+
17
The data-ucw (user can write) tag toggles writing, and is only relevant for that user for that session.
28

9+
#### Hiding voting interface
10+
311
The data-ucv (user can vote) tag toggles voting, and is only relevant for that user for that session.
412

13+
#### Hiding the visualization
14+
515
The data-show_vis causes the vis to be enabled or disabled when the conversation initializes. This is a one-time setting which is picked up and stored in our db the first time someone loads this script. If you later change this value, it won't have any effect. To change that value, you can load the config tab of the admin page for that conversation (the button for the conversation's admin page should appear in preprod.pol.is/inbox )
616

717
```
@@ -16,18 +26,3 @@ The data-show_vis causes the vis to be enabled or disabled when the conversation
1626
</div>
1727
<script async="true" src="https://preprod.pol.is/embed.js"></script>
1828
```
19-
20-
Also, I added code to emit a "vote" event each time a participant votes.
21-
You can subscribe to that like this:
22-
23-
```
24-
window.addEventListener("message", function(event) {
25-
var data = event.data||{};
26-
if (!event.origin.match(/pol.is$/)) {
27-
return;
28-
}
29-
if (data.name === "vote") {
30-
alert("vote!");
31-
}
32-
});
33-
```

usage/UserAuthorization.md

+33-10
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,53 @@
11
# User Authorization
22

3-
Sometimes it doesn't matter if you know who is who. Sometimes it doesn't matter, but you want to make sure people aren't voting again and again to game the system. Sometimes you want transparency. Maybe you already know who they are. Maybe you have your own authorization system.
3+
Sometimes it doesn't matter if you know who is who in a Polis conversation. Sometimes it doesn't matter, but you want to make sure people aren't voting again and again to game the system. Sometimes you want transparency. Maybe you already know who your users are. Maybe you have your own authorization system.
44

55
Polis handles all these cases. Here's how.
66

77
#### Optional social login
88

9-
*DEFAULT*
9+
*DEFAULT*
1010

11-
By default
11+
By default, participants can write and vote anonymously, but are prompted to sign in using Facbeook and Twitter. This is low friction for users and encourages voting and writing.
1212

13+
#### Social login required to write
1314

15+
`pol.is/m/55555 >> Config >> User login required to write >> ON`
1416

17+
#### Social login required to vote
1518

19+
`pol.is/m/55555 >> Config >> User login required to vote >> ON`
1620

17-
There are multiple options for authorizing your participants. By default, users are prompted to connect to write and vote but do not have to. This is low friction usage and encourages activity in your conversations. Here are some other options:
21+
#### Social login prompts disabled
1822

19-
Completely Anonymous - turn off social
23+
In this scenario, users who have already validated a social profile will still be shown. No users will be prompted to connect their social profile
2024

21-
Anon but verified
25+
`pol.is/m/55555 >> Config >> User shown social login >> OFF`
2226

23-
Social login to write
27+
#### Completely Anonymous
2428

25-
Social login to vote
29+
In this scenario, even users who have already validated a social profile will not be shown. The visualization is hidden.
2630

27-
Social login to write & vote
31+
`pol.is/m/55555 >> Config >> Total Anonymity for All Users >> ON`
2832

29-
xid (is this the same as the data-yoursitecreds that we will do for times)
33+
#### Anonymous but verified via social account login
3034

35+
In this scenario, all users are prompted to connect social before voting and / or writing, but the visualization is hidden and no users identities are passed on to you as the owner. This scenario is ideal if you need to ensure that users are not gaming the system, and possibly collect metadata from the accounts like a restricted geolocation, but ensure that identities remain secret.
36+
37+
`pol.is/m/55555 >> Config >> Anonymous but verified with social account >> ON`
38+
39+
#### Proprietary auth
40+
41+
This scenario is only available if the Polis conversation is instantitaed through an embedded `<iframe/>` on your page. You'll decide whether or not the user is verified. You can then use the [per user config] data attributes to customize the experience at will. A nice pattern is to shut off writing and voting for those not logged in, so that users who are not logged in can still consume a read-only version of the conversation by clicking through the visualization.
42+
43+
`data-user-image-url=""`
44+
45+
#### Creating custom URLs for each participant to join
46+
47+
Let's say you are a business intelligence analyst, and a hospital has hired you to run a survey of its doctors and nurses. Conveniently for the purposes of our example, they've asked you to use Polis.
48+
49+
In this scenario, the hospital has an employee database. They would like to correlate employment data - columns like role, length of employment, age, gender, etc. - with groups that emerge in Polis. You are going to send out pol.is links, but it's not appropriate to have doctors and nurses connect
50+
51+
In this case, you'll want to create a URL per participant, with a key that you can use to map them back to the data you already have about them.
52+
53+
...

visualization/HowToRead.md

+25-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,26 @@
1-
Visualization is showing groups of participants that voted similarly across a range of issues. People do not form groups in polis because of just one issue they form groups because they voted similarly on many issues.
1+
# How to read the visualization
22

3-
When you click on a group you are seeing comments that a majority of people in that group voted the same way on, in a carousel.
3+
The visualization in Polis has three purposes:
4+
5+
1. **Engagement** - To show a user how his or her opinions relate to everyone else's
6+
2. **Education** - To instruct the user what dimensions are already under consideration before he or she writes
7+
3. **Insight** - To reveal the landscape of opinion (minority, majority, consensus)
8+
9+
#### Individuals
10+
11+
* Every participant is positioned closest to other participants that voted similarly
12+
* Every participant sees their own position as a circle with a blue halo around it
13+
* Clicking an individual brings you to their social profile, with a preference for Twitter
14+
15+
#### Groups
16+
17+
* Groups of participants have a dotted line around them - these groups can be clicked on
18+
* Groups form because members voted similarly on multiple issues, not just one issue
19+
20+
When you click on a group, a carousel of comments will appear. These comments that tended to differentiate the group from other groups. Specifically, these are comments that people *inside* the group voted similarly on, while people *outside* the group voted differently on.
21+
22+
As you swipe through the carousel, you will see the visualization change. Each person assumes a green, red or grey halo, depending on whether they agreed, disagreed or passed on the comment presently in the carousel.
23+
24+
The circle in the middle of each group has two components.
25+
1. The number in the center is the number of people in the group total (including those who are in the visualization).
26+
2. When a group (or majority opinion) is selected, the halo shows the ratio of agrees, disagrees and passes in the group *for only those participants who saw the comment*. The carousel has a percentage of participants in a given group who agreed or disagreed with a comment, and that number also reflects *only those participants in the group who saw the comment*.

visualization/TheMath.md

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
2-
If you want to go deeper on the math behind the visualization, check out this blog post. The short story is that we’re doing principle components analysis on a sparse matrix of people by comments, then k means clustering where k is between 2 and 5.
1+
# The Math
32

43
You've probably seen 'recommended products' on Amazon, or 'recommended movies' on Netflix. Each of those services uses statistics to group you with people who buy and watch similar things, then show you things that those people bought or watched.
54

65
When you cast a vote on a comment, you are grouped with people who voted like you did! You can see those groups below. Each is made up of people who have similar opinions. There are fascinating insights to discover in each conversation. Go ahead - click a group to see what brought them together and what makes them unique.
76

8-
7+
[Chris may add more here]

visualization/WhoGetsShown.md

+9-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
1-
Visualization: who gets shown
1+
# Who gets shown?
22

3-
The visualization is potentially different for every user. There is a hierarchy of who get shown in the visualization. First we show a user's Facebook friends provided that you have connected to Facebook. After that we should people with a verified twitter accounts, then the people with the highest Twitter follower Count, and after that we fill in with random accounts from Facebook.
3+
The visualization is potentially different for every user. There is a hierarchy of who get shown. Our algorithm follows the following priority:
44

5-
You can override this by featuring certain users in the admin panel, filtering people the same when you filter comments.
5+
1. Featured (if you've featured any participants)
6+
2. Facebook friends (provided the participant has connected Facebook)
7+
3. Participants with verified Twitter accounts
8+
4. Participants with the most Twitter followers
9+
5. Random Facebook accounts
610

7-
pol.is/m/5555555555 >> People >> Default
11+
The first priority are users you have decided to feature. To feature / remove users:
812

13+
`pol.is/m/5555555555 >> People >> Default`

welcome/Motivation.md

+15-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,24 @@
11
# Motivation
22

3-
Comments suck. Surveys suck. Here's the deeper story behind the creation of polis.
3+
Polis was conceived during the Arab Spring and Occupy Wall Street. Both movements were decentralized and emergent. Twitter and Facebook proved instrumental in, mobilizing citizens, garnering media attention and disseminating information. They were not successful at producing coherence.
4+
5+
#### Coherence Without Centrality
6+
7+
The problems faced by the protestors in both cases are just an exaggerated, extreme form of the problem every organization over a few hundred people faces. There is a wonderful quote by Michel Foucault that captures it:
8+
9+
People know what they do
10+
People frequently know why they do what they do
11+
But no one knows what what they do does
12+
13+
This is the essence of
14+
15+
Smart policy is policy instructed by many quarters
16+
417

5-
Polis was conceived during the Green Revolution in Iran, the Arab Spring, and Occupy Wall Street. These years, 2009-2011, showed the promise of digital democracy. They also bore out many of its shortcomings.
618

719
Lorem ipsummm...
820

921
* help crowds speak with one voice without centralizing power in an individual
10-
*
22+
*
1123

1224
polarization

welcome/Quickstart.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@ You can have your first Polis conversation up and tweeted in less than a minute.
99
5. Click create
1010
6. Paste the share link (it will look something like pol.is/55555) into an email, a tweet, etc.
1111
7. Go to your conversation, watch responses roll in, etc.
12-
8. **Important**: if you selected strict moderation mode (no comments shown without approval) make sure to moderate comments into the conversation! If you conversation is pol.is/55555, your admin console can be found at pol.is/**m**/55555.
12+
8. **Important**: if you selected strict moderation mode (no comments shown without approval) make sure to moderate comments into the conversation! If you conversation is pol.is/55555, your admin console can be found at pol.is/**m**/55555.
1313

0 commit comments

Comments
 (0)