Difference between revisions of "Ideas Page"

From KolibriOS wiki
Jump to navigation Jump to search
m
 
(79 intermediate revisions by 7 users not shown)
Line 1: Line 1:
 
== Introduction ==
 
== Introduction ==
This is our ideas page for new developers.
+
This is our ideas page for new developers who want to participate in the Google Summer of Code event by contributing to KolibriOS. It also contains a description of the process and requirements to participate.<br>
 +
A general information about Google Summer of Code can be found here: [https://summerofcode.withgoogle.com/ Google Summer of Code]
 +
 
 +
== Google Summer of Code'24 Contributor Requirements ==
 +
Prospective contributors are required to register [https://board.kolibrios.org on our developers forum] and submit a small bugfix / improvement [[Get_source_code|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 [[Get_source_code|our SVN or GIT]] and interact with our developers if you are selected.<br>
 +
'''This task has to be completed before contributor application deadline (2 April 18:00 UTC).'''
 +
<p>
 +
In addition, contributors 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 (Russia and Belarus residence are not allowed according to GSoC terms)
 +
# 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 2024 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 27 and August 26?
 +
</p>
  
 
== Organization ==
 
== Organization ==
  
You can find the organizers at our forum: http://board.kolibrios.org/
+
You can find the organizers at our forum: https://board.kolibrios.org
  
 
{| class="wikitable"
 
{| class="wikitable"
Line 14: Line 35:
 
|[[User:dunkaist|dunkaist]]
 
|[[User:dunkaist|dunkaist]]
 
|Administrator, Mentor
 
|Administrator, Mentor
 +
|-
 +
|Jeffrey Amelynck
 +
|[[User:Hidnplayr|hidnplayr]]
 +
|Mentor, Backup Administrator
 
|-
 
|-
 
|Dmitriy Smirnov
 
|Dmitriy Smirnov
 
|Pathoswithin
 
|Pathoswithin
|Mentor, (Administrator)
+
|Mentor
 
|-
 
|-
 
|Serhii Sakhno
 
|Serhii Sakhno
Line 26: Line 51:
 
|[[User:Leency|Leency]]
 
|[[User:Leency|Leency]]
 
|C-- Mentor
 
|C-- Mentor
 +
|-
 +
|Konstantin Pakhtusov
 +
|[[User:KPG|KPG]]
 +
|Mentor (Forth)
 
|}
 
|}
  
Line 46: Line 75:
 
! Mentors
 
! Mentors
 
|-
 
|-
| [[#Loader|Loader]]
+
| [[#OpenBios_in_Loader|OpenBios in Loader]]
 
| Kernel/Application
 
| Kernel/Application
| FASM (Assembler), Forth, C
+
| Forth, FASM (Assembler), C
|  
+
| KPG
 
|-
 
|-
| [[#File_system|File system]]
+
| [[#File_system improvement|File system improvement]]
 
| Kernel/Application
 
| Kernel/Application
 
| FASM (Assembler)
 
| FASM (Assembler)
Line 61: Line 90:
 
| dunkaist
 
| dunkaist
 
|-
 
|-
| [[#Port_PolarSSL|Port PolarSSL]]
+
| [[#Finish Mbed TLS port|Finish Mbed TLS port]]
 
| Library
 
| Library
| C/FASM
+
| C, FASM (Assembler)
 
| Punk_Joker
 
| Punk_Joker
 
|-
 
|-
Line 71: Line 100:
 
| Punk_Joker
 
| Punk_Joker
 
|-
 
|-
| [[#XMPP.2FJabber_client|XMPP/Jabber client]]
+
| [[#FASMG port|FASMG port]]
| Application
 
| Assembler/FASM
 
|
 
|-
 
| [[#Eolite_improvement|Eolite_improvement]]
 
| Application
 
| C--
 
| Leency
 
|-
 
| [[#Fasmg_port|Fasmg port]]
 
 
| Application
 
| Application
 
| FASM/FASMG (Assembler)
 
| FASM/FASMG (Assembler)
Line 91: Line 110:
 
| dunkaist
 
| dunkaist
 
|-
 
|-
| [[#Document_viewer|Document viewer]]
+
| [[#Virt-IO_driver|Virt-IO driver]]
| Library/Application
+
| Kernel
 
| FASM (Assembler)
 
| FASM (Assembler)
 
| dunkaist
 
| dunkaist
 
|-
 
|-
| [[#Virt-IO_driver|Virt-IO driver]]
+
| [[#Loop_device_driver|Loop device driver]]
 
| Kernel
 
| Kernel
 
| FASM (Assembler)
 
| FASM (Assembler)
 
| dunkaist
 
| dunkaist
 
|-
 
|-
| [[#Loop_device_driver|Loop device driver]]
+
| [[#NVMe_driver|NVMe driver]]
 
| Kernel
 
| Kernel
 +
| FASM (Assembler)
 +
| Punk_Joker
 +
|-
 +
| [[#RSS/Atom_news_reader|RSS/Atom news reader]]
 +
| Application
 
| FASM (Assembler)
 
| FASM (Assembler)
 
| dunkaist
 
| dunkaist
 
|-
 
|-
| [[#GIMP_plugin_for_skins|GIMP plugin for skins]]
+
| [[#SDL2 Port|SDL2 Port]]
 +
| Library
 +
| C
 +
| dunkaist
 +
|-
 +
| [[#Add HTML forms to WebView|Add HTML forms to WebView]]
 
| Application
 
| Application
| C/Python/Scheme
+
| C--
 +
| Leency
 +
|-
 +
| [[#J2ME Emulator|J2ME Emulator]]
 +
| Application
 +
| C, Java
 
| dunkaist
 
| dunkaist
 
|-
 
|-
| [[#RSS/Atom_news_reader|RSS/Atom news reader]]
+
| [[#Rust library development for KolibriOS|Rust library development for KolibriOS]]
| Application
+
| Library
| FASM (Assembler)
+
| Rust, FASM (Assembler)
 
| dunkaist
 
| dunkaist
 +
|-
 
|}
 
|}
  
=== File system ===
+
=== OpenBios in Loader ===
* Primary goal: Add write support for ext4 file system (ext4 reading and ext2 writing are already supported).
+
<p>'''General Description'''</p>
* Additional goal: Improve write support for NTFS file system.
+
OpenBIOS is a free, portable implementation of [https://archive.org/details/ieee_std_1275_1994_standard_for_boot_initialization_configur IEEE 1275-1994 (Open Firmware)]. [http://www.openbios.org/ 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.  
* Language: FASM (Assembler)
+
<p>'''What it gives us'''</p>
* Links: [https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout Ext4 Disk Layout]
+
OpenBios implentation Fcode [https://www.openbios.org/Forth/FCode] has small bytecode, is hardware independent and efficient. And an evaluator (bytecode virtual machine) is almost trivial to implement or/and with possible an uses JIT technology. So it is great way to implement a unified and functional bootloader for KolibriOS.
 
+
<p>'''Other information'''</p>
=== Widget toolkit ===
+
* Goals:
* 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.
+
** Primary: Add OpenBios ("Forth") support to the system bootloader.
* Additional goal: Integrate created box_lib widgets to the C-framework, extend framework with font handling, layout manager
+
** Additional: Create simple interactive more device drivers.
* Language: FASM (Assembler), C (framework)
+
* Language: '''Forth, Assembler/FASM, C'''.
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]
+
* Difficulty: '''Hard''', you need to be familiar with how BOIS systems and OS loaders work in general.
 +
* Time/Size: '''175 hours'''.
 +
* Links:
 +
** [https://github.com/openbios OpenBios Firmware on GitHub]
  
=== Port PolarSSL ===
+
=== File system improvement ===
* Primary goal: Make a working port of PolarSSL (as native KolibriOS MS COFF library) and add it to the automatic build-system.
+
<p>'''General Description'''</p>
* Additional goal: Update HTTP library (written in FASM) to support HTTPS.
+
KolibriOS has already implemented support for many file systems, both write and read, but at the same time support for some systems leaves a lot to be desired and opens up a vast scope for work.
* Language: C/FASM
+
<p>'''What it gives us'''</p>
* Links: [http://board.kolibrios.org/viewtopic.php?f=40&t=2460 Forum thread about polarSSL], [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fprograms%2Fdevelop%2Flibraries%2Fhttp%2F&#a12c8a35f2062865521028a57a419b4e8 HTTP library on WebSVN]
+
Support for more file systems, particularly write support, will greatly expand the functionality of KolibriOS, especially when working with files on third-party drives.
 +
<p>'''Other information'''</p>
 +
* Goals:
 +
** Primary: Add write support for ext4 file system (ext4 reading and ext2 writing are already supported).
 +
** Additional: Improve write support for NTFS file system.
 +
* Language: '''Assembler/FASM'''.
 +
* Difficulty: '''Intermediate''', you need to be familiar with how file systems work in general, and writing drivers.
 +
* Time/Size: '''175 hours'''.
 +
* Links:  
 +
** [https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout Ext4 Disk Layout]
 +
** [https://dubeyko.com/development/FileSystems/NTFS/ntfsdoc.pdf NTFS documentation]
 +
** [https://wiki.kolibrios.org/wiki/Development#Driver_development Driver development for KolibriOS]
  
=== Port FLTK ===
+
=== Widget toolkit expansion ===
* Primary goal: Make a working port of FLTK (widget library) and add it to the automatic build-system.
+
<p>'''General Description'''</p>
* Additional goal: port Scintilla (minimum working version)
+
At the moment KolibriOS has its own library (box_lib) for implementing various GUI widgets (input fields, checkboxes, scrolls, etc.). However, its functionality is far from complete, and its extension would be very useful for further application development.
* Language: C
+
<p>'''What it gives us'''</p>
* Links: [https://www.fltk.org/ Official site]
+
Extended functionality of the library would help developers in the future to create applications with more complex interface, spending less effort on it, as well as to unify interface components in existing applications.
 +
<p>'''Other information'''</p>
 +
* Goals:
 +
** Primary: Extend box_lib (a set of separate widgets) to create a full-featured widget toolkit, design it's architecture and implement focus handling, callbacks and other core ideas.
 +
** Additional: Integrate created box_lib widgets to the C-framework, extend framework with font handling, layout manager
 +
* Language: '''Assembler/FASM, C''' (Framework).
 +
* Difficulty: '''Intermediate''', you need to be familiar with library development and FASM Assembler.
 +
* Time/Size: '''175 hours'''.
 +
* Links:  
 +
** [http://en.wikipedia.org/wiki/Widget_toolkit Baic idea]
 +
** [http://en.wikipedia.org/wiki/List_of_widget_toolkits List of toolkits]
 +
** [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fprograms%2Fdevelop%2Flibraries%2Fbox_lib%2F&rev=9640&peg=9640 box_lib source code on KolibriOS WebSVN]
 +
** [https://github.com/KolibriOS/kolibrios/tree/main/programs/develop/libraries/box_lib box_lib source code on KolibriOS GitHub]
  
=== XMPP/Jabber client ===
+
=== Finish Mbed TLS port ===
* Primary goal: Write a basic XMPP/Jabber library and client for KolibriOS.
+
<p>'''General Description'''</p>
* Additional goal: Implement some xmpp extentions.
+
Mbed TLS is an implementation of the TLS and SSL protocols and associated cryptographic algorithms and support code that aims to be "easy to understand, use, integrate and extend".
* Language: Assembler/FASM
+
<p>'''What it gives us'''</p>
* Links: [http://xmpp.org/xmpp-protocols/rfcs/ XMPP spec], [http://xmpp.org/xmpp-protocols/xmpp-extensions/ XMPP extentions], [http://board.kolibrios.org/viewtopic.php?f=32&t=3111&p=62432#p62433 Unfinished XMPP client for KolibriOS]
+
The implementation of MbedTLS support will significantly expand the capabilities of the KolibriOS networking stack and allow it to be used in more networking scenarios, for example, HTTPS support.
 +
<p>'''Other information'''</p>
 +
* Goals:
 +
** Primary: Finish MbedTLS port (headers for FASM, get ceritificates working) ([https://board.kolibrios.org/viewtopic.php?p=76983#p76983 TODOs]).
 +
** Additional: Update HTTP library (written in FASM) to support HTTPS by using mbedtls.obj.
 +
* Language: '''C, Assembler/FASM'''.
 +
* Difficulty: '''Intermediate''', you need to be familiar with library porting.
 +
* Time/Size: '''175 hours'''.
 +
* Links:
 +
** [https://board.kolibrios.org/viewtopic.php?p=76983 Mbed TLS port thread on KolibriOS forum]
 +
** [https://github.com/Mbed-TLS/mbedtls Mbed TLS source code on GitHub]
  
=== Eolite improvement ===
+
=== FLTK Port ===
GUI FileManager for KolibriOS
+
<p>'''General Description'''</p>
* Primary goal:
+
FLTK, or Fast Light Toolkit, is a cross-platform GUI toolkit. It is designed to provide modern GUI functionality without overkill and supports 3D graphics via OpenGL and native GLUT emulation.
** Icon display mode (preview for images)
+
<p>'''What it gives us'''</p>
** Improved two-pane mode
+
FLTK provides a wide and convenient enough choice of plugins to implement a complex GUI, and is also cross-platform, and therefore its support in KolibriOS will make it easier to write applications. Also, compared to other UI libraries, FLTK uses a lighter design and is limited to GUI functionality.
** Adding tabs
+
<p>'''Other information'''</p>
** Bookmarks / Favorites
+
* Goals:
** Improvement of the procedures for deletion / copying (overwrite request, request to delete files with an attribute is read only)
+
** Primary: Make a working port of FLTK widget library and add it to the automatic build system.
** View exif information
+
** Additional: Port Scintilla source code editing component (minimum working version).
** Etc
+
* Language: '''C++, C--, Assembler/FASM'''
* Additional goal:  
+
* Difficulty: '''Intermediate''', you need to be familiar with library porting.
* Language: C--, Assembler/FASM
+
* Time/Size: '''175 hours'''.
* Links: [https://flatassembler.net/docs.php?article=fasmg FASMG overview], [https://flatassembler.net/