[GSoC] Pinned Chat Feature

Above is a rough layout and explanation of end-user experience for a possible pinned chat feature on jitsi-meet, a project proposal for GSoC. Any thoughts on this will be appreciated.

Implementation approach

  1. To check whether a chat is pinned or not, The validation will be done here, for the web. For the native part changes will need to be made in this file similar to how the current private messages are validated.
  2. A new PinnedChat.js, PinnedChatCounter.js and PinnedChatGroup.js components will be created under this directory for the web and this one for native
  3. For the PinnedChatGroup.js for the native side → a flat list will be made similar to how normal chat is rendered here.
  4. The user can access all the the pinned chats by the grp by entering the # Pinned Chats which will be its own substream under Chats.
  5. Finally a counter of all the pinned messages would be great and can be handled by PinnedChatCounter.js in a similar manner how unread chats are defined here

@saghul Please let me know your opinions ,feedback, or if there is something I missed here in this implementation part of my proposal please let me know.

Also sorry for not starting this thread sooner, end-sem exams :sweat_smile:

err… outside of the implementation, from a end user point of view, what could be the use case ? can you give a real-life example of how the feature would be used and what value it will add ? sorry, you know what you want but others may not have a clear idea.

Great Question, @gpatel-fr !

I will answer that one by one but I will explain the value it will add briefly with my personal experience →

My college uses google meet for classroom discussion and in every class, all the important messages in the chatbox get lost when the chat is active. to recover the buried gold someone has to scroll all the way back and copy paste those messages in to the chat AGAIN which is a huge waste of time and effort.

This process continues numerous times in a single meet when the chat is active and the message gets buried again and if someone need to refer that notice again the cycle continues.
This is a very troublesome problem for both the educator and students alike. For educators because their important messages get buried and they have to repeat themselves over and over again and for students because they have to scroll and search for the relevant info in the chatbox !

It becomes quite frustrating over the long run and so a pinned chat feature will solve this problem quite well… all the important chats will be pinned by the moderator where others can quickly glance up and refer to the important points of the meet so everyone is on the same page.

Thus if implemented in jitsi it would not only result in more educational meets but also professional meets / work-related meets in general taking place on jitsi.

Use Cases for the end users → Let’s say I am in a jitsi meet with 10- 20 participants who are active on the chat box.
Now if the purpose of the meet is discussion of college assignments or workflow for group projects, getting acquainted with a new community whose members are using JITSI for RTC so on and so forth, it is necessary that certain important instructions/ messages do not get lost in the bucket load of chats and all the users can refer them quickly.
Even if a small minority of participants are very active on the chat the important points of the meet may get lost.

For college assignments, it would be important to quicky refer to certain notes to maximise the efficiency of the meet for example → agenda of the meet, what will be discussed , sub topics of the assignment etc which have already been discussed in the meet etc . each of these can be one message that would be pinned in the pinned chat where all the participants can quickly glance at and refer to very quickly.

For educators and students , here the important points of a topic, external doc links, answers to common questions in that meet, schedule/syllabus for tests can be pinned on the chat after only writing that once , which the students can refer to at anytime.

For workflow discussion meet for a group project Here the pinned chat feature can be used as a sticky note where the roles of the members, the component being discussed, phases of the project can be defined and pinned, again easier for the group leader to make sure everyone is on the same page to increase the meets efficiency.

For meets for getting acquainted with a community or club messages like the contact information of the inductors can be put on chat and pinned so that the inductees can refer to them at any time.

If this conversation was in a meet, all the above mentioned points could have been separate messages and pinned so that we could have a more detailed discussion about each use case.


Excellent answer ! I’m sold (*)

(*) this is not financial statement. I’m not committing to help in the implementation.

:joy: I am glad you liked the idea. And thanks for asking that question it gave a lot of clarity to my thought process for this feature while writing the reply.

At least could you please tell me would these above points be good for the GSoC proposal to start working on this project this year. I hope that wouldn’t be too long, right?

Something I missed or somethings I should highlight more maybe? What are your thoughts ?

It’s not for me to say. I’m not a Jitsi dev. All I can say is that I would not have been shocked to find this feature in the list of GSOC proposal.

Maybe GSOC proposal are more oriented toward technological feats rather than features, though. Maybe it’s because Google ! AI ! quantum ! nuclear fusion !
Or possibly because orgs are not liking to make develop features by students, they prefer to let them explore pie-in-the-sky projects. It’s not competing with regular developers for one thing, and for another if it fails it fails it’s not a big deal, it’s just that either the student was not gifted enough (and the failure may bring information), or the new technology is not quite ready. But there are exceptions to this bias - there are always exceptions. The OSW has said he was liking your idea. It has some weight I think :slight_smile:

not overly long IMO, since I have read it up to the end. And you organize your thoughts, good for you and people working with you.

1 Like

Thank you so much for your feedback! :smiley:

I will be persistent in working on this feature.

Further in the upcoming days I will be expanding, mapping out and explaining the above-mentioned implementation approach in more details once I get the confirmation that maybe I am on the right track.

This will make a good proposal, good work @SWORD_ASH !


Thank you so much @saghul ! Thanks a lot for your help and approval ! :smiley: :+1:

By the way just curious does jitsi have its own GSoC proposal template that the applicants have to follow compulsorily or do we have to make a general proposal?

I filled in some form when making the org application. Not sure if that’s visible in the dashboard.

I am actually talking about the formal proposal that the Contributors applicants have to submit from 4th April to 19th April. :sweat_smile:

Or a plain Docx file is enough?

Hello @saghul Can you please review my draft proposal when you are free?

Please let me know any suggestions/edits once you do.


I hope you use an open document format when submitting your final proposal :wink:

1 Like

:laughing: Yes, for sure. But .odt format is not supported to be uploaded on the forum so had to use proprietary format for your feedback. The final proposal will be Open document format.

So…should I take this as your approval for the proposal or at least a positive sign? :crossed_fingers:

You know just for confirmation to make sure we are on the same page …? :smiley:

Looking good :slight_smile:

1 Like

Thanks a lot, @saghul for your guidance and support! :+1:

I will be submitting this iteration as the final proposal in the final contributor submission tomorrow … as a .odf format of course.

Update : I have submitted the proposal officially on the GSoC proposal submission dashboard… Albeit in a pdf format as the submission was accepting only pdf. and not odf.

If further questions arise regarding the proposal upon further reviews please feel free to ask anytime, I try to be available to answer that within a day or two :+1:

1 Like

Hello again, @saghul! My end semesters got over yesterday and there are a few more things I wanted to discuss with you.

I noticed that the practical use case of making the important details of the chats during a particular meet readily available to all the members was being discussed 3-4 months back in this Issue.

However, the original author never went through with the PR because of the Windows compatibility issue .

This PR has also been stale for a while. Could you please tell me why it was never implemented? Besides not wanting to download the chat everytime a call has been ended?

The main reason for bringing this topic up in this thread is that considering its use case which makes the important chat details available as a downloadable text file is around the scope of what the use cases are for pinned chat feature ,except, pinned chats will be rendered on the fly while in a meet and will disappear once the meet ends just like normal chat.

Now maybe a better end user experience for meets that will utilize feature for pinning their important chats on the fly during the discussion of the meet maybe we can also give an option to download only the pinned chat (rather than all the chats which was originally being discussed in that issue)as .txt?

I mean think about it … since on the fly all the important messages of the meet are already in the pinned chat window so it would be a lot better to download pinned chat JSON as text as it is rather than download all the chats and browse through ALLLL the chats to search and filter for finding important messages?

Let me know your thoughts?

Implementation will be within this pinned chat feature itself

  1. All the pinned chats JSON getting mapped and rendered as a <FlatList> for the native side and as a list for the web on the PinnedChatGroup.js can pe passed as a prop to a file like PinnedChatDownload.js as well.
  2. Next this JSON could be encoded as a .txt file and made downloadable within PinnedChatDownLoad.js on clicking an icon which will be within the pinned chat window.

Please let me know your thoughts on this one when you are free.

Also a few notes → If you do like the idea I will expand upon the implementation part further.

Making the pinned chat downloadable can be implemented within the GSoC time period IF there is time left and the pinned chat feature has been smoothly implemented across all platforms (meaning this will be optionally added on my proposal ).Depending on

  1. Your thoughts on this additional option
  2. How much time is remaining during the GSoC timeline.
  3. But if you like this additional feature of making the pinned chat downloadable. I can also implement it even after the GSoC time period has ended as a community contributor as I believe it will be a useful additional tool for the core use case of adding pinned chat idea itself.

A few thoughts… Chat is a Xmpp feature and as such can be archived at Prosody level.

And speaking of Prosody, did you think about how your pinned chats would be managed at Xmpp level ?
There is Pubsub that is clearly aimed at ordering chats into topics, but it would probably be a sledgehammer to crush a nut. I don’t know anything about Pubsub, just that it exists so I just mention it.

Anyway, if your pinned chats feature can be (at a later stage) combined with Prosody archiving, it would be interesting to know that by querying the archive, if chats are saved to a database for example, one could get back the pinned messages specifically. If you don’t have time to implement the downloading, maybe foreseeing the need for archiving could provide a way to provide this feature for people wanting it with very low effort if it can be ensured that some topic tag can be saved to the archive with each chat message. Maybe. Xmpp expert advice welcome.

Think about security too. Are all users allowed to pin chats ? In many teaching contexts, teachers love to think that they are in control. In some contexts, complete openness could be best.

Next random thought: breakout rooms. Breakout rooms main use is to isolate submeetings so that people interested in a particular aspect of the meeting can talk without interfering with other sub-subjects. Unfortunately rooms are tightly separated and there is no way to transfer chats from a room to another. So it’s a nice idea but it leads nowhere, except that maybe a breakout room could use pinned chats too. It’s more complicated, and more so if one want to conflate that with archiving. Maybe it’s best to not aim for pinned chats in breakout rooms since talk is cheap but programming hours are not.