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
-
The
threads
app intends to help people discuss topics. Currently, thethreads
data 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 aResponse
Activity
- 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
Threads
Since threads seem to be the foundation for discussions, make the purpose of the
Thread
model very clear to developers and users:help_text
Replace the
Civi
model withIdea
The
Civi
model 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
Civi
isn't significant, we want to use meaningful names for things, we should rename theCivi
model to something that conveys its purpose. For example, the wordIdea
is 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
Idea
model would preserve almost the same properties asCivi
, with a refinement to the voting mechanism described below.Simplify and harmonize voting
The
Activity
model handles voting.Our voting process currently
Civi
andResponse
objectsActivity
The following simplifications would make the project easier to maintain
Activity
model toVote
IntegerField
for vote with min/max value of-1
and1
up/downsum
the votes)IdeaVote
andResponseVote
modelsVote
modelIdeaVote.idea
andResponseVote.response
Idea
andResponse
modelsvote_count_positive
,vote_count_negative
,score
Remove
Fact
modelThe
Fact
model 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
Reference
modelCitations help clarify the sources of knowledge and opinion that are salient to the discussion. Thus, we can replace the notion of
Fact
with a more useful ability to addReference
s to one's statements.The
Reference
model 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
Reference
modelReference
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
Response
s toCivi
s andResponse
sCurrently,
Response
s can only be made toCivi
s. Allowing people to respond toResponse
s would foster discussion and perhaps healthy debate.Remove
Rebuttal
modelThe
Rebuttal
model implies a level of formality that CiviWiki discussions won't likely attain.Rebuttal
also adds unnecessary complexity to our data model. In effect, anyResponse
can 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
Rationale
model, addrationale
field tocivi
The
Rationale
model adds a bit of unnecessary complexity to our data model and would serve better as a field on theIdea
model. In addition, theRationale
model seems to have a half-baked voting mechanism. The majority ofRationale
fields are already present on the hypotheticalIdea
model (currentlyCivi
), which also includes voting.Remove
ActivityManager
The
ActivityManager
, while confusingly named, contains only one method to return related votes. This method can be implemented by a standard Django foreign key withrelated_name
attribute, thus dispensing with the model manager.So, the idea would be that
IdeaVote
andResponseVote
models would each have a foreign-key relationship to theVote
model with arelated_name="votes"
or something similar.Beta Was this translation helpful? Give feedback.
All reactions