Difference between revisions of "Ideas Page"

From KolibriOS wiki
Jump to navigation Jump to search
(Ideas page)
 
(45 intermediate revisions by 7 users not shown)
Line 1: Line 1:
 
== Introduction ==
 
== Introduction ==
This is an idea page for new developers.
+
This is our ideas page for new developers.
 
 
KolibriOS is going to apply as a mentoring organization for [https://developers.google.com/open-source/gsoc/ Google Summer of Code 2018]. This page contains our ideas list and some additional information for students and mentors.
 
 
 
We have previously successfully participated as a Mentoring Organization in Google Summer of Code in 2014 and 2016. Historical links to these events are available for your reference:
 
 
 
*2014: [[Google Summer of Code 2014|Ideas page]], [https://www.google-melange.com/archive/gsoc/2014/orgs/kolibrios organization and accepted projects]
 
*2016: [[Google Summer of Code 2016|Ideas page]], [https://summerofcode.withgoogle.com/archive/2016/organizations/5678701068943360/ organization and accepted projects]
 
 
 
We are optimistic and therefore always discovering oportunities for further development of KolibriOS. In 2013, we have run an [[KolibriOS Summer of Code 2013|independent Summer of Code]] using money we [http://www.kickstarter.com/projects/kolibrios/kolibrios-help-us-hold-our-own-summer-of-code-2013 collected with Kickstarter]. Two students have worked on KolibriOS, and the results of 2013 Summer of Code were: adding write support for EXT2 filesystem, and adding (read-only) support for XFS filesystem.
 
 
 
== Student Requirements ==
 
Prospective students are required to register [http://board.kolibrios.org/ on our developers forum], join the [http://board.kolibrios.org/chat.php developers chat] and submit a small bugfix / improvement [[Get_source_code|to our SVN]] in order for their application to be considered. Examples of such tasks can be obtained by asking on developers chat or on our IRC channel (#kolibrios @ irc.freenode.net). This requirement is only to show us that you are able to work with [[Get_source_code|our SVN]] and interact with our developers if you are selected. '''This task has to be completed before  [https://developers.google.com/open-source/gsoc/timeline student application deadline] (03 April 16:00 UTC).'''<br><br>
 
In addition, students need to answer the following questions when applying:
 
# Full Name (First + Last Name).
 
# E-mail address.
 
# Phone (home or mobile).
 
# Another phone '''for emergency cases''' (if we cannot contact you) - parents, boy/girlfriend, husband/wife etc.
 
# Nickname you plan to use on our forums, SVN repository or IRC chat.
 
# Age.
 
# Country + city of residence.
 
# Human languages you speak (state 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.
 
# Name of program (or faculty, or department) in that college/university you are accepted into or enrolled in.
 
# 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 2017 ideas (or suggest your own idea, if you don't like any of the proposed ideas). Please provide an approximate work plan for your task split to 1-week intervals, as well as expected outcome of your work. '''This point should be detailed as much as possible, as your application would be evaluated mainly based on what you write here.''' You are welcome (and even encouraged!) to collaborate with potential mentors on this paragraph.
 
# What other time commitments, such as school work, university studies, another job, planned vacation, etc., will you have between May 23 and August 23 (coding period)? Please be as specific as possible. ''Bear in mind that GSoC is like a full-time job, so if you consider taking a summer semester at the university (with more than 1-2 courses), or intend to perform an internship or work elsewhere during the summer in addition to GSoC, you will likely be '''NOT''' accepted.''
 
  
 
== Organization ==
 
== Organization ==
Line 38: Line 10:
 
|'''Nickname'''
 
|'''Nickname'''
 
|'''Role'''
 
|'''Role'''
 +
|-
 +
|Ivan Baravy
 +
|[[User:dunkaist|dunkaist]]
 +
|Administrator, Mentor
 
|-
 
|-
 
|Dmitriy Smirnov
 
|Dmitriy Smirnov
 
|Pathoswithin
 
|Pathoswithin
|Administrator for GSoC, mentor
+
|Mentor, (Administrator)
|-
 
|Ivan Baravy
 
|[[User:dunkaist|dunkaist]]
 
|Mentor, backup administrator
 
 
|-
 
|-
|Ashish Gupta
+
|Serhii Sakhno
|[[User:ashmew2|ashmew2]]
+
|[[User:Punk_Joker|Punk_Joker]]
 
|Mentor
 
|Mentor
 
|-
 
|-
|Vladimir
+
|Kiril Lipatov
|Siemargl
+
|[[User:Leency|Leency]]
|Mentor
+
|C-- Mentor
 
|-
 
|-
|Jeffrey Amelynck
+
|Konstantin Pakhtusov
|[[User:hidnplayr|hidnplayr]]
+
|[[User:KPG|KPG]]
|Mentor
+
|Mentor (Forth)
 
|}
 
|}
We have discussed "Google Summer of Code 2017" application with all active members of the KolibriOS Project Team, and selected only those people who have knowledge, dedication, and time to help their students during the entire summer. Each one of them was assigned to mentor projects in his area of specialization only. In a rare event when a Mentor from the above list cannot continue mentoring his student(s) due to personal circumstances, we will try to find a replacement Mentor, or ask the remaining Mentors to cover for the missing one. Additionally, there is always a number of knowledgeable members of our team hanging around our [http://board.kolibrios.org/chat.php forum chat], and they will gladly answer any student questions that may arise, even if they haven't volunteered as Mentors themselves.
 
 
Most Mentors selected for this year are the same that were originally proposed for last year, and they have already proved to be responsible, helpful and knowledgeable during GSoC'2014 and GSoC'2016.
 
  
== Ideas for Google Summer of Code 2018 ==
+
== Ideas ==
The below list contains ideas suggested by KolibriOS team members. '''It is neither complete nor final.'''<br>
 
Students are welcome ('''and even encouraged''') to suggest their own ideas for GSoC, provided they can find a mentor amongst KolibriOS developers to guide them.
 
 
<!--
 
<!--
Pile of ideas:
+
documentation from source generator
documentation from source generator, filesystem in userspace (FUSE)
+
filesystem in userspace (FUSE)
 +
gui layout engine using Cassowary algorithm https://duckduckgo.com/?q=The+Cassowary+linear+arithmetic+constraint+solving+algorithm&t=ffab&ia=web
 +
test suite: kernel, libraries
 +
disk usage utility
 +
libsort
 +
Haiku vector icon format
 
-->
 
-->
 
=== Sortable list of ideas for easy navigation ===
 
=== Sortable list of ideas for easy navigation ===
Line 76: Line 48:
 
! Area
 
! Area
 
! Programming Language
 
! Programming Language
! Mentor
+
! Mentors
 +
|-
 +
| [[#OpenBios_in_Loader|OpenBios in Loader]]
 +
| Kernel/Application
 +
| Forth, FASM (Assembler), C
 +
| KPG
 
|-
 
|-
 
| [[#File_system|File system]]
 
| [[#File_system|File system]]
| Kernel
+
| Kernel/Application
 
| FASM (Assembler)
 
| FASM (Assembler)
 
| Pathoswithin
 
| Pathoswithin
Line 86: Line 63:
 
| System wide
 
| System wide
 
| FASM (Assembler), C
 
| FASM (Assembler), C
| Siemargl
+
| dunkaist
 
|-
 
|-
| [[#Port_PolarSSL|Port PolarSSL]]
+
| [[#Port_Mbed_TLS|Port Mbed TLS]]
 
| Library
 
| Library
 
| C/FASM
 
| C/FASM
| ashmew2
+
| Punk_Joker
 
|-
 
|-
| [[#XMPP.2FJabber_client|XMPP/Jabber client]]
+
| [[#Port_FLTK|Port FLTK]]
| Application
+
| Library
| Assembler/FASM
+
| C++
| ashmew2
+
| Punk_Joker
 
|-
 
|-
 
| [[#Fasmg_port|Fasmg port]]
 
| [[#Fasmg_port|Fasmg port]]
Line 104: 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 122: Line 93:
 
| Kernel
 
| Kernel
 
| FASM (Assembler)
 
| FASM (Assembler)
| dunkaist
 
|-
 
| [[#GIMP_plugin_for_skins|GIMP plugin for skins]]
 
| Application
 
| C/Python/Scheme
 
 
| dunkaist
 
| dunkaist
 
|-
 
|-
Line 133: Line 99:
 
| FASM (Assembler)
 
| FASM (Assembler)
 
| dunkaist
 
| dunkaist
-->
 
 
|}
 
|}
 +
 +
=== OpenBios in Loader ===
 +
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. 
 +
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.
 +
* Additional goal: Create simple interactive more device drivers
 +
* Language: Forth, FASM (Assembler), C
 +
* Links: [https://github.com/openbios Openbios Firmware in Github]
  
 
=== File system ===
 
=== File system ===
Line 140: Line 117:
 
* Additional goal: Improve write support for NTFS file system.
 
* Additional goal: Improve write support for NTFS file system.
 
* Language: FASM (Assembler)
 
* Language: FASM (Assembler)
* Mentor: Pathoswithin
 
 
* Links: [https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout Ext4 Disk Layout]
 
* Links: [https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout Ext4 Disk Layout]
  
Line 147: Line 123:
 
* Additional goal: Integrate created box_lib widgets to the C-framework, extend framework with font handling, layout manager
 
* Additional goal: Integrate created box_lib widgets to the C-framework, extend framework with font handling, layout manager
 
* Language: FASM (Assembler), C (framework)  
 
* Language: FASM (Assembler), C (framework)  
* Mentor: Siemargl
 
 
* 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
* Mentor: ashmew2
+
* 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]
* 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]
 
  
=== XMPP/Jabber client ===
+
=== Port FLTK ===
* Primary goal: Write a basic XMPP/Jabber library and client for KolibriOS.
+
* Primary goal: Make a working port of FLTK (widget library) and add it to the automatic build-system.
* Additional goal: Implement some xmpp extentions.
+
* Additional goal: port Scintilla (minimum working version)
* Language: Assembler/FASM
+
* Language: C++
* Mentor: ashmew2
+
* Links: [https://www.fltk.org/ Official site]
* 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]
+
 
 +
Language: C--, Assembler/FASM
  
 
=== Fasmg port ===
 
=== Fasmg port ===
Line 169: Line 144:
 
* Additional goal: Implement macros for compatibility with FASM.
 
* Additional goal: Implement macros for compatibility with FASM.
 
* Language: Assembler/FASM/FASMG
 
* Language: Assembler/FASM/FASMG
* Mentor: dunkaist
 
 
* Links: [https://flatassembler.net/docs.php?article=fasmg FASMG overview], [https://flatassembler.net/docs.php?article=fasmg_manual FASMG manual]
 
* Links: [https://flatassembler.net/docs.php?article=fasmg FASMG overview], [https://flatassembler.net/docs.php?article=fasmg_manual FASMG manual]
  
Line 177: Line 151:
 
* Additional goal: Upgrade existing applications to use the new library.
 
* Additional goal: Upgrade existing applications to use the new library.
 
* Language: Assembler/FASM
 
* Language: Assembler/FASM
* Mentor: dunkaist
 
 
* 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
 
* Mentor: dunkaist
 
* Links: [https://pwmt.org/projects/zathura/plugins/development/ Zathura plugin system]
 
  
 
=== Virt-IO driver ===
 
=== Virt-IO driver ===
Line 194: Line 158:
 
* Additional goal: Write more drivers.
 
* Additional goal: Write more drivers.
 
* Language: Assembler/FASM
 
* Language: Assembler/FASM
* Mentor: dunkaist
 
 
* Links: [https://wiki.libvirt.org/page/Virtio Virt-IO wiki]
 
* Links: [https://wiki.libvirt.org/page/Virtio Virt-IO wiki]
  
Line 201: Line 164:
 
* Additional goal: Prepare a set of disk images to be used in filesystem unit tests.
 
* Additional goal: Prepare a set of disk images to be used in filesystem unit tests.
 
* Language: Assembler/FASM
 
* Language: Assembler/FASM
* Mentor: dunkaist
 
 
* 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
 
* Mentor: dunkaist
 
* 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 217: Line 171:
 
* Additional goal: Add Atom support to the app.
 
* Additional goal: Add Atom support to the app.
 
* Language: Assembler/FASM
 
* Language: Assembler/FASM
* Mentor: dunkaist
 
 
* Links: [http://tibleiz.net/asm-xml/ AsmXml library], [https://en.wikipedia.org/wiki/RSS RSS], [https://en.wikipedia.org/wiki/Atom_(standard) Atom]
 
* Links: [http://tibleiz.net/asm-xml/ AsmXml library], [https://en.wikipedia.org/wiki/RSS RSS], [https://en.wikipedia.org/wiki/Atom_(standard) Atom]
-->
 
  
 
[[Category:Misc]]
 
[[Category:Misc]]
  
== Rough Guide for Prospective Students ==
+
Most importantly... Have Fun!
 
 
* As the kernel is written in FASM, ability to write and understand i386-assembly code is very useful.
 
* C is also a plus as some applications/libraries and components are written in C. Also, C is useful to interface with assembly at times.
 
* Familiarity with the GNu landscape like Autotools, GCC etc are also a plus to have (especially for porting software).
 
* The desire to take challenging problems and solve them is also required as several parts of the code base require thought for design and implementation (mentors can help you with that).
 
* Hang out on our forum, chat and get in touch with other developers.
 
* Languages used for communication are Russian and English (although most developers are bilingual, and you can always ask someone for help).
 
 
 
== I'm a potential GSoC student. I'm scared of all the assembly and docs here! Where should I start?! :'( ==
 
Start here : http://wiki.kolibrios.org/wiki/HowTo
 
This will help you set up KolibriOS. Easiest will be to use either Qemu or VirtualBox as most developers use it and thus will be able to help you with eventual problems. Feel free however to try something else and let us know how it goes!
 
 
 
== I'm a potential GSoC student. What is this test task?! ==
 
Regarding the test mentioned above, it is for assessing your current skill set and their relevance regarding the project that you want to eventually work on. In most cases, your potential mentor will assign you a task via IRC / Forum Chat but another developer can do this as well . Meanwhile, In case you are waiting for a test task, you can go through our [http://bugs.kolibrios.org bug tracker] and find a small task to work on yourself, or learn about KolibriOS by going through example code.
 
 
 
== I want to play with the code but my college blocks SVN ==
 
If you are have trouble accessing, please do mention it on the forums.
 
You can temporarily use this backup git repository: http://repo.or.cz/w/kolibrios.git
 
 
 
== All the ideas seem interesting, But.. ==
 
Feel free to suggest your own idea! This is encouraged largely both in GSoC and KolibriOS. The mentors will be glad to such an idea and assess it's feasibility / usability for Kolibri.
 
 
 
== Great Guide! But I still don't understand X ==
 
Please read Documentation / Development pages on this Wiki. If you have any doubts, feel free to connect with other KolibriOS users and developers through Forum Chat or #kolibrios on Freenode.
 
Please ask developers / mentors on Forum Chat or IRC . Please be patient on IRC and Forum Chat as developers are on different time zones and it might take a few hours to get back to you. You can also start a Forum thread if it is about something you feel is a general issue.
 
 
 
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!