Skip to content

How To Request Features

Diego Viola edited this page Mar 25, 2024 · 3 revisions

Steps to follow

  • Ensure it's a meaningful improvement

    • Was this improvement ever proposed or discussed? (Search in Google or Redmine)
    • Is there already a way to achieve a similar result?
    • Would it benefit many people? Can you find cases in existing code where it would be useful?
    • You need to show a convincing example for the feature with Ruby code (see Background below)
  • Think about it

    • What's a good name?
    • What exact arguments does it accept?
    • What does it return?
    • Any risk of incompatibility?
  • Write it up

    • Use a good title: if title is not so good, the ticket will be ignored
    • State how the current situation can be improved
    • Make a concise but complete proposal
    • Address objections you can foresee
  • Create a Feature Request on http://bugs.ruby-lang.org and follow through

    • Open one issue per feature request!

Making good sections

Good sections help us to understand your proposal.

Example:

  • Abstract
  • Background (problem, what is problem you are )
    • "Problem Statement" or "Real Use Case" is the most important information. We usually verify the proposed feature actually solve the problem and is the best solution for it
    • This should include a concrete example using Ruby code of how you would use the new feature, this is very important and may be the only part being read during a developers meeting.
  • Proposal
  • Implementation (if you have. submit with implementation will help us which is feasible or not)
  • Evaluation of your implementation (performance, usability and so on)
  • Discussion (remaining points which we need to consider, pros. and cons. for other approach, and so on)
  • Summary

(same as academic papers)

will help us.

Just ideas are difficult to consider (if it seems not valuable).

Template (copy and fill every sections):

# Abstract
# Background
# Proposal
# Implementation
# Evaluation
# Discussion
# Summary
Clone this wiki locally