For 'mob programming' it would be awesome if live-share was tracking stats on each participant, similar to what the "Code Time" extension tracks for individual VSCode users.
Imagine a leaderboard for the live-share session with: number of keystrokes, number of lines added/removed, and idle time tracking for each user.
I think it would add an entirely new dynamic to swarm programming.
@zachdoty Ironically enough, we were just talking about this on Friday 馃榿 Are you thinking about the leaderboard as primarily an end-of-session report, or are you thinking about tracking stats over time as well? Also, I鈥檇 love to hear a little bit more about how you鈥檇 expect your team to use it.
In case you didn鈥檛 already know, Code Time currently includes basic support for Live Share (tracking how many minutes you spent in Live Share sessions), and they鈥檝e discussed adding support for more granular stats as well.
@lostintangent I'm looking for anything I can do to bring more healthy competition to my team.
End-of-session reports would be a good starting place, but tracking stats over time would be better. If there was an option to add a webhook I would integrate it with our team's internal productivity software (something we plan to make publicly available soon.)
I did know that coding time supports tracking minutes spent in live-share sessions... but this doesn't give me much of a clue about who contributed to the session. I dislike that coding time doesn't seem to have a good api, or a way to make a user's stats public on a publicly accessible URL.
I thought about forking Code Time to create something that ties into our team's productivity software. We also self-host Gitea so I thought about creating some commit-tracking webhook integration there.
Just looking for more good ways to give my 30 team members gamified leaderboards so they can compete against each other to be the best coders on the team!
What APIs are available in order for us to develop a bot to play the role of facilitator of a mob session?
What would the facilitator do? Give different users write access on a periodic schedule? Schedule periodic breaks?
Thanks for the quick response. The bot would manage the rotations, give write access to the driver would be good, trigger certain exchange between members at milestones or periodically would also be helpful. Another feature would be for the bot to review activity/contribution by each member so that it can analyze contribution and decide on who to encourage to engage.
A bot facilitator will mark different phases of the online mob programming session, first the bot will provide the participants with time to explore and familiarize themselves with the workspace. The bot will also use the chat to tell the participants when to begin the task and what roles each person will take. It will provide a time warning when there is an upcoming role switch and then indicate the new roles that each participant need to assume.
From a technical perspective, the bot facilitator needs to access LiveShare via APIs, which may include:
Thanks for spelling out what APIs you would need to support what you had in mind! That was going to be my next question 馃榿.
If you hadn't found it yet, here's our API for VS Code. It's pretty minimal - it allows you to programatically share/join/end a session, and gives you access to some basic session info (e.g. who are the participants in the session?) It also allows you to write a custom "collaboration service."
We're open to suggestions on how to improve it, as a vibrant extension ecosystem is nothing but good for Live Share.
In terms of the second point, I think the ask, like you pointed out, is to know _which participants edited which file in a session_. This would be required both for end-of-session metrics and live tracking during the session. The live tracking will help the the facilitator bot to encourage/provide remedies for participants who are doing well/veering off track respectively. I think the idea is to offload as much of the facilitator role (See: http://www.mobprogrammingguidebook.com/images/mobprogrammingguidebook.pdf) to the bot as possible while also figuring out what useful feedback the bot can provide during the session to help individual participants and the group as a whole perform better.
We (myself, @IlyaBiryukov , and @Moniarchy ) had a go at making a super simple v1 of this to bootstrap the extension. You can find it here.
Quoting from the readme, it simply assigns and dynamically updates the roles of users in a mob programming session.
Please feel free to contribute! Let's make something great.
Oh also, we built the extension together using Live Share. Just curious: is that something folks would be interested in joining? If some of the devs from the Live Share team hosted public sessions that you could join to work with us on projects like this?
I'm going to close this for now since we haven't heard significant customer feedback for this, and I think this would be best served as a separate extension that integrates with Live Share's extensibility API. If this is something that folks would like to see us prioritize, please let us know by re-opening/commenting on this bug. Thanks!
Most helpful comment
Thanks for spelling out what APIs you would need to support what you had in mind! That was going to be my next question 馃榿.
If you hadn't found it yet, here's our API for VS Code. It's pretty minimal - it allows you to programatically share/join/end a session, and gives you access to some basic session info (e.g. who are the participants in the session?) It also allows you to write a custom "collaboration service."
We're open to suggestions on how to improve it, as a vibrant extension ecosystem is nothing but good for Live Share.