Skip to content

Commit b243b5f

Browse files
committed
docs(mkdocs): add roadmap and link in nav
1 parent 3ec843b commit b243b5f

File tree

2 files changed

+155
-0
lines changed

2 files changed

+155
-0
lines changed

docs/meta/roadmap.md

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
---
2+
title: Roadmap
3+
---
4+
5+
# PythonNative Roadmap (v0.2.0 → v0.10.0)
6+
7+
This roadmap focuses on transforming PythonNative into a workable, React Native / Expo-like framework from a developer-experience and simplicity standpoint. Releases are incremental and designed to be shippable, with DX-first improvements balanced with platform capability.
8+
9+
Assumptions
10+
- Current version: 0.1.0
11+
- Scope: Android (Chaquopy/Java bridge) and iOS (Rubicon-ObjC), Python 3.9–3.12
12+
- Goals: Zero-config templates, one CLI, fast iteration loop, portable component API, and a curated subset of native capabilities with room to expand.
13+
14+
Guiding Principles
15+
- Single CLI for init/run/build/clean.
16+
- Convention over configuration: opinionated project layout (`app/`, `pythonnative.json`, `requirements.txt`).
17+
- Hot reload (where feasible) and rapid feedback.
18+
- Stable component API; platform shims kept internal.
19+
- Progressive enhancement: start with a minimal but complete loop, add breadth and depth over time.
20+
21+
Milestones
22+
23+
0.2.0 — Foundations: DX Baseline and Templates
24+
- CLI
25+
- pn init: generate project with `app/`, `pythonnative.json`, `requirements.txt`, `.gitignore`.
26+
- pn run android|ios: scaffold template apps (from bundled zips), copy `app/`, install requirements, build+install/run.
27+
- pn clean: remove `build/` safely.
28+
- Templates
29+
- Bundle `templates/android_template.zip` and `templates/ios_template.zip` into package to avoid network.
30+
- Ensure Android template uses Kotlin+Chaquopy; iOS template uses Swift+PythonKit+Rubicon.
31+
- Core APIs
32+
- Stabilize `Page`, `StackView`, `Label`, `Button`, `ImageView`, `TextField`, `TextView`, `Switch`, `ProgressView`, `ActivityIndicatorView`, `WebView` with consistent ctor patterns.
33+
- Add `utils.IS_ANDROID` fallback detection improvements.
34+
- Docs
35+
- Getting Started (one page), Hello World, Concepts: Components, Guides: Android/iOS quickstart.
36+
- Roadmap (this page). Contributing.
37+
38+
Success Criteria
39+
- New user can: pn init → pn run android → sees Hello World UI; same for iOS.
40+
41+
0.3.0 — Navigation and Lifecycle
42+
- API
43+
- Page navigation abstraction with push/pop (Android: Activity/Fragment shim, iOS: UINavigationController).
44+
- Lifecycle events stabilized and wired from host to Python (on_create/start/resume/pause/stop/destroy).
45+
- Templates
46+
- Two-screen sample demonstrating navigation and parameter passing.
47+
- Docs
48+
- Navigation guide with examples.
49+
50+
Success Criteria
51+
- Sample app navigates between two pages on both platforms using the same Python API.
52+
53+
0.4.0 — Layout and Styling Pass
54+
- API
55+
- Improve `StackView` configuration: axis, spacing, alignment; add `ScrollView` wrapping helpers.
56+
- Add lightweight style API (padding/margin where supported, background color, text color/size for text components).
57+
- DX
58+
- Component property setters return self for fluent configuration where ergonomic.
59+
- Docs
60+
- Styling guide and component property reference.
61+
62+
Success Criteria
63+
- Build complex vertical forms and simple horizontal layouts with predictable results on both platforms.
64+
65+
0.5.0 — Developer Experience: Live Reload Loop
66+
- DX
67+
- pn dev android|ios: dev server watching `app/` with file-sync into running app.
68+
- Implement soft-reload: trigger Python module reload and page re-render without full app restart where possible.
69+
- Fallback to fast reinstall when soft-reload not possible.
70+
- Templates
71+
- Integrate dev menu gesture (e.g., triple-tap or shake) to trigger reload.
72+
- Docs
73+
- Dev workflow: live reload expectations and caveats.
74+
75+
Success Criteria
76+
- Edit Python in `app/`, trigger near-instant UI update on device/emulator.
77+
78+
0.6.0 — Forms and Lists
79+
- API
80+
- `ListView` cross-platform wrapper with simple adapter API (Python callback to render rows, handle click).
81+
- Input controls: `DatePicker`, `TimePicker`, basic validation utilities.
82+
- Add `PickerView` parity or mark as experimental if iOS-first.
83+
- Performance
84+
- Ensure cell reuse on Android/iOS to handle 1k-row lists smoothly.
85+
- Docs
86+
- Lists guide, forms guide with validation patterns.
87+
88+
Success Criteria
89+
- Build a basic todo app with a scrollable list and an add-item form.
90+
91+
0.7.0 — Networking, Storage, and Permissions Primitives
92+
- API
93+
- Simple `fetch`-like helper (thin wrapper over requests/URLSession with threading off main UI thread).
94+
- Key-value storage abstraction (Android SharedPreferences / iOS UserDefaults).
95+
- Permission prompts helper (camera, location, notifications) with consistent API returning futures/promises.
96+
- DX
97+
- Background threading utilities for long-running tasks with callback to main thread.
98+
- Docs
99+
- Data fetching, local storage, permissions cookbook.
100+
101+
Success Criteria
102+
- Build a data-driven screen that fetches remote JSON, caches a token, and requests permission.
103+
104+
0.8.0 — Theming and Material Components (Android parity), iOS polish
105+
- API
106+
- Theme object for colors/typography; propagate defaults to components.
107+
- Material variants: MaterialButton, MaterialProgress, MaterialSearchBar, MaterialSwitch stabilized.
108+
- iOS polishing: ensure UIKit equivalents’ look-and-feel is sensible by default.
109+
- DX
110+
- Dark/light theme toggling hook.
111+
- Docs
112+
- Theming guide with examples.
113+
114+
Success Criteria
115+
- Switch between light/dark themes and see consistent component styling across screens.
116+
117+
0.9.0 — Packaging, Testing, and CI
118+
- CLI
119+
- pn build android|ios: produce signed (debug) APK/IPA or x archive guidance; integrate keystore setup helper for Android.
120+
- pn test: run Python unit tests; document UI test strategy (manual/host-level instrumentation later).
121+
- Tooling
122+
- Add ruff/black/mypy default config and `pn fmt`, `pn lint` wrappers.
123+
- Docs
124+
- Release checklist; testing guide.
125+
126+
Success Criteria
127+
- Produce installable builds via pn build; run unit tests with a single command.
128+
129+
0.10.0 — Plugin System (Early) and Project Orchestration
130+
- Plugins
131+
- Define `pythonnative.plugins` entry point allowing add-ons (e.g., Camera, Filesystem) to register platform shims.
132+
- pn plugin add <name>: scaffold plugin structure and install dependency.
133+
- Orchestration
134+
- Config-driven `pythonnative.json`: targets, app id/name, icons/splash, permissions, minSDK/iOS version.
135+
- Asset pipeline: copy assets to correct platform locations.
136+
- Docs
137+
- Plugin authoring guide; configuration reference.
138+
139+
Success Criteria
140+
- Install a community plugin and use it from Python without touching native code.
141+
142+
Backlog and Stretch (post-0.10)
143+
- Cross-platform navigation stack parity (Fragments vs Activities, or single-activity multi-fragment on Android).
144+
- Advanced layout (ConstraintLayout/AutoLayout helpers) with declarative constraints.
145+
- Gesture/touch handling unification, animations/transitions.
146+
- Expo-like over-the-air updates pipeline.
147+
- Desktop/web exploration via PyObjC/Qt bridges (research).
148+
149+
Breaking Changes Policy
150+
- Pre-1.0: Minor versions may include breaking changes; provide migration notes and deprecation warnings one release ahead when possible.
151+
152+
Tracking and Releases
153+
- Each milestone will have a GitHub project board and labeled issues.
154+
- Changelogs maintained per release; upgrade guides in docs.

mkdocs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ nav:
2525
- API Reference:
2626
- Package: api/pythonnative.md
2727
- Meta:
28+
- Roadmap: meta/roadmap.md
2829
- Contributing: meta/contributing.md
2930
plugins:
3031
- search

0 commit comments

Comments
 (0)