Temperatures are still high in most parts of the Northern hemisphere. It’s a good time to think about the cooler season and to look forward to Christmas. So here’s my wish list for Santa Claus with regards to PlatformIO.
Today’s software development profits from easy reuse of existing software (in particular libraries), collaborative work on projects with colleagues and automated building and testing. That’s why package/library managers are so essential. They fully automate downloading a library and all its dependencies and keep them separate for each project so a new project doesn’t break an old one. It also simplifies sharing a project or working on it concurrently, typically via git.
PlatformIO has brought this modern and efficient approach to embedded development. However, it also offers the old style of system-wide installation of libraries and even prefers it in the UI. Additionally, it creates a lib directory in each project folder by default. The mix of approaches is confusing for many users. And the system-wide installation brings back the problems of a darker age.
Unfortunately, system-wide installation is also used for managing a list of PlatformIO projects, resulting in a poor Visual Studio Code integration for features like Projects & Configuration.
Wish 1: Focus on automatic library management and implement it consistently throughout the UI
Automatic library management (use of lib_deps
) should be preferred and well supported by the UI. Other approaches (system-wide installation, project lib
directory) should be removed from the UI, hidden by default and deprecated in the case of system-wide installation.
Wish 2: Improve the Visual Studio Code integration regarding project management and configuration
The PlatformIO UI should only work with the projects currently open in Visual Studio Code and provide well designed UIs for configuring the current project, adding libraries to the projects, inspecting the projects etc. It should stop managing a list of projects that have been used in the past as it fundamentally breaks how Visual Studio Code works and how people expect it to work.
The two wishes could be implemented with these changes:
-
Improve the UI for searching and adding libraries. It should always work in the context of a currently open project. The search results should have a single main button that adds a
lib_deps
entry toplatformio.ini
. All other installation options should be removed or hidden. -
Searching for libraries should by default filter for the framework and platform of the currently open project.
-
All UIs and UI elements dedicated to system-wide installation (e.g. “Installed” and “Updates” tab on Libraries page, Install and Install to… on library page) should be removed.
-
The lib directory should no longer be created by default.
-
The long standing bug that the
build
folder is not cleaned whenplatformio.ini
is changed and therefore accumulates old libraries should finally be fixed. -
Inspect and Configure should work on the currently open project and be integrated differently.
-
Open and the project list page for Projects should be removed as they are no no longer needed (Open is already provided by Visual Studio Code’s File menu) and are confusing to users.
If Santa is very generous, there’s a third wish that many beginners would enjoy:
Wish 3: Generate a new project from a code example
Provide an easy way to create a new project from a code example, both for library examples and platform examples. It should be supported by a UI that asks for additional information such a project name, board, platform (in case of library example) etc. Preferably, there would be a dedicated Start from Examples page in addition to the a button on each library and each platform page.