- Title: (the title in plain english)
- Decision driver: (your name here)
- Start Date: (today's date, in format YYYY-MM-DD)
- Proposal PR: (fill in after opening the PR)
- Github Issue or Discussion: (only if available, link the original request for this change)
Explain the feature briefly.
When applicable, write a snippet of code showing how the new feature would be used.
Give us more background and explanation: Why do we need this feature? What use cases does it support? What's the expected outcome?
Focus on explaining the motivation for this feature. We'd like to understand it, so that even if we don't accept this proposal, others can use the motivation to develop alternative solutions.
This is the bulk of the proposal. Explain the design in enough detail for somebody familiar with Haystack to understand, and for somebody familiar with the implementation to implement. Get into specifics and corner-cases, and include examples of how the feature is used. Also, if there's any new terminology involved, define it here.
Look at the feature from the other side: what are the reasons why we should not work on it? Consider the following:
- What's the implementation cost, both in terms of code size and complexity?
- Can the solution you're proposing be implemented as a separate package, outside of Haystack?
- Does it teach people more about Haystack?
- How does this feature integrate with other existing and planned features?
- What's the cost of migrating existing Haystack pipelines (is it a breaking change?)?
There are tradeoffs to choosing any path. Attempt to identify them here.
What other designs have you considered? What's the impact of not adding this feature?
If we implement this proposal, how will the existing Haystack users adopt it? Is this a breaking change? Can we write a migration script?
Would implementing this feature mean the documentation must be re-organized or updated? Does it change how Haystack is taught to new developers at any level?
How should this feature be taught to the existing Haystack users (for example with a page in the docs, a tutorial, ...).
Optional, but suggested for first drafts. What parts of the design are still TBD?