I’m an EE by trade focusing on embedded devices, but most of my work is in relatively low-power STM32 applications. When I stopped following developments in hobby kits, it was mostly Arduino Unos slowly driving I2C OLED displays.
Now suddenly, there are embedded Raspberry Pis and ESP32s doing realtime facial recognition and video feeds.
Is there a good place to look to catch up on what’s now possible with these embedded devices?
Also, while I enjoy the ease of the hobby kits, I’m also interested in more mass-production-focused solutions.
You can’t setup your environment offline, there’s discussion about that on their GitHub and forum here. They’ve added some support so sometimes you can run offline but not the full setup, new projects etc.
Well, of course you can’t. Any kind of setup requires you to have the data. Unless you want to get that data from another medium (USB Flashdrive, CD/DVD, SD Card, anything else), then online is the easiest way. After the setup phase, it depends on how the software will behave. In PIO case, it will not download anything else unless needed since if they do otherwise, you will be downloading a lot of junk that you may not need (if you only want to develop stm32, why download avr tooling).
I’ve read the discussion linked and it seems that it was a bug which has been fixed. If you mean the reliance on github, as I said before, it is not platformio fault. The person just happens to distribute their library on github rather than advertising their library on some other media and saying “Hey, I provide this library for this specific thing. If you want it, buy this CD/contact me and we can arrange on how you would get it”. Being online has nothing to do with it. You can just as easily have your friend/coworker write the library and transfer it using usb stick then compiling it on PIO. The person can also simply download the .zip and configure PIO to use the downloaded file. In fact, that is exactly how PIO does things too. Download the code once and then use it afterward repeatedly. Now, if we are talking on over reliance on library, that is another can of worm that I will not touch here unless you want to discuss it too.
Also, down below another person is having trouble when updating. And as mentioned, it is not that PIO Core is auto-updating (it shouldn’t as the reply mentioned, it should only show a prompt to update), but the extension is auto updating (VSCode default behaviour).
The thing is that they make it hard to archive that data or get it in any other format besides constant internet access. PIO provides zero instructions on offline usage and is plagued by “convenient” small bugs and dependencies that force you to be online all the time. Not even their repository URLs are stable, there’s discussion about this on Github and the alleged links that would allow someone to actually download what is required is no longer there. I’m not talking about the library xyz one uses on their program but the tons and tons of crap that are required to make it work in the first place.
Fair enough about the providing instruction part. And yes, it can be hard to install manually since PIO IDE extensions have installation check after the plugin is installed, but the PIO core itself is just a python script. You can pip install it or download the .tar.gz from pypi.
Edit: Sorry, somehow my long ass comment got trimmed to the single paragraph above. Anyway, the thing about dependency required comes from the fact that PIO will download the required tooling when it needs them. Say, you want to develop for STM32 ARM MCU, then PIO need to download the compiler, uploader, and debugger. After that, if you define that you want to use a framework, PIO will need to download that too. Can you install it manually? Absolutely. But as you said, there is no instruction on how to do it since there are literally hundreds of possible configurations. Doing it manually defeats the purpose of PIO in the first place. And what kind of always online feature are you talking about? I never encountered such a thing in my 3 years experience on PIO.
Yes but why? From what I see they could’ve just a few simple tweaks to the extensions to make things suitable for offline / airgrapped scenarios, but instead they decided to design it all around internet access.
I get your view, but PIO isn’t the first piece of software that has to deal with this issue. Look at Linux apt repositories, whenever we want to install some program it also pulls hundreds of dependencies, however, apt is designed to be mirrored and even packaged as physical media for offline usage. Debian’s amd64 repository is around 800GB and the source one is 150GB and people who need it offline are more than welcome to mirror the thing, why can’t we have the same for PIO?
Fair enough. I guess it can be implemented someday if enough people ask for it since the back end is there (PIO core). The only thing left I guess is making the repo have offline capabilities so people can mirror it too. But I think it should be left as a separate project.