Coder Social home page Coder Social logo

scrumbut's Introduction

ScrumBut

ScrumBut is a web app, built with Yesod, that adds Scrum features to GitHub Issues.

Despite Scrum’s focus on synchronous, co-located sprint meetings, ScrumBut will try to support asynchronous, distributed workflows as much as possible, to make it easy for remote workers to collaborate as well. This is why the project’s name comes from a derogatory term referring to teams that don’t use “true Scrum.”

Estimating stories

A particular team could start using one of their repositories by following these steps:

  1. Everyone on the team signs in using their GitHub account.
  2. One of the collaborators sets up that repository in ScrumBut, enabling Scrum features for it.

Once set up, any issue can be assigned story points as follows:

  1. Collaborators submit story point estimates for the issue, along with an optional rationale for their estimate.
  2. Once all team members have estimated the issue, a middle ground is automatically chosen if the estimates are close enough to each other.
  3. If there are any big outliers in estimation, those users will get a notification and an opportunity to adjust their estimate, or else talk with the rest of the team about adjusting theirs.

Viewing progress

ScrumBut will treat GitHub milestones as sprints if they contain estimated issues.

After at least one issue in a milestone has been estimated, anyone can see the total number of story points in that milestone, as well as how many have been completed so far.

After a milestone with estimates has been completed, the total number of points will automatically be incorporated into a velocity that can be used to predict how many story points can be accomplished going forward.

Deployment

Although there are many possible ways to deploy ScrumBut, the only supported method is the Haskell on Heroku buildpack:

Deploy to Heroku

After the template has been deployed, you’ll need to set up private storage then build on a one-off PX dyno before the app can be used.

License

ScrumBut is released under the MIT License.

scrumbut's People

Contributors

jspahrsummers avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar

scrumbut's Issues

Calculate velocity from closed milestones

Once a milestone with estimated issues has been closed (completed), we should incorporate its points into a velocity calculation.

To simplify things, I think we should assume that each milestone refers to the same length of time.

Burndown charts

Using our calculated velocity and open milestones that have estimated issues, we should be able to predict how long it will take to reach any given point on the roadmap, and chart the results.

Automatically find a middle ground estimate

This should only occur once there are enough estimates to make it meaningful. Maybe this could be a configurable amount later, but maybe the first version should require the whole team to specify an estimate.

The middle ground should probably be a median, not a mean, since that'd better handle outliers.

Authenticate with GitHub.com

Maybe the home page is just a big ol' Authenticate button until signed in?

We'll have to persist a user. Snap provides Snap.Snaplet.Auth, but I'm not sure where the records are stored. There's probably a way to set up a postgres backend.

Roll all tokens

While developing, we can be fast-and-loose with token embedding in the code—but before this repo gets made public, we need to roll any credentials used within it.

Heroku deploy fails

https://dashboard.heroku.com/apps/scrum-but/activity/builds/4f822641-ce5d-484c-9569-d9c6435833dc

-----> Determining constraints
       cabal: Could not resolve dependencies:
       trying: ScrumBut-0.1 (user goal)
       trying: base-4.7.0.2/installed-bfd... (dependency of ScrumBut-0.1)
       trying: lens-4.7 (dependency of ScrumBut-0.1)
       Backjump limit reached (change with --max-backjumps).
�[1m   *** ERROR: Failed to determine constraints�[0m
�[1m   *** ERROR: Failed to deploy app�[0m

 !     Push rejected, failed to compile Haskell app

Fetching resources requires all parents to be fetched

For example, to get issues in a milestone currently requires that you have the full repository and full milestone models. We should instead allow lookups by short IDs (for example, those that might be passed in URLs), to avoid excessive API traffic.

Login session expires constantly

I'm not sure if it's a really short timeout, or some transient state that isn't getting persisted, but I feel like I have to log in most times I open the site.

It's not every time, though, because opening new tabs and going to the page works as if I'm still signed in.

Move to a service-oriented architecture

We could write a backend with something like servant, then consume that API with a frontend server.

This would have the nice benefit of forcing us to create a great backend API, which can then be consumed by third-party clients as well.

Markdown rendering

Issue (and milestone?) bodies should be automatically rendered as Markdown, just like GitHub.

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.