Ideas Page
Introduction
This is our ideas page for new developers.
Google Summer of Code'23 Contributor Requirements
Prospective contributors are required to register on our developers forum and submit a small bugfix / improvement to our SVN or GIT in order for their application to be considered. Examples of such tasks can be obtained by asking on the developers forum or on our IRC channel (#kolibrios @ irc.libera.chat). This requirement is only to show us that you are able to work with our SVN or GIT and interact with our developers if you are selected. This task has to be completed before contributor application deadline (4 April 18:00 UTC).
In addition, students need to answer the following questions when applying:
- Full Name (First + Last Name).
- E-mail address.
- Nickname you plan to use on our forums, SVN/GIT repository or IRC chat.
- Age.
- Country + city of residence.
- Human languages you speak (write all languages and knowledge level - basic/intermediate/expert/mother tongue).
- Name of college or university you are accepted into or enrolled in + link to their website (if applicable).
- Name of program (or faculty, or department) in that college/university you are accepted into or enrolled in (if applicable).
- Your current timezone in UTC/GMT terms (for example, Paris is UTC/GMT +1 hours right now).
- Have you been involved with any open-source project in the past? If yes, which one, and what have you done for that project?
- Code samples - please provide links to code that you have written. It can be your high school project, contribution to open-source organization, your college/university task or anything like that.
- The task you are willing to work on from our list of Summer of Code 2023 ideas (or suggest your own idea, if you don't like any of the proposed ideas).
- What other time commitments, such as school work, another job, planned vacation, etc., will you have between May 29 and August 28?
Organization
You can find the organizers at our forum: https://board.kolibrios.org
Name | Nickname | Role |
Ivan Baravy | dunkaist | Administrator, Mentor |
Jeffrey Amelynck | hidnplayr | Mentor, Backup Administrator |
Dmitriy Smirnov | Pathoswithin | Mentor |
Serhii Sakhno | Punk_Joker | Mentor |
Kiril Lipatov | Leency | C-- Mentor |
Konstantin Pakhtusov | KPG | Mentor (Forth) |
Ideas
Idea Name | Area | Programming Language | Mentors |
---|---|---|---|
OpenBios in Loader | Kernel/Application | Forth, FASM (Assembler), C | KPG |
File system | Kernel/Application | FASM (Assembler) | Pathoswithin |
Widget toolkit | System wide | FASM (Assembler), C | dunkaist |
Finish Mbed TLS port | Library | C/FASM | Punk_Joker |
Port FLTK | Library | C++ | Punk_Joker |
Fasmg port | Application | FASM/FASMG (Assembler) | dunkaist |
Unicode library | Library/Application | FASM (Assembler) | dunkaist |
Virt-IO driver | Kernel | FASM (Assembler) | dunkaist |
Loop device driver | Kernel | FASM (Assembler) | dunkaist |
RSS/Atom news reader | Application | FASM (Assembler) | dunkaist |
Port SDL2 | Library | C | rgimad |
Add forms to WebView | Application | C-- | rgimad |
J2ME Emulator | Application | C, Java | rgimad |
Screen Ruler | Application | FASM (Assembler) | rgimad |
OpenBios in Loader
OpenBIOS is a free, portable implementation of IEEE 1275-1994 (Open Firmware). Find detailed information about OpenBIOS OpenBIOS can replace your system firmware (BIOS) partly or completely. It can also be used as a bootloader to create an Open Firmware compatible interface between legacy firmware and an operating system. This is achieved by a modular concept that consists of a portable Forth kernel and three interfaces for user interaction, device initialization and client (operating system) control in command line like shell in Linux. OpenBios implentation Fcode [1] - Bytecode is small, hardware independent and efficient. And an evaluator (bytecode virtual machine) is almost trivial to implement or/and with possible an uses JIT technology.
- Primary goal: Add OpenBios ("Forth") support to the system bootloader.
- Additional goal: Create simple interactive more device drivers
- Language: Forth, FASM (Assembler), C
- Links: Openbios Firmware in Github
File system
- Primary goal: Add write support for ext4 file system (ext4 reading and ext2 writing are already supported).
- Additional goal: Improve write support for NTFS file system.
- Language: FASM (Assembler)
- Links: Ext4 Disk Layout
Widget toolkit
- Primary goal: Extend Box_lib (a set of separate widgets) to create a full-featured widget toolkit, design architecture and implement focus handling, callbacks and other core ideas.
- Additional goal: Integrate created box_lib widgets to the C-framework, extend framework with font handling, layout manager
- Language: FASM (Assembler), C (framework)
- Links: basic idea, list of toolkits
Finish Mbed TLS port
- Primary goal: Finish MbedTLS port (headers for FASM, get ceritificates working) (TODOs)
- Additional goal: Update HTTP library (written in FASM) to support HTTPS by using mbedtls.obj
- Language: C/FASM
- Links: MbedTLS port thread
Port FLTK
- Primary goal: Make a working port of FLTK (widget library) and add it to the automatic build-system.
- Additional goal: port Scintilla (minimum working version)
- Language: C++
- Links: Official site
Language: C--, Assembler/FASM
Fasmg port
Tomasz Grysztar (creator of FASM) introduced FASMG, a new assembler engine. It would be nice to support its new syntax in KolibriOS.
- Primary goal: Write FASMG application like FASM one. Port standard KolibriOS macros to FASMG syntax.
- Additional goal: Implement macros for compatibility with FASM.
- Language: Assembler/FASM/FASMG
- Links: FASMG overview, FASMG manual
Unicode library
Unicode is a huge and sophisticated standard. Nevertheless modern OS should provide libraries with Unicode related routines like NFC, NFD, sorting, comparing, etc.
- Primary goal: Write a tiny Unicode library with core Unicode algorithms and example application.
- Additional goal: Upgrade existing applications to use the new library.
- Language: Assembler/FASM
- Links: libutf
Virt-IO driver
Virtio is a virtualization standard for network and disk device drivers where just the guest's device driver "knows" it is running in a virtual environment, and cooperates with the hypervisor. This enables guests to get high performance network and disk operations, and gives most of the performance benefits of paravirtualization.
- Primary goal: Write kernel driver for, say, virt-io Ethernet card.
- Additional goal: Write more drivers.
- Language: Assembler/FASM
- Links: Virt-IO wiki
Loop device driver
- Primary goal: Write loop device driver and example application to manage loop devices.
- Additional goal: Prepare a set of disk images to be used in filesystem unit tests.
- Language: Assembler/FASM
- Links: loop device overview
RSS/Atom news reader
RSS and Atom are standards for web feeds. They are XML based and easily processed via AsmXml library. Corresponding user application would be a big plus to usability of KolibriOS.
- Primary goal: Write RSS news reader as a standalone KolibriOS application.
- Additional goal: Add Atom support to the app.
- Language: Assembler/FASM
- Links: AsmXml library, RSS, Atom
Port SDL2
SDL1.2 is already ported to KolibriOS, but there is no SDL2 port.
- Primary goal: Make a working port of SDL2.
- Additional goal: Port additional SDL2 libraries: SDL2_image, SDL2_mixer, SDL2_ttf, etc.
- Language: C
- Links: libsdl.org
Add forms to WebView
Currently WebView browser doesn't support support html forms (<form>, <input>, etc.)
- Primary goal: Add support for <form>, <input> for types that was prior to HTML5
- Additional goal: Add input types that was introduced in HTML5
- Language: C--
- Links: WebView on svn
J2ME Emulator
Thousands of games and programs have been created for the j2me platform. It would be cool to be able to run them in KolibriOS.
- Primary goal: Port JVM and java.microedition.* runtime
- Additional goal: Make it run most of popular j2me games
- Language: C, Java
- Links: miniJVM
Screen Ruler
Program for conveniently measuring the distance between selected points on the screen.
- Primary goal: measure distance by X, Y, diagonal.
- Additional goal: Also with a built-in magnifier and aim to see which pixel you choose.
- Language: FASM
- Links: for additional goal it would be useful to see: sources of Magnify
Most importantly... Have Fun!