Replies: 2 comments 11 replies
-
|
Of course, not all of the proposed changes would be made at once. An example roadmap might be as follows
|
Beta Was this translation helpful? Give feedback.
11 replies
-
This sounds like a good approach, to start the frontend templates from scratch rather than sifting through the existing Backbone/JS. Once we have created alternative templates that provide basic functionality, we can remove the Backbone code. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
The
threadsapp intends to help people discuss topics. Currently, thethreadsdata model consists of several entities:Thread- the container for threaded discussionsFact- something irrefutable, established through empirical evidence?Civi- an idea or proposalResponse- a response to the CiviRebuttal- disagree with or contradict aResponseActivity- used to vote on something (Civi?, Thread?, Account?)ActivityManager- returns a list of related "votes"Rationale- used to justify an idea (i.e., a Civi?)Proposed changes
Clarify purpose of
ThreadsSince threads seem to be the foundation for discussions, make the purpose of the
Threadmodel very clear to developers and users:help_textReplace the
Civimodel withIdeaThe
Civimodel would seem to be at the heart of this project but is arguably just a way to express an idea for discussion and support. The discussions are the heart of CiviWiki.Since the term
Civiisn't significant, we want to use meaningful names for things, we should rename theCivimodel to something that conveys its purpose. For example, the wordIdeais relatively common and generic in that it doesn't imply correctness, goodness, or other similar qualities. Instead, ideas open the way for discussion and refinement.The
Ideamodel would preserve almost the same properties asCivi, with a refinement to the voting mechanism described below.Simplify and harmonize voting
The
Activitymodel handles voting.Our voting process currently
CiviandResponseobjectsActivityThe following simplifications would make the project easier to maintain
Activitymodel toVoteIntegerFieldfor vote with min/max value of-1and1up/downsumthe votes)IdeaVoteandResponseVotemodelsVotemodelIdeaVote.ideaandResponseVote.responseIdeaandResponsemodelsvote_count_positive,vote_count_negative,scoreRemove
FactmodelThe
Factmodel intends to give some empirical grounding to CiviWiki discussions.Despite the wishes of Western rationality, facts remain an elusive abstraction. The idea of "empirical fact" begs more questions than the answers given, such as
Since CiviWiki isn't a judge of facts but facilitates discourse, it would be better to help people clarify their viewpoints and sources of information rather than appealing to some authority.
Add
ReferencemodelCitations help clarify the sources of knowledge and opinion that are salient to the discussion. Thus, we can replace the notion of
Factwith a more useful ability to addReferences to one's statements.The
Referencemodel would share a relationship withResponse. The cardinality of the relationship isn't particularly important initially, so that we can allow for redundant references.Similarly, we probably don't need to adhere to any citation format, although collecting structured data for references can support formatted citations, create URLs, and detect related ideas.
Example
ReferencemodelReference
title: short titleurl: optional link to external resourceSupporting references might open up a rabbit hole of ways to cite references, such as books, magazines, etc. However, we can keep things simple for starters or perhaps use an existing package like django-citations.
Allow
Responses toCivis andResponsesCurrently,
Responses can only be made toCivis. Allowing people to respond toResponses would foster discussion and perhaps healthy debate.Remove
RebuttalmodelThe
Rebuttalmodel implies a level of formality that CiviWiki discussions won't likely attain.Rebuttalalso adds unnecessary complexity to our data model. In effect, anyResponsecan be a rebuttal. Furthermore, responses can include rebuttals, affirmations, asides, anecdotes, and other common aspects in discussions. So let's dispense with the formality a bit and focus on promoting civil conversations.Remove
Rationalemodel, addrationalefield tociviThe
Rationalemodel adds a bit of unnecessary complexity to our data model and would serve better as a field on theIdeamodel. In addition, theRationalemodel seems to have a half-baked voting mechanism. The majority ofRationalefields are already present on the hypotheticalIdeamodel (currentlyCivi), which also includes voting.Remove
ActivityManagerThe
ActivityManager, while confusingly named, contains only one method to return related votes. This method can be implemented by a standard Django foreign key withrelated_nameattribute, thus dispensing with the model manager.So, the idea would be that
IdeaVoteandResponseVotemodels would each have a foreign-key relationship to theVotemodel with arelated_name="votes"or something similar.Beta Was this translation helpful? Give feedback.
All reactions