The Feature Requests Pipeline

From Audacity Wiki
Jump to: navigation, search
This is how we get from ideas to new releases of Audacity
Feature Requests   -->   Proposals   -->   Projects   -->   Releases
  • Features are suggested by users, organised and voted on
  • Proposals are made by community, refined and voted on by community
  • Development projects are started by developers, reported on and tracked on the wiki
  • Releases combine working community-tested and documented features

Adding Feature Requests

  • In the first instance, feature requests are submitted to the Audacity forum
    • We ask contributors to clearly define the feature, including use case benefits.
    • Feature requests are kept open for discussion for at least 4 weeks to allow users to discuss pros and cons, and log their "vote" if they wish to support the proposed feature.
  • On the Feature Requests page.
    • We ask wiki editors to follow some fairly detailed instructions in editing and voting for features so that we can keep them in some order.
    • Some requests from the Forum may initially be 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 aim to participate in Google Summer of Code in 2021. When in GSoC, we use a variation on the pipeline for those projects

  • In GSoC there are outline project proposals on the GSoC Ideas page. 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 release after GSoC.