GithubHelp home page GithubHelp logo

echo's People

Contributors

ameliavoncat avatar anasauce avatar breyana avatar bundacia avatar danisyellis avatar devonwesley avatar dianavashti avatar helenyau0 avatar ian-deans avatar jaredatron avatar jason00111 avatar jbchavez19 avatar jeffreywescott avatar mantinone avatar nicosesma avatar nodatall avatar punitrathore avatar rae-ralston avatar sdweber422 avatar shereefb avatar tannerwelsh avatar trevorjamesh avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

echo's Issues

At the end of each Cycle, Players will complete a Retrospective

Retrospectives

Overview

Two types of questions:

  • open ended: e.g. what did you like about working with that player?
  • numeric: e.g. I liked working with Jeffrey
    • 1 (strongly disagree)
    • 4 (neutral)
    • 7 (strongly agree)
    • 0 (don't have enough information for an opinion)

Three possible subjects for a question:

  • cycle questions: linked to the cycle
    e.g. was this a stretch goal for you? did you have fun?
  • player questions: linked to the cycle AND a player on the project (different than the player answering)
    e.g. what did you like about working with Jeffrey during this cycle?
  • question questions: linked to another question.
    e.g. This feedback was kind and specific. (1 strongly disagree to 7 strongly agree)

relative contribution question:

What is the percentage contributed to the work done during this cycle? (Enter your answers as a series of space delimited numbers that add up to 100)
Jeffrey Tanner Trevor Shereef

This is basically a UI wrapper around 4 player/range questions

Considerations

  • Build with an infrastructure for questions to be customized on a per learner basis in the future. For example: Jeffrey might answer different player questions for Tanner during a retrospective, than for Shereef
  • Answers need to be hidden from other players. So they need to be given with a slash command, or in a separate conversation with a retrospective robot.
  • Retrospectives are announced in the project channel & the chapter channel. They are conducted in a private channel with retro-bot (better a special purpose bot since it needs to be a conversation. And if lg-bot is being used for other notifications the retrospective could get confusing)
  • The retrospective questions I answer that are related to a certain player are grouped together (in other words, I'm asked all four questions about Jeffrey, then all four questions about Tanner...etc.)
  • Optional Anonymity: as a user I'm asked if I want my answers to player questions anonymous or not (on a per player, per retrospective basis)

User stories (prioritized)

  • As a moderator, I can kickoff a retrospective for the cycle by issuing the command /cycle startretro. This command looks for the cycle that is currently in a practice state, and kicks it into retrospective state.
  • As a user who is working on a project, that's part of a cycle that just got kicked into retro mode, I'm shown a notification that the cycle is now in retro mode in the project channel as well as the chapter channel.
  • As a user, I'm asked the relative contribution question in a private channel with lg-bot:
    What is the percentage contributed to the work done during this cycle? (Enter your answers as a series of space delimited player handles and numbers that add up to 100)
    for example: jeffrey 25 mayatron 25 tannerwel 25 shereefb 25

Note, the retro question's example command should have the github usernames of the actual players in that project in alphabetical order, with the example numbers being the equal distribution of contribution across the players. This allows a player to copy-paste the command and modify it before submitting.

  • As a user, I am notified when another player in my team has answered all their retro questions by seeing a notification in the project channel: "Jeffrey has completed their retrospective."

Half-baked stories:

  • nag users if they take too long to answer
  • nag users that are last to submit their retro
  • feedback on feedback questions
  • questions about stretchy goals
  • confidence level in the answer: (see here)

Relevant Data Model

See specs in #109

from chat, Players can see which Goals have been suggested as Projects

Voting Flex-Panel UI (read-only)

  • includes link to goal library
  • includes % of votes cast (for active players in chapter)
  • display indication of whether or not voting is still open
  • display current list of suggested projects, sorted by popularity (most popular at top)
  • for each suggested project
    • of votes

    • special UI treatment (color, rank #) if given player has vote-ranked the project in question
  • "nice-to-haves"
    • allow player to see who has voted on a particular project suggestion
    • show threshold line: any project below the line is non-viable
    • allow player to filter for "suggested by people within my skill range"

back-fill missing graphql tests

  • GraphQL API tests
    • positive (when correct data is passed, behaves as expected) tests
    • at a minimum, .todo tests for negative (when incorrect / malformed data is passed, errors are thrown) tests

allow navigation to players from chapters list

Right now, there are two simple navigation paths:

  • view all chapters
  • view all players

However, as the number of chapters and players grows, this will become tedious. Allow the players list to show a subset of the players (namely, just those for a given chapter).

when viewing suggested Projects, Players will see a list of suggested Projects, sorted by popularity

front-end

  • show progress bar if loading

for each suggested project, render

  • candidate goal name
  • # of votes
  • special UI treatment (color?) if given player has vote-ranked the project in question
  • load cycle candidate goals when component mounts
  • dispatch new candidate goals when received via socket

back-end

  • index goalURL
  • group by goalURL and count # votes
  • change feed should push data when voting happens for current cycle / chapter
  • ensure candidate goals are sorted by # of votes
  • reconnect if socket hangs up

Players can create new challenges

  • each challenge is a github repository
  • popularity based on # of stars
  • each challenge has a corresponding chat channel
  • /info command in chat channel shows:
    • of stars

    • of forks

    • of open / closed issues

API endpoints for voting

Command(s)

  • /vote GOAL_IDENTIFIER [GOAL_IDENTIFIER]
    • GOAL_IDENTIFIER is an issue-number or URL on the craft-specific goal-library repository
    • array of ranked-choices (support 2, primary and secondary, in first version)
    • first suggestion counts as a vote
    • if only a single goal is given to the command, that player is casting two votes for the same issue
    • later votes cast overwrite earlier votes for same user

TODO

  • initial cycle schema and API endpoints
  • vote schema and API endpoints

See Also

rocketchat-lg-slash-commands/#4

Players are assigned to Projects

Project Assignment

Related: learning-os issue 227

Requirements

  • players shuffled into teams at beginning of each cycle
  • players must be in same chapter
  • team size (aim for 4)
  • additional interface for moderators to kick-off the process of assigning players to projects / teams
  • channel created for each project
    • named: <random-word>-<goal-number> (obviously de-duplicated)
    • @tannerwelsh to determine auto-join, auto-leave, auto-favorite interactions
    • lg-bot sends welcome message to project and chapter channels with:
      • notify player @Handles, "Welcome to #channel_name. Here is your goal."

Relevant (New) Data Model

Project

  • has many players
  • has one goal
  • has a start time
  • has a duration (# of cycles)
  • players can change at cycle boundary

Backoffice users can administer chapters.

  • menu has 'chapters' option for users with 'moderator' or 'backoffice' roles
  • chapters lists chapters and has a 'new chapter' option (backoffice only)
  • clicking on a chapter in the chapter list allows editing of the chapter (backoffice only)

players can vote on Goals using the flex-panel UI in chat

The UI:

  • display the list of Goals that have been suggested (for the next cycle), sorted from most popular to least popular
  • next to each goal, a UI element will allow Goals to be voted up / down
  • list will update automatically as votes are cast and new suggestions are made

Players can create new Goals

There will be an organization on GitHub (separate from Learners Guild) that holds craft-specific repositories.

  • issues on these craft-specific repositories represent Goals
    • issue templates should be provided for these repositories
  • every Player in the game has the ability to create new issues on these repositories

from chat, Players can pause and resume their game play

Commands

  • /pause [num cycles] [player handle]
    • e.g., /pause 2 @bob, /pause 3, /pause
    • if not specified, [num cycles] is infinity
    • [player handle] only valid if command issued by someone with pauseOrPlayPlayer capability
    • otherwise, marks the player who is issuing the command as paused in the game
  • /play [player handle]
    • e.g., /play @bob, /play
    • [player handle] only valid if command issued by someone with pauseOrPlayPlayer capability
    • otherwise, marks the player who is issuing the command as playing in the game

Game loop

Possible player-state transitions:

old state new state state changed by
unassigned interested vote (player)
voted assigned team assignment / cycle vote time passed (system)
working reflecting cycle end time passed (system)
reflecting unassigned reflect (player)

diagram

simplify invite code assignment

Right now, you have to:

  • load the chapters list
  • click on an individual chapter
  • click the "Create Invite Code" button, complete the form, then submit

Instead, we should have the "Create Invite Code" next to each chapter in the chapters list ".

modeling: chapters, cycles, goals, projects, and retros

Chapter

  • has a cycle duration
  • has a cycle start time
  • has a chat channel

Goal

  • has a URL
    • potentially use GH issues as goals
    • has zero or more challenges (links in Markdown)
    • has comments (issues have comments)

Project

  • has many players
  • has one goal
  • has a start time
  • has a duration (# of cycles)
  • players can change at cycle boundary

Retro

  • belongs to a cycle
  • has many players

create goal organization and repositories

  • create separate GitHub organization "Learners Guild Game"
  • create a testing Goal repository for JS Web Development craft
  • create a production Goal repository for JS Web Development craft

Create new players for each new user in IDM with the `player` role

  • set up background jobs
  • create a background job to run every minutes that queries IDM for any new users since the most recent player create date
  • chapters have an inviteCodes [array] attribute
  • if user in player role, players are created
    • associate with chapter that contains the invite code used to invite the player

Players can vote on Goals to suggest them as Projects

Data Storage

There will be an organization on GitHub (separate from Learners Guild) that holds craft-specific repositories.

  • issues on these craft-specific repositories will be used to capture "Goals"
    • issue templates should be provided for these repositories
  • every player in the game has the ability to create new Goals

Conditions for Voting to Be Complete

Either:

  • everyone must have voted, ... and ...
  • everyone must be placed on a team as either a member or a lead

Or:

  • voting end-time is reached

User Experience and Interactions

Relevant Commands (within chat)

  • /deactivate [player handle]
    • player handle only valid if command issued by someone with deactivatePlayer capability
    • otherwise, marks the player who is issuing the command as "not active" in the game
  • /activate [player handle]
    • player handle only valid if command issued by someone with activatePlayer capability
    • otherwise, marks the player who is issuing the command as "active" in the game
  • /vote GOAL_IDENTIFIER [GOAL_IDENTIFIER]
    • GOAL_IDENTIFIER is an issue-number or URL on the craft-specific goal-library repository
    • array of ranked-choices (support 2, primary and secondary, in first version)
    • first suggestion counts as a vote
    • if only a single goal is given to the command, that player is casting two votes for the same issue
    • later votes cast overwrite earlier votes for same user
    • run algorithm after each vote (or very frequently, so as to give feedback to flex-panel UI)

Voting Flex-Panel UI (read-only)

  • includes link to goal library
  • includes % of votes cast (for active players in chapter)
  • display indication of whether or not voting is still open
  • display current list of suggested projects, sorted by popularity (most popular at top)
  • for each suggested project
    • of votes

    • special UI treatment (color, rank #) if given player has vote-ranked the project in question
  • "nice-to-haves"
    • allow player to see who has voted on a particular project suggestion
    • show threshold line: any project below the line is non-viable
    • allow player to filter for "suggested by people within my skill range"

Related Issues

#2 #33

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.