The Feature Requests Pipeline

From Audacity Wiki
Revision as of 23:17, 20 November 2017 by James (talk | contribs) (with :)
Jump to: navigation, search
This is how we get from ideas to new releases of Audacity
Feature Requests   -->   Proposals   -->   Projects   -->   Releases

The Pipeline

Adding Feature Requests

  • On the Feature Requests page.
    • We ask users to follow some fairly detailed instructions in editing and voting for features so that we can keep them in some order.
    • We also receive some feature requests at our feedback email address, and on our Forum.
    • We add these to the Feature Requests Wiki page too, although requests from the Forum are normally added to Pending Feature Requests for review before addition to Feature Requests itself.

Contributing to Proposals

  • A small number of users create Use Cases which have groups of related features.
    • Use Cases would make Audacity better suited to some specific application - such as wildlife recording. These are particularly helpful in motivating the addition of bigger new features.
    • Sometimes the proposal pages are accompanied by background notes pages where comparison of options is done.

Implementation, Testing and Release

  • Developers write their feature with a conditional #define, so the feature can be turned on or off.
    • The feature is enabled in experimental versions of Audacity long before it is available to users generally.
    • New features are tested, debugged, refined.
    • The design may change quite a bit at this stage as the result of feedback.
  • After discussion, some of the features under development are incorporated into the Roadmap and slated for a definite Audacity release number.

Minimality or Flexibility?

On the audacity-devel  mailing list we have discussed two strategies:

  • Attempting to keep Audacity lean, simple and efficient. Not branching out into new applications. A focus on quality, stability and speed.
  • Turning Audacity into a more general purpose application. Adding new features for specific applications and interests. Experimental possibly problematic features in Beta releases and stability but fewer features in the stable releases.

If Audacity were a one person effort, keeping the focus of Audacity narrow would be possible. As it is a team effort, and different people have different ideas about what the essentials are, we don't have a choice. We have to keep Audacity open to new features. Most people's motivation for working on the software is to get it to do new things.

This brings with it some problems. We need it to be easier to add experimental features without destabilising the core functionality. The roadmap has us moving towards a more modular architecture. To go with that, more functions for customising the user interface are being written, building on theming. These changes will in many ways make Audacity more like CLAM, Praat, PD and MAX in its structure, but with a particular strength for audio applications that need to view and edit sound.

The GSoC Variation of the Pipeline

We are not currently participating in Google Summer of Code. When we have, we use a variation on the pipeline for those projects

  • In GSoC there are outline project proposals on the GSoC Ideas page. Less defined ideas or those with no obvious mentor currently live on More GSoC Ideas. Students use these proposals as a starting point for their own ideas.
  • The students' proposals and ideas get detailed comment and refinement via the Google GSoC app.
  • The students must maintain a project progress page during the GSoC period whereas this is optional for other developers.
  • Students write their feature with a conditional #define, so that it can be enabled in experimental versions.
  • Depending on maturity of the feature, after GSoC is complete, the feature is enabled in the next beta release after GSoC.