Giter VIP home page Giter VIP logo

propolis's People

Contributors

dependabot[bot] avatar fdietze avatar grburst avatar johannesnakayama avatar mhooo avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

propolis's Issues

seed script should use json api

Example usage:

curl -v  -H 'Authorization: Bearer jc7HxwGvkXd7RDij' -H 'Content-Type: application/json' --data '"ItDepends"' http://localhost:8000/api/v0/statement/9/vote

There is no create_statement endpoint yet.

Pro and Contra Arguments

When a statement is polarizing it requires arguments, more context or more specific alternatives. If people really disagree on something, it's time to add arguments.

Good arguments are specifically required from the minority, because they might be the ones who are right.

On the other hand, the minority might be wrong and needs good arguments to be convinced of the truth.

The system automatically asks users who already voted on a statement to provide an argument to support their answer.

In that case, the statement page also shows a text field to add an argument as a new statement.

  • The new statement is added with appropriate targeting on the original statement (see #11)
  • The pro/con relation is saved to the database

Voting should redirect

Pressing any of the voting buttons simply renders the next statement instead of redirecting. This causes a refresh to ask for a retransmission of the POST request, which really does not make any sense

Multi Language Support

There are many possibilities:

  • Browser extensions for site translation
  • translation in the backend using deepl, could be behind a feature flag
  • language detection in the frontend
  • translation by users

Redundant statements

Two users might add statements which have exactly the same meaning. This can easily happen when adding arguments.

It can also happen across different languages.

Those redundant statements should be proposed to be merged into one. We can ask targeted users if two statements say the same. Once we have enough votes to be certain, they will be merged. All their connected metadata will be merged, too.

What should happen when they are just very similar?

What should happen when one statement is the negation of another statement?

There are several ways to detect redundant statements:

  • The user votes on a statement and remembers that they voted on a similar statement before. Then they can select them in their vote history
  • when creating a statement, a list of similar statements is shown to the user. Either by using full text search or by using embeddings
  • finding two statements with close embeddings

Manage triggers in a code file

sqlite3 --init /dev/null data/data.sqlite "select name from sqlite_master where type = 'trigger'" | while read -r trigger; do echo "dropping trigger \"$trigger\""; sqlite3 --init /dev/null data/data.sqlite "drop trigger \"$trigger\""; done

Targeting Statements

Like in a normal discussion, when participants disagree, questions come up to test why they disagree.

We can support this mechanism at scale by letting users send follow-up questions to users who provided a specific answer to a specific statement.

  • The history of own submissions should have a way to click and target user-groups with new statements
  • The create-statement page could also show the history with checkboxes, which user-groups to target
  • Adding the statement will write into a target table, which statement targets answers of other statements (for future statement recommendation)
  • Users in the target groups will receive this statement into their queues

When creating a statement

Proper web framework

I'm not entirely sold on doing things the old-school way. Maybe evaluate some of the options out there?
In particular, I dislike:

  • Template parameter structs are located independently of actual template
    • is the HTML actually being verified?
  • Templates do not have access to all code, unless explicitly provided via the template parameter struct
  • Additional struct for POSTing data is required
  • Interactivity suffers: we are kind of back to non-interactive web pages from 1999

Opinions?

Tasks

  • Switch away from askama

Answer: It depends

When a question is too generic to answer or when a statement can be interpreted in different ways, the answer is often: "It depends"

Clicking on "it depends":

  • save vote in db
  • show the create statement screen. But with targeting set to the original statement (see #11 )
  • the user can add 1 or more statements
  • the new statements will be connected to the original as "specialization"
  • it will be put in the queue for users who voted on the original statement (targeting)
  • save it in a targeting table?

Login on different device

The account page shows the secret and lets one log in with another valid secret (set the cookie). Valid secrets are only generated by the server.

There should also be an easy way to log in on other devices, for example using a QR code. Or sharing a login-link.

Good statement guidelines

Consider this statement:

The process for legal immigration is too complicated and needs to be reformed.

As a german I might be: I agree
As a canadian I might be: I disagree

If I only care about the responses from a particular country, how would I go about finding those? Should there be additional statements such as: I am from country XYZ that should go along with the above statement? If yes, how can we ensure our target audience actually gets those asked?

Or would we instead consider the first statement to be not specific enough and instead suggest rewriting it to:

The process for legal immigration in the USA is too complicated and needs to be reformed.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.