docs/NewFeatureProcess.md
The easiest way to submit new feature requests is through Feedback Hub. In Feedback Hub, any Windows user (even if they aren't on GitHub) can upvote suggestions. The Calculator team reviews these suggestions regularly, and when we're ready to work on an idea we create feature pitch issues here on GitHub.
But using Feedback Hub is not required—you can create feature pitches too! This document explains the elements of a good pitch and how we'll guide features from a pitch to a finished product. The Feature Tracking board shows all the features we're working on and where they're at in the process.
You do not need to follow this process for bug fixes, performance improvements, or changes to the development tools. To contribute these changes, discuss the proposed change in an issue and then submit a pull request.
You do need to follow this process for any change which "users will notice". This applies especially to new features and major visual changes.
Feature pitches are submitted as issues on GitHub using the Feature Request template. We encourage discussion on open issues, and as discussion progresses we will edit the issue description to refine the idea until it is ready for review.
We review pitches regularly, and will approve or close issues based on whether they broadly align with the Calculator roadmap. Approved pitches are moved into planning on the feature tracking board.
For most features, the output of this phase is a specification which describes how the feature will work, supported by design renderings and code prototypes as needed. The original issue will continue to track the overall progress of the feature, but we will create and iterate on spec documentation in the Calculator Spec repo. Sometimes we'll learn new things about a feature proposal during planning, and we'll edit or close the original pitch.
We welcome community participation throughout planning. The best ideas often come from trying many ideas during the planning phase. To enable rapid experimentation, we encourage developing and sharing rough ideas—maybe even with pencil and paper—before making designs pixel-perfect or making code robust and maintainable.
After the spec review is completed, we will move the issue into implementation on the feature tracking board. In some cases, all of the details of an idea can be captured concisely in original feature pitch. When that happens, we may move ideas directly into implementation.
A feature can be implemented by the original submitter, a Microsoft team member, or by other community members. Code contributions and testing help are greatly appreciated. Please let everyone know if you're actively working on a feature to help avoid duplicated efforts from others.
You might be able to reuse code written during the prototype process, although there will typically be more work required to make the solution robust. Once the code is ready, you can begin submitting pull requests.
As with all changes, the code for new features will be reviewed by a member of the Microsoft team before being checked in to the master branch.
New features often need a more thorough technical review than bug fixes. When reviewing code for new features, the Microsoft team considers at least these items:
After the technical review is complete, the product team will review the finished product to make sure the final implementation is ready to release to Windows customers.