Giter Site home page Giter Site logo

marcus / rabu-schedule Goto Github PK

View Code? Open in Web Editor NEW

This project forked from teamrabu/rabu-schedule

0.0 1.0 0.0 9.7 MB

Tools and ideas for product scheduling, with the goal of creating exemplary customer relationships.

License: Other

Java 0.59% Ruby 0.25% Shell 0.19% JavaScript 98.97%

rabu-schedule's Introduction

Rabu Schedule 0.5 (cancelled)

Rabu Schedule is no longer under development as of February 2012.

Rabu Schedule helps Agile software teams improve their relationships with executives and customers. It creates interactive web pages for collaborating on schedule trade-offs. For more information, see the Team Rabu website.

Downloading Rabu Schedule

The latest release of Rabu may be found in the released directory. Unzip the release file into a directory of your choice.

Running Rabu Schedule

Run Rabu Schedule from the command line, as follows. You must have Java installed.

java -jar rabu.jar < estimates.rabu > projection.html

To view the results, open projection.html in your web browser.

Rabu Schedule works with the current versions of Firefox, Safari, and Chrome. Internet Explorer does not work at this time.

Limitations

This version of Rabu Schedule has some limitations:

  • No command-line error checking. If you give the command-line tool a bad JSON file, it doesn't warn you.

  • No run-time error handling. When the Javascript in the HTML file encounters an error (such as a bad JSON file), it silently fails.

  • Limited cross-browser support. Rabu Schedule appears to work in Firefox, Safari, and Chrome. However, it has only been thoroughly tested in Firefox. Internet Explorer 7 & 8 do not work, and IE9 appears to work, but has cosmetic issues.

Two apparent limitations are intentional:

  • Command-line interface. Rabu Schedule is meant to integrate with a development team's workflow. In particular, it runs from the command line so it can be easily automated, and it uses a text-based configuration file to play nicely with version control.

  • Single-file output. Rabu Schedule's HTML output is self-contained within a single file so you can easily open, email, or host the result.

Please report other issues on GitHub.

The Input File Format

Rabu takes a JSON file containing a development team's estimates on STDIN and outputs an HTML file containing projections to STDOUT. The input file must be encoded in UTF-8 and the output file will also be encoded in UTF-8. (If you aren't familiar with file encodings, just use plain ASCII, which is a subset of UTF-8.)

There's no error-checking on the input file format at this time, so if Rabu Schedule doesn't seem to work, look for errors in your input file. In particular, look for missing or excess commas, as that's a common error when you cut-and-paste lines in JSON.

The input file uses the following elements. See the estimates.rabu file included with the distribution for an example.

{
	"name": "Hello World",

The name of your project.

	"updated": "22 Jun 2011",

The date that you last updated the information in this file.

	"iterations": [

A list of all the iterations to date for this release. Put your current iteration first.

		{

Each iteration gets an object of its own.

			"started": "19 Jun 2011",

The date that the iteration started.

			"length": 7,

The length of the iteration in calendar days. (In this example, the iteration is one week long.) Note that the value is a number, not a string.

			"velocity": 12,

The velocity of the iteration. For your current iteration, use your estimated velocity. For completed iterations, use your actual measured velocity.

			"riskMultipliers": [1, 2, 4],

Risk multipliers describe how much schedule risk you have, which determines how much spread there is in your schedule projections. They're described in detail here. The easiest approach is to use the following rule of thumb:

Rigorous projects: If your team achieves the same velocity every iteration, gets everything "done done," and you fix all your bugs each iteration, then you probably don't have much schedule risk. Use [1, 1.4, 1.8] for your risk multipliers.

Risky projects: If you don't meet the "rigorous project" criteria, you're more likely to have a lot of schedule risk. Use [1, 2, 4] for your risk multipliers.

		    "included": [

This is a list of all the features that will be included in your schedule projection--typically, the features you intend to ship in your next release.

Rather than listing out every story in your backlog, combine groups of stories into "features" that your stakeholders are interested in. You should only have about five features; if you have too many, you're likely to overwhelm your stakeholders with more detail than they care about, which will make discussing tradeoffs difficult.

				["Feature A", 0],
				["Feature B", 10],
				["Feature C", 8],
				(etc)

Each feature has a name (such as "Feature A" in the example above) and an estimate of the work remaining. This estimate is the sum of all the remaining stories for the feature. An estimate of zero means the feature is done. Note that the story estimates are numbers, not strings.

			],
			"excluded": [
				["Feature D", 2],
				["Feature E", 16],
				(etc)
			]

You may also list features that are not included in your schedule projection in the "excluded" section. Use this to list features that your stakeholders are interested in, but that you have decided not to ship at this time. This helps define the boundaries of your work and creates the opportunity for trade-off discussions with your stakeholders.

The "excluded" section is optional.

		},

That's everything you need to describe an iteration.

		{
			"started", "12 Jun 2011",
			"length", 7,
			(etc)
		},
		{
			"started", "5 Jun 2011",
			"length", 7,
			(etc)
		},
		(etc)

After the current iteration, you may list each previous iteration from most recent to least recent. These historical iterations are optional. If present, they'll show up in the Rabu burn-up chart. We recommend erasing the history at the beginning of each release cycle so that the burn-up chart shows your progress towards your current release.

	]
}

That brings us to the end of the file.

The Rabu input file is easiest to maintain if you update it once at the beginning of each iteration. Start by updating the velocity of the top-most iteration (the iteration you just completed) to your actual measured velocity, then copy-and-paste the entire iteration block to the top. This new iteration block is for the iteration you are starting. Update the "started" element accordingly and update the feature estimates to account for the stories you've completed as well as any other changes to the backlog. With practice, this should only take a few minutes.

Source Code

Note: The Rabu build has only been tested on Mac OS 10.6. In particular, although Rabu runs on Windows, the build doesn't work on Windows.

Rabu's source code is available on GitHub. The files in the repository are arranged in the following structure:

  • released/: Production release files
  • src/: Production source code
  • lib/: Files used at runtime
  • build/: Files used at buildtime
  • generated/: Files created by the automated build
  • gems/: Locally-installed gems
  • spikes/: Non-production experiments
  • copyrights/: Legal stuff

To build Rabu Schedule from source, you need the following tools installed:

  • Ruby
  • RubyGems (typically comes with Ruby)
  • Rake (sudo gem install rake)
  • Java JDK
  • Firefox

The build automatically downloads and installs its Ruby dependencies them into the gems directory. They're isolated from the rest of your Ruby installation.

To build a release version of Rabu Schedule, use rake release minify=true from the command line. The results will be placed in the released/ directory. Use rake on its own for ordinary development. rake -T will show you the most commonly-used targets, and rake -P will show all targets. Minification is disabled by default, which speeds up the build; use the minify=true switch to enable it.

Important: After you're done building, be sure to run rake shutdown to stop the JsTestDriver server. If you use ./autorake.sh (described below), breaking out of the script should automatically kill the server.

Two scripts make building more convenient:

  • ./rake.sh is a wrapper around rake that displays a big green or red bar for success and failure.
  • ./autorake.sh automatically runs ./rake.sh whenever any files change.

Both tools pass their command-line parameters through to rake.

Submitting Patches

Patches are welcome. Before we can accept your code, we need a signed copyright assignment form. You can find the form in the copyrights/ directory.

rabu-schedule's People

Contributors

curious-attempt-bunny avatar jamesshore avatar

Watchers

 avatar

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.