Giter VIP home page Giter VIP logo

Comments (10)

blackprince001 avatar blackprince001 commented on July 1, 2024 2

There is an overhead when trying to coalesce all chat into a single space for a specific class.

I believe you want to forward this approach and also suggest threads as a means to isolate certain topics of discussion but even though it sounds reasonably straightforward, you risk too much complexity to those chat spaces. Small talk, class gossip, everything. (This isn't prevented in the proposed concept but reduces it considerably better)

The premise of a single chat for a schedule is on the basis of individual class schedules having objectives.

A tutor might decide to clear a particular slide or chapter on a particular class schedule and we want to keep all the conversations, insights and questions to that single event. This provides a quicker navigation through units of study at the time of need, and also promises to make one activity (feature of the app) easier to perform: making of flashcards and shareable study notes.

If this approach fails to achieve what it is designed to do, we can always fall back to alternatives. Happy to talk @Sarps

from compa.

blackmann avatar blackmann commented on July 1, 2024 1

But we won't automatically create discussions for schedules. We will add a button for each schedule to "start a discussion". All it does is tag the discussion with that lesson. Nothing more. We should be able to have more than one person start a discussion on a lesson.

I could have a problem from the lesson I want someone to explain. Another person can also have another problem.

For now, we can't have live discussions as well. Traffic doesn't support that effort.

from compa.

CongoMusahAdama avatar CongoMusahAdama commented on July 1, 2024

awesome

from compa.

Sarps avatar Sarps commented on July 1, 2024

nit:

Each class schedule from the database would be able to spawn a live chat discussion forum...

I'd suggest the discussion forum be tied to a class instead of a class schedule. That is, there is one forum for a class throughout the duration of the semester or trimester. In this manner, conversations from previous schedules of the same class is retained and attendees can build upon past topics.

Should there be a need for a more structured, we could introduce threading in the forum per schedule (that could may not be necessary now).

Proposed Flow

Maintain same flow as proposed by @blackprince001 #9 (comment)

Except

  1. ON CLASS SCHEDULE END: Retain the @discussion_chat_id for reuse if need be

  2. ON CLASS SCHEDULE START: Reuse @discussion_chat_id if any exists for a #class else create new @discussion_chat_id

from compa.

Sarps avatar Sarps commented on July 1, 2024

Makes sense

from compa.

blackmann avatar blackmann commented on July 1, 2024

I agree with @blackprince001 about 1 discussion per schedule.


Let me use this opportunity to share what I think a Discussion looks like. I prefer to generalize concepts to make things easier to reason and implement. In that sense, a discussion is basically a Post. Comments to discussions will also be Posts.

What this design allows are:

  1. Have one UI component for rendering posts.
  2. Since posts can accept attachments like media, documents and applets, this implies comments can have them too; just like the OP discussion.
  3. Discussions (OP) can quote other posts (whether discussion or comment). Imagine what this enables: you can spawn a new discussion based on a comment someone made by quoting it. (Quoting here is just like Twitter's quote). Also comments can quote other comments.

Constraints

We should allow one level of nesting in comments. If a nested comment is compelled to go deeper, the user should just spawn a new discussion. I prefer flat hierarchies. It's easy to get lost.

Structure

Post {
  text: string                 // actually in limited markdown
  media: Media[]            // images, videos, audio recordings, documents
  applet: Applet             // this will later later later
  user: id
  tags: string[]              // more on that below
  parent?: id           // if it's non-null, this is a comment
  quote?: id           // discussion being quoted
}

Media {
  url: string
  type: 'document' | 'image' | 'video' ...
  thumbnail: string
  uploaded_by: id
}

Tags

Since discussions can be about anything, we'll need a way to mark them on the discussion. It'll suboptimal to have a field for each possible tag, for example

...
related_programme?: id
related_schedule?: id
related_community?: id

We can see that, this will mean as the possible ways of tagging grows, so does the size of the Discussion structure. Instead, we can do something like this:

discussion.tags = ['programme:8', 'schedule:92']

If it's not already apparent, this allows to even tag one discussion with two programmes, which is valid.

from compa.

CongoMusahAdama avatar CongoMusahAdama commented on July 1, 2024

from compa.

FrederickOB avatar FrederickOB commented on July 1, 2024

But we won't automatically create discussions for schedules. We will add a button for each schedule to "start a discussion". All it does is tag the discussion with that lesson. Nothing more. We should be able to have more than one person start a discussion on a lesson.

I could have a problem from the lesson I want someone to explain. Another person can also have another problem.

For now, we can't have live discussions as well. Traffic doesn't support that effort.

@blackmann,

I've been contemplating the implementation of open discussions for live classes, and I have a slight concern about the potential for overwhelming or distracting situations, especially in larger classes.

For example , a class has 100+ students and 30 people simultaneously open discussions, it could become challenging for students . Perhaps we should consider setting some guidelines to streamline the process. One option could be to limit the number of discussions opened during a live session to prevent information overload. Alternatively, we could delegate specific individuals to initiate discussions, ensuring a more organized and focused approach.

Another point to consider is whether these discussions should be limited to occurring during the class or if there's room for post-class discussions. This distinction might help strike a balance between real-time interaction and minimizing disruptions during the live session.

from compa.

blackmann avatar blackmann commented on July 1, 2024

Thanks @FrederickOB

Discussions are peer-controlled not organization-controlled.

A better analogy is just like a tweet. Or a stackoverflow question (+answers). A forum.

Having that in mind, discussions are in the interests of whoever creates them and anybody interested gets engaged. Discussions can go on forever. It doesn't even have to be purely academic. (Though, in an academic setting, it natural most discussions will)

People not even in your class can interact with your discussion. Almost everything is designed to be open on compa. Fundamentally.

Discussions are also not meant to be live. They won't be live any time soon too.

I don't see any instance where there'll be a live discussion on an ongoing class schedule. I don't see that happening sooner or in the remote future. Until then...

Did this help make things clearer?

from compa.

FrederickOB avatar FrederickOB commented on July 1, 2024

@blackmann oh okay I understand now πŸ’ͺ🏿

from compa.

Related Issues (20)

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.