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

README.md: update features #18777

Merged
merged 1 commit into from
Oct 27, 2022
Merged

Conversation

benpicco
Copy link
Contributor

@benpicco benpicco commented Oct 19, 2022

Contribution description

Give the features section an update.
The native port for macOS doesn't work on any recent version of macOS, FreeBSD port isn't maintained either - better not advertise it.

Claiming to be a micro-kernel is very misleading (and gives a bad look IMO):

  • we have a unified address space and many APIs assume this to be the case
  • there is no privilege separation, no system calls - just normal function calls
  • having threads doesn't make us a microkernel

Testing procedure

Issues/PRs references

@benpicco benpicco requested a review from jia200x as a code owner October 19, 2022 21:31
@benpicco benpicco requested review from kaspar030 and maribu October 19, 2022 21:31
@github-actions github-actions bot added the Area: doc Area: Documentation label Oct 19, 2022
@benpicco benpicco requested a review from miri64 October 19, 2022 21:31
@benpicco benpicco added the CI: skip compile test If set, CI server will run only non-compile jobs, but no compile jobs or their dependent jobs label Oct 19, 2022
@aabadie
Copy link
Contributor

aabadie commented Oct 20, 2022

While you are at it, you could also remove sigfox from the features and add lines for MQTT, BLE, USB and graphical interfaces (lvgl).

Comment on lines -58 to -59
RIOT is based on a microkernel architecture, and provides features including,
but not limited to:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This may be a bit controversial. But I 100% agree that RIOT-OS is not and never has been using a micro kernel architecture.

I recall that Andrew Tanenbaum gave a relatively lax interpretation of what a microkernel architecture is. The absence of any MMU / MPU like feature, according to him, doesn't rule out that an OS does check the box of a microkernel architecture. If I recall correctly, he said that MINIX was developed initially on pre-MMU systems with the anticipation of an MMU, so that making use of the MMU to actually provide the benefits of a microkernel architecture was relatively easy.

However, we with RIOT are now in a situation that MPUs are there. Still, the effort to make use of it in a microkernel point of view (or even in a userspace vs kernelspace point of view) is still significant. To me, this is a good indicator that RIOT is not using a microkernel architecture, even with the relatively lax point of view that actual use of MMU (or MPU) is not needed for the claim.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess we all agree this qualification is not 100% fitting, but after all these years, and after pitching it here & there (including to top experts such as Tanenbaum as recalled by @maribu) it seems it remains the best "single term" description for the arch. For a longer explanation (which does not really belong right here) we could maybe open a separate wikipage / doc entry on this, what do you think?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What makes you think the arch is a microkernel? Having a hand-wavy explanation to claim something that is not true does not build trust. How would you react to a car salesman selling you an electric¹ car?

[1] lead acid battery used to start the internal combustion engine

@maribu maribu added the Process: needs >1 ACK Integration Process: This PR requires more than one ACK label Oct 20, 2022
README.md Outdated Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
README.md Show resolved Hide resolved
README.md Show resolved Hide resolved
README.md Show resolved Hide resolved
@benpicco benpicco added the CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR label Oct 25, 2022
@benpicco benpicco requested a review from MrKevinWeiss October 25, 2022 18:21
@riot-ci
Copy link

riot-ci commented Oct 25, 2022

Murdock results

✔️ PASSED

8d74ac9 README.md: update features

Success Failures Total Runtime
1 0 1 01m:15s

Artifacts

This only reflects a subset of all builds from https://ci-prod.riot-os.org. Please refer to https://ci.riot-os.org for a complete build for now.

Copy link
Contributor

@MrKevinWeiss MrKevinWeiss left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ACK

@miri64
Copy link
Member

miri64 commented Oct 26, 2022

Oops, merging #18735 actually created a merge conflict in the README :(

@MrKevinWeiss MrKevinWeiss merged commit 945e40b into RIOT-OS:master Oct 27, 2022
@benpicco benpicco deleted the README.md-features branch October 27, 2022 07:44
@kaspar030 kaspar030 added this to the Release 2023.01 milestone Jan 19, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area: doc Area: Documentation CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR CI: skip compile test If set, CI server will run only non-compile jobs, but no compile jobs or their dependent jobs Process: needs >1 ACK Integration Process: This PR requires more than one ACK
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants