Roadmap

A tentative roadmap for Gallio and MbUnit v3.

This page describes a tendative roadmap for Gallio releases. The information presented here is of course subject to change.

Because MbUnit v3 is Gallio's first consumer, it is also represented here in this roadmap. At least for now, Gallio and MbUnit v3 releases will therefore coincide. This situation will change as more third party members are brought on-board (at which point we shall update the roadmap to reflect their contributions).

The Road from Alpha to Final

The Alpha releases represent an incremental built-out of the core Gallio functions and features. Since Gallio is intended to be an open platform, our intention is to get several third party contributors on board during the Alpha phase to provide guidance and feedback related to these core services.

Alpha 1: Dogfood

Gallio Goals

  • Achieve dogfood quality.
  • Setup all necessary development infrastructure.
  • First draft of the test object model.
  • First draft of the test harness.
  • First draft of plug-in extensibility architecture.
  • Support rich execution logs.
  • Standalone and VS 2005 integrated help documentation.
  • Generate HTML, XHTML, XML and plain text reports.
  • Deliver Gallio.Echo command line runner.
  • Deliver Gallio.MSBuildTasks build tasks.
  • Deliver Gallio.NAntTasks build tasks.
  • Deliver Gallio.TDNetRunner extension for TestDriven.Net.
  • Produce and distribute an installer.
  • Write public design documentation.
  • Begin the Gallio community process.
  • Include plugins for MbUnit v3, MbUnit v2, NUnit, and xUnit.Net.

MbUnit v3 Goals

  • Achieve dogfood quality.
  • Deliver basic MbUnit v3 stories.
  • Recycle MbUnit v2.4 Assert classes mostly unchanged.
  • Supported fixture types: TestFixture.
  • Supported test types: Test, RowTest.
  • Mostly proof-of-concept.

Community Goals

  • Get more people involved.

Alpha 2: Iterate

Gallio Goals

  • Review the design thus far.
  • Deliver Gallio.Icarus GUI test runner, first release.
  • Deliver Gallio.ReSharperRunner extension for ReSharper.
  • Deliver Gallio commandlet for use in PowerShell.
  • Support tests written using DLR-based languages. eg. Can load tests declared in files in addition to those declared in assemblies.
  • Define plug-in extension points for the loader.
  • Define a common test project file format that can be produced by the GUI and used by all other runners.
  • Enhance the quality of reports. eg. Add rich DHTML based reporting features.
  • Create a new Gallio.Constraints library that defines predicates that can be used in constraint-based assertions. This library may be used independently from the rest of Gallio.
  • Flesh out the data conversion and formatting services.
  • Support passing in test parameters from the command-line.

MbUnit v3 Goals

  • Rewrite Assert classes to use common constraints.
  • Completely redesign the XmlAssert feature using common constraints.
  • Provide constraint-based assertions.
  • Simplify the extensibility story.
  • Provide data-driven testing features with common data sources such as in-line, XML, CSV and SQL.

Community Goals

  • Get more people involved.
  • Support NBehave.
  • Try to get NUnit v3 on board with Gallio.
  • Build a Gallio community web site:
    • Documentation.
    • Articles.
    • Blog links.
    • Community project showcase.
    • Download links.
    • Continuous integration build status.
    • etc...

Alpha 3: Refine

Gallio Goals

  • Build multiple editions to support .Net 2.0, 3.0 and 3.5.
  • Provide constraints based on .Net 3.5 lambdas and expression trees.
  • Create a new Gallio.Generator library for test data generation.
  • Performance monitoring features.
  • Gallio.Icarus plug-in model for the GUI.
  • MSTest plugin.

MbUnit v3 Goals

  • Mixins.
  • Multi-agent tests.
  • Model-based tests.
  • Advanced data-driven test features.
  • Solidify migration path for MbUnit v2.4 users. Ensure all features ported or omitted and documented.
  • Lightweight bolt-on integration features:
    • WatiN (mixin to setup/teardown IE browser and capture screenshots and log output)
    • Selenium (mixin to setup/teardown Selenium state)
    • Rhino.Mocks (mixin to setup/teardown MockRepository and auto-VerifyAll())
    • ASP.Net hosted test environment.
    • Database testing libraries.
    • etc...

Community Goals

  • Get more people involved.
  • Provide a migration path for ZaneBug users, if applicable.

Beta: Go! Go! Go!

Universal Goals

  • API freeze.
  • Increate test coverage.
  • Bug bash.
  • Apply code analysis tools.
  • Implement at most a few minor features.
  • Documentation review.
  • Spit & polish.

Community Goals

  • Solicit feedback and respond.
  • Engineer a solid beta release to coincide with a significant developer conference or other event.

Final

The current plan for Final release is to produce RC1, RC2 and RTM iterations over a span of a few weeks. By this time, the Gallio platform itself should be quite stable. While new features will be added, they will largely be low-risk ones at the periphery. Potentially destabilizing changes will be set aside in a fresh branch for the next release.

Gallio Goals

  • Mono compatibility.
  • Implement new low-risk features.
  • Review installer to enable incremental distribution of Gallio components and plug-ins. That is, distribution of Gallio plug-ins (such as MbUnit) should become decoupled so that they may evolve at different rates.
  • Improve tools integration where possible.

MbUnit Goals

  • More advanced features.
  • Make changes based on beta feedback.
  • Produce a solid MbUnit v2.4 to v3 migration guide.
  • Get started on an MbUnit v3 book.
Community Goals
  • Provide a Gallio bundle including popular community contributions.
  • Write more tutorials, samples, and other support materials.
  • Engage in promotional activities.

Beyond Final

It's impossible to say with any certainty what will happen after the Final release. Still...

  • We will continue to grow the community.
  • We will continue to build useful and innovative features for a wide range of needs.
  • We will continue to pursue excellence.