9 ms·
MicroPythonOS graphical operating system delivers Android-like user experience
- sillywalk 8mo agoInteresting. https://micropythonos.com/ https://micropythonos.com/ https://github.com/MicroPythonOS/MicroPythonOS https://github.com/MicroPythonOS/MicroPythonOS https://fosdem.org/2026/schedule/event/9GGXNF-micropythonos-best-of-android-now-on-mcus/ https://fosdem.org/2026/schedule/event/9GGXNF-micropythonos-...
- larodi 8mo agoIndeed much better resource than this ads ridden page…
- FergusArgyll 8mo agohttps://chromewebstore.google.com/detail/ublock-origin-lite/ddkjiahejlhfcafbddmgiahcphecmpfh https://chromewebstore.google.com/detail/ublock-origin-lite/...
- larodi 8mo agoHave u tried it with mobile safari on arbitrary iOS?
- vee-kay 8mo agoSay goodbye to most ads with Brave or Vivaldi, with adblockers enabled (EasyList, EasyPrivacy, ADB+, Fanboy's Annoyances List). I prefer viewing the text-only version of this HN site, it loads fast and clean with no ads: https://news.ycombinator.com/ https://news.ycombinator.com/
- choffee 8mo agoThat really reads like an ad.
- vee-kay 8mo agoIt is true though. Except Chrome, other Chromium browsers have effective filters/blockers for ads and annoyances. I find Brave's GUI to be very intuitive and fast, and one can disable its crypto features and other nonsense. But in past year, I've noticed Brave is broken on popular sites like Reddit, so I have recently switched ditches it and switched over to Vivaldi. Vivaldi is fast and nice, with a clean interface, though it is slower in its Windows variant as it has lots of features compared to other Chromium browsers. I have Firefox as secondary browser, I especially like its extensions support: uBlock Origin and Privacy Badger are great at adblocking and annoyances filtering. But Firefox is a bit cumbersome in its UI, and I felt it is slower especially in its Windows variant Firefox had some memory leakage problem, so I had avoided it for years, but it's become better in its latest versions, I don't seem to encounter the memory leakage issue anymore. I steer clear of Chrome (disabled it on all my phones and tablets) due to Google's penchant for ads-based revenue, though its corporate avatar as Microsoft Edge is quite efficient and effective as a daily workhorse.
- OJFord 8mo agoYou realise the vast majority of people seeing your comment are on news.ycombinator.com and have no idea what you're talking about?
- cbdevidal 8mo agoLove me some MicroPython. Building a product line of small farm security devices that use uPy and MQTT.
- pluralmonad 8mo agoWould you mind elaborating on what you mean by small farm security device?
- cbdevidal 8mo agoFirst product is called SecureCoop, that either opens the coop door or monitors another coop opener, then sends phone notifications if there are issues. Door didn't open on time, door is stuck, etc. Next product will be battery security cameras trained on predator models (raccoon, fox, snake). Then the next one will be an electric fence monitor. All solar powered. Basically going for back yard security for small hobby farms. Biggest hurdle has been that I only knew 5% of what I needed to know to do this. Haha. Many mistakes. But now am close to visiting the FCC lab for SDoC verification, and then I can legally sell. Thanks for asking!
- westurner 8mo agoWill MicroPythonOS also work with CircuitPython? CircuitPython docs > Differences from MicroPython: https://docs.circuitpython.org/en/latest/README.html#differences-from-micropython https://docs.circuitpython.org/en/latest/README.html#differe... Also, there's pipkin: https://github.com/aivarannamaa/pipkin#pipkin https://github.com/aivarannamaa/pipkin#pipkin : > Tool for managing distribution packages for MicroPython and CircuitPython on target devices or in a local directory. > Supports mip- and upip-compatible packages, and regular pip-compatible packages Hopefully - for 3 types of packages - pipkin supports GPG signatures, PyPI's TUF, and/or sigstore attestations like pip? Just checked; pip doesn't support checking PEP740 attestations yet either? pipkin: https://github.com/aivarannamaa/pipkin https://github.com/aivarannamaa/pipkin trailofbits/pip-plugin-pep740: https://github.com/trailofbits/pip-plugin-pep740 https://github.com/trailofbits/pip-plugin-pep740
- delijati 8mo agohow does it compare to https://github.com/wasp-os/wasp-os https://github.com/wasp-os/wasp-os?
- shawnz 8mo agoWow, these preassembled ESP32 plus touchscreen boards are extremely cheap, and there are tons of them in all kinds of different form factors on Amazon. I didn't realize this kind of thing was so plentiful, this seems like a great way to bootstrap many kinds of electronics/IoT projects
- brcmthrowaway 8mo agoAny commercial products using ESP?
- buescher 8mo agoYou can find the fcc notices in manuals if you search on espressif’s module grantee code which is 2AC7Z. Espressif is extremely widely used.
- bdavbdav 8mo agoI think there are plenty using espressif chips. One of my robot vacuums (possibly the Neato?) certainly appeared to be.
- saidinesh5 8mo agoJust look for ESP32 CYD - CYD stands for cheap yellow display. There are a lot of variants. https://github.com/witnessmenow/ESP32-Cheap-Yellow-Display?tab=readme-ov-file https://github.com/witnessmenow/ESP32-Cheap-Yellow-Display?t... . I bought mine for about $12 and it's been quite fun tinkering with it.
- deleted 8mo ago[deleted]
- shawnz 8mo agoAFAIK my humidifier uses an ESP32 chip.
- slmkbh 8mo agoA lot of Shelly devices use ESP chips: https://www.shelly.com/ https://www.shelly.com/ - And they are hackable!
- MomsAVoxell 8mo agoI would love to have this, but Lua not Python.
- moffkalast 8mo agoMathematicians don't build GUIs, and nobody else can stand starting their arrays with 1.
- dlcarrier 8mo agoLua also let's you start arrays at 3.
- zimpenfish 8mo agoAs does Perl with `$[`[0][1] [0] "This variable stores the index of the first element in an array, and of the first character in a substring." [1] With the caveat: 'As of Perl v5.30.0, or under "use v5.16", or "no feature "array_base"", $[ no longer has any effect"'
- ErroneousBosh 8mo agoYou can start your arrays in Lua at 0. Conventionally you don't, but you can.
- pjmlp 8mo agoPlenty of languages use either 1 as base or flexible array indexes.
- moffkalast 8mo agoAnd we can make fun of them equally, there's enough mocking to go around.
- shakna 8mo agoI wonder how hard to port this to eLua would be? The bigger problem is probably packing. Pip can work fine with MicroPython. LuaRocks can be a pain, even on desktop.
- deleted 8mo ago[deleted]
- te0006 8mo agoDoes it run on the CYD? https://github.com/witnessmenow/ESP32-Cheap-Yellow-Display https://github.com/witnessmenow/ESP32-Cheap-Yellow-Display
- bvan 8mo agoLooks better than any Python GUI framework I’ve seen..
- ErroneousBosh 8mo agoCan we port it to Intel, I wonder...?
- sintezcs 8mo agoIt uses LVGL https://github.com/lvgl/lvgl https://github.com/lvgl/lvgl
- sgt 8mo agoOh that explains why it's fast!
- nubinetwork 8mo agoLVGL... fast? It's used on meshtastic devices, and I've always felt it was rather clunky. /shrug
- sgt 8mo agoIs it possible to make a fast UI on say, an ESP32?
- nubinetwork 8mo agoWish I knew... I'm half way towards looking for companies who make white label android devices for a project of mine... I originally wanted to go stm32, but as soon as you add a touchscreen and want a responsive gui, my only options seemed like "smart displays" with pre-rendered ui graphics, or a full blown arm device. /shrug
- sgt 8mo agoNow I am curious what you're working on :-)
- hkt 8mo agoI'd use it. I'd be curious to see how close to daily driving it is for stuff like calls, SMS, and email. Something not driven by a giant data mining company would be splendid.
- amelius 8mo agoDoes it support the threading module?
- skeledrew 8mo agoInteresting. Would want to see this going on actual Android. Especially since I have a few Python GUI projects going which I intend to use on Android (but currently using flet). https://flet.dev https://flet.dev
- bri3d 8mo agoIt’s LVGL based, if the GUI and widgets are what you wanted you could use that on Android, although if you have access to native Android this actually doesn’t seem like the best approach to me.
- skeledrew 8mo agoThe primary goal I've been seeking for a while now (and which so far only flet has reasonably fulfilled) is the ability to dynamically create GUIs. Like I created a REPL app which works similar to the regular Python REPL, but also if the code entered at the prompt returns a control/component, it shows that control with full functionality. No need to compile anything, esp on another device. And it's a standalone app, not a frontend to a server or even a web view.
- iberator 8mo agoMicro python is the last hope for Python. Python simplicity got destroyed by a bunch of new wave of programmers who packed a lot of new useless features into it in the past 10 yrars. Now it's NOT easy and small language as it used to be... Feature creep is an awful side effect. I would love to have language having just few add-ons per decade so I can grasp it all
- InitEnabler 8mo agoWhich useless features?
- iberator 8mo agoAll of them. Starting with syntax changes or type hints.... (Python should be always and only be duck typed forever as designed by God itself (it's creator).
- wiseowise 8mo ago> Python should be always and only be duck typed forever as designed by God itself (it's creator). Isn't Guido the one who came up with type hints spec and made the reference implementation (Mypy)?
- ReflectedImage 8mo agoThe issue is that duck typing with a minimal set of types was the great idea of ABC, which is the language Guido cloned to make Python
- dragonwriter 8mo agoNo, mypy existed before the type hints spec, and was created by Jukka Lehtosalo; Guido did, once he encountered it, work to make sure mypy could work with Python rather than being a separate, python-like language, and the type hints spec was a big part of that.
- AlexeyBelov 8mo ago
- 12_throw_away 8mo agoSo, am I right in assuming that ESP32, being simple and slow, isn't going to have cache lines or anything, and would just need 1-2 cycles to access its RAM? In which case a pointer-chasing dynamic language like python wouldn't have all of the typical performance penalties from constant cache misses? EDIT: upon further research, I think the above assumptions are more or less all wrong, starting with the "simple" part. To start with, they're Harvard-architecture-ish with separate memory pathways - and caches - for data and instructions, so off the bat they have more heterogeneity than your modern general purpose CPUs. Also there seems to be a very wide variety of memory mappings, buses, and caching systems within ESP32 "family". [1] [1] https://developer.espressif.com/blog/2024/08/esp32-memory-map-101/ https://developer.espressif.com/blog/2024/08/esp32-memory-ma...
- pjmlp 8mo agoESP32 is still much better than this, https://en.wikipedia.org/wiki/Amstrad_PC1512 https://en.wikipedia.org/wiki/Amstrad_PC1512 Which was my introduction to PCs, playing Defender of the Crown at the school computer club.
- ConanRus 8mo ago[dead]
- sgt 8mo agoWould it be possible to slap this on top of FreeRTOS?
- mkesper 8mo agoOn ESP32, it is: MicroPython is implemented on top of the ESP-IDF, Espressif’s development framework for the ESP32. This is a FreeRTOS based system. https://docs.micropython.org/en/latest/esp32/general.html#technical-specifications-and-soc-datasheets https://docs.micropython.org/en/latest/esp32/general.html#te...
- wiradikusuma 8mo agoPython code and resource-constraint device don't seem like a good combo in terms of performance. Is it just for prototyping?
- pjmlp 8mo agoOnly in the same sense as interpreted BASIC in 8 bit home computers, with their 64 KB RAM, single digit MHz, tape loading. Good for prototyping and introduction to programming, then you had to switch to Assembly for anything meaningful. Here, you might switch to Assembly like in those days, or maybe C, C++, Rust, Zig, whatever.
- whynotmaybe 8mo agoSome I know use it in production for iot in remote factories where internet isn't reliable. If anything needs to be fixed, anyone with a computer can connect on the USB port and push new pythons files, without the need of an up to date dev environment. Usually performance isn't that important as those devices handle a few events per second.
- sgt 8mo agoReally cool. How can this be fast? I'd have thought that Python (even MicroPython) would just be unsuitable for certain things like the graphics and animations, at the very least.
- sgt 8mo agoLater realized it's because it uses lvgl under the hood.
- pjmlp 8mo agoWhile cool, it certainly won't be delivering Android-like performance, due to the lack of JIT and AOT compiler, coupled with PGO metadata, shared via the PlayStore across devices.
- otabdeveloper4 8mo agoBut I don't want an "Android-like user experience", I want something that works and doesn't make me want to pull my hair out and fly to Silicon Valley and punch someone in the face.
- zelphirkalt 8mo agoDoes this support installing normal Python versions on top, and then developing apps in normal Python? What is the language one writes apps in? The docs say: "Developers: Learn how to install, build, and extend MicroPythonOS with new apps and features." -- But how? What are app devs using?
- unwind 8mo agoReasonably, that language is MicroPython [1] which is the special pared-down version of Python for memory-constrained embedded targets. [1]: https://micropython.org/ https://micropython.org/
- zelphirkalt 8mo agoI couldn't quickly find a comparison table or similar, to see what parts of Python are not supported by MicroPython. So I asked an LLM and it listed quite a substantial amount of modules of the standard library, that are a shame not to have. No logging module? No multiprocessing? No json, no xml? And the list goes on, including many very useful modules. One can probably somehow get by, installing third party libraries, but then what is the point of being MicroPython, if you need to install tons of libraries to do basic things like reading a JSON file? And as I am currently working on a tkinter application, tkinter being on the list also makes me think: "What a pity, cannot port that to MicroPython." This is just my first superficial look at it and it is also based on LLM info, which doesn't have to be correct, but if it is correct, then it feels a little disappointing. Perhaps for more serious app development, it would be good to have real Python and interface with MicroPython for the hardware controlling stuff.
- matt_trentini 8mo agoAlways double-check an LLM, particularly when it's just a quick(er) search away: https://docs.micropython.org/en/latest/genrst/index.html https://docs.micropython.org/en/latest/genrst/index.html Specifically: JSON is built-in, logging is available. There's no multiprocessing (it is designed for a micro, after-all - and note that thread is available on some ports), no built-in XML lib. Be sure to check micropython-lib, the MicroPython Awesome List and mim for others. https://github.com/micropython/micropython-lib https://github.com/micropython/micropython-lib https://awesome-micropython.com/ https://awesome-micropython.com/ https://checkmim.com/ https://checkmim.com/
- jonjacky 8mo agoPreviously on HN: https://news.ycombinator.com/item?id=45525804 https://news.ycombinator.com/item?id=45525804
- spwa4 8mo agoI don't understand, unless I'm misreading this OS has no memory protection. In other words: it can't run applications! And this is not fixable! You can never risk executing untrusted or semi-untrusted code with permissions on something like this. I've always thought that it would be quite simple to pull "an android" but based on wasm (even perhaps using wasm-in-kernel execution). Quite simple, that is, compared to what Android achieved with Java. But this, this just can't work.
- hulitu 8mo ago> Android-like user experience so crap. No inovation those days.
- functionmouse 8mo agoWhat would you have wanted to see?
- hulitu 8mo agoAt the first look: clear delimitation of UI elements, usable scrollbars.
- Melonai 8mo agoI mean I kind of get your frustration, but I don't think innovating the user interface is not really the goal of this project, the opposite actually, it's moreso trying to provide a well-known user interface to devices where that was previously hard, so the goal is to be similar. I would like to see some fresh ideas in UI though, everything is the same nowadays... :(
- squarefoot 8mo agoIt's FOSS, so you can use it primarily for output with real switches and knobs for input. But then just using plain LVGL would probably be more practical.
- b00ty4breakfast 8mo agoMIT lisenced; feel free to fork it if your feeling especially filial
- rpdillon 8mo agoI really wish people would stop trying to innovate with user interfaces. In a comment below you criticize this UI because it doesn't have delimited interface elements. I agree that non-delimited user interface is really bad, but I attribute that mostly to Microsoft's flat design innovation, which I didn't like at the time, and I still wish I hadn't had so much influence. As for invisible scroll bars, again we agree. But I think that was Apple. I'm sure somebody will correct me if it wasn't.