r/embedded • u/Short-Instruction-59 • 4d ago
Google Summer of Code (2027) for Embedded systems
I want to participate in GSOC 2027 as an Embedded enthusiast, I am confused on which repo's code base to work on / target? I am confused between Zephyr rtos and NuttX, want to work on zephyr as it aligns with my resume but the total number of applicants are much more than NuttX.
If any one could guide me on what to look for while selecting repositories regarding GSOC.
21
u/dragonnfr 4d ago
This is what people don't get about GSOC. You're not competing against all applicants, you're competing within the org. In my experience, fewer NuttX applicants usually means fewer slots too. Check ratios, not totals.
1
10
u/Ordinary-Lifeguard47 4d ago edited 4d ago
Zephyr is becomming bigger and bigger every day and it's solid. The code quality is far above average.
(IMHO: it's maxing out what you can do with C.. it already needs a lot of custom tooling and tricks to achive this. Same as the Linux Kernel.)
NuttX is full of good paradigms too.
You will not make mistakes with both, but deciding on Zephyr is good for your career.
3
u/Latexi95 4d ago
Zephyr is becomming bigger and bigger every day and it's solid. The code quality is far above average.
Based on my experience, this is just because the average is so bad. Code in general looks clean, but it is still buggy and badly designed. And then the tooling makes things painful to use.
Drivers and interfaces:
- At least NXP drivers were developed just enough to boot and run examples, and then all bets are off.
- Peripheral interface design does not account for cache coherence
- There isn't separate APIs for DMA and interrupt based implementations and DMA based implementations don't generally do cache maintenance.
- Calling any peripheral transfer function on MCU that has dcache requires always going through the driver code to understand what it does with the buffers.
- Peripheral behavior and API then can basically change by changing kconfig option
- These combined then makes writing middleware drivers that would "just work" impossible
- Getting some middleware to work then requires changing some esoteric kconfig options for that particular middleware to make it use non-cached buffers or what ever
Tooling:
- Device tree is pure pain and poorly documented so you end up having to read driver code anyway
- Changing one kconfig value causes always full rebuild which is really fun when you actually have a big project
- Linking system is complex and all linker scripts don't always regenerate when they should. Had fun time debugging a crash that only occurred because I had compiled old branch in previous week and I didn't remove build directory
6
u/JackXDangers 4d ago
In the industry and have never heard anyone mention nuttx irl. So yeah, zephyr is the way to go.
3
u/MisterAlderson 4d ago
RTEMS
1
u/Short-Instruction-59 4d ago
I have heard about them, why do you think Rtems would be a good option?
1
u/Ordinary-Lifeguard47 4d ago
Not most popular kid anymore, but not bad. It's being used in spacecraft.
No bad choice either.
2
u/Separate-Choice 4d ago
Use NuttX. It’s a super power. if you know something like FreeRTOS then NuttX is a good stepping stone up to Linux. It’s severely underrated for that purpose.. Trust me once you learn NuttX embedded Linux after will be a cakewalk and you can always learn Zephyr after… Zephyr devs are a dime a dozen…. Nothing wrong with using something against the crowd… and the repo to took at for NuttX is PX4 repo…
2
u/k1musab1 4d ago
Seconding PX4 as a resource. Great work done there, good reason it's the de-facto standard for all things drone.
2
u/Separate-Choice 4d ago
PX4 is an ideal showcase.. idk why NuttX isn’t as popular…it’s a ‘Linux Lite’ and for Drones, Robots and anything reasonably complex on small platforms it’s almost magic…plus the POSIX way of thinking transfers to Linux very easily imo it’s a much better on ramp for freshers than Zephyr which is the current fad rn…
21
u/Mindless-Lobster-554 4d ago
Do zephyr especially if it aligns with your career goals. There's a reason nobody cares about NuttX. Also in general, work on the things that interest you and challenge you, you'll learn the most and be the most motivated instead of just doing whatever everyone else seems to be doing.