Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Please consider refining (reorganizing/documenting) core headers to aid in their explicit inclusion ... #121

Open
paschlie opened this issue Sep 18, 2020 · 0 comments

Comments

@paschlie
Copy link

(I don't know if this is the correct place to begin this discussion, but if wrong please move it.)

Specifically I believe the current Arduino development environment is hurting beginners by hiding the inclusion of critical header files, which actually define the API's which programming relies upon, and who's inspection should be encouraged to aid beginners more easily understand why ideally well documented functions must be called with certain argument orders and types for example. Please consider reorganizing and refining Arduino's core library/environment header / implementation specification to allow it to more easily serve as a coherent reference to aid in its use; as also further supported by the following proposed changes:

  • change default new project stationary to include "#include <arduino.h>", which need not be equivalent to "Arduino.h", although will likely include it among other base library headers, defining the base Arduinio API.

  • initially continuing to support their magical inclusion behind the scenes, and thereby not breaking anything for existing projects, but beginning the transition to a requirement for its explicit top-level inclusion.

  • add a feature to the IDE to make it easy to open and view included baseline headers, and those from optionally supported libraries (but possibly kept read-only by default, so beginners don't mistakenly modify them).

  • in turn the source code can then be parsed to determine the code's corresponding library dependency required for compilation and linking, etc.

All visible to the user, as hiding such critical information typically hurts more than helps even, if not especially, beginners understand what's going on and why, in practice.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant