GSoC 2024 Results
Introduction
In 2024, KolibriOS participated in Google Summer of Code for the 3rd time, after 2014 and 2016 [1].
This page presents the results of the participation, including implemented ideas and comments from the participants.
Completed Ideas
In result of preliminary selection, two task slots were allocated by Google for KolibriOS:
- SDL2 library port by arnavbhatt288
- NVMe driver implementation by ramenu
Both task were successfully completed by participants and contributed to KolibriOS.
SDL2 library port
Why it is important for KolibriOS
Having support for SDL2 in KolibriOS will not only allow developers to develop new applications using the updated functionality of the library, but also to port a huge number of existing open source programs (mostly emulators and games) from other platforms, as SDL2 is often used to implement frontend/graphics in such applications.
Test task
As a test task, arnavbhatt288 fixed a bug in PokeMini emulator for KolibriOS, which is written in C using SDL which made working with it close to the main task [2].
Implementation status
- Primary goal: Make a working port of SDL2.
- Was successfully implemented during the course of GSoC'24, by porting SDL2 (version 2.30.6) library to KolibriOS.
- Additional goal: Port additional SDL2 libraries: SDL2_image, SDL2_mixer, SDL2_ttf, etc.
- Was successfully implemented during the course of GSoC'24, by porting SDL_image (version 2.8.2), SDL_mixer (2.8.0) and SDL_ttf (2.22.0) additional libraries to KolibriOS.
- Extra goal: Port SDL 1.2 compatibility layer to run old apps on new version of library.
- Wasn't implemented during the course of GSoC'24.
Result
With both basic libraries and all main additional libraries being ported, it is now possible to fast develop applications with advanced frontend for KolibriOS, as well as port many open-source programs, that are based on SDL2.
As an example, during the course of GSoC'24 arnavbhatt288 ported a LakeSnes SNES emulator, as demonstration of library functionality and replacement for current ZSNES emulator, that has some bugs [3].
Contributor's comment
> What were your impressions of our project? The project seemed interesting to dive into as though I ported software/libraries to different platforms earlier in the past, I never did one on a particularly niche platform. Learning about that KolibriOS has libc, my interest for this project grew further. > How did working process go? It went quite smooth, I faced some setbacks here and there, but I managed to overcome it. > What have you liked and disliked about this project? What I liked: Simplicity of the OS, the fact that it has a libc support (quite a feat for a niche OS), well-made toolchain and simple syscalls What I disliked: Lack of good documentation. While the source code has some documentation about stuffs like syscalls, they weren't well detailed.
Source code
NVMe driver implementation
Why it is important for KolibriOS
In recent years, the use of NVMe drives has become increasingly popular in personal computers, and the implementation of their support is very important in terms of KolibriOS compatibility with modern hardware and keeping the system up-to-date.
Implementation status
- Primary goal: Write basic NVMe device driver to support NVMe SSD.
- Was successfully implemented during the course of GSoC'24, by writing NVMe driver from scratch.
- Additional goal: Add support of namespaces.
- Was successfully implemented during the course of GSoC'24, as part of written from scratch driver.