Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| summerofcodeideas [2023/01/26 20:57] – WarnerLosh | summerofcodeideas [2023/07/07 16:23] (current) – fix typo in MFSBD project JosephMingrone | ||
|---|---|---|---|
| Line 15: | Line 15: | ||
| We also have a generic %%FreeBSD%% ideas page at IdeasPage and WantedPorts. | We also have a generic %%FreeBSD%% ideas page at IdeasPage and WantedPorts. | ||
| - | For a feel for projects from previous years, visit: [[SummerOfCode2021|SummerOfCode2021]], | + | For a feel for projects from previous years, visit: |
| ===== How to use this idea list ===== | ===== How to use this idea list ===== | ||
| Line 39: | Line 39: | ||
| * **Scripting**: | * **Scripting**: | ||
| - | |||
| - | ====== Ideas list ====== | ||
| ---- | ---- | ||
| Line 139: | Line 137: | ||
| ---- | ---- | ||
| - | ==== Complete FreeBSD' | + | ==== Implement |
| - | | Mentor | | | + | | Mentor | Alexander Chernikov < |
| | Skills | C (intermediate), | | Skills | C (intermediate), | ||
| - | | Mid-term deliverable | [[http:// | + | | Mid-term deliverable | MPLS forwarding works on static labels |
| | Duration | 350 hours | | | Duration | 350 hours | | ||
| | Difficulty | Medium | | | Difficulty | Medium | | ||
| - | | Expected Outcome | Full integration with net/frr LDP daemon and/or net/ | + | | Expected Outcome | MPLS forwarding, encap/decap works, MPLS labels can be programmed via Netlink |
| === Description === | === Description === | ||
| - | Multiprotocol Label Switching (MPLS) is data forwarding technology that increases the speed and controls the flow of network | + | Multiprotocol Label Switching ([[https:// |
| + | Roughly, the implementation can be split into the following chunks: | ||
| + | * create MPLS routing tables, analogous | ||
| + | * add the logic to handle MPLS packets (mpls_input(), | ||
| + | * add the code to perform MPLS encap for IPv4/IPv6 routes, extending nexthops functionality | ||
| + | * add Netlink support for working with IP-MPLS, MPLS-MPLS and MPLS-IP routes | ||
| + | * Add userland support for working with MPLS routes to route(8) and netstat(8) | ||
| + | * [stretch] add fast fib lookup module to enable high-performance concurrent label lookups | ||
| - | * [[http://freebsd.mpls.in/|melifaro' | + | The [[https://2011.eurobsdcon.org/papers/ |
| - | * [[RyanFrench/Implementation of MPLS in FreeBSD|GSoC 2008 Project]] | + | |
| - | This project should refresh and cleanup these works-in-progress. The [[https://2011.eurobsdcon.org/papers/jeker/MPLS.pdf|OpenBSD' | + | ---- |
| + | |||
| + | ==== Improve netgraph concurrency ==== | ||
| + | |||
| + | | Mentor | Alexander Chernikov < | ||
| + | | Skills | C (intermediate), | ||
| + | | Mid-term deliverable | Traffic is able to pass in a lockless fashion in 2-node netgraph topology | | ||
| + | | Duration | 350 hours | | ||
| + | | Difficulty | Medium | | ||
| + | | Expected Outcome | Traffic is able to pass in a lockless fashion between ng_%%< | ||
| + | |||
| + | === Description === | ||
| + | |||
| + | [[https://man.freebsd.org/cgi/man.cgi? | ||
| + | |||
| + | * Enable delayed reclamation of netgraph hooks and nodes under existing NET_EPOCH | ||
| + | * Make core API like '' | ||
| + | * Test the implementation with a number of stateless nodes like ng_patch or ng_tee and ng_ipfw | ||
| + | * Evaluate and convert nodes on per-node basis on their reliance on the topology lock | ||
| ---- | ---- | ||
| Line 197: | Line 219: | ||
| ===== Userland projects ===== | ===== Userland projects ===== | ||
| - | ==== Kernel LLDB debugger module support and integration ==== | + | ---- |
| + | |||
| + | ==== Kernel LLDB debugger | ||
| | Mentor | [[EdMaste|Ed Maste]] < | | Mentor | [[EdMaste|Ed Maste]] < | ||
| Line 203: | Line 227: | ||
| | Mid-term deliverable | Parse and report the kernel module list in a coredump | | | Mid-term deliverable | Parse and report the kernel module list in a coredump | | ||
| | Duration | 175 or 350 hours | | | Duration | 175 or 350 hours | | ||
| - | | Difficulty | Easy | | + | | Difficulty | Moderate |
| | Expected Outcome | crashinfo functional with LLDB rather than kgdb | | | Expected Outcome | crashinfo functional with LLDB rather than kgdb | | ||
| Line 217: | Line 241: | ||
| | Mentor | ? | | | Mentor | ? | | ||
| - | | Skills | C (expert), fusefs (expert) | | + | | Skills | C++ or Rust (expert), fusefs (expert) | |
| | Mid-term deliverable | Read-only support for userland | | | Mid-term deliverable | Read-only support for userland | | ||
| | Duration | 350 hours | | | Duration | 350 hours | | ||
| Line 251: | Line 275: | ||
| Note: contributing to syzkaller requires signing the Google CLA. Please make sure that this is acceptable before attempting this project. | Note: contributing to syzkaller requires signing the Google CLA. Please make sure that this is acceptable before attempting this project. | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ==== Move to GENERIC armv7 distribution scripting ==== | ||
| - | |||
| - | | Mentor | [[WarnerLosh|Warner Losh]] < | ||
| - | | Skills | Shell / Make (intermediate) | | ||
| - | | Mid-term deliverable | release scripts working, u-boot ports updated | | ||
| - | | Duration | 175 hours | | ||
| - | | Difficulty | Medium | | ||
| - | | Expected Outcome | Documented and tested user tool to generate generic image | | ||
| - | |||
| - | === Description === | ||
| - | |||
| - | %%FreeBSD%% has grown support for a large number of boards over the past few years, far too many to release images for all of them. This project would convert the release tools to generate only a generic image that can have any supported u-boot port overlaid. the u-boot ports would need to be updated with meta-data that would describe how each %%SoCs%% or board' | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ==== Move to GENERIC armv7 distribution web interface ==== | ||
| - | |||
| - | | Mentor | [[WarnerLosh|Warner Losh]] < | ||
| - | | Skills | Shell / Make (intermediate) | | ||
| - | | Mid-term deliverable | scripts to mine u-boot ports and screen mock-ups | | ||
| - | | Duration | 175 hours | | ||
| - | | Difficulty | Medium | | ||
| - | | Expected Outcome | Working Web tool to mine u-boot | | ||
| - | |||
| - | === Description === | ||
| - | |||
| - | %%FreeBSD%% has grown support for a large number of boards over the past few years, far too many to release images for all of them. We need a way to securely distribute boot images for dozens or even hundreds of boards. The web app would collect user input, run a script to generate the image, sign the image with a secure signing key, then download the results to the user. This project could be combined with the release script project described above to creata a 350-hour project. | ||
| ---- | ---- | ||
| Line 405: | Line 399: | ||
| A rewrite in Python, using pytest, could fix all of these problems except the last. I have already written a proof of concept demonstrating the basic organization and key features like configurability and privilege modes. | A rewrite in Python, using pytest, could fix all of these problems except the last. I have already written a proof of concept demonstrating the basic organization and key features like configurability and privilege modes. | ||
| + | |||
| + | ---- | ||
| ===== Build infrastructure ===== | ===== Build infrastructure ===== | ||
| + | |||
| + | ---- | ||
| ==== Integrate MFSBSD into the release building tools ==== | ==== Integrate MFSBSD into the release building tools ==== | ||
| - | | Mentor | [[BradDavis|Brad Davis]] <brd@freebsd.org> | | + | | Mentor | ? (Email hackers@%%FreeBSD%%.org list for direction) |
| | Skills | C (beginner), make (intermediate), | | Skills | C (beginner), make (intermediate), | ||
| | Mid-term deliverable | 'make release' | | Mid-term deliverable | 'make release' | ||
| Line 425: | Line 423: | ||
| The issue is that only images for the release versions are usually produced, and MFSBSD tends to get out of sync with the tools in base. | The issue is that only images for the release versions are usually produced, and MFSBSD tends to get out of sync with the tools in base. | ||
| - | There is a desire to have MFSBSD images of the weekly snapshots of -current and -stable that are created by the release engineering | + | There is a desire to have MFSBSD images of the weekly snapshots of -current and -stable that are created by the release engineering |
| This requires that the process be automated as an additional target in the makefile in src/ | This requires that the process be automated as an additional target in the makefile in src/ | ||
| It would be similar to the process used now to generate VM images. | It would be similar to the process used now to generate VM images. | ||
| Line 455: | Line 453: | ||
| ---- | ---- | ||
| + | |||
| + | ==== CI test harness for boot loader ==== | ||
| + | |||
| + | | Mentor | [[WarnerLosh|Warner Losh]] < | ||
| + | | Skills | shell-script or python (intermediate) | | ||
| + | | Mid-term deliverable | An end-to-end test for at least 2 of the %%FreeBSD%% boot environments | | ||
| + | | Duration | 175 hours or 350 hours | | ||
| + | | Difficulty | Medium | | ||
| + | | Expected Outcome | An end-to-end test for all %%FreeBSD%% boot environments that can be added to our CI infrastructure | | ||
| + | |||
| + | === Description === | ||
| + | |||
| + | %%FreeBSD%% can boot in about 40 different boot environments when you count all the combination of architecture, | ||
| + | and encryption. Currently, there' | ||
| + | |||
| + | A successful application will include the above matrix (send email to the Mentor before the deadline to ensure its correctness, | ||
| Mentors: use this as a template for new ideas: | Mentors: use this as a template for new ideas: | ||
| Line 470: | Line 484: | ||
| === Description === | === Description === | ||
| - | |||
| - | %%-%%--- :!: **End of edit conflict** ---- | ||
| ---- | ---- | ||