I was re-directed from the GiPo-issues to the Arduino-Subforum.
So I'm asking here:
Do the developping-experts have a priority-list on what to analyse next and in which order?
I'm asking this because from my point of view I see a bug that should have an emergency-high priority over all other things. But I have no insight into the developping-process. Maybe there are even bigger problems I don't know. (though if there are I'm asking myself why do you call it beta-release? I would call it early-alpha-release please help us finding bugs)
I mean the bug that causes the IDE 2.0 to occupy a lot of CPU-load and grabbing a lot of RAM if language-server is active.
See this issue on GitHub:
The language-server ist activated by default after installation.
This makes the IDE 2.0 unuseable. !
A quick work-around would be to DE-activate the language-server by default.
If the developping-experts think de-activating the language-server is no option
what the heck is the reason to let this huge bug lay around un-analysed?
If you have a good explanation I will be satisfied.
You will notice that not all the items have been assigned a priority, even though most have been assigned other labels. This is because, while the general purpose categorization labels are assigned immediately by the creator of the issue/PR and by the repository maintainers like me, the priority labels are only assigned later by managers during the planning process.
Yes. The Arduino Tooling Team uses a "Kanban" process to plan and track tasks. The managers add items from the issue tracker to the Kanban board, assign them to a team member, and then we can begin work on the task.
To some extent. As in any complex software project, there are very often interdependencies between projects (e.g., Arduino CLI, Eclipse Theia, Arduino Language Server), tasks within those projects, and steps within a task. This means that multiple tasks may be worked on simultaneously and that some tasks may be partially completed and then blocked pending the completion of a dependency, which might be the responsibility of a different team or even organization.
There are two factors that go into determining priority:
"criticality" - What is the level of impact on the user?
"effort" - How much resources must be dedicated to resolution?
In this reality where resources are not infinite, this means that something with a high criticality level, but also very high effort level might need to be placed at a lower priority relative to something of lesser criticality.
As you are already aware from our previous discussions, it is "unusable" for a subset of users. It is perfectly usable for me and many others (and no I don't have a supercomputer, I am not connected directly to a fiber optic Internet backbone, and I do not disable the language server).
I think it is a reasonable idea. Although I am a huge fan of the "Go to definition" feature provided by the language server (the other features are cool, but I can live without), I do have concerns about whether the language server features make the IDE less approachable to beginners overall.
There is a related proposal here:
That doesn't actually propose which would be the default setting, but a standard preference it would be a prerequisite to deciding to disable it by default.
Please take note that the Arduino IDE is currently in "release candidate" status. Whether or not you think that is semantically accurate, it still means that these releases are made for the sole purpose of allowing interested parties to test and provide feedback. If a feature is disabled by default, it will not be tested by many people. For example, how many of you have tried out the new error line navigation feature, which is disabled by default?
At this stage in the project, I would prefer that the developers investigate whether the performance and reliability issues can be resolved rather than simply sweeping the problems under the carpet. It might not be obvious to those who haven't been using it throughout the entire three year development history, or for whom it never worked and still doesn't, but there has actually been a significant amount of progress on the Arduino Language Server over the years.
I guess you are not aware that the developers are actively investigating and working on this issue:
thank you very much for your detailed answer. I'm just a hobby-coder with a somehow advanced but still rather basic knowledge about softwaredevelopment. As this perfomance-issue seems to be "digital" in the sense of
zero: it does not occure at all
or
one: it slows down the IDE 2.0 really heavily
to collect information what is the difference that makes the difference?
If you setup a new computer then install IDE 2.0 and test if the performance-issue occurs or not an then as pseudo-code
while (perfomance > threshold) {
doAsmallChange();
}
print (difference);
How about asking all those users where the perfomance-issue does not occur would you mind to run a tool that collects anonymised system-configuration-informations and send it to the development team?
Installation via arduino-ide_2.0.0-rc8_Windows_64bit.exe
Device name DELL5510
Processor Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz 2.70 GHz
Installed RAM 16.0 GB (15.8 GB usable)
System type 64-bit operating system, x64-based processor
Pen and touch No pen or touch input is available for this display
RED indicates compile on old 8-bit Mega2560:
Using library AXE133Y in folder: C:\Users\Ray\Documents\Arduino\libraries\AXE133Y (legacy)
Using library Streaming at version 6.0.10 in folder: C:\Users\Ray\Documents\Arduino\libraries\Streaming
"C:\Users\Ray\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-size" -A "C:\Users\Ray\AppData\Local\Temp\arduino-sketch-3DF0BAFBA3D9256047438B34445D096B/Europa10_Mega2560.ino.elf"
Sketch uses 13634 bytes (5%) of program storage space. Maximum is 253952 bytes.
Global variables use 510 bytes (6%) of dynamic memory, leaving 7682 bytes for local variables. Maximum is 8192 bytes.
I have been using the IDE daily for the last two years, through many many small changes and never has the performance dropped below that threshold. This is not an 8 bit microcontroller we are talking about, where the system environment is identical for all users and the effects of the external environment are small and easily controlled.
The environment the Arduino IDE runs in on your PC is incredibly complex, different for each user, and constantly changing.
It seems there is something special about the environment provided by your PC that I am not able to reproduce despite quite a lot of intentional efforts as well as a huge amount of general usage and testing while watching carefully for defects. Even though your situation is unfortunate from the standpoint of just wanting to use the application, you are actually in a position every beta tester strives for: being able to reproduce a defect. This means it is possible for you to follow this algorithm:
while (perfomance < threshold) {
doAsmallChange();
}
print (difference);
This free open source project belongs to all of us in the Arduino community. Those who are able to reproduce this issue have the opportunity to make a valuable contribution to the project.