Description
MicroPython is growing larger and there needs to be a way to sustainably increase the size of the code base. The main increases in size come from new ports, especially when vendor HAL code is included. For example #1855 (port to rtl8195a) brings in 10k new lines of code, and #1890 (port to STM32Lxxx) brings in 12k lines. There are also plans to port uPy to MCUs from other vendors that we don't yet support.
We could just include everything in this repository, with a new top-level dir per port. But I think that is too large a burden. People interested in vendor X don't want/need the entire HAL of vendor Y.
I'd like to keep this main repository as lean as possible, so that it's not too large to clone (currently around 60mb), so that the commits are focused on development of the core, and so that other projects/ports/etc can include this repository as a cohesive and self-contained component.
Ideally this repo would contain just the core components, and all MCU ports (stmhal, cc3200, esp8266, pic16bit) would move to individual repositories, eg micropython-stmhal (or just micropython-st), and this core repo would become a git submodule of each port. But maybe that's too big a change to aim for right now.
But for new ports like rtl8195a (#1855), I think we should put them straight away into a dedicated repository, eg micropython-rtl. Then development can happen there at its own pace.
For the case of STM32Lxxx support, that's a bit different. Two options are:
- We could start a micropython-st repo now and put this code there, along with any new ST ports (eg F0xx, F2xx). stmhal/ may or may not eventaully migrate there.
- We include the STM32Lxxx HAL files as a git submodule within this repo.
This is an RFC issue so please make your opinions known, thanks!