|
| 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. |
0 commit comments