hackmdio / codimd

CodiMD - Realtime collaborative markdown notes on all platforms.
https://hackmd.io/c/codimd-documentation
GNU Affero General Public License v3.0
9.21k stars 1.05k forks source link

Support discussions #6

Open jackycute opened 9 years ago

jackycute commented 9 years ago

As my observation, people want to talk or discuss topic in notes. And that might cause the note like a mess. There was an idea to make or integrate some chat system.

But now I think Disqus is another great choice. To make the experiment better, will also make it SSO. https://help.disqus.com/customer/portal/articles/236206-integrating-single-sign-on

jackycute commented 9 years ago

Or maybe build a realtime talk like Google Doc dose? What do you think?

janniklorenz commented 9 years ago

ether pad solved this with an realtime chat, but I think a history would be nice too.

This is not something which should be part of the core module, so creating an API for plugins, and writing the chat as one my be the best solution.

But I would't put this on the top of the current TODO, maybe in some later version.

jackycute commented 9 years ago

Agreed

elboletaire commented 7 years ago

I think that http://rocket.chat is a real nice option

jackycute commented 7 years ago

just found gitter can embed as sidecar https://sidecar.gitter.im/

almereyda commented 7 years ago

I suggest exporing the idea of using the open and federated matrix protocol for a chat layer #175 . If it is about adding a discussion page to pads, Discourse has a simple read-only embedding function, as demonstrated with their WordPress plugin. It could also be used for SSO. In a very strict sense, discussions would be a more specific case of https://github.com/hackmdio/hackmd/issues/27#issuecomment-270564978 and could just happen within https://github.com/hypothesis/client.

jackycute commented 7 years ago

Just found https://tlk.io/ Looks nice, stable and even ad-free!

fbukevin commented 7 years ago

WoW, those projects look so useful!

kespinola commented 7 years ago

First, I love the project. I use it all the time at work to plan out our apis, product plans, and more.

What do you all think of creating a chat service using phoenix presence? Id be up to kick things off if that sounds like a good idea to you all.

https://hexdocs.pm/phoenix/Phoenix.Presence.html

I also see you have sockets setup already. Also up to extend the main node app.

+1 to google like comments

heitorPB commented 5 years ago

What about Matrix enabled live chat?

SISheogorath commented 5 years ago

@heitorPB Do you have any example of something like an embedded Riot?

heitorPB commented 5 years ago

@SISheogorath a quick google showmed matrix-web, but i havent used it.

SISheogorath commented 5 years ago

I also found this one: https://github.com/jonas-salomonsson/chatapp

But in general it seems like embedding matrix isn't a thing yet. Embedding Rocket.Chat seems to be possible:

https://rocket.chat/docs/developer-guides/iframe-integration/ https://rocketchat.github.io/docs/developer-guides/embedded-layout/

Just needs some "nice box around it" ^^ I like the idea that it can use the same auth as the CodiMD.

I think when we build that, we should may provide one for the beginning and may add different integrations over time.

ccoenen commented 5 years ago

I haven't looked too much into the links. What I would like to absolutely avoid is requiring a second seperate login.

Chat is also not complicated at all. The infrastructure (websockets) is in place anyway. Whipping up a chatroom per document is probably 10 lines of code on the server and then a massive headache where to integrate it into the UI.

We've discussed matrix before, but so far nobody was able to point out any advantages of integrating it.

edit: I'm referring to issue #175

SISheogorath commented 5 years ago

Whipping up a chatroom per document is probably 10 lines of code on the server and then a massive headache where to integrate it into the UI.

That's some I would prefer to avoid. The reason is that the first thing I would like to avoid is creating a new communication platform. We are there for taking notes. Therefore I think we should focus on the editor and the surrounding and not create yet another chat solution, which then doesn't meet the people's expectations.

Things like "but emojis!" Or "but Stickers!" will probably come up and while they are valid, I want to keep these things out. I would prefer to simply add a chatbox that contains an I frame and people can add their prefered solution.

As mentioned rocketchat looks really interesting here since it has the feature to use an existing site login to log in the iframe, which even integrates well with out external logins and maybe even ldap. Just local accounts would may cause problems but I don't see how we would solve this anyway with external solutions.

almereyda commented 5 years ago

When choosing to couple with a messaging engine, I would suggest not to seek short-term implementation benefit immediately, but to also scope long-term considerations. Rocket.Chat will apparently federate with the Matrix ecosystem by the end of the year, it is being promised again and again.

Looking from there, the common denominator for interoperable message streams will be Matrix. A JavaScript client is easily written and does not require any additional server component.

  • [ ] As a CodiMD operator, I am able to link a node with the Matrix ecosystem and am able to activate persistent chat comments for notes.

Interestingly, there is no OAuth2 password provider, which leaves us wonder why they don't prioritise federating identity also? Luckily non-password-protected, anonymous/pseudonymous guest accounts are very easy to use, if enabled on a home server.

ccoenen commented 5 years ago

From my usage of riot, I am not confident in the matrix ecosystem. It might as well be the riot client, but it is not pleasant to use. Not by a long shot.

SISheogorath commented 5 years ago

@almereyda To be honest I would like to avoid to integrate a full chat client in CodiMD. As mentioned before we'll only run into issues with that. I would prefer to add some kind of box that can be filled via iframe to embed a chat. Maybe also add an better integration for some providers, but definitely no client implementation that includes creating chat bubbles in JS where "user X said: abcd" "User Y said: ertui", … Simple because we than run around with adding feature.

Also I would like to avoid to bind us too hard to one platform and at the same time not bloating our frontend JS even more with other integrations.

For integration with Riot: I noticed that the other way around, means CodiMD into Riot is easier. Just add a custom panel and add your document there :)

ccoenen commented 5 years ago

Mattermost has an API for creating channels and one to add users to a channel. What is missing, in my opinion, is a way to find a user by something we already know, for example their email address. If I'm missing something, please let me know.