Contributing to the Toolkit

The AJAX Control Toolkit is a shared source project released under the Microsoft Public License and built on top of ASP.NET AJAX. It has a set of over 35 controls, many of which were written by members of the ASP.NET AJAX community. The Toolkit has matured into a stable and feature complete product through work with the community over the past year. We would like to continue our organic growth by defining a process for all Toolkit contributions.

Contributions should add sound value to the Toolkit and serve its customers' needs. Anyone wishing to contribute should be committed to a high quality bar and take responsibility for their code. There are two ways that our users can contribute to the Toolkit: use the Toolkit Patch Utility for bug fixes and new features for existing controls, or become a Toolkit contributor by adding new controls.

Contributing fixes using the Patch Utility

The Toolkit Patch Utility has proven successful for getting bug fixes and new features incorporated into the Toolkit. It allows outside users to propose changes and get credit on the Toolkit Patch Hall of Fame if they are accepted. The following guidelines will increase the likelihood of getting your patches accepted and make it easier for us to incorporate your changes:
  • Backwards Compatibility: Existing applications should be able to upgrade to a new version of the Toolkit and have everything work seamlessly, so it is absolutely essential that your patch does not break any existing scenarios for the control being changed. This includes both functionality and APIs. Backwards compatibility should be verified by running our automated test suite alongside manual testing of your new functionality.
  • New Features: Patches should be simple and new features should be added only if they are absolutely necessary. Features should be discoverable, easy to use, and fit well with the rest of the Toolkit and its methodologies. All properties, methods, etc., in managed code and JavaScript need to have XML documentation.
  • Demo page: Any patched controls' sample website demo pages need to reflect the newly added features or changed behavior. All public properties need to be documented on the sample website page.
  • Tests: Our new automated testing client makes adding new tests very easy. We strongly recommend patches include tests to both demonstrate that problems have been fixed and also verify any new functionality so that future patches won't break your changes.

Contributing new controls

While the Toolkit Patch Utility is a great way to provide feedback to the Toolkit team, it's not as good at reaching the entire community. We are proposing the following new submission model that makes it easy for the community to try your controls and helps us evaluate their demand.
  • Codeplex project for your control: To have a richer control submission experience we encourage our users to create Codeplex projects for their controls. To have a richer control submission experience we encourage our users to create Codeplex projects for their controls. The project solution should reference the latest version of the Toolkit and include your code, a demo page, and a set of tests that validates the control’s core functionality.
  • Submitting a control: You can send us a link to your CodePlex project and any corresponding Toolkit work items it addresses. We will link to your project and recommend that our users give it a try. The Codeplex project will give you timely feedback and make the process of improving your control more transparent. It will help us determine how popular your control when reviewing it and working with you to get it incorporated into the Toolkit. There are no strict rules for selection and it may vary on a case by case basis. Once the control is a part of the Toolkit, you will be granted contributor status and be able to maintain the control in the Toolkit's CodePlex project.

Prerequisites for a new Toolkit control

For a control to be considered for the Toolkit, it needs to meet these minimum criteria:
  • Uses and builds on top of the Toolkit infrastructure.
  • Has a well-defined, coherent feature set that aligns well with a requested work item.
  • Does not currently exist in the Toolkit in a similar form.
  • Is not dependent on external services.
  • Functions properly in Internet Explorer 6 and 7, the latest versions of Firefox and Opera, and Safari for Macintosh.
We encourage you to send us information about your control even if it does not meet the above requirements because we're always interested in new solutions for our customers.

Toolkit management

Going forward, the AJAX Control Toolkit Team at Microsoft will play a housekeeping role that entails maintaining the quality bar via code reviews, bug management and release management. We will orchestrate Toolkit releases when we have a critical mass of bugs have been fixed or refresh releases if there are critical issues blocking core scenarios for our users. We will continue to work with our community and take the Toolkit to the next level together with this new contribution model.

If you have further questions please feel free to contact us.
The AJAX Control Toolkit Team

Last edited May 16, 2008 at 8:05 PM by kirtid, version 9