Fetching the latest programs, projects, and workspace data.
Find open source projects actively accepting contributors. Search repositories, filter by program milestones, difficulty tags, or tech stack.
Use our Orbit AI Matcher to find out! Get instant matching scores based on your developer skills, preferred frameworks, and contribution experience.
Convert your selected open-source project into a winning GSoC, LFX, or Outreachy application using Proposal Studio.
<p><strong>Curses library</strong> is an important part of the NetBSD operating system as many applications rely on the correct functioning of the library. Performing modifications on the curses library can be difficult because the effects of the change may be subtle and can introduce bugs that are not detected for a long time. This project aims to write a <strong>test suite for the curses library</strong> with support for integration with the automatic testing framework (ATF).</p>
The NetBSD Project has been working to adapt the FreeBSD Wi-Fi stack. When this is complete, things will be more up-to-date, newer protocols will be supported, and NetBSD will let one use multiple Virtual Access Points with the same physical Wi-Fi adapter. As of yet, most of the Wi-Fi drivers need to be converted to the new stack. The athn(4) driver will be reworked as necessary, and if time permits the ath(4) driver also.
Enlightenment desktop is a low on resources desktop environment without sacrificing on visuals. NetBSD support for this desktop has been left a few versions behind. The aim of this project is to port the newest version of the desktop to pkgsrc and commit upstream portability fixes when necessary to ease future versions updates for NetBSD. The project will also investigate and maybe port the Moksha desktop environment, which is a fork of an older version of Enlightenment desktop before a major rewrite happened in the project.
The Wi-Fi drivers has been changed to support newer protocols. So all existing wifi drivers needs to be changed and reworked to the new code base. Some of them are already converted and tested but some of them are not yet converted and tested on the real hardware. I am going to convert and test (otus -- Atheros USB IEEE 802.11a/g/n wireless network device (https://man.netbsd.org/otus.4) on TP-Link TL-WN821N which is a compatible device for this driver.
NetBSD is capable of running binaries compiled for Linux through a thin in-kernel translation layer, the Compat Linux. Currently, the Linux emulation is not covered by the NetBSD test suite, this project aims to target that area, focusing on testing the syscalls emulations. To achieve this, the syscalls tests from the Linux Test Project will be used. They will be compiled for Linux and the resulting binaries will be run with the Compat Linux. This project will focus on the most basic/used syscalls, this allows for a great coverage of use cases, and will make running more complex tests easier in the future. The syscalls to be tested are: Basic IO: read, write, open, close, lseek, stat, fstat Processes: fork, execve, exit, waitid, dup, dup2, pipe Memory: nmap, munmap, mprotect, brk Sockets: socket, bind, connect, accept
NetBSD allows the execution of Linux binaries with compat_linux, a NetBSD kernel module that translates Linux system calls into NetBSD system calls. But, not all of Linux's system calls have been implemented in compat_linux, which means that not all Linux applications can be ran on NetBSD. One relevant application that can't be ran is bubblewrap, a tool for constructing sandbox environments. By tracing the system calls executed by the bubblewrap Linux binary and comparing with the ones in compat_linux's source code, we can identify the system calls that need to be implemented. One required but currently missing Linux system call is unshare, a system call to create Linux namespaces, which provide isolation of multiple parts from the host, this makes it a complicated system call to emulate. Unshare will be the main system call of this project but there will be others as well, such as the capabilities family of system calls, we will study each system call individually to understand if we need to create a completely new system call, or if we can simply translate the Linux system call's arguments to ones used by an equivalent NetBSD system call. The successful completion of this project will result in a patch to compat_linux, which will allow bubblewrap to be ran on NetBSD under compat_linux, bringing a new way of sandboxing to NetBSD.
This project aims to update the current memory allocator used by RTEMS to be modular, allowing users to provide their own heap implementation or use one supplied by RTEMS. It will also include implementing the TLSF allocator as the default allocator instead of the current first-fit approach. This change will address the existing fragmentation and unpredictable runtime issues associated with the current allocator. Additionally, the project will explore the implementation of RT-Mimalloc, a modified version of Microsoft’s mimalloc optimized for real-time systems, representing the first open-source realization of this allocator. Finally, the project will add an allocator benchmark to evaluate the new memory allocators as well as any user-provided implementations.
<p>Vagrant is a tool to create and manage virutal environment, which can be used to for creating and configure lightweight, reproducible, and portable development environments. This project is aiming at producing a Vagrant plugin to make bhyve as a new provider of Vagrant which makes bhyve users can use Vagrant to manage their VMs more easily.</p>
The goal of this project is to introduce more locking protocols, in particular Multiprocessor Priority Ceiling Protocol (MPCP) and Distributed Priority Ceiling Protocol (DPCP), to RTEMS to be used by semaphores, as well as testsuites for the two protocols. This allows users to choose different locking protocols to use can be more practical depending on their application.
Reimplemented the GNU suite using the Rust language and improved its compatibility so that it could be put into production. The main tasks include: checking existing issues, trying to solve them, adding corresponding test codes, improving the stability and security of the system, and discovering and solving compatibility issues through testing.
The goal of this project is to make uutil behave more like gnu’s coreutils by improving compatibility with gnu coreutils test suit. This project’s proposal is to focus on the test cases of LS, CP and MV so that by the end of the program the above-mentioned utilities hopefully would be fully compatible with gnu’s test suit.
FreeBSD's UFS is arguably the longest standing UNIX file system still under active development. It is well documented and has many interesting features. While UFS has been ported to Linux and Mac OSX, the ports are not very good or have been deprecated. Using fusefs as a userland option would let the filesystem be used on many other systems.
Renode.io is an open-source software simulator designed specifically for System on Chips (SoC) and Internet of Things (IoT) devices. It allows developers to simulate the behavior of their hardware and software designs before deploying them onto real devices, saving time and resources. Currently, there has been no documentation or testing mechanism on how to use the renode.io simulator for RTEMS. Thus, this project is created to take a look at which BSPs RTEMS have that are compatible to be used in the renode.io simulator, submit a patch to the RTEMS User’s Guide on how to use it on how to run the them on renode.io simulator, and possibly integrate the renode.io simulator into RTEMS testing ecosystem as an opt-in simulator solution.
<p>I want to improve the Linux kernel environment model for more accurate work with memory.</p>
This project will integrate the Scrutiny Embedded instrumentation library to RTEMS. The result of this project will be an instrumentation interface that provides in-field debugging and an alternative to JTAG-based stop mode debugging, which is particularly useful for hobbyists and beginners, or for those debugging systems which are live. Deliverables will include a working two-way UART transport, integration of Scrutiny functions to RTEMS, the ability to expose specific metrics from RTEMS to Scrutiny, a user facing API for developers, a package under the RTEMS Source Builder titled rtems-scrutiny, and the necessary test suites for all use cases. This effort will provide RTEMS users with an effective Scrutiny port which can then successfully be hooked up to their respective clients for streamlined debugging.
<p>Apitrace is an open source program that allows tracing, replaying, inspecting and profiling OpenGL/Direct3D calls made by any application. Last summer during GSoC 2015 there was developed an abstract interface that allows to use various profiling backends in Apitrace, also several backends (that use OpenGL extensions) were implemented then. The goal of this task is to provide a convenient interface to the new feature in qapitrace. There already exists a version of profiling view in qapitrace. It has only a limited set of old metrics and it might lack some usability features. This GUI project plans to add new metrics, as well as improving the interface overall.</p>
<p>The micro:bit is a small computer for educational use that is also suitable for embedded and Internet of Things (IoT) projects. The micro:bit ecosystems offers various staggered ways of creating programs that run on the computer, including a javascript block editor, a python editor and a c/c++ runtime. This way it enables students and other users to gradually develop and enhance their knowledge about computing. The micro:bit consists of a single pcb which features many I/O capabilities including a 5x5 LED display, 2 buttons, Bluetooth and Nordic Gazell radio communications, an accelerometer, a compass, temperature and light sensing, UART, and GPIO pins for external devices, all connected to the ARM Cortex-M0 based Nordic nRF51822 at its center. Currently there are no means of running programs targeted to the microbit in a emulated environment. The goal of this project is to enhance QEMUs capabilities to being able to load and run code targeted to the micro:bit computer and emulating the aforementioned peripherals.</p>
FreeBSD boasts a plethora of userspace command tools utilizing IPv4 network programming APIs and exhibiting address family dependency. With the emergence of IPv6 to address the limitations of IPv4, it's imperative to update these tools to utilize address-independent APIs, thereby facilitating seamless handling of both IPv4 and IPv6 connections.
RTEMS currently lacks C11 Annex K bounds-checking functions (strcpy_s, memcpy_s, sprintf_s and ~45 others) which provide runtime buffer-size validation critical for safety-critical embedded systems. Without these, RTEMS developers writing software for spacecraft, medical devices, and automotive controllers are forced to use unsafe standard functions or write their own wrappers — neither is acceptable for safety-critical code. This project packages safeclib (rurban/safeclib) through the RTEMS Source Builder (RSB) so any RTEMS BSP can access these functions via -lsafec, directly strengthening memory safety across all RTEMS applications. The approach uses pkg-config for BSP-specific flag detection and librtemsdefaultconfig.a for configure-time link tests. Deliverables include a working RSB recipe, full test suite validation (~126 tests) under QEMU SPARC emulation, all ~45 Annex K functions documented in the RTEMS POSIX Compliance Guide, and a release notes entry.
<p>The Real-Time Executive for Multiprocessor Systems (RTEMS) is an open-source real-time operating system (RTOS). In the current RTEMS version, a lower-priority ready task must wait if all the processors included in its affinity mask are executing higher-priority tasks. Since a lower-priority task can never “dislodge” a higher-priority task that could also execute elsewhere, this may needlessly prevent some tasks from being scheduled, even if some processors idle as a result[1].</p> <p>This project aims to add the Strong Arbitrary Processor Affinity (Strong APA) scheduler to RTEMS. Strong APA scheduler would allow higher-priority tasks to be ”dislodged” or moved among processors in order to make space for lower priority tasks that are limited by affinity constraints [1]. Consequently, this would allow RTEMS to achieve improved schedulability (i.e., lower response-time bounds).</p> <p>References : [1] Cerqueira, Felipe & Gujarati, Arpan & Brandenburg, Bjorn. (2015). Linux's Processor Affinity API, Refined: Shifting Real-Time Tasks Towards Higher Schedulability. Proceedings - Real-Time Systems Symposium. 2015. 249-259. 10.1109/RTSS.2014.29</p>
<p>Lunatik is a kernel-level Lua interpreter version for scripting the Linux kernel. For example, it allows users to filter packets using Lua scripts. kTLS is a new socket type provided by Linux that transparently handles the encryption and decryption of TLS messages.</p> <p>ULP (Upper Layer Protocol) is a new feature merged recently in the Linux kernel which allows user-space programs to attach L7 functionalities to the in-kernel socket structure. kTLS is implemented via ULP.</p> <p>The purpose of this project is to implement a kernel level Lua hook inside the kTLS infrastructure. This way we could use Lua scripts to inspect the contents of the HTTP messages transparently inside the kernel.</p>
<p>This project aims for : Creating a tool that takes XML Test results , generated by the Automated Testing Framework (ATF), and inserts it to a well-designed PostgreSQL Database. Building a website that shows statistics based on the data from the PostgreSQL database, and that enables dedicated queries in a simple way.</p>
<p>Carry out fuzzing of various layers and protocols of the Network stack of NetBSD using rumpkernel environment in order to improve the stability of the network stack and test for bugs. The final deliverables will be a set of tests to fuzz different layers and protocols of network stack within rumpkernel, along with a reproducible and extensible framework/interface for adding more tests in the future. The project will have a list of APIs/functions of different protocols like IP, TCP, UDP, ICMP, Ethernet etc. for which fuzz tests would be written. For Example, functions like ip_input, ip_output, udp_input, udp_output, rip_input, rip_output etc. which are for input and output processing for different protocols(and layers).</p>