Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Collaborative coding environment #17

Open
cdsmith opened this issue Jun 25, 2014 · 7 comments
Open

Collaborative coding environment #17

cdsmith opened this issue Jun 25, 2014 · 7 comments
Labels
discussion Needs more information or major design decisions

Comments

@cdsmith
Copy link
Collaborator

cdsmith commented Jun 25, 2014

Students should be able to work together on a group project, and see what each other is doing, edit simultaneously, etc.

It's an open question whether this should follow a source control model, or a Google Docs style collaborative editing. The latter would probably be better, given the ease of use and lower required complexity of projects, but it's also harder to build.

@cdsmith cdsmith changed the title Collaborative projects Collaborative coding environment Mar 4, 2016
@cdsmith
Copy link
Collaborator Author

cdsmith commented Mar 12, 2017

It might be surprisingly easy to do this with https://togetherjs.com/ It's worth taking a shot on a dev server, anyway, to see how usable it is.

@peterbecich
Copy link
Contributor

@cdsmith I've been tinkering with TogetherJS. It relies on a lightweight Node server they call a Hub. Do you think there is any usefulness in cloning this server?

Would you rather just use the Hub that Mozilla provides? https://togetherjs.com/docs/#hosting-the-hub-server

I have the beginnings of a clone here: https://github.com/peterbecich/togetherjs/blob/haskellHub/haskellHub/src/Hub.hs
It uses wai-websockets, scotty and warp.

@cdsmith
Copy link
Collaborator Author

cdsmith commented Jun 1, 2017

@parvmor was planning to work on this over the summer as part of the Summer of Haskell program. He'd be more knowledgeable about the intended approach. You could also coordinate with him if you're looking at poking into this, since he's already committed to it.

My understanding of the situation is that TogetherJS is probably not the right approach, in the end. Integrating it closely enough with CodeWorld would be a bit of a challenge.

@peterbecich
Copy link
Contributor

Thanks!

kant added a commit to kant/codeworld that referenced this issue Jan 2, 2019
cdsmith added a commit that referenced this issue Jan 2, 2019
@devanshbatra04
Copy link
Contributor

Hello there!
I stumbled here from the gsoc ideas list on Haskell website.
Is TogetherJS still the preferred way to this? I would love to get started.

@cdsmith
Copy link
Collaborator Author

cdsmith commented Feb 4, 2019

@devanshbatra04 Great question! The best answer is that I don't know, and the first step here would probably be to assess the options and the existing work, and make a decision on the way forward.

If TogetherJS can be made to work, then it's possibly an option. In any case, it looks very simple, and low-maintenance, which is a great thing! I suppose it would also be pretty easy to try, if https://davidwalsh.name/togetherjs is accurate; it looks like adding TogetherJS is a pretty simple process!
It also seems to handle managing identities and connecting peers, and that's one of the most worrisome parts. But I worry the experience would be underwhelming, since CodeMirror does a lot of editing logic that probably shouldn't be replicated between clients, and the multiple-cursor experience may not work so well in CodeMirror as it does in plain textareas on web forms. TogetherJS does provide some ways to manage more complex state. I also worry that it doesn't seem to have been maintained much since 2015, so if we needed any kind of change, we're probably faced with either forking it, or doing without.

@parvmor also did some work on this in 2017 as part of Summer of Haskell. His work is still around as a pull request. Unfortunately, his pull request came in at the very end of the summer, needed some work, and he hasn't followed up on it. But his code is still there, and one step in assessing this project would be to read through it and understand if that's a good basis for further work. #551

@devanshbatra04
Copy link
Contributor

@cdsmith Thanks a ton for such detailed overview. I Definitely appreciate it a lot.

It does make sense to avoid togetherjs given it is not being maintained and also the Code World specific requirements.
I will dig around with any alternatives I can find and also check out the pull request you are talking about.
If none of that works out, I can try proposing a roadmap or solution of our own.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discussion Needs more information or major design decisions
Projects
None yet
Development

No branches or pull requests

3 participants