microsoft / live-share

Real-time collaborative development from the comfort of your favorite tools
http://aka.ms/vsls
Creative Commons Attribution 4.0 International
2.27k stars 248 forks source link

Allow hosts to save a collaboration session for later use #56

Closed lostintangent closed 1 year ago

lostintangent commented 6 years ago

Currently, a Live Share session is a temporal interaction, whose state and history is tied to the lifetime of the host (and their VS/VS Code instance) and the activity of their guests. However, a collaboration session may actually have broader/longer-term value (e.g. being used to demonstrate a PR, on-boarding new developers to a codebase, socializing a conversation around resolving a tricky issue, guided education), and therefore, could benefit from having a way to save/export it.

What that artifact would actually be/contain (e.g. a video, a history of edits/activity), and how exactly it would be used, are things that would be great to get more feedback on, as we look to optimize Live Share for additional use cases moving forward.

djfurman commented 6 years ago

I definitely agree that this would be nice. I would add in that capturing the terminal output would be great as well when helping train JR devs.

lostintangent commented 6 years ago

@djfurman Thanks! What would be your ideal experience here? That you could export a video of the session that the junior dev could later watch? That you could export a “transaction history” that the junior dev could “replay” by joining a post-mortem session? Something else?

This is a super interesting space for our team, and so I’d love to make sure we capture how you’d like to record/produce and then use the collaboration session.

djfurman commented 6 years ago

Ooh, great question; @lostintangent !

It would be amazing if any kind of export could be annotated with comments!

Maybe in markdown? Then have these appear as subtitles or pointers in the editor?

I do have experience with being asked for video playback to watch later, but honestly, the transaction history is very intriguing; I'm seeing a JSON object that could be a good demonstration tool or even a documentation log.

Sidebar

That log is likely another feature, but you could do some really good best practices extraction for frameworks or language development.

For example, if we could feed enough of those to a machine learning algorithm you may even be able to get optimization tips like unused keyboard shortcuts or new bindings/common snippets that could be made into packages (eyes > stomach, lol).

the-vampiire commented 6 years ago

i posted in the slack channel and was directed to this feature request. i got into the preview for my use of vs live share in teaching others how to code. cookie cutter tutorials can be helpful at a high level but often lead to copy cat vs deep learning. watching someone code live shows the raw nature of coding which has real mistakes, debugging, and refactoring.

with recordings the learner could pause and proceed with a debugger like stepping tool (maybe even with rate settings like char -> word -> line -> block). being able to record and annotate would be an exceptional resource for any learner.

consider the implications of microsoft hosting a community driven "vs live hub" that learners of any capacity can visit to accelerate their path. i think it would be a powerful move and one id be excited to contribute towards.

im sure this falls outside of the scope but being able to add an audio track in addition to annotations. although may become challenging to synchronize in live / recorded sessions.

a couple of months ago i came across this tool called scrimba that may be of inspiration. it follows a similar pattern as live share (what i imagine is a history / diff record and emit) but is used for lightweight high res recordings [text rendering] instead of live sessions.

Maxim-Filimonov commented 6 years ago

@the-vampiire 👍 I have the same use case exactly. Thanks for sharing Scrimba, amazing tool! Qualified also created CodeCast at some point which shares similar idea. Having ability to replicate the environment of a mentor(probably the hardest part of it) while watching them code and stopping it at anytime would be so invaluable. I've seen so many of my own students getting confused when the only thing they see is just a solution instead of how it's done, recording video is a good alternative. However, it's time consuming and requires updates constantly. Which brings me to interesting question of being able to edit those sessions at later point.

lostintangent commented 6 years ago

@maxim-filimonov Thanks for the feedback! Out of curiosity: do you teach your students in real-time and want to provide a “recording” of some kind for later reference? Or do you have students that learn on a self-paced schedule? I’d just love to make sure I understand more about your use case, and how we could explore it further.

Also, how are you currently addressing this need? You mentioned video recordings being a good alternative, so are you recording yourself and/or a live lecture and then sharing that with students?

As a total aside (since @the-vampiire mentioned audio), I wanted to call out that we shipped support for integrated audio calls for Live Share, so that would potentially be another artifact of the persisted session. It would be great to hear if this extension looks sufficient for your needs, since an audio track would presumably be critical to the saved session.

Maxim-Filimonov commented 6 years ago

I teach students in realtime combined with them learning online through text and video content. I do sometimes record mentor sessions, though the main use case for now would be to replace non interactive video content with interactive tutorial their can follow along and modify. Another area where it would be really helpful is for exercises. At the end of an exercise a student is provided with a solution. Right now, a student doesn't see how the solution has been created and often gets confused with it. As a first step I would replace those with recordings of a session in which solution is created in front of them.

Right now, I use a combination of zoom.us session recordings and on-demand explanation of solutions for students who struggle to understand them. Additionally, I teach all my students to follow along any programming video their watch to make it more interactive for them.

lostintangent commented 5 years ago

Would be curious to hear if folks would find this useful: https://github.com/arciisine/vscode-chronicler/pull/7.

Maxim-Filimonov commented 5 years ago

@lostintangent that seems a bit different as it doesn't record actions. Meaning it's impossible for people to reproduce the project on their computer without manually following along.

orta commented 4 years ago

To provide another example where this might be of interest. Folks in the TypeScript team record videos going through the TypeScript codebase to YouTube, where we are in a live code session. It'd be nice to let people scroll through in there editor also.

the-vampiire commented 4 years ago

i know my last comment was quite a while ago. but i would love to contribute towards making this a reality. i have personal time on the weekends to contribute. but i dont have enough time to blindly stab around the codebase. if anyone on the VSC team would be willing to give me a high level overview of where i could begin exploring / implementing id be happy to work from there.

derekbekoe commented 1 year ago

We’re not able to prioritize this issue over the other higher-impact issues we receive every week, based on the votes and comments from others in the community and our understanding of the issue. However, rest assured that we love your input. If you feel it deserves to stay open, then clarify your use case and contact us to let us know how severe it is for you.