Difference between revisions of "Ideas Page"

From KolibriOS wiki
Jump to navigation Jump to search
(17 intermediate revisions by 5 users not shown)
Line 52: Line 52:
 
| [[#OpenBios_in_Loader|OpenBios in Loader]]
 
| [[#OpenBios_in_Loader|OpenBios in Loader]]
 
| Kernel/Application
 
| Kernel/Application
| Forth, C, FASM (Assembler)
+
| Forth, FASM (Assembler), C
|  
+
| KPG
 
|-
 
|-
 
| [[#File_system|File system]]
 
| [[#File_system|File system]]
Line 65: Line 65:
 
| dunkaist
 
| dunkaist
 
|-
 
|-
| [[#Port_PolarSSL|Port PolarSSL]]
+
| [[#Port_Mbed_TLS|Port Mbed TLS]]
 
| Library
 
| Library
 
| C/FASM
 
| C/FASM
Line 74: Line 74:
 
| C++
 
| C++
 
| Punk_Joker
 
| Punk_Joker
|-
 
| [[#XMPP.2FJabber_client|XMPP/Jabber client]]
 
| Application
 
| Assembler/FASM
 
|
 
|-
 
| [[#Eolite_improvement|Eolite_improvement]]
 
| Application
 
| C--
 
| Leency
 
 
|-
 
|-
 
| [[#Fasmg_port|Fasmg port]]
 
| [[#Fasmg_port|Fasmg port]]
Line 91: Line 81:
 
|-
 
|-
 
| [[#Unicode_library|Unicode library]]
 
| [[#Unicode_library|Unicode library]]
| Library/Application
 
| FASM (Assembler)
 
| dunkaist
 
|-
 
| [[#Document_viewer|Document viewer]]
 
 
| Library/Application
 
| Library/Application
 
| FASM (Assembler)
 
| FASM (Assembler)
Line 108: Line 93:
 
| Kernel
 
| Kernel
 
| FASM (Assembler)
 
| FASM (Assembler)
| dunkaist
 
|-
 
| [[#GIMP_plugin_for_skins|GIMP plugin for skins]]
 
| Application
 
| C/Python/Scheme
 
 
| dunkaist
 
| dunkaist
 
|-
 
|-
Line 122: Line 102:
  
 
=== OpenBios in Loader ===
 
=== OpenBios in Loader ===
OpenBIOS is a free, portable implementation of IEEE 1275-1994 (Open Firmware). [http://www.openbios.org/ Find detailed information about OpenBIOS]
+
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
 
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.
 
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
 
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.   
 
and client (operating system) control in command line like shell in Linux.   
OpenBios implentation Fcode - 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.
+
OpenBios implentation Fcode [https://www.openbios.org/Forth/FCode] - 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.
 
* Primary goal: Add OpenBios ("Forth") support to the system bootloader.
 
* Additional goal: Create simple interactive more device drivers  
 
* Additional goal: Create simple interactive more device drivers  
* Language: Forth, C, FASM (Assembler)
+
* Language: Forth, FASM (Assembler), C
* Links: [https://github.com/openbios Openbios Firmware]
+
* Links: [https://github.com/openbios Openbios Firmware in Github]
  
 
=== File system ===
 
=== File system ===
Line 145: Line 125:
 
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]
 
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]
  
=== Port PolarSSL ===
+
=== Port Mbed TLS ===
* Primary goal: Make a working port of PolarSSL (as native KolibriOS MS COFF library) and add it to the automatic build-system.
+
* Primary goal: Make a working port of Mbed TLS (previously PolarSSL) as native KolibriOS MS COFF library and add it to the automatic build-system.
 
* Additional goal: Update HTTP library (written in FASM) to support HTTPS.
 
* Additional goal: Update HTTP library (written in FASM) to support HTTPS.
 
* Language: C/FASM
 
* Language: C/FASM
* 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]
+
* 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], [https://github.com/rgimad/kos_mbedtls Port of mbedTLS to Kolibri (as a static library) + working example]
  
 
=== Port FLTK ===
 
=== Port FLTK ===
 
* Primary goal: Make a working port of FLTK (widget library) and add it to the automatic build-system.
 
* 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)
 
* Additional goal: port Scintilla (minimum working version)
* Language: C
+
* Language: C++
 
* Links: [https://www.fltk.org/ Official site]
 
* Links: [https://www.fltk.org/ Official site]
  
=== XMPP/Jabber client ===
+
Language: C--, Assembler/FASM
* Primary goal: Write a basic XMPP/Jabber library and client for KolibriOS.
 
* Additional goal: Implement some xmpp extentions.
 
* Language: Assembler/FASM
 
* 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]
 
 
 
=== Eolite improvement ===
 
GUI FileManager for KolibriOS
 
* Primary goal:
 
** Icon display mode (preview for images)
 
** Improved two-pane mode
 
** Adding tabs
 
** Bookmarks / Favorites
 
** Improvement of the procedures for deletion / copying (overwrite request, request to delete files with an attribute is read only)
 
** View exif information
 
** Etc
 
* Additional goal:
 
* Language: C--, Assembler/FASM
 
* Links: [https://flatassembler.net/docs.php?article=fasmg FASMG overview], [https://flatassembler.net/docs.php?article=fasmg_manual FASMG manual]
 
  
 
=== Fasmg port ===
 
=== Fasmg port ===
Line 190: Line 152:
 
* Language: Assembler/FASM
 
* Language: Assembler/FASM
 
* Links: [http://git.suckless.org/libutf/ libutf]
 
* Links: [http://git.suckless.org/libutf/ libutf]
 
=== Document viewer ===
 
Document viewer is a vital part of any desktop operating system. Text, config and source code files can be viewed by existing text editors, however binary documents viewer is still required.
 
* Primary goal: Design API for a document viewer extendable with plugins, implement it as a KolibriOS application.
 
* Additional goal: Write some plugins like PDF or DJVU.
 
* Language: Assembler/FASM
 
* Links: [https://pwmt.org/projects/zathura/plugins/development/ Zathura plugin system]
 
  
 
=== Virt-IO driver ===
 
=== Virt-IO driver ===
Line 210: Line 165:
 
* Language: Assembler/FASM
 
* Language: Assembler/FASM
 
* Links: [https://en.wikipedia.org/wiki/Loop_device loop device overview]
 
* Links: [https://en.wikipedia.org/wiki/Loop_device loop device overview]
 
=== GIMP plugin for skins ===
 
KolibriOS skins are currently written in FASM. It is inconvenient to design them as there is no realtime preview and all skin images are edited separately.
 
* Primary goal: Write a GIMP plugin to open/save KolibriOS skins.
 
* Additional goal: Create more skins.
 
* Language: C/Python/Scheme
 
* Links: [https://developer.gimp.org/writing-a-plug-in/1/ How to write a GIMP plugin]
 
  
 
=== RSS/Atom news reader ===
 
=== RSS/Atom news reader ===
Line 227: Line 175:
 
[[Category:Misc]]
 
[[Category:Misc]]
  
Most importantly...Have Fun!
+
Most importantly... Have Fun!

Revision as of 15:47, 7 September 2021

Introduction

This is our ideas page for new developers.

Organization

You can find the organizers at our forum: http://board.kolibrios.org/

Name Nickname Role
Ivan Baravy dunkaist Administrator, Mentor
Dmitriy Smirnov Pathoswithin Mentor, (Administrator)
Serhii Sakhno Punk_Joker Mentor
Kiril Lipatov Leency C-- Mentor
Konstantin Pakhtusov KPG Mentor (Forth)

Ideas

Sortable list of ideas for easy navigation

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
Port Mbed TLS 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

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

Port Mbed TLS

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

Most importantly... Have Fun!