Skip to content

Commit 47e6e32

Browse files
committed
initial roadmap
1 parent d2755aa commit 47e6e32

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed

Diff for: roadmap.md

+76
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
# Data prototype roadmap
2+
3+
A general note that in no world will the development be quite as linear as laid out here.
4+
There will always be ideas that spark an afternoon of "What if I tried XYZ, how hard is that?"
5+
6+
This is primarily folloing a "breadth-first" approach
7+
8+
9+
## Phase 1: Low-level artists
10+
11+
The purpose of some of the earliest work is to lay foundations without direct regard for replicating existing APIs.
12+
To be clear, all properties of these artists that are used by existing APIs must be present, but explicitly leaving out things like default behavior.
13+
14+
Including:
15+
- Patches (and most-all subclasses)
16+
- Line2D
17+
- Images (various)
18+
- Collections (various)
19+
- Text/annotations
20+
- Legend
21+
22+
Explicitly not including in the first set:
23+
- Axis/Axes/Figure artists
24+
- Tick
25+
- Hyper-specific use case artists like QuiverKey/Table (these can be added when focusing on that usecase)
26+
- Unit handling
27+
28+
These artists carry some of the overall architectural decisions to be made about this API, and pinning them in too early is likely to paint us in corners that will be more difficult to reverse course on rather than holding off until some of the API basics are worked out
29+
30+
Questions to be answered during this phase:
31+
- Do the lowest level artists handle defaults for expected data keys? (lean NO, make it "cranky", build on top of these)
32+
- Do these artists use the same inheritance structure as existing artists?
33+
- What are the naming (or perhaps rather name-spacing?) conventions to use
34+
- Who wraps who? i.e. does the new code call into existing artists or implement the artists themselves and old code will then be modified to tap into new api?
35+
- What datatypes and other information are useful in data descriptors?
36+
- Consider the information flow of some things like transforms -- can data be queried without a transform? only sometimes?
37+
38+
As a result of some of this, these artists may be somewhat painful to use, as they require being much more explicit than most existing interfaces.
39+
40+
### Parallel work that is not directly "low level artists"
41+
42+
- Documenting and working with existing Units code
43+
- wrappers around some higher level artists to test the Data side of the project, developing better descriptions
44+
- Gather a library of example use cases to serve as end goals
45+
46+
47+
48+
## Phase 2: Higher-level artists
49+
50+
This phase solidifies some of the core ideas linking the Data layer and the Artist layer.
51+
52+
This will include focusing on many of the common Axes functions which return artists, including `plot`, `scatter`, `pcolor`, `contour`, etc.
53+
54+
Questions to be answered during this phase:
55+
- Unit handling
56+
- Can the Data API be useful outside of mpl?
57+
- What is needed for full API compatibility such that existing methods can be rewritten to use the new API?
58+
- How should axes/axis/figures/ticks be handled?
59+
- How does the Data layer interact with third party libraries?
60+
- When (and what portions) does code get merged into matplotlib itself/added as dependencies?
61+
- Consider composition of artists into more complex artists (some ideas already reprepresented see Error Bar for example)
62+
- Are additional tests needed?
63+
64+
## Phase 3: Exploring new features enabled by this API
65+
66+
Items to consider:
67+
- Serialization of figures and interplay with other plotting libraries
68+
- Implementing Axes/Figures/Ticks changes that were decided in previous phase if they were "desireable, but not yet"
69+
- Are new Artist types desirable/made easier to manage by the Data layer?
70+
71+
## Phase 4: Extend support for domain specific libraries
72+
73+
Items to consider:
74+
- Documentation aimed specifically at authors of such libraries
75+
- Creating "rough draft" support for some key libraries (pandas, xarray, others that mpl maintainers are involved with)
76+

0 commit comments

Comments
 (0)