|
1 | | -# RFC 0000 - Template Mode |
2 | | - |
3 | | -## Goals |
4 | | - |
5 | | -1. Create RFCs |
6 | | -1. ?? |
7 | | -1. Profit |
8 | | - |
9 | | -## Diagrams |
10 | | - |
11 | | -Here is an ASCII diagram: |
12 | | - |
13 | | -``` |
14 | | - ╔ ═ ═ ═ ═ ═ ═ ═ ═ ═ ═ |
15 | | - ║ |
16 | | - ║ BitPackedArray |
17 | | - ║ |
18 | | - ╚│═ ═ ═ ═ ═ ═ ═ ╤ ═ ═ |
19 | | - │ │ |
20 | | - │ │ |
21 | | - │ │ |
22 | | - │ │ |
23 | | - │ │ |
24 | | - │ │ |
25 | | - │ │ patch |
26 | | - │ │ indices ╔ ═ ═ ═ ═ ═ |
27 | | -┌─────▼─────┐ ├─────────────▶ ArrayRef ║ |
28 | | -│░░░░░░░░░░░│ │ ╚ ═ ═ ═ ═ ═ |
29 | | -│░░Buffer░░░│ │ |
30 | | -│░░░░░░░░░░░│ │ patch |
31 | | -└───────────┘ │ values ╔ ═ ═ ═ ═ ═ |
32 | | - encoded └─────────────▶ ArrayRef ║ |
33 | | - ╚ ═ ═ ═ ═ ═ |
34 | | -``` |
35 | | - |
36 | | -We can have links, like https://github.com/vortex-data |
37 | | - |
38 | | -BUT, we can also have [**LINKS**](https://vortex.dev) or [__links__](https://docs.vortex.dev) |
| 1 | +- Start Date: (today's date, YYYY-MM-DD) |
| 2 | +- RFC PR: [vortex-data/rfcs#0000](https://github.com/vortex-data/rfcs/pull/0000) |
| 3 | +- Tracking Issue: [vortex-data/vortex#0000](https://github.com/vortex-data/vortex/issues/0000) |
| 4 | + |
| 5 | +## Summary |
| 6 | + |
| 7 | +One paragraph explanation of the proposed change. |
| 8 | + |
| 9 | +## Motivation |
| 10 | + |
| 11 | +What problem does this solve? Include concrete use cases where possible. |
| 12 | + |
| 13 | +- What specific use cases does this enable or improve? |
| 14 | +- What workflows or operations are painful, slow, or impossible today? |
| 15 | + |
| 16 | +## Design |
| 17 | + |
| 18 | +Describe the proposed design in enough detail that someone familiar with Vortex could implement it. This should cover: |
| 19 | + |
| 20 | +- New or modified APIs, traits, or vtable entries. |
| 21 | +- How this interacts with existing components (encodings, layouts, scan, file format, etc.). |
| 22 | +- Key implementation details and corner cases. |
| 23 | +- Why is this the best approach in the space of possible designs? |
| 24 | +- Which crates are affected and how the dependency graph changes, if at all. |
| 25 | + |
| 26 | +Use code examples and diagrams where they might help. |
| 27 | + |
| 28 | +## Compatibility |
| 29 | + |
| 30 | +- Does this change the file format or wire format? Is it backward/forward compatible? |
| 31 | +- Does this break any public APIs? If so, what is the migration path? |
| 32 | +- Are there performance implications? |
| 33 | + |
| 34 | +If there are no compatibility concerns, briefly state why. |
| 35 | + |
| 36 | +## Drawbacks |
| 37 | + |
| 38 | +- Why should we _not_ do this? |
| 39 | +- What is the maintenance cost of this change? |
| 40 | +- Does this add complexity that could be avoided? |
| 41 | + |
| 42 | +## Alternatives |
| 43 | + |
| 44 | +- What other designs were considered and why were they rejected? |
| 45 | +- What is the cost of **not** doing this? |
| 46 | +- Is there a simpler approach that gets us most of the way there? |
| 47 | + |
| 48 | +## Prior Art |
| 49 | + |
| 50 | +How have other systems solved this or similar problems? Consider: |
| 51 | + |
| 52 | +- Other columnar formats (Parquet, Arrow, etc.). |
| 53 | +- Database internals (DuckDB, DataFusion, Velox, etc.). |
| 54 | +- Relevant academic papers or blog posts. |
| 55 | + |
| 56 | +This section helps frame the design in a broader context. If there is no relevant prior art, that is fine. |
| 57 | + |
| 58 | +## Unresolved Questions |
| 59 | + |
| 60 | +- What parts of the design need to be resolved during the RFC process? |
| 61 | +- What is explicitly out of scope for this RFC? |
| 62 | +- Are there open questions that can be deferred to implementation? |
| 63 | + |
| 64 | +## Future Possibilities |
| 65 | + |
| 66 | +What natural extensions or follow-on work does this enable? This is a good place to note related ideas that are out of scope for this RFC but worth capturing. |
0 commit comments