======Google Summer of Code 2022: Zephyr projects====== [[:gsoc:google-summer-code-2022|Main GSoC Linux Foundation page: How to apply, deadlines, other workgroups, ...]] ===== Zephyr Introduction ===== What is Zephyr? The Zephyr Project is a Linux Foundation hosted Collaboration Project. It’s an open source collaborative effort uniting developers and users in building a best-in-class small, scalable, real-time operating system (RTOS) optimized for resource-constrained devices, across multiple architectures. The Zephyr Project is a neutral project where silicon vendors, OEMs, ODMs, ISVs, and OSVs can contribute technology to reduce costs and accelerate time to market for billions of connected embedded devices. The software is a perfect choice for simple connected sensors, LED wearables, modems, and small wireless gateways. Because Zephyr is modular and supports multiple architectures, developers can create a solution that meets their needs. As an open source project, the community evolves the project to support new hardware, developer tools, sensors, and device drivers. Improvements are frequently delivered to incorporate enhancements in security, device management capabilities, connectivity stacks, and file systems. ===== Zephyr Community ===== Website - www.zephyrproject.org Git - https://github.com/zephyrproject-rtos Mailing Lists - http://lists.linuxfoundation.org/mailman/listinfo/automotive-discussions Discord channel - https://discord.com/invite/Ck7jw53nU2 Code Licenses: mostly Apache 2.0, MIT for own code, otherwise as upstream Pre Read If you are New to Zephyr: https://github.com/maksimdrachov/zephyr-rtos-tutorial ===== Project Proposals ===== ==== Project #1 Arduino module based on Zephyr ==== 1 contributor full-size (350 hours). Arduino's popularity is renowned as a popular framework for providing a simplified interface to program embedded devices. Recently, Arduino adopted mbed OS as the base RTOS for some of their newer devices. With that work, they separated out [[https://github.com/arduino/ArduinoCore-API|Arduino Core]] as an independent abstraction layer from [[https://github.com/arduino/ArduinoCore-mbed|Arduino Core for mbed]]. This opens up the possibility for leveraging Arduino Core on other OSes. The project idea is to create a Zephyr module that leverages the Arduino Core so that a developer can use Zephyr as the underlying OS when they use the Arduino framework on Arduino-compatible devices. The benefits to the user include: * Access to Arduino APIs as well as advanced Zephyr capabilities * Broader set of devices than the standard Arduino ecosystem thanks to Zephyrs' device support * Ability to re-use Arduino tools like the Arduino IDE and wealth of libraries Note 1: Arduino Core is licensed under the GNU Lesser General Public License and Zephyr is licensed under Apache 2. That means this project will most likely need to be developed out of tree and in a separate repo to keep code and license separation. See [[https://github.com/zephyrproject-rtos/zephyr/issues/22247|#22247]] for a historic discussion & [[https://github.com/soburi/arduino-on-zephyr|soburi/arduino-on-zephyr]] for an earlier attempt prior to the Arduino Core architecture. The contributor's task is thus: * Implement a bare-bones Module based on Arduino Core that can compile for any target (no functionality, possibly in QEMU) * Implement a common peripheral from the Arduino API based on Zephyr such as [[https://www.arduino.cc/reference/en/language/functions/communication/serial/|Serial]] * Target one physical board, such as the Arduino Zero Difficulty: Medium Skill Required: Zephyr RTOS, C++, Arduino Mentors: Jonathan Beri - CEO of Golioth and Zephyr TSC (jberi AT golioth.io), Alvaro Viebrantz - founding engineer and Google GDE (alvaro AT golioth.io) Code License: LGPL ==== Project #2 Apache Thrift Module for Zephyr ==== 1 contributor full-size (350 hours). [[https://github.com/apache/thrift|Apache Thrift]] is an [[https://en.wikipedia.org/wiki/Interface_description_language|IDL]] specification,[[https://en.wikipedia.org/wiki/Remote_procedure_call|RPC]] framework, and code generator that abstracts away transport and protocol details to let developers focus on application logic.It works across all major operating systems, supports over 27 programming languages, 7 protocols, and 6 low-level transports. Originally [[https://thrift.apache.org/static/files/thrift-20070401.pdf|developed at Facebook in 2007]], it was subsequently shared with the Apache Software Foundation. {{thrift-layers.png?400}} {{hello.thrift.png?400}} Supporting Thrift in the Zephyr RTOS would benefit the community greatly. It would lead to new software and hardware technologies, new products, and additional means for cloud integration. Thrift can be used over virtually any transport as well and for that reason, it is a natural choice for the many different physical communication layers supported by Zephyr. The project idea is to get the proof-of-concept [[https://github.com/cfriedt/thrift-for-zephyr|Thrift for Zephyr Module]] into shape for upstreaming. To achieve that, the contributor must: * Perform additional integration for Thrift features (protocols, transports) * Author additional sample applications using [[https://docs.zephyrproject.org/latest/boards/index.html|supported boards]] or [[https://docs.zephyrproject.org/latest/guides/networking/qemu_user_setup.html|Qemu]] * Author additional tests and generate coverage reports using the [[https://docs.zephyrproject.org/latest/guides/test/ztest.html|Zephyr Test Framework]] * Ensure the module follows appropriate [[https://docs.zephyrproject.org/latest/contribute/coding_guidelines/index.html|coding guidelines]] and satisfies [[https://docs.zephyrproject.org/latest/guides/modules.html|module requirements]] * Contribute any necessary improvements back to the Apache Thrift Project. * Contribute any necessary improvements back to the Zephyr Project. Difficulty: Medium. Mentors: * Christopher Friedt - SWE / ASIC FW at Meta (cfriedt AT fb.com) * Stephanos Ioannidis - Zephyr CXX Subsystem Maintainer (root AT stephanos.io). Skills that are Required: Zephyr RTOS,C,CXX,Python Code License: Apache 2.0.