-
-
Notifications
You must be signed in to change notification settings - Fork 398
"Core" vs "platform" #549
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
Comments
In some parts of the README you can spot few places where I wrote I think addressing the problem right now would be best because major version |
Hi, I think we should choose to use the term
and we can spare the term |
I actually think (based on the terminology used in the Java IDE code - I have not looked at arduino-cli), that there are a few related but distinct concepts. For example, consider the regular Arduino core, which lives at:
Since a platform typically only ships a single core, these two terms are often used interchangeably, but there is a technical difference. I can imagine that changing the terminology could be useful, since these terms were chosen long ago when we did not really know how things would be used in practice. However, if we change things, we might need to settle for terms that are completely different (e.g. do not reuse core to refer to what used to be called platform), since that would highly complicate things. OTOH, if core and platform are already used interchangeably, reusing core for platform might not be so harmful after all. Looking at the current terms:
|
@matthijskooijman I agree with you on this.
indeed! they are. we are required to have more discussion before applying any patch for this one! |
I think core is to be used. |
I think, from the comments above, the first conclusion that can be made is: To limit the scope of discussion and to give it a direction. we should only focus on the platform part. Surprisingly, according to me, platform also meant the hardware. So, that's an addition to the problem :( |
I'm not so sure. I guess the main problem is that the "official" terminology is package - platform - core. However, in practice people do not often refer to the package and core much, but only to the platform. However, when they refer to the platform, they often call it "core" or "board package" (the latter is actually encouraged by the fact that you can install them using the "boards manager"). Given that both terms ("core" and "package") are currently the official terms for other things, I suspect we also need to look at these other things (otherwise terms will become ambiguous...) |
In response to the statement by @matthijskooijman,
A good instance of the use-case may be seen in issue #252 |
Let me recap the glossary with a bit of schematization. To uniquely identify a board the official way is the FQBN, for example the Arduino UNO board is
Inside the Platform there is a
So in conclusion, we have that:
Just to give some examples of the above:
now, given the above, I think we can just use the term "Platform" without ambiguities. The cons that I can see is are that:
|
Great summary. Some more additions:
|
Let me clarify a bit: I suggested to change the cli command and to start using the correct terms in the documentation / discussions and nothing else :-) so the GUI of the various IDE will remain the same. We need to take apart users from developers I think:
|
With the user and developer point of view considered, what else can we expect out of this thread/discussion ? |
So, according to what @cmaglie says, we should rename the E.g. the (To my taste, platform is a very generic word that may sound vague in some contexts. Arduino in its entirety is known as a development platform :) Ideally we would use something like platform package or platform implementation whenever possible in documentation. For the same reason, I'd suggest board definition.) Let's try to draft definitions to see whether we're all on the same track:
Basically I would hide core as much as possible, except when describing the internals of a platform. How does this sound to you? |
I guess that in "arduino:avr:arduino", "avr" is actually the platform, while "arduino:avr" (or really the ArduinoCoreAVR repo) would be the "Platform implementation" (or "Arduino implementation by "arduino" for the platform "avr").
But "package" and "vendor" are different things? I can't say "I'll install the Arduino AVR vendor", right (but I can say "install the Arduino AVR package")?
Other grouping can be used, but the second level is not completely free-form, but actually expected to be the "architecture" (aka platform), i.e. it can be specified in a list of supported architectures in a library and when creating derived cores/platforms, this value should match the parent platform exactly.
Your definitions seem ok to me. |
1 similar comment
I guess that in "arduino:avr:arduino", "avr" is actually the platform, while "arduino:avr" (or really the ArduinoCoreAVR repo) would be the "Platform implementation" (or "Arduino implementation by "arduino" for the platform "avr").
But "package" and "vendor" are different things? I can't say "I'll install the Arduino AVR vendor", right (but I can say "install the Arduino AVR package")?
Other grouping can be used, but the second level is not completely free-form, but actually expected to be the "architecture" (aka platform), i.e. it can be specified in a list of supported architectures in a library and when creating derived cores/platforms, this value should match the parent platform exactly.
Your definitions seem ok to me. |
Please, let's only have one single term.There is no benefit to having three new terms. My preference is "boards platform". I have been finding that this works well in practice. For example:
The commonly used platform names often end in "boards", so the "boards platform" term evolved naturally from that. But I'm happy with anything other than "core". Adafruit uses "Board Support Package", but my research indicated that the original meaning of "Board Support Package" is not quite the same as an Arduino boards platform.
Almost certainly irrelevant to this discussion, but core libraries can be referenced by other platforms:
My suggestion is that we augment the term to help differentiate the new specific usage of the term "core" from the old ambiguous use of it, and never again use the term "core" alone. Something like "core library". |
I'm late, but I'd argue that the popular MCUDude and SpenceKonde "cores" (MegaCore, ATtinycore, etc) do not define "boards." (they have boards.txt entries, but they're mostly for generic pinouts of individual CHIPs rather than productized boards.) |
Various help and error messages use the words "core" and "platform" interchangeably, as they are synonyms in the Arduino context. This might create confusion, so it would better to be consistent in all messages by choosing a single term.
The text was updated successfully, but these errors were encountered: