http://wiki.kolibrios.org/api.php?action=feedcontributions&user=Punk+Joker&feedformat=atomKolibriOS wiki - User contributions [en]2024-03-29T14:05:22ZUser contributionsMediaWiki 1.35.7http://wiki.kolibrios.org/index.php?title=Ideas_Page&diff=6030Ideas Page2023-02-13T14:02:35Z<p>Punk Joker: /* Sortable list of ideas for easy navigation */</p>
<hr />
<div>== Introduction ==<br />
This is our ideas page for new developers.<br />
<br />
== Google Summer of Code'23 Contributor Requirements ==<br />
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. '''This task has to be completed before contributor application deadline (4 April 18:00 UTC).'''<br><br><br />
In addition, contributors need to answer the following questions when applying:<br />
# Full Name (First + Last Name).<br />
# E-mail address.<br />
# Nickname you plan to use on our forums, SVN/GIT repository or IRC chat.<br />
# Age.<br />
# Country + city of residence.<br />
# Human languages you speak (write all languages and knowledge level - basic/intermediate/expert/mother tongue).<br />
# Name of college or university you are accepted into or enrolled in + link to their website (if applicable).<br />
# Name of program (or faculty, or department) in that college/university you are accepted into or enrolled in (if applicable).<br />
# Your current timezone in UTC/GMT terms (for example, Paris is UTC/GMT +1 hours right now).<br />
# Have you been involved with any open-source project in the past? If yes, which one, and what have you done for that project?<br />
# 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.<br />
# 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).<br />
# What other time commitments, such as school work, another job, planned vacation, etc., will you have between May 29 and August 28?<br />
<br />
== Organization ==<br />
<br />
You can find the organizers at our forum: https://board.kolibrios.org<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
|Ivan Baravy<br />
|[[User:dunkaist|dunkaist]]<br />
|Administrator, Mentor<br />
|-<br />
|Jeffrey Amelynck<br />
|[[User:Hidnplayr|hidnplayr]]<br />
|Mentor, Backup Administrator<br />
|-<br />
|Dmitriy Smirnov<br />
|Pathoswithin<br />
|Mentor<br />
|-<br />
|Serhii Sakhno<br />
|[[User:Punk_Joker|Punk_Joker]]<br />
|Mentor<br />
|-<br />
|Kiril Lipatov<br />
|[[User:Leency|Leency]]<br />
|C-- Mentor<br />
|-<br />
|Konstantin Pakhtusov<br />
|[[User:KPG|KPG]]<br />
|Mentor (Forth)<br />
|}<br />
<br />
== Ideas ==<br />
<!--<br />
documentation from source generator<br />
filesystem in userspace (FUSE)<br />
gui layout engine using Cassowary algorithm https://duckduckgo.com/?q=The+Cassowary+linear+arithmetic+constraint+solving+algorithm&t=ffab&ia=web<br />
test suite: kernel, libraries<br />
disk usage utility<br />
libsort<br />
Haiku vector icon format<br />
--><br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Programming Language<br />
! Mentors<br />
|-<br />
| [[#OpenBios_in_Loader|OpenBios in Loader]]<br />
| Kernel/Application<br />
| Forth, FASM (Assembler), C<br />
| KPG<br />
|-<br />
| [[#File_system|File system]]<br />
| Kernel/Application<br />
| FASM (Assembler)<br />
| Pathoswithin<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide<br />
| FASM (Assembler), C<br />
| dunkaist<br />
|-<br />
| [[#Finish Mbed TLS port|Finish Mbed TLS port]]<br />
| Library<br />
| C/FASM<br />
| Punk_Joker<br />
|-<br />
| [[#Port_FLTK|Port FLTK]]<br />
| Library<br />
| C++<br />
| Punk_Joker<br />
|-<br />
| [[#Fasmg_port|Fasmg port]]<br />
| Application<br />
| FASM/FASMG (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Unicode_library|Unicode library]]<br />
| Library/Application<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Virt-IO_driver|Virt-IO driver]]<br />
| Kernel<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Loop_device_driver|Loop device driver]]<br />
| Kernel<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#NVMe_driver|NVMe driver]]<br />
| Kernel<br />
| FASM (Assembler)<br />
| Punk_Joker<br />
|-<br />
| [[#RSS/Atom_news_reader|RSS/Atom news reader]]<br />
| Application<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Port SDL2|Port SDL2]]<br />
| Library<br />
| C<br />
| rgimad<br />
|-<br />
| [[#Add forms to WebView|Add forms to WebView]]<br />
| Application<br />
| C--<br />
| rgimad<br />
|-<br />
| [[#J2ME Emulator|J2ME Emulator]]<br />
| Application<br />
| C, Java<br />
| rgimad<br />
|-<br />
| [[#Screen Ruler|Screen Ruler]]<br />
| Application<br />
| FASM (Assembler)<br />
| rgimad<br />
|}<br />
<br />
=== OpenBios in Loader ===<br />
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]<br />
OpenBIOS can replace your system firmware (BIOS) partly or completely. It can also be used as a bootloader to create an Open Firmware compatible<br />
interface between legacy firmware and an operating system.<br />
This is achieved by a modular concept that consists of a portable Forth kernel and three interfaces for user interaction, device initialization<br />
and client (operating system) control in command line like shell in Linux. <br />
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.<br />
* Primary goal: Add OpenBios ("Forth") support to the system bootloader.<br />
* Additional goal: Create simple interactive more device drivers <br />
* Language: Forth, FASM (Assembler), C<br />
* Links: [https://github.com/openbios Openbios Firmware in Github]<br />
<br />
=== File system ===<br />
* Primary goal: Add write support for ext4 file system (ext4 reading and ext2 writing are already supported).<br />
* Additional goal: Improve write support for NTFS file system.<br />
* Language: FASM (Assembler)<br />
* Links: [https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout Ext4 Disk Layout]<br />
<br />
=== Widget toolkit ===<br />
* 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.<br />
* Additional goal: Integrate created box_lib widgets to the C-framework, extend framework with font handling, layout manager<br />
* Language: FASM (Assembler), C (framework) <br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
=== Finish Mbed TLS port ===<br />
* Primary goal: Finish MbedTLS port (headers for FASM, get ceritificates working) ([https://board.kolibrios.org/viewtopic.php?p=76983#p76983 TODOs])<br />
* Additional goal: Update HTTP library (written in FASM) to support HTTPS by using mbedtls.obj<br />
* Language: C/FASM<br />
* Links: [https://board.kolibrios.org/viewtopic.php?p=76983 MbedTLS port thread]<br />
<br />
=== Port FLTK ===<br />
* Primary goal: Make a working port of FLTK (widget library) and add it to the automatic build-system.<br />
* Additional goal: port Scintilla (minimum working version)<br />
* Language: C++<br />
* Links: [https://www.fltk.org/ Official site]<br />
<br />
Language: C--, Assembler/FASM<br />
<br />
=== Fasmg port ===<br />
Tomasz Grysztar (creator of FASM) [https://flatassembler.net/docs.php?article=fasmg introduced] FASMG, a new assembler engine. It would be nice to support its new syntax in KolibriOS.<br />
* Primary goal: Write FASMG application like FASM one. Port standard KolibriOS macros to FASMG syntax.<br />
* Additional goal: Implement macros for compatibility with FASM.<br />
* Language: Assembler/FASM/FASMG<br />
* Links: [https://flatassembler.net/docs.php?article=fasmg FASMG overview], [https://flatassembler.net/docs.php?article=fasmg_manual FASMG manual]<br />
<br />
=== Unicode library ===<br />
Unicode is a huge and sophisticated standard. Nevertheless modern OS should provide libraries with Unicode related routines like NFC, NFD, sorting, comparing, etc.<br />
* Primary goal: Write a tiny Unicode library with core Unicode algorithms and example application.<br />
* Additional goal: Upgrade existing applications to use the new library.<br />
* Language: Assembler/FASM<br />
* Links: [http://git.suckless.org/libutf/ libutf]<br />
<br />
=== Virt-IO driver ===<br />
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. <br />
* Primary goal: Write kernel driver for, say, virt-io Ethernet card.<br />
* Additional goal: Write more drivers.<br />
* Language: Assembler/FASM<br />
* Links: [https://wiki.libvirt.org/page/Virtio Virt-IO wiki]<br />
<br />
=== Loop device driver ===<br />
* Primary goal: Write loop device driver and example application to manage loop devices.<br />
* Additional goal: Prepare a set of disk images to be used in filesystem unit tests.<br />
* Language: Assembler/FASM<br />
* Links: [https://en.wikipedia.org/wiki/Loop_device loop device overview]<br />
<br />
=== NVMe driver ===<br />
* Primary goal: Write basic NVMe device driver to support NVMe SSD<br />
* Additional goal: Support namespaces<br />
* Language: Assembler/FASM<br />
* Links: [https://nvmexpress.org/developers/nvme-specification/ NVMe Base Specification]<br />
<br />
=== RSS/Atom news reader ===<br />
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.<br />
* Primary goal: Write RSS news reader as a standalone KolibriOS application.<br />
* Additional goal: Add Atom support to the app.<br />
* Language: Assembler/FASM<br />
* Links: [http://tibleiz.net/asm-xml/ AsmXml library], [https://en.wikipedia.org/wiki/RSS RSS], [https://en.wikipedia.org/wiki/Atom_(standard) Atom]<br />
<br />
=== Port SDL2 ===<br />
SDL1.2 is already ported to KolibriOS, but there is no SDL2 port.<br />
* Primary goal: Make a working port of SDL2.<br />
* Additional goal: Port additional SDL2 libraries: SDL2_image, SDL2_mixer, SDL2_ttf, etc.<br />
* Language: C<br />
* Links: [https://www.libsdl.org/ libsdl.org]<br />
<br />
=== Add forms to WebView ===<br />
Currently WebView browser doesn't support support html forms (<form>, <input>, etc.)<br />
* Primary goal: Add support for <form>, <input> for types that was prior to HTML5<br />
* Additional goal: Add input types that was introduced in HTML5<br />
* Language: C--<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fprograms%2Fcmm%2Fbrowser%2F WebView on svn]<br />
<br />
=== J2ME Emulator ===<br />
Thousands of games and programs have been created for the j2me platform. It would be cool to be able to run them in KolibriOS.<br />
* Primary goal: Port JVM and java.microedition.* runtime<br />
* Additional goal: Make it run most of popular j2me games<br />
* Language: C, Java<br />
* Links: [https://github.com/digitalgust/miniJVM miniJVM]<br />
<br />
=== Screen Ruler ===<br />
Program for conveniently measuring the distance between selected points on the screen.<br />
* Primary goal: measure distance by X, Y, diagonal. <br />
* Additional goal: Also with a built-in magnifier and aim to see which pixel you choose.<br />
* Language: FASM<br />
* Links: for additional goal it would be useful to see: [http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fprograms%2Fdemos%2Fmagnify%2Ftrunk%2Fmagnify.asm sources of Magnify]<br />
<br />
<br />
[[Category:Misc]]<br />
<br />
== Rough Guide for Prospective Contributors ==<br />
<br />
* As the kernel is written in FASM, ability to write and understand i386-assembly code is very useful.<br />
* 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.<br />
* Familiarity with the GNU landscape like Autotools, GCC etc are also a plus to have (especially for porting software)<br />
* 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. (The mentors can help you with that :) )<br />
* Hanging out on LiberaChat's #kolibriOS and [https://board.kolibrios.org our forum] where developers mostly hang out.<br />
* Languages used for communication are English and Russian (although most developers are bilingual, and you can always ask someone for help)<br />
* Get in touch with other developers via IRC / Forums and enjoy your stay!<br />
<br />
== I'm a potential GSoC contributor. I'm scared of all the assembly and docs here! Where should I start?! :'( ==<br />
Start here : http://wiki.kolibrios.org/wiki/HowTo<br />
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!<br />
<br />
== I'm a potential GSoC contributor. What is this test task?! ==<br />
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 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.<br />
<br />
== I want to play with the code but my college blocks SVN ==<br />
If you are have trouble accessing, please do mention it on the forums.<br />
You can temporarily use this backup git repository: http://repo.or.cz/w/kolibrios.git<br />
<br />
== All the ideas seem interesting, But.. ==<br />
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.<br />
<br />
== Great Guide! But I still don't understand X ==<br />
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 LiberaChat.<br />
Please ask developers / mentors on Forum Chat or IRC . Please be patient on IRC and Forum 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.<br />
<br />
Most importantly...Have Fun!</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Ideas_Page&diff=6029Ideas Page2023-02-13T14:00:49Z<p>Punk Joker: </p>
<hr />
<div>== Introduction ==<br />
This is our ideas page for new developers.<br />
<br />
== Google Summer of Code'23 Contributor Requirements ==<br />
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. '''This task has to be completed before contributor application deadline (4 April 18:00 UTC).'''<br><br><br />
In addition, contributors need to answer the following questions when applying:<br />
# Full Name (First + Last Name).<br />
# E-mail address.<br />
# Nickname you plan to use on our forums, SVN/GIT repository or IRC chat.<br />
# Age.<br />
# Country + city of residence.<br />
# Human languages you speak (write all languages and knowledge level - basic/intermediate/expert/mother tongue).<br />
# Name of college or university you are accepted into or enrolled in + link to their website (if applicable).<br />
# Name of program (or faculty, or department) in that college/university you are accepted into or enrolled in (if applicable).<br />
# Your current timezone in UTC/GMT terms (for example, Paris is UTC/GMT +1 hours right now).<br />
# Have you been involved with any open-source project in the past? If yes, which one, and what have you done for that project?<br />
# 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.<br />
# 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).<br />
# What other time commitments, such as school work, another job, planned vacation, etc., will you have between May 29 and August 28?<br />
<br />
== Organization ==<br />
<br />
You can find the organizers at our forum: https://board.kolibrios.org<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
|Ivan Baravy<br />
|[[User:dunkaist|dunkaist]]<br />
|Administrator, Mentor<br />
|-<br />
|Jeffrey Amelynck<br />
|[[User:Hidnplayr|hidnplayr]]<br />
|Mentor, Backup Administrator<br />
|-<br />
|Dmitriy Smirnov<br />
|Pathoswithin<br />
|Mentor<br />
|-<br />
|Serhii Sakhno<br />
|[[User:Punk_Joker|Punk_Joker]]<br />
|Mentor<br />
|-<br />
|Kiril Lipatov<br />
|[[User:Leency|Leency]]<br />
|C-- Mentor<br />
|-<br />
|Konstantin Pakhtusov<br />
|[[User:KPG|KPG]]<br />
|Mentor (Forth)<br />
|}<br />
<br />
== Ideas ==<br />
<!--<br />
documentation from source generator<br />
filesystem in userspace (FUSE)<br />
gui layout engine using Cassowary algorithm https://duckduckgo.com/?q=The+Cassowary+linear+arithmetic+constraint+solving+algorithm&t=ffab&ia=web<br />
test suite: kernel, libraries<br />
disk usage utility<br />
libsort<br />
Haiku vector icon format<br />
--><br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Programming Language<br />
! Mentors<br />
|-<br />
| [[#OpenBios_in_Loader|OpenBios in Loader]]<br />
| Kernel/Application<br />
| Forth, FASM (Assembler), C<br />
| KPG<br />
|-<br />
| [[#File_system|File system]]<br />
| Kernel/Application<br />
| FASM (Assembler)<br />
| Pathoswithin<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide<br />
| FASM (Assembler), C<br />
| dunkaist<br />
|-<br />
| [[#Finish Mbed TLS port|Finish Mbed TLS port]]<br />
| Library<br />
| C/FASM<br />
| Punk_Joker<br />
|-<br />
| [[#Port_FLTK|Port FLTK]]<br />
| Library<br />
| C++<br />
| Punk_Joker<br />
|-<br />
| [[#Fasmg_port|Fasmg port]]<br />
| Application<br />
| FASM/FASMG (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Unicode_library|Unicode library]]<br />
| Library/Application<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Virt-IO_driver|Virt-IO driver]]<br />
| Kernel<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Loop_device_driver|Loop device driver]]<br />
| Kernel<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#NVME_driver|NVME driver]]<br />
| Kernel<br />
| FASM (Assembler)<br />
| Punk_Joker<br />
|-<br />
| [[#RSS/Atom_news_reader|RSS/Atom news reader]]<br />
| Application<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Port SDL2|Port SDL2]]<br />
| Library<br />
| C<br />
| rgimad<br />
|-<br />
| [[#Add forms to WebView|Add forms to WebView]]<br />
| Application<br />
| C--<br />
| rgimad<br />
|-<br />
| [[#J2ME Emulator|J2ME Emulator]]<br />
| Application<br />
| C, Java<br />
| rgimad<br />
|-<br />
| [[#Screen Ruler|Screen Ruler]]<br />
| Application<br />
| FASM (Assembler)<br />
| rgimad<br />
|}<br />
<br />
=== OpenBios in Loader ===<br />
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]<br />
OpenBIOS can replace your system firmware (BIOS) partly or completely. It can also be used as a bootloader to create an Open Firmware compatible<br />
interface between legacy firmware and an operating system.<br />
This is achieved by a modular concept that consists of a portable Forth kernel and three interfaces for user interaction, device initialization<br />
and client (operating system) control in command line like shell in Linux. <br />
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.<br />
* Primary goal: Add OpenBios ("Forth") support to the system bootloader.<br />
* Additional goal: Create simple interactive more device drivers <br />
* Language: Forth, FASM (Assembler), C<br />
* Links: [https://github.com/openbios Openbios Firmware in Github]<br />
<br />
=== File system ===<br />
* Primary goal: Add write support for ext4 file system (ext4 reading and ext2 writing are already supported).<br />
* Additional goal: Improve write support for NTFS file system.<br />
* Language: FASM (Assembler)<br />
* Links: [https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout Ext4 Disk Layout]<br />
<br />
=== Widget toolkit ===<br />
* 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.<br />
* Additional goal: Integrate created box_lib widgets to the C-framework, extend framework with font handling, layout manager<br />
* Language: FASM (Assembler), C (framework) <br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
=== Finish Mbed TLS port ===<br />
* Primary goal: Finish MbedTLS port (headers for FASM, get ceritificates working) ([https://board.kolibrios.org/viewtopic.php?p=76983#p76983 TODOs])<br />
* Additional goal: Update HTTP library (written in FASM) to support HTTPS by using mbedtls.obj<br />
* Language: C/FASM<br />
* Links: [https://board.kolibrios.org/viewtopic.php?p=76983 MbedTLS port thread]<br />
<br />
=== Port FLTK ===<br />
* Primary goal: Make a working port of FLTK (widget library) and add it to the automatic build-system.<br />
* Additional goal: port Scintilla (minimum working version)<br />
* Language: C++<br />
* Links: [https://www.fltk.org/ Official site]<br />
<br />
Language: C--, Assembler/FASM<br />
<br />
=== Fasmg port ===<br />
Tomasz Grysztar (creator of FASM) [https://flatassembler.net/docs.php?article=fasmg introduced] FASMG, a new assembler engine. It would be nice to support its new syntax in KolibriOS.<br />
* Primary goal: Write FASMG application like FASM one. Port standard KolibriOS macros to FASMG syntax.<br />
* Additional goal: Implement macros for compatibility with FASM.<br />
* Language: Assembler/FASM/FASMG<br />
* Links: [https://flatassembler.net/docs.php?article=fasmg FASMG overview], [https://flatassembler.net/docs.php?article=fasmg_manual FASMG manual]<br />
<br />
=== Unicode library ===<br />
Unicode is a huge and sophisticated standard. Nevertheless modern OS should provide libraries with Unicode related routines like NFC, NFD, sorting, comparing, etc.<br />
* Primary goal: Write a tiny Unicode library with core Unicode algorithms and example application.<br />
* Additional goal: Upgrade existing applications to use the new library.<br />
* Language: Assembler/FASM<br />
* Links: [http://git.suckless.org/libutf/ libutf]<br />
<br />
=== Virt-IO driver ===<br />
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. <br />
* Primary goal: Write kernel driver for, say, virt-io Ethernet card.<br />
* Additional goal: Write more drivers.<br />
* Language: Assembler/FASM<br />
* Links: [https://wiki.libvirt.org/page/Virtio Virt-IO wiki]<br />
<br />
=== Loop device driver ===<br />
* Primary goal: Write loop device driver and example application to manage loop devices.<br />
* Additional goal: Prepare a set of disk images to be used in filesystem unit tests.<br />
* Language: Assembler/FASM<br />
* Links: [https://en.wikipedia.org/wiki/Loop_device loop device overview]<br />
<br />
=== NVMe driver ===<br />
* Primary goal: Write basic NVMe device driver to support NVMe SSD<br />
* Additional goal: Support namespaces<br />
* Language: Assembler/FASM<br />
* Links: [https://nvmexpress.org/developers/nvme-specification/ NVMe Base Specification]<br />
<br />
=== RSS/Atom news reader ===<br />
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.<br />
* Primary goal: Write RSS news reader as a standalone KolibriOS application.<br />
* Additional goal: Add Atom support to the app.<br />
* Language: Assembler/FASM<br />
* Links: [http://tibleiz.net/asm-xml/ AsmXml library], [https://en.wikipedia.org/wiki/RSS RSS], [https://en.wikipedia.org/wiki/Atom_(standard) Atom]<br />
<br />
=== Port SDL2 ===<br />
SDL1.2 is already ported to KolibriOS, but there is no SDL2 port.<br />
* Primary goal: Make a working port of SDL2.<br />
* Additional goal: Port additional SDL2 libraries: SDL2_image, SDL2_mixer, SDL2_ttf, etc.<br />
* Language: C<br />
* Links: [https://www.libsdl.org/ libsdl.org]<br />
<br />
=== Add forms to WebView ===<br />
Currently WebView browser doesn't support support html forms (<form>, <input>, etc.)<br />
* Primary goal: Add support for <form>, <input> for types that was prior to HTML5<br />
* Additional goal: Add input types that was introduced in HTML5<br />
* Language: C--<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fprograms%2Fcmm%2Fbrowser%2F WebView on svn]<br />
<br />
=== J2ME Emulator ===<br />
Thousands of games and programs have been created for the j2me platform. It would be cool to be able to run them in KolibriOS.<br />
* Primary goal: Port JVM and java.microedition.* runtime<br />
* Additional goal: Make it run most of popular j2me games<br />
* Language: C, Java<br />
* Links: [https://github.com/digitalgust/miniJVM miniJVM]<br />
<br />
=== Screen Ruler ===<br />
Program for conveniently measuring the distance between selected points on the screen.<br />
* Primary goal: measure distance by X, Y, diagonal. <br />
* Additional goal: Also with a built-in magnifier and aim to see which pixel you choose.<br />
* Language: FASM<br />
* Links: for additional goal it would be useful to see: [http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fprograms%2Fdemos%2Fmagnify%2Ftrunk%2Fmagnify.asm sources of Magnify]<br />
<br />
<br />
[[Category:Misc]]<br />
<br />
== Rough Guide for Prospective Contributors ==<br />
<br />
* As the kernel is written in FASM, ability to write and understand i386-assembly code is very useful.<br />
* 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.<br />
* Familiarity with the GNU landscape like Autotools, GCC etc are also a plus to have (especially for porting software)<br />
* 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. (The mentors can help you with that :) )<br />
* Hanging out on LiberaChat's #kolibriOS and [https://board.kolibrios.org our forum] where developers mostly hang out.<br />
* Languages used for communication are English and Russian (although most developers are bilingual, and you can always ask someone for help)<br />
* Get in touch with other developers via IRC / Forums and enjoy your stay!<br />
<br />
== I'm a potential GSoC contributor. I'm scared of all the assembly and docs here! Where should I start?! :'( ==<br />
Start here : http://wiki.kolibrios.org/wiki/HowTo<br />
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!<br />
<br />
== I'm a potential GSoC contributor. What is this test task?! ==<br />
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 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.<br />
<br />
== I want to play with the code but my college blocks SVN ==<br />
If you are have trouble accessing, please do mention it on the forums.<br />
You can temporarily use this backup git repository: http://repo.or.cz/w/kolibrios.git<br />
<br />
== All the ideas seem interesting, But.. ==<br />
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.<br />
<br />
== Great Guide! But I still don't understand X ==<br />
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 LiberaChat.<br />
Please ask developers / mentors on Forum Chat or IRC . Please be patient on IRC and Forum 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.<br />
<br />
Most importantly...Have Fun!</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Ideas_Page&diff=5555Ideas Page2020-12-12T22:58:03Z<p>Punk Joker: /* Port FLTK */</p>
<hr />
<div>== Introduction ==<br />
This is our ideas page for new developers.<br />
<br />
== Organization ==<br />
<br />
You can find the organizers at our forum: http://board.kolibrios.org/<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
|Ivan Baravy<br />
|[[User:dunkaist|dunkaist]]<br />
|Administrator, Mentor<br />
|-<br />
|Dmitriy Smirnov<br />
|Pathoswithin<br />
|Mentor, (Administrator)<br />
|-<br />
|Serhii Sakhno<br />
|[[User:Punk_Joker|Punk_Joker]]<br />
|Mentor<br />
|-<br />
|Kiril Lipatov<br />
|[[User:Leency|Leency]]<br />
|C-- Mentor<br />
|-<br />
|Konstantin Pakhtusov<br />
|[[User:KPG|KPG]]<br />
|Mentor (Forth)<br />
|}<br />
<br />
== Ideas ==<br />
<!--<br />
documentation from source generator<br />
filesystem in userspace (FUSE)<br />
gui layout engine using Cassowary algorithm https://duckduckgo.com/?q=The+Cassowary+linear+arithmetic+constraint+solving+algorithm&t=ffab&ia=web<br />
test suite: kernel, libraries<br />
disk usage utility<br />
libsort<br />
Haiku vector icon format<br />
--><br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Programming Language<br />
! Mentors<br />
|-<br />
| [[#OpenBios_in_Loader|OpenBios in Loader]]<br />
| Kernel/Application<br />
| Forth, FASM (Assembler), C<br />
| <br />
|-<br />
| [[#File_system|File system]]<br />
| Kernel/Application<br />
| FASM (Assembler)<br />
| Pathoswithin<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide<br />
| FASM (Assembler), C<br />
| dunkaist<br />
|-<br />
| [[#Port_Mbed_TLS|Port Mbed TLS]]<br />
| Library<br />
| C/FASM<br />
| Punk_Joker<br />
|-<br />
| [[#Port_FLTK|Port FLTK]]<br />
| Library<br />
| C++<br />
| Punk_Joker<br />
|-<br />
| [[#Quark_Code_editor|Quark Code editor]]<br />
| Application<br />
| C--<br />
| Leency<br />
|-<br />
| [[#Fasmg_port|Fasmg port]]<br />
| Application<br />
| FASM/FASMG (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Unicode_library|Unicode library]]<br />
| Library/Application<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Virt-IO_driver|Virt-IO driver]]<br />
| Kernel<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Loop_device_driver|Loop device driver]]<br />
| Kernel<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#RSS/Atom_news_reader|RSS/Atom news reader]]<br />
| Application<br />
| FASM (Assembler)<br />
| dunkaist<br />
|}<br />
<br />
=== OpenBios in Loader ===<br />
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]<br />
OpenBIOS can replace your system firmware (BIOS) partly or completely. It can also be used as a bootloader to create an Open Firmware compatible<br />
interface between legacy firmware and an operating system.<br />
This is achieved by a modular concept that consists of a portable Forth kernel and three interfaces for user interaction, device initialization<br />
and client (operating system) control in command line like shell in Linux. <br />
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.<br />
* Primary goal: Add OpenBios ("Forth") support to the system bootloader.<br />
* Additional goal: Create simple interactive more device drivers <br />
* Language: Forth, FASM (Assembler), C<br />
* Links: [https://github.com/openbios Openbios Firmware in Github]<br />
<br />
=== File system ===<br />
* Primary goal: Add write support for ext4 file system (ext4 reading and ext2 writing are already supported).<br />
* Additional goal: Improve write support for NTFS file system.<br />
* Language: FASM (Assembler)<br />
* Links: [https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout Ext4 Disk Layout]<br />
<br />
=== Widget toolkit ===<br />
* 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.<br />
* Additional goal: Integrate created box_lib widgets to the C-framework, extend framework with font handling, layout manager<br />
* Language: FASM (Assembler), C (framework) <br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
=== Port Mbed TLS ===<br />
* 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.<br />
* Additional goal: Update HTTP library (written in FASM) to support HTTPS.<br />
* Language: C/FASM<br />
* 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]<br />
<br />
=== Port FLTK ===<br />
* Primary goal: Make a working port of FLTK (widget library) and add it to the automatic build-system.<br />
* Additional goal: port Scintilla (minimum working version)<br />
* Language: C++<br />
* Links: [https://www.fltk.org/ Official site]<br />
<br />
=== Quark Code editor ===<br />
Goals: <br />
* text edit support<br />
* syntax highlight support<br />
* add tabs<br />
<br />
Language: C--, Assembler/FASM<br />
<br />
=== Fasmg port ===<br />
Tomasz Grysztar (creator of FASM) [https://flatassembler.net/docs.php?article=fasmg introduced] FASMG, a new assembler engine. It would be nice to support its new syntax in KolibriOS.<br />
* Primary goal: Write FASMG application like FASM one. Port standard KolibriOS macros to FASMG syntax.<br />
* Additional goal: Implement macros for compatibility with FASM.<br />
* Language: Assembler/FASM/FASMG<br />
* Links: [https://flatassembler.net/docs.php?article=fasmg FASMG overview], [https://flatassembler.net/docs.php?article=fasmg_manual FASMG manual]<br />
<br />
=== Unicode library ===<br />
Unicode is a huge and sophisticated standard. Nevertheless modern OS should provide libraries with Unicode related routines like NFC, NFD, sorting, comparing, etc.<br />
* Primary goal: Write a tiny Unicode library with core Unicode algorithms and example application.<br />
* Additional goal: Upgrade existing applications to use the new library.<br />
* Language: Assembler/FASM<br />
* Links: [http://git.suckless.org/libutf/ libutf]<br />
<br />
=== Virt-IO driver ===<br />
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. <br />
* Primary goal: Write kernel driver for, say, virt-io Ethernet card.<br />
* Additional goal: Write more drivers.<br />
* Language: Assembler/FASM<br />
* Links: [https://wiki.libvirt.org/page/Virtio Virt-IO wiki]<br />
<br />
=== Loop device driver ===<br />
* Primary goal: Write loop device driver and example application to manage loop devices.<br />
* Additional goal: Prepare a set of disk images to be used in filesystem unit tests.<br />
* Language: Assembler/FASM<br />
* Links: [https://en.wikipedia.org/wiki/Loop_device loop device overview]<br />
<br />
=== RSS/Atom news reader ===<br />
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.<br />
* Primary goal: Write RSS news reader as a standalone KolibriOS application.<br />
* Additional goal: Add Atom support to the app.<br />
* Language: Assembler/FASM<br />
* Links: [http://tibleiz.net/asm-xml/ AsmXml library], [https://en.wikipedia.org/wiki/RSS RSS], [https://en.wikipedia.org/wiki/Atom_(standard) Atom]<br />
<br />
[[Category:Misc]]<br />
<br />
Most importantly...Have Fun!</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Ideas_Page&diff=5554Ideas Page2020-12-12T22:55:15Z<p>Punk Joker: /* Sortable list of ideas for easy navigation */</p>
<hr />
<div>== Introduction ==<br />
This is our ideas page for new developers.<br />
<br />
== Organization ==<br />
<br />
You can find the organizers at our forum: http://board.kolibrios.org/<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
|Ivan Baravy<br />
|[[User:dunkaist|dunkaist]]<br />
|Administrator, Mentor<br />
|-<br />
|Dmitriy Smirnov<br />
|Pathoswithin<br />
|Mentor, (Administrator)<br />
|-<br />
|Serhii Sakhno<br />
|[[User:Punk_Joker|Punk_Joker]]<br />
|Mentor<br />
|-<br />
|Kiril Lipatov<br />
|[[User:Leency|Leency]]<br />
|C-- Mentor<br />
|-<br />
|Konstantin Pakhtusov<br />
|[[User:KPG|KPG]]<br />
|Mentor (Forth)<br />
|}<br />
<br />
== Ideas ==<br />
<!--<br />
documentation from source generator<br />
filesystem in userspace (FUSE)<br />
gui layout engine using Cassowary algorithm https://duckduckgo.com/?q=The+Cassowary+linear+arithmetic+constraint+solving+algorithm&t=ffab&ia=web<br />
test suite: kernel, libraries<br />
disk usage utility<br />
libsort<br />
Haiku vector icon format<br />
--><br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Programming Language<br />
! Mentors<br />
|-<br />
| [[#OpenBios_in_Loader|OpenBios in Loader]]<br />
| Kernel/Application<br />
| Forth, FASM (Assembler), C<br />
| <br />
|-<br />
| [[#File_system|File system]]<br />
| Kernel/Application<br />
| FASM (Assembler)<br />
| Pathoswithin<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide<br />
| FASM (Assembler), C<br />
| dunkaist<br />
|-<br />
| [[#Port_Mbed_TLS|Port Mbed TLS]]<br />
| Library<br />
| C/FASM<br />
| Punk_Joker<br />
|-<br />
| [[#Port_FLTK|Port FLTK]]<br />
| Library<br />
| C++<br />
| Punk_Joker<br />
|-<br />
| [[#Quark_Code_editor|Quark Code editor]]<br />
| Application<br />
| C--<br />
| Leency<br />
|-<br />
| [[#Fasmg_port|Fasmg port]]<br />
| Application<br />
| FASM/FASMG (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Unicode_library|Unicode library]]<br />
| Library/Application<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Virt-IO_driver|Virt-IO driver]]<br />
| Kernel<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Loop_device_driver|Loop device driver]]<br />
| Kernel<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#RSS/Atom_news_reader|RSS/Atom news reader]]<br />
| Application<br />
| FASM (Assembler)<br />
| dunkaist<br />
|}<br />
<br />
=== OpenBios in Loader ===<br />
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]<br />
OpenBIOS can replace your system firmware (BIOS) partly or completely. It can also be used as a bootloader to create an Open Firmware compatible<br />
interface between legacy firmware and an operating system.<br />
This is achieved by a modular concept that consists of a portable Forth kernel and three interfaces for user interaction, device initialization<br />
and client (operating system) control in command line like shell in Linux. <br />
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.<br />
* Primary goal: Add OpenBios ("Forth") support to the system bootloader.<br />
* Additional goal: Create simple interactive more device drivers <br />
* Language: Forth, FASM (Assembler), C<br />
* Links: [https://github.com/openbios Openbios Firmware in Github]<br />
<br />
=== File system ===<br />
* Primary goal: Add write support for ext4 file system (ext4 reading and ext2 writing are already supported).<br />
* Additional goal: Improve write support for NTFS file system.<br />
* Language: FASM (Assembler)<br />
* Links: [https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout Ext4 Disk Layout]<br />
<br />
=== Widget toolkit ===<br />
* 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.<br />
* Additional goal: Integrate created box_lib widgets to the C-framework, extend framework with font handling, layout manager<br />
* Language: FASM (Assembler), C (framework) <br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
=== Port Mbed TLS ===<br />
* 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.<br />
* Additional goal: Update HTTP library (written in FASM) to support HTTPS.<br />
* Language: C/FASM<br />
* 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]<br />
<br />
=== Port FLTK ===<br />
* Primary goal: Make a working port of FLTK (widget library) and add it to the automatic build-system.<br />
* Additional goal: port Scintilla (minimum working version)<br />
* Language: C<br />
* Links: [https://www.fltk.org/ Official site]<br />
<br />
=== Quark Code editor ===<br />
Goals: <br />
* text edit support<br />
* syntax highlight support<br />
* add tabs<br />
<br />
Language: C--, Assembler/FASM<br />
<br />
=== Fasmg port ===<br />
Tomasz Grysztar (creator of FASM) [https://flatassembler.net/docs.php?article=fasmg introduced] FASMG, a new assembler engine. It would be nice to support its new syntax in KolibriOS.<br />
* Primary goal: Write FASMG application like FASM one. Port standard KolibriOS macros to FASMG syntax.<br />
* Additional goal: Implement macros for compatibility with FASM.<br />
* Language: Assembler/FASM/FASMG<br />
* Links: [https://flatassembler.net/docs.php?article=fasmg FASMG overview], [https://flatassembler.net/docs.php?article=fasmg_manual FASMG manual]<br />
<br />
=== Unicode library ===<br />
Unicode is a huge and sophisticated standard. Nevertheless modern OS should provide libraries with Unicode related routines like NFC, NFD, sorting, comparing, etc.<br />
* Primary goal: Write a tiny Unicode library with core Unicode algorithms and example application.<br />
* Additional goal: Upgrade existing applications to use the new library.<br />
* Language: Assembler/FASM<br />
* Links: [http://git.suckless.org/libutf/ libutf]<br />
<br />
=== Virt-IO driver ===<br />
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. <br />
* Primary goal: Write kernel driver for, say, virt-io Ethernet card.<br />
* Additional goal: Write more drivers.<br />
* Language: Assembler/FASM<br />
* Links: [https://wiki.libvirt.org/page/Virtio Virt-IO wiki]<br />
<br />
=== Loop device driver ===<br />
* Primary goal: Write loop device driver and example application to manage loop devices.<br />
* Additional goal: Prepare a set of disk images to be used in filesystem unit tests.<br />
* Language: Assembler/FASM<br />
* Links: [https://en.wikipedia.org/wiki/Loop_device loop device overview]<br />
<br />
=== RSS/Atom news reader ===<br />
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.<br />
* Primary goal: Write RSS news reader as a standalone KolibriOS application.<br />
* Additional goal: Add Atom support to the app.<br />
* Language: Assembler/FASM<br />
* Links: [http://tibleiz.net/asm-xml/ AsmXml library], [https://en.wikipedia.org/wiki/RSS RSS], [https://en.wikipedia.org/wiki/Atom_(standard) Atom]<br />
<br />
[[Category:Misc]]<br />
<br />
Most importantly...Have Fun!</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Ideas_Page&diff=5553Ideas Page2020-12-12T22:52:54Z<p>Punk Joker: /* Port Mbed TLS */</p>
<hr />
<div>== Introduction ==<br />
This is our ideas page for new developers.<br />
<br />
== Organization ==<br />
<br />
You can find the organizers at our forum: http://board.kolibrios.org/<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
|Ivan Baravy<br />
|[[User:dunkaist|dunkaist]]<br />
|Administrator, Mentor<br />
|-<br />
|Dmitriy Smirnov<br />
|Pathoswithin<br />
|Mentor, (Administrator)<br />
|-<br />
|Serhii Sakhno<br />
|[[User:Punk_Joker|Punk_Joker]]<br />
|Mentor<br />
|-<br />
|Kiril Lipatov<br />
|[[User:Leency|Leency]]<br />
|C-- Mentor<br />
|-<br />
|Konstantin Pakhtusov<br />
|[[User:KPG|KPG]]<br />
|Mentor (Forth)<br />
|}<br />
<br />
== Ideas ==<br />
<!--<br />
documentation from source generator<br />
filesystem in userspace (FUSE)<br />
gui layout engine using Cassowary algorithm https://duckduckgo.com/?q=The+Cassowary+linear+arithmetic+constraint+solving+algorithm&t=ffab&ia=web<br />
test suite: kernel, libraries<br />
disk usage utility<br />
libsort<br />
Haiku vector icon format<br />
--><br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Programming Language<br />
! Mentors<br />
|-<br />
| [[#OpenBios_in_Loader|OpenBios in Loader]]<br />
| Kernel/Application<br />
| Forth, FASM (Assembler), C<br />
| <br />
|-<br />
| [[#File_system|File system]]<br />
| Kernel/Application<br />
| FASM (Assembler)<br />
| Pathoswithin<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide<br />
| FASM (Assembler), C<br />
| dunkaist<br />
|-<br />
| [[#Port_PolarSSL|Port PolarSSL]]<br />
| Library<br />
| C/FASM<br />
| Punk_Joker<br />
|-<br />
| [[#Port_FLTK|Port FLTK]]<br />
| Library<br />
| C++<br />
| Punk_Joker<br />
|-<br />
| [[#Eolite_improvement|Eolite_improvement]]<br />
| Application<br />
| C--<br />
| Leency<br />
|-<br />
| [[#Fasmg_port|Fasmg port]]<br />
| Application<br />
| FASM/FASMG (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Unicode_library|Unicode library]]<br />
| Library/Application<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Virt-IO_driver|Virt-IO driver]]<br />
| Kernel<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Loop_device_driver|Loop device driver]]<br />
| Kernel<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#RSS/Atom_news_reader|RSS/Atom news reader]]<br />
| Application<br />
| FASM (Assembler)<br />
| dunkaist<br />
|}<br />
<br />
=== OpenBios in Loader ===<br />
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]<br />
OpenBIOS can replace your system firmware (BIOS) partly or completely. It can also be used as a bootloader to create an Open Firmware compatible<br />
interface between legacy firmware and an operating system.<br />
This is achieved by a modular concept that consists of a portable Forth kernel and three interfaces for user interaction, device initialization<br />
and client (operating system) control in command line like shell in Linux. <br />
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.<br />
* Primary goal: Add OpenBios ("Forth") support to the system bootloader.<br />
* Additional goal: Create simple interactive more device drivers <br />
* Language: Forth, FASM (Assembler), C<br />
* Links: [https://github.com/openbios Openbios Firmware in Github]<br />
<br />
=== File system ===<br />
* Primary goal: Add write support for ext4 file system (ext4 reading and ext2 writing are already supported).<br />
* Additional goal: Improve write support for NTFS file system.<br />
* Language: FASM (Assembler)<br />
* Links: [https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout Ext4 Disk Layout]<br />
<br />
=== Widget toolkit ===<br />
* 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.<br />
* Additional goal: Integrate created box_lib widgets to the C-framework, extend framework with font handling, layout manager<br />
* Language: FASM (Assembler), C (framework) <br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
=== Port Mbed TLS ===<br />
* 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.<br />
* Additional goal: Update HTTP library (written in FASM) to support HTTPS.<br />
* Language: C/FASM<br />
* 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]<br />
<br />
=== Port FLTK ===<br />
* Primary goal: Make a working port of FLTK (widget library) and add it to the automatic build-system.<br />
* Additional goal: port Scintilla (minimum working version)<br />
* Language: C<br />
* Links: [https://www.fltk.org/ Official site]<br />
<br />
=== Quark Code editor ===<br />
Goals: <br />
* text edit support<br />
* syntax highlight support<br />
* add tabs<br />
<br />
Language: C--, Assembler/FASM<br />
<br />
=== Fasmg port ===<br />
Tomasz Grysztar (creator of FASM) [https://flatassembler.net/docs.php?article=fasmg introduced] FASMG, a new assembler engine. It would be nice to support its new syntax in KolibriOS.<br />
* Primary goal: Write FASMG application like FASM one. Port standard KolibriOS macros to FASMG syntax.<br />
* Additional goal: Implement macros for compatibility with FASM.<br />
* Language: Assembler/FASM/FASMG<br />
* Links: [https://flatassembler.net/docs.php?article=fasmg FASMG overview], [https://flatassembler.net/docs.php?article=fasmg_manual FASMG manual]<br />
<br />
=== Unicode library ===<br />
Unicode is a huge and sophisticated standard. Nevertheless modern OS should provide libraries with Unicode related routines like NFC, NFD, sorting, comparing, etc.<br />
* Primary goal: Write a tiny Unicode library with core Unicode algorithms and example application.<br />
* Additional goal: Upgrade existing applications to use the new library.<br />
* Language: Assembler/FASM<br />
* Links: [http://git.suckless.org/libutf/ libutf]<br />
<br />
=== Virt-IO driver ===<br />
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. <br />
* Primary goal: Write kernel driver for, say, virt-io Ethernet card.<br />
* Additional goal: Write more drivers.<br />
* Language: Assembler/FASM<br />
* Links: [https://wiki.libvirt.org/page/Virtio Virt-IO wiki]<br />
<br />
=== Loop device driver ===<br />
* Primary goal: Write loop device driver and example application to manage loop devices.<br />
* Additional goal: Prepare a set of disk images to be used in filesystem unit tests.<br />
* Language: Assembler/FASM<br />
* Links: [https://en.wikipedia.org/wiki/Loop_device loop device overview]<br />
<br />
=== RSS/Atom news reader ===<br />
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.<br />
* Primary goal: Write RSS news reader as a standalone KolibriOS application.<br />
* Additional goal: Add Atom support to the app.<br />
* Language: Assembler/FASM<br />
* Links: [http://tibleiz.net/asm-xml/ AsmXml library], [https://en.wikipedia.org/wiki/RSS RSS], [https://en.wikipedia.org/wiki/Atom_(standard) Atom]<br />
<br />
[[Category:Misc]]<br />
<br />
Most importantly...Have Fun!</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Ideas_Page&diff=5552Ideas Page2020-12-12T22:52:27Z<p>Punk Joker: /* Port PolarSSL */</p>
<hr />
<div>== Introduction ==<br />
This is our ideas page for new developers.<br />
<br />
== Organization ==<br />
<br />
You can find the organizers at our forum: http://board.kolibrios.org/<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
|Ivan Baravy<br />
|[[User:dunkaist|dunkaist]]<br />
|Administrator, Mentor<br />
|-<br />
|Dmitriy Smirnov<br />
|Pathoswithin<br />
|Mentor, (Administrator)<br />
|-<br />
|Serhii Sakhno<br />
|[[User:Punk_Joker|Punk_Joker]]<br />
|Mentor<br />
|-<br />
|Kiril Lipatov<br />
|[[User:Leency|Leency]]<br />
|C-- Mentor<br />
|-<br />
|Konstantin Pakhtusov<br />
|[[User:KPG|KPG]]<br />
|Mentor (Forth)<br />
|}<br />
<br />
== Ideas ==<br />
<!--<br />
documentation from source generator<br />
filesystem in userspace (FUSE)<br />
gui layout engine using Cassowary algorithm https://duckduckgo.com/?q=The+Cassowary+linear+arithmetic+constraint+solving+algorithm&t=ffab&ia=web<br />
test suite: kernel, libraries<br />
disk usage utility<br />
libsort<br />
Haiku vector icon format<br />
--><br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Programming Language<br />
! Mentors<br />
|-<br />
| [[#OpenBios_in_Loader|OpenBios in Loader]]<br />
| Kernel/Application<br />
| Forth, FASM (Assembler), C<br />
| <br />
|-<br />
| [[#File_system|File system]]<br />
| Kernel/Application<br />
| FASM (Assembler)<br />
| Pathoswithin<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide<br />
| FASM (Assembler), C<br />
| dunkaist<br />
|-<br />
| [[#Port_PolarSSL|Port PolarSSL]]<br />
| Library<br />
| C/FASM<br />
| Punk_Joker<br />
|-<br />
| [[#Port_FLTK|Port FLTK]]<br />
| Library<br />
| C++<br />
| Punk_Joker<br />
|-<br />
| [[#Eolite_improvement|Eolite_improvement]]<br />
| Application<br />
| C--<br />
| Leency<br />
|-<br />
| [[#Fasmg_port|Fasmg port]]<br />
| Application<br />
| FASM/FASMG (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Unicode_library|Unicode library]]<br />
| Library/Application<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Virt-IO_driver|Virt-IO driver]]<br />
| Kernel<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Loop_device_driver|Loop device driver]]<br />
| Kernel<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#RSS/Atom_news_reader|RSS/Atom news reader]]<br />
| Application<br />
| FASM (Assembler)<br />
| dunkaist<br />
|}<br />
<br />
=== OpenBios in Loader ===<br />
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]<br />
OpenBIOS can replace your system firmware (BIOS) partly or completely. It can also be used as a bootloader to create an Open Firmware compatible<br />
interface between legacy firmware and an operating system.<br />
This is achieved by a modular concept that consists of a portable Forth kernel and three interfaces for user interaction, device initialization<br />
and client (operating system) control in command line like shell in Linux. <br />
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.<br />
* Primary goal: Add OpenBios ("Forth") support to the system bootloader.<br />
* Additional goal: Create simple interactive more device drivers <br />
* Language: Forth, FASM (Assembler), C<br />
* Links: [https://github.com/openbios Openbios Firmware in Github]<br />
<br />
=== File system ===<br />
* Primary goal: Add write support for ext4 file system (ext4 reading and ext2 writing are already supported).<br />
* Additional goal: Improve write support for NTFS file system.<br />
* Language: FASM (Assembler)<br />
* Links: [https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout Ext4 Disk Layout]<br />
<br />
=== Widget toolkit ===<br />
* 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.<br />
* Additional goal: Integrate created box_lib widgets to the C-framework, extend framework with font handling, layout manager<br />
* Language: FASM (Assembler), C (framework) <br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
=== Port Mbed TLS ===<br />
* 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.<br />
* Additional goal: Update HTTP library (written in FASM) to support HTTPS.<br />
* Language: C/FASM<br />
* 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]<br />
<br />
=== Port FLTK ===<br />
* Primary goal: Make a working port of FLTK (widget library) and add it to the automatic build-system.<br />
* Additional goal: port Scintilla (minimum working version)<br />
* Language: C<br />
* Links: [https://www.fltk.org/ Official site]<br />
<br />
=== Quark Code editor ===<br />
Goals: <br />
* text edit support<br />
* syntax highlight support<br />
* add tabs<br />
<br />
Language: C--, Assembler/FASM<br />
<br />
=== Fasmg port ===<br />
Tomasz Grysztar (creator of FASM) [https://flatassembler.net/docs.php?article=fasmg introduced] FASMG, a new assembler engine. It would be nice to support its new syntax in KolibriOS.<br />
* Primary goal: Write FASMG application like FASM one. Port standard KolibriOS macros to FASMG syntax.<br />
* Additional goal: Implement macros for compatibility with FASM.<br />
* Language: Assembler/FASM/FASMG<br />
* Links: [https://flatassembler.net/docs.php?article=fasmg FASMG overview], [https://flatassembler.net/docs.php?article=fasmg_manual FASMG manual]<br />
<br />
=== Unicode library ===<br />
Unicode is a huge and sophisticated standard. Nevertheless modern OS should provide libraries with Unicode related routines like NFC, NFD, sorting, comparing, etc.<br />
* Primary goal: Write a tiny Unicode library with core Unicode algorithms and example application.<br />
* Additional goal: Upgrade existing applications to use the new library.<br />
* Language: Assembler/FASM<br />
* Links: [http://git.suckless.org/libutf/ libutf]<br />
<br />
=== Virt-IO driver ===<br />
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. <br />
* Primary goal: Write kernel driver for, say, virt-io Ethernet card.<br />
* Additional goal: Write more drivers.<br />
* Language: Assembler/FASM<br />
* Links: [https://wiki.libvirt.org/page/Virtio Virt-IO wiki]<br />
<br />
=== Loop device driver ===<br />
* Primary goal: Write loop device driver and example application to manage loop devices.<br />
* Additional goal: Prepare a set of disk images to be used in filesystem unit tests.<br />
* Language: Assembler/FASM<br />
* Links: [https://en.wikipedia.org/wiki/Loop_device loop device overview]<br />
<br />
=== RSS/Atom news reader ===<br />
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.<br />
* Primary goal: Write RSS news reader as a standalone KolibriOS application.<br />
* Additional goal: Add Atom support to the app.<br />
* Language: Assembler/FASM<br />
* Links: [http://tibleiz.net/asm-xml/ AsmXml library], [https://en.wikipedia.org/wiki/RSS RSS], [https://en.wikipedia.org/wiki/Atom_(standard) Atom]<br />
<br />
[[Category:Misc]]<br />
<br />
Most importantly...Have Fun!</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=What%27s_New&diff=5474What's New2019-10-16T16:36:29Z<p>Punk Joker: </p>
<hr />
<div>The fact is that [[Last_changes]] approach doesn't work anymore, i.e. authors don't document their changes themselves.<br /><br />
<br /><br />
Below is the list of changes from the release 0.7.7.0 (r1319) to r7696.<br /><br />
Each commit message since r1319 has been read and considered.<br /><br />
There definitely are things that are left untold in the commit messages or not understood by the initial log writer.<br /><br />
<br /><br />
The text is in [https://commonmark.org/ commonmark] format.<br /><br />
Its structure can be discussed, its contents are to be updated.<br /><br />
Go ahead.<br /><br />
<br /><br />
[https://board.kolibrios.org/viewtopic.php?f=5&t=2075&p=73579#p73579 Board thread.]<br />
<br /><br />
<pre><br />
KolibriOS 0.0.0.0 Release Notes<br />
===============================<br />
<br />
<br />
Kernel<br />
------<br />
<br />
* New network stack<br />
+ BSD sockets compatible<br />
+ Blocking and non-blocking sockets<br />
+ IPC sockets<br />
* New block subsystem<br />
+ Support PnP (plug and play) devices<br />
+ Add 64-bit multi-sector disk cache interface<br />
+ Support sector sizes other than 512 bytes<br />
* File systems<br />
+ Ext2 support (read/write), Ext3 and Ext4 (read only)<br />
+ Limited NTFS writing support<br />
+ Unicode compatible API<br />
* Support drivers in PE format with optionally stripped header<br />
* Support priorities in scheduler<br />
* Allow creating kernel threads<br />
* Support APIC, HPET<br />
* Support global TLB pages<br />
* Enable write-combining framebuffer, reconfigure MTRRs after BIOS<br />
* Add Linux-like kernel mutexes<br />
* Add futexes, fast user-space locks<br />
* Detect CPU count<br />
* Boot speedup<br />
* Heap<br />
+ New allocator for block descriptors<br />
+ Hash table for memory descriptors<br />
* Support 16-bit video modes<br />
* System fonts<br />
+ Scaling up X times<br />
+ Smoothing optinally<br />
+ Unicode compatible API<br />
+ Include default fonts to kernel binary<br />
* New mouse pointer drawing algorithm, no blinking even without HW cursor<br />
* Tunable non-linear mouse pointer acceleration<br />
* New application events for network subsystem (link changed, ip changed, etc.)<br />
* Do not send mouse events<br />
+ When user is dragging or resizing a window<br />
+ To inactive windows<br />
+ If mouse cursor is outside window<br />
* Extend button IDs from 16 to 24 bits<br />
* Do not maximize windows of unresizeable styles<br />
* Protect thread from external terminate while running syscalls except 5, 10, 23<br />
* Allow high-priority threads to wake up after any IRQ, not just timer<br />
* Increase debug board buffer from 4K to 64K<br />
* Introduce coding style guide, force it with a pre-commit hook<br />
* Improve and translate documentation<br />
<br />
### Syscalls<br />
* Sysfn 15.8: Get last background draw rectangle<br />
* Sysfn 15.9: Redraw rectangular part of background<br />
* Sysfn 18.1: Make the window inactive<br />
* Sysfn 18.19.2/3: Get/set mouse acceleration<br />
* Sysfn 18.19.6/7: Get/set double click delay<br />
* Sysfn 18.23: Minimize all windows<br />
* Sysfn 18.24: Set screen size<br />
* Sysfn 18.25: Set window above/below all<br />
* Sysfn 25: Put image area on the background layer<br />
* Sysfn 26.10: Get time from boot in nanoseconds<br />
* Sysfn 30.3: Mount additional system directory<br />
* Sysfn 34: Get PID of the pixel owner on the screen<br />
* Sysfn 37.3: Get state of mouse buttons<br />
* Sysfn 48.11/12: Get/set default fonts size<br />
* Sysfn 49: Work with Advanced Power Management (APM)<br />
* Sysfn 54: Clipboard interface<br />
* Sysfn 68.26: Release memory pages<br />
* Sysfn 70.5: Get partition info<br />
* Sysfn 73: Blit bitmap<br />
* Sysfn 77: Fast user-space locking<br />
* Sysfn 4: Text output<br />
+ Redirect text output to offscreen buffer<br />
* Sysfn 65: Bitmap output<br />
+ Support grayscale images<br />
* Sysfn 9: Information on execution thread<br />
+ Report event mask<br />
+ Report keyboard mode<br />
<br />
<br />
Drivers<br />
-------<br />
<br />
### New<br />
* USB drivers<br />
+ USB1.1 (UHCI, OHCI), USB2.0 (EHCI)<br />
+ USB hubs<br />
+ USB HID devices (keyboard, mouse, tablet, etc.)<br />
+ USB storage devices<br />
+ usbftdi: FIXME<br />
* Ethernet drivers<br />
+ 3Com 3c59x, DEC dec21x4x, Myson mtd891 / Surecom ep320x, RDC R6040,<br />
SIS900, VIA Rhine, Forcedeth FIXME compare 0770<br />
* Audio drivers<br />
+ ForteMedia fm801, VIA vt823x, Creative emu10k1x, Intel HD Audio<br />
+ Automatically detect and load proper audio driver<br />
* Video drivers<br />
+ vidintel: LVDS non-VGA modesetter for Intel videocards<br />
+ vidrdc: Modesetter and hardware cursors for RDC M201x cards<br />
+ vmwgfx: VMware SVGA II driver<br />
+ i915: Port of Intel video card driver from Linux<br />
* Storage<br />
+ Support LBA28, PIO and DMA LBA48 for HDD<br />
+ SATA in IDE mode support for HDD and ATAPI<br />
+ AHCI read-only driver<br />
+ tmpdisk: Memory-based disks<br />
* cardbus: CardBUS driver FIXME<br />
* devman: Scan ACPI bus and create device tree, detect IRQs<br />
* acpica: Port of ACPI Componenet Architecture library<br />
<br />
### Update<br />
* All drivers are converted to PE format<br />
* All network drivers are updated to work with the new BSD compatible stack<br />
* ATIKMS: AMD/ATI video card driver with 3D and video decoding acceleration<br />
+ Update to Linux 4.4.30 upstream source and microcode<br />
* Infinity: Audio subsystem<br />
+ Get high resolution stream timestamp<br />
* COM mouse driver<br />
+ Add support for third button<br />
<br />
<br />
Libraries<br />
---------<br />
<br />
### New<br />
* RasterWorks: Draw text in image buffer, with lots of parameters<br />
* proclib: Library of common system procedures<br />
* buf2d: 2D raster drawing library<br />
* vector: 2D vector drawing library<br />
* crypt_des: DES crypting library<br />
* libcrash: Library of cryptographic hash functions (md4-5, sha1-2-3)<br />
* iconv: Convert text encodings<br />
* http: HTTP library<br />
* exif: Extract EXIF metadata<br />
* msgbox: message box library<br />
* C_layer: Collection of C wrappers around system libraries<br />
* newlib: Port of RedHat implementation of standard C library<br />
* libstdc++: Port of standard C++ library<br />
* ffmpeg: Port of famous multimedia framework<br />
* pixman: Port of low-level pixel manipulation library<br />
* cairo: Port of 2D vector graphics library<br />
* zlib: Port of data compression library<br />
* libpng: Port of reference PNG library<br />
* Mesa: Port of free OpenGL implementation library<br />
* Gallium3D: Port of framework for building 3D graphics drivers<br />
* libdrm: Port of DRM (direct rendering manager) library<br />
* libmpg123: Port of MPEG audio player<br />
* truetype: Port of vector font render library<br />
<br />
### Update<br />
* boxlib: Library of UI widgets<br />
+ New widgets: TextEditor, PathShow, Frame, ProgressBar, FileBrowser, ToolTip<br />
+ Update widgets: TreeList, EditBox, CheckBox<br />
+ Add box_lib.mac macros file to connect widgets<br />
* console: Console UI library<br />
+ Support aixterm bright color escape codes<br />
+ Support scrolling with mouse<br />
* libimg: Raster image manipulation library<br />
+ New format decoders: TIFF, PCX, XCF, PNM, WBMP<br />
+ New format encoders: PNG, BMP, PNM<br />
+ New pixel formats: 1bpp, 2bpp, 4bpp, grayscale<br />
+ Pixel format converting<br />
+ Image scaling (bilinear)<br />
* libini: Library for parsing and writing .ini files<br />
+ Add ini.get_shortcut function to get human-readable shortcuts like Ctrl+A<br />
<br />
<br />
Applications<br />
------------<br />
<br />
### New<br />
<br />
#### Multimedia<br />
* Fplay: ffmpeg based multimedia player with hardware decoding and output<br />
* zSea: Advanced image viewer<br />
* ImgF: Apply filters to images<br />
* Pixie: Audio player<br />
* fb2read: FB2 ebook reader in Oberon<br />
* Calypte: Ebook reader<br />
* palitra: FIXME<br />
* uPDF: Port of PDF viewer with native interface<br />
* piano: Virtual piano<br />
* grafx2: Port of old-school image editor<br />
* FLI Player: FLI animation player<br />
* minimp3: Port of a small mp3 player<br />
* info3ds: Viewer of 3ds and stl file structure<br />
* m2view: Viewer 3D models in MD2 format<br />
<br />
#### Development<br />
* oberon07: Oberon compiler<br />
* c--: Port of C-- compiler<br />
* tinypy: Tiny implementation of Python2 subset<br />
* vfc: Visual text comparer, diff tool<br />
* codeview: Simple code viewer with syntax highlighting<br />
* GenFiles: File system stress test utility<br />
* TEdit: BoxLib based text editor<br />
* socketdbg: Socket debugging tool<br />
* cObj: View symbols of COFF files<br />
* KolFasmEdit: Visual environment for assembly programming<br />
* tinfo: Show thread state information<br />
* fspeed: Filesystem speed test<br />
* asciivju: View ASCII code tables<br />
* fontconv: Kolibri font converter<br />
* loaddrv: Load driver by name<br />
* KolSPForth: FIXME<br />
<br />
#### Network<br />
* pasta: Upload contents from clipboard or file to paste.kolibrios.org<br />
* netsurf: Port of HTML4 capable web browser<br />
* VNCC: VNC Viewer<br />
* tftpc: Console TFTP client<br />
* sntp: Simple NTP client<br />
* ftpd: Multithread FTP daemon<br />
* ftpc: Console FTP client<br />
* TCPserv: Very simple TCP server<br />
* PPPoE: Simple PPPoE dialer<br />
* downloader: HTTP file downloader<br />
* IRCc: Featured IRC client<br />
* synergyc: Synergy client<br />
* liza: Email client<br />
* ping: ICMP ping program<br />
<br />
#### Desktop<br />
* game_center: FIXME<br />
* @icon: The new manager of desktop icons<br />
* ColorDialog: System color choosing dialog<br />
* RunOD: Run with OpenDialog helper program<br />
* @volume: System volume mixer<br />
* @open: FIXME<br />
* barscfg: Docky and taskbar configuration utility<br />
* mouse_cfg: Mouse configuration utility<br />
* eskin: utils for appky GUI settings from config file<br />
* docky: Configurable desktop dock<br />
* deskcfg: Desktop configurator<br />
* appearance: UI theme configurator<br />
* notify3: System notification manager<br />
* app_plus: FIXME<br />
* mykey: Hotkey configuration app<br />
* scrsaver: Tiny screen saver configurable via text config file<br />
<br />
#### Games<br />
* 2048: FIXME game<br />
* bomber: FIXME game<br />
* KosChess: Player vs CPU chess game<br />
* Almaz: FIXME game<br />
* heliothryx: FIXME game<br />
* Marble Match 3: FIXME game<br />
* N-sider: FIXMEE game<br />
* LazerTank: FIXME game<br />
* 21days: FIXME game<br />
* Binary Master: FIXME game<br />
* Hang Programmer: FIXME game<br />
* Kolibri Puzzle: FIXME game<br />
* Dungeons: FIXME game<br />
* snake: Advanced snake game with lots of levels<br />
* Nu pogodi: Remake of good old HW game<br />
* Frog boaster: FIXME description game<br />
* life: Classic life game<br />
* life2: Another life game<br />
* life3: Yet another life game<br />
* mcities: Turn based 'cities' game for two players<br />
* tanks: 2D tank game<br />
* Rusty Earth: FIXME game<br />
* BabyPainter: FIXME<br />
<br />
#### Demo<br />
* 86duino-gpio: 86duino One GPIO demo<br />
* rshell: Simple reverse shell (TCP) demo<br />
* firework: Fire animation demo using MMX, SSE, AVX, AVX2, AVX512<br />
* unvwater: Water animation demo port from OctaOS<br />
* free3d: FIXME demo<br />
* web: FIXME demo<br />
* spiral: 2D colorful demo and screen saver<br />
* buddhabrot: FIXME demo<br />
* fft: Fast Hartley transform<br />
* qjulia: FIXME demo<br />
* 3dspiral: FIXME 3dwav? 3D spiral demo<br />
* flatwav: FIXME demo<br />
* cubeline: FIXME demo<br />
* cubetext: FIXME demo<br />
* gears: FIXME demo<br />
<br />
#### Other<br />
* timer: Stopwatch app<br />
* searchap: Search and mount additional partition for KolibriOS applications<br />
* txtread: Plain text reader<br />
* installer: KolibriN installer<br />
* drvinst: User-friendly driver installer<br />
* unzip: Graphical unarchiver utility<br />
* unzip60: Port of ZIP unarchiver<br />
* dictionary: Simple dictionary program<br />
* clipview: Clipboard viewer<br />
* te_syntax: TextEditor syntax file editor<br />
* PlanetViewer: Offline map app<br />
* pokemini: FIXME emulator<br />
* process: User-friendly task manager<br />
* fNav: File navigator<br />
* sysmon: System resource monitor<br />
* notes: Note taking app<br />
* madmouse: Wrap mouse pointer on screen edges<br />
* cropflat: Force set screen size<br />
* zkey: FIXME<br />
* HDD Informer: SMART information reporter FIXME run and check<br />
* font_viewer: Kolibri font viewer<br />
* kpack: LZMA based compresser for data files, executables and the kernel<br />
* LogEl: Modelling logic elements<br />
* VoxelEditor: FIXME IgorA<br />
* VoxelCreator: FIXME IgorA<br />
* vox_tgl: FIXME IgorA<br />
* software_widget: FIXME<br />
* dicty: FIXME Leency<br />
* klavisha: Typing tutor<br />
* PrMK: FIXME emulator<br />
* 8086tiny: Tiny 8086 CPU emulator<br />
* avra: FIXME<br />
* calc+: FIXME<br />
* latency: System latencies monitor<br />
* tmpdisk: Ramdisk manager<br />
* ft232cc: Control pins of FTDI chip<br />
* terminal: Terminal emulator<br />
* keybi: Keyboard indicators utility<br />
* RDInfo: FIXME 0CodErr<br />
* mstate: Show state of mouse buttons<br />
* kpm: Kolibri package manager<br />
<br />
### Update<br />
* Most network apps are converted to work with the new BSD compatible stack<br />
* Replace SysXtree based open dialog with OpenDialog, remove SysXtree<br />
* Add clipboard support<br />
* Use boxlib UI widgets<br />
* Use system-wide skin colors for UI<br />
* Use new bigger smoothed fonts<br />
* Use @notify to send desktop notifications<br />
* Ray: 3D ray demo<br />
* Animage: Raster image editor<br />
+ Save image as PNG<br />
+ Fast undo/redo algorithm<br />
+ Fix window flickering on redraw<br />
+ Change mouse cursors on work area<br />
* WebView: Text-based web browser<br />
+ Support named colors and italic text<br />
* @rb: Right button click menu<br />
+ FIXME<br />
* netcfg: Network driver control center<br />
+ Support multifunctional PCI devices<br />
* scrshoot: Default screenshooter app<br />
+ Save screenshots as PNG<br />
* Memory Blocks: matching game<br />
+ Complete rewrite FIXME<br />
* heed: Hex editor<br />
+ Many improvements to design and functionality<br />
* kiv: Kolibri Image Viewer<br />
+ Add image scaling support: fit-to-window and no-scale modes<br />
+ Add slide show mode<br />
+ Window title now includes the name of current file<br />
+ Toggle toolbar with hotkey<br />
+ Add configurable keyboard shortcuts<br />
* View3DS: 3D model viewer<br />
+ Support ASC file format<br />
* @taskbar: Desktop panel<br />
+ Tunable screen position (bottom/top) and look and feel<br />
+ Read configuration from config file<br />
+ Add hotkeys Win+D (clear/restore desktop), Win+R (start RUN application),<br />
PrintScreen (screenshot)<br />
+ Ask programs to terminate instead of killing them<br />
+ Close calendar on second click on time<br />
* OpenDialog: System file dialog<br />
+ Allow modes of operation: open file, save file, select directory<br />
+ Use PathShow widget from boxlib<br />
+ Edit and restore file name in SaveDialog<br />
* rtfread: RTF format viewer<br />
+ Optimize redraw, minimize blinking<br />
* Eolite: Explorer-like file manager<br />
+ FIXME History.txt<br />
* cpu: Task manager<br />
+ Hide system processes by default<br />
+ Eliminate redraw flickering<br />
* board: Debug log board<br />
+ Allow user to see messages written before its start<br />
+ Add stack dump after registers dump on crash<br />
+ Save logs to file<br />
+ Set log file name from the command line<br />
+ Delete 'Dump' tab<br />
+ Disallow more than one instance<br />
* kgb: Kolibri graphics benchmark<br />
+ Add benchmarks for sysfns 4, 36, 65, 73<br />
+ Add benchmark for screen area access via GS register<br />
+ Show difference in percent between two columns<br />
+ UI impovements<br />
* gmon: Monitor (by Ghost) of temperature, voltage, etc<br />
+ Fix CPUID extended Family/Model detection for modern CPUs<br />
* pcidev: PCI device information tool<br />
+ Detect and display user-accessible PCI memory channels<br />
+ Do not scan for other functions on single-function devices<br />
+ Show N/A message if the IRQ is not assigned<br />
+ Save devices list to file<br />
+ Increase maximum IRQ level<br />
* fasm: Flat assembler port<br />
+ Sync with 1.71 upstream version<br />
+ Use boxlib UI widget library<br />
+ Add debug (-d) flag support<br />
* mousemul: Mouse move emulation with numpad keys<br />
+ Advanced acceleration mode<br />
* rdsave: Ramdisk to file saver<br />
+ Select options with keys<br />
* netstat: Network statistics reporter<br />
+ Add dots in IPv4 addresses and dashes in MAC addresses<br />
+ Display number of queued (incoming) TCP packets<br />
+ Show first network adapter by default (skip loopback)<br />
* ktcc: Port of Tiny C Compiler<br />
+ Updated to 0.9.26 upstream release<br />
+ FIXME<br />
* @ss: Screensaver<br />
+ Accept saver type as command line argument<br />
+ React on key pressing, not only mouse<br />
* shell: Default shell<br />
+ New commands: FIXME which (History.txt)<br />
* tetris: Classic game<br />
+ Next figure will not fall too fast if you press and hold DOWN arrow key<br />
+ Ignore arrow keys when paused<br />
* clicks: Casual game<br />
+ FIXME Leency<br />
* kosilka: FIXME game<br />
+ Embed skin data into executable<br />
* launcher: Startup manager<br />
+ Accept quoted parameters<br />
+ Allow tabs in place of spaces<br />
* ac97snd: Audio player<br />
+ Playlist support<br />
* flood-it: FIXME game Leency<br />
+ FIXME<br />
* setup: System configurator<br />
+ Remove unused settings (midi, sb16, hd settings, etc.)<br />
+ Add option to mute speaker<br />
* @zeroconf: Zero-configuration networking service<br />
+ Support multiple network devices<br />
+ Allow static DNS when using DHCP<br />
+ Try 3 times to contact DHCP server before giving up<br />
* @icon: Desktop icons<br />
+ Allow moving icons with mouse<br />
+ Use only 2 threads for all the icons<br />
+ Use png icons with transparency<br />
* tinypad: Text editor<br />
+ Run compiled program in debugger by F10 key<br />
* reversi: FIXME game<br />
+ Add score printing<br />
* mtdbg: Debugger<br />
+ Support .map symbols file (as generated by GCC)<br />
+ Display contents of MMX and FPU registers<br />
+ User readable exception messages<br />
* eyes: Freeform window demo<br />
+ Fix blinking<br />
<br />
<br />
Bootloader<br />
----------<br />
<br />
* grub4kos: Multiboot compliant kernel wrapper<br />
* Read boot options from config.ini file<br />
* New boot option BOOT_DEBUG_PRINT, duplicate debug output to the screen<br />
* New boot option BOOT_LAUNCHER_START, whether to start very first userspace app<br />
<br />
<br />
Other<br />
-----<br />
<br />
* i586-kos32 GNU toolchain<br />
* Many new skins and icons<br />
* UX improvements and cosmetic UI fixes<br />
* Make '0' and 'O' symbols differ in default fonts<br />
* Numlock on at boot<br />
* Use /sys/settings directory for config files<br />
* test_malloc: Offline test of kernel malloc/free routines<br />
* mtrrtest: Offline test of MTRR reconfiguration<br />
* Set up automatic incremental post-commit builds of the whole distro<br />
* Introduce standard names and macros for syscall numbers<br />
* Translate more docs and comments to English<br />
* Code refactoring and cleanup<br />
* Stability fixes, speed and size optimizations<br />
</pre></div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Ideas_Page&diff=5462Ideas Page2019-02-04T12:29:41Z<p>Punk Joker: /* Eolite improvement */</p>
<hr />
<div>== Introduction ==<br />
This is our ideas page for new developers.<br />
<br />
== Organization ==<br />
<br />
You can find the organizers at our forum: http://board.kolibrios.org/<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
|Ivan Baravy<br />
|[[User:dunkaist|dunkaist]]<br />
|Administrator, Mentor<br />
|-<br />
|Dmitriy Smirnov<br />
|Pathoswithin<br />
|Mentor, (Administrator)<br />
|-<br />
|Serhii Sakhno<br />
|[[User:Punk_Joker|Punk_Joker]]<br />
|Mentor<br />
|-<br />
|Kiril Lipatov<br />
|[[User:Leency|Leency]]<br />
|C-- Mentor<br />
|}<br />
<br />
== Ideas ==<br />
<!--<br />
documentation from source generator<br />
filesystem in userspace (FUSE)<br />
gui layout engine using Cassowary algorithm https://duckduckgo.com/?q=The+Cassowary+linear+arithmetic+constraint+solving+algorithm&t=ffab&ia=web<br />
test suite: kernel, libraries<br />
disk usage utility<br />
libsort<br />
Haiku vector icon format<br />
--><br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Programming Language<br />
! Mentors<br />
|-<br />
| [[#File_system|File system]]<br />
| Kernel/Application<br />
| FASM (Assembler)<br />
| Pathoswithin<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide<br />
| FASM (Assembler), C<br />
| dunkaist<br />
|-<br />
| [[#Port_PolarSSL|Port PolarSSL]]<br />
| Library<br />
| C/FASM<br />
| Punk_Joker<br />
|-<br />
| [[#Port_FLTK|Port FLTK]]<br />
| Library<br />
| C<br />
| Punk_Joker<br />
|-<br />
| [[#XMPP.2FJabber_client|XMPP/Jabber client]]<br />
| Application<br />
| Assembler/FASM<br />
| <br />
|-<br />
| [[#Eolite_improvement|Eolite_improvement]]<br />
| Application<br />
| C--<br />
| Leency<br />
|-<br />
| [[#Fasmg_port|Fasmg port]]<br />
| Application<br />
| FASM/FASMG (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Unicode_library|Unicode library]]<br />
| Library/Application<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Document_viewer|Document viewer]]<br />
| Library/Application<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Virt-IO_driver|Virt-IO driver]]<br />
| Kernel<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Loop_device_driver|Loop device driver]]<br />
| Kernel<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#GIMP_plugin_for_skins|GIMP plugin for skins]]<br />
| Application<br />
| C/Python/Scheme<br />
| dunkaist<br />
|-<br />
| [[#RSS/Atom_news_reader|RSS/Atom news reader]]<br />
| Application<br />
| FASM (Assembler)<br />
| dunkaist<br />
|}<br />
<br />
=== File system ===<br />
* Primary goal: Add write support for ext4 file system (ext4 reading and ext2 writing are already supported).<br />
* Additional goal: Improve write support for NTFS file system.<br />
* Language: FASM (Assembler)<br />
* Links: [https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout Ext4 Disk Layout]<br />
<br />
=== Widget toolkit ===<br />
* 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.<br />
* Additional goal: Integrate created box_lib widgets to the C-framework, extend framework with font handling, layout manager<br />
* Language: FASM (Assembler), C (framework) <br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
=== Port PolarSSL ===<br />
* Primary goal: Make a working port of PolarSSL (as native KolibriOS MS COFF library) and add it to the automatic build-system.<br />
* Additional goal: Update HTTP library (written in FASM) to support HTTPS.<br />
* Language: C/FASM<br />
* 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]<br />
<br />
=== Port FLTK ===<br />
* Primary goal: Make a working port of FLTK (widget library) and add it to the automatic build-system.<br />
* Additional goal: port Scintilla (minimum working version)<br />
* Language: C<br />
* Links: [https://www.fltk.org/ Official site]<br />
<br />
=== XMPP/Jabber client ===<br />
* Primary goal: Write a basic XMPP/Jabber library and client for KolibriOS.<br />
* Additional goal: Implement some xmpp extentions.<br />
* Language: Assembler/FASM<br />
* 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]<br />
<br />
=== Eolite improvement ===<br />
GUI FileManager for KolibriOS<br />
* Primary goal: <br />
** Icon display mode (preview for images)<br />
** Improved two-pane mode<br />
** Adding tabs<br />
** Bookmarks / Favorites<br />
** Improvement of the procedures for deletion / copying (overwrite request, request to delete files with an attribute is read only)<br />
** View exif information<br />
** Etc<br />
* Additional goal: <br />
* Language: Assembler/FASM/FASMG<br />
* Links: [https://flatassembler.net/docs.php?article=fasmg FASMG overview], [https://flatassembler.net/docs.php?article=fasmg_manual FASMG manual]<br />
<br />
=== Fasmg port ===<br />
Tomasz Grysztar (creator of FASM) [https://flatassembler.net/docs.php?article=fasmg introduced] FASMG, a new assembler engine. It would be nice to support its new syntax in KolibriOS.<br />
* Primary goal: Write FASMG application like FASM one. Port standard KolibriOS macros to FASMG syntax.<br />
* Additional goal: Implement macros for compatibility with FASM.<br />
* Language: Assembler/FASM/FASMG<br />
* Links: [https://flatassembler.net/docs.php?article=fasmg FASMG overview], [https://flatassembler.net/docs.php?article=fasmg_manual FASMG manual]<br />
<br />
=== Unicode library ===<br />
Unicode is a huge and sophisticated standard. Nevertheless modern OS should provide libraries with Unicode related routines like NFC, NFD, sorting, comparing, etc.<br />
* Primary goal: Write a tiny Unicode library with core Unicode algorithms and example application.<br />
* Additional goal: Upgrade existing applications to use the new library.<br />
* Language: Assembler/FASM<br />
* Links: [http://git.suckless.org/libutf/ libutf]<br />
<br />
=== Document viewer ===<br />
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.<br />
* Primary goal: Design API for a document viewer extendable with plugins, implement it as a KolibriOS application.<br />
* Additional goal: Write some plugins like PDF or DJVU.<br />
* Language: Assembler/FASM<br />
* Links: [https://pwmt.org/projects/zathura/plugins/development/ Zathura plugin system]<br />
<br />
=== Virt-IO driver ===<br />
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. <br />
* Primary goal: Write kernel driver for, say, virt-io Ethernet card.<br />
* Additional goal: Write more drivers.<br />
* Language: Assembler/FASM<br />
* Links: [https://wiki.libvirt.org/page/Virtio Virt-IO wiki]<br />
<br />
=== Loop device driver ===<br />
* Primary goal: Write loop device driver and example application to manage loop devices.<br />
* Additional goal: Prepare a set of disk images to be used in filesystem unit tests.<br />
* Language: Assembler/FASM<br />
* Links: [https://en.wikipedia.org/wiki/Loop_device loop device overview]<br />
<br />
=== GIMP plugin for skins ===<br />
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.<br />
* Primary goal: Write a GIMP plugin to open/save KolibriOS skins.<br />
* Additional goal: Create more skins.<br />
* Language: C/Python/Scheme<br />
* Links: [https://developer.gimp.org/writing-a-plug-in/1/ How to write a GIMP plugin]<br />
<br />
=== RSS/Atom news reader ===<br />
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.<br />
* Primary goal: Write RSS news reader as a standalone KolibriOS application.<br />
* Additional goal: Add Atom support to the app.<br />
* Language: Assembler/FASM<br />
* Links: [http://tibleiz.net/asm-xml/ AsmXml library], [https://en.wikipedia.org/wiki/RSS RSS], [https://en.wikipedia.org/wiki/Atom_(standard) Atom]<br />
<br />
[[Category:Misc]]<br />
<br />
Most importantly...Have Fun!</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Ideas_Page&diff=5461Ideas Page2019-02-04T12:29:10Z<p>Punk Joker: </p>
<hr />
<div>== Introduction ==<br />
This is our ideas page for new developers.<br />
<br />
== Organization ==<br />
<br />
You can find the organizers at our forum: http://board.kolibrios.org/<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
|Ivan Baravy<br />
|[[User:dunkaist|dunkaist]]<br />
|Administrator, Mentor<br />
|-<br />
|Dmitriy Smirnov<br />
|Pathoswithin<br />
|Mentor, (Administrator)<br />
|-<br />
|Serhii Sakhno<br />
|[[User:Punk_Joker|Punk_Joker]]<br />
|Mentor<br />
|-<br />
|Kiril Lipatov<br />
|[[User:Leency|Leency]]<br />
|C-- Mentor<br />
|}<br />
<br />
== Ideas ==<br />
<!--<br />
documentation from source generator<br />
filesystem in userspace (FUSE)<br />
gui layout engine using Cassowary algorithm https://duckduckgo.com/?q=The+Cassowary+linear+arithmetic+constraint+solving+algorithm&t=ffab&ia=web<br />
test suite: kernel, libraries<br />
disk usage utility<br />
libsort<br />
Haiku vector icon format<br />
--><br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Programming Language<br />
! Mentors<br />
|-<br />
| [[#File_system|File system]]<br />
| Kernel/Application<br />
| FASM (Assembler)<br />
| Pathoswithin<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide<br />
| FASM (Assembler), C<br />
| dunkaist<br />
|-<br />
| [[#Port_PolarSSL|Port PolarSSL]]<br />
| Library<br />
| C/FASM<br />
| Punk_Joker<br />
|-<br />
| [[#Port_FLTK|Port FLTK]]<br />
| Library<br />
| C<br />
| Punk_Joker<br />
|-<br />
| [[#XMPP.2FJabber_client|XMPP/Jabber client]]<br />
| Application<br />
| Assembler/FASM<br />
| <br />
|-<br />
| [[#Eolite_improvement|Eolite_improvement]]<br />
| Application<br />
| C--<br />
| Leency<br />
|-<br />
| [[#Fasmg_port|Fasmg port]]<br />
| Application<br />
| FASM/FASMG (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Unicode_library|Unicode library]]<br />
| Library/Application<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Document_viewer|Document viewer]]<br />
| Library/Application<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Virt-IO_driver|Virt-IO driver]]<br />
| Kernel<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Loop_device_driver|Loop device driver]]<br />
| Kernel<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#GIMP_plugin_for_skins|GIMP plugin for skins]]<br />
| Application<br />
| C/Python/Scheme<br />
| dunkaist<br />
|-<br />
| [[#RSS/Atom_news_reader|RSS/Atom news reader]]<br />
| Application<br />
| FASM (Assembler)<br />
| dunkaist<br />
|}<br />
<br />
=== File system ===<br />
* Primary goal: Add write support for ext4 file system (ext4 reading and ext2 writing are already supported).<br />
* Additional goal: Improve write support for NTFS file system.<br />
* Language: FASM (Assembler)<br />
* Links: [https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout Ext4 Disk Layout]<br />
<br />
=== Widget toolkit ===<br />
* 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.<br />
* Additional goal: Integrate created box_lib widgets to the C-framework, extend framework with font handling, layout manager<br />
* Language: FASM (Assembler), C (framework) <br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
=== Port PolarSSL ===<br />
* Primary goal: Make a working port of PolarSSL (as native KolibriOS MS COFF library) and add it to the automatic build-system.<br />
* Additional goal: Update HTTP library (written in FASM) to support HTTPS.<br />
* Language: C/FASM<br />
* 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]<br />
<br />
=== Port FLTK ===<br />
* Primary goal: Make a working port of FLTK (widget library) and add it to the automatic build-system.<br />
* Additional goal: port Scintilla (minimum working version)<br />
* Language: C<br />
* Links: [https://www.fltk.org/ Official site]<br />
<br />
=== XMPP/Jabber client ===<br />
* Primary goal: Write a basic XMPP/Jabber library and client for KolibriOS.<br />
* Additional goal: Implement some xmpp extentions.<br />
* Language: Assembler/FASM<br />
* 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]<br />
<br />
=== Eolite improvement ===<br />
GUI FileManager for KolibriOS<br />
* Primary goal: <br />
** Icon display mode (preview for images)<br />
** Improved two-pane mode<br />
** Adding tabs<br />
** Bookmarks / Favorites<br />
** Improvement of the procedures for deletion / copying (overwrite request, request to delete files with an attribute is read only)<br />
** View exif information<br />
* Additional goal: <br />
* Language: Assembler/FASM/FASMG<br />
* Links: [https://flatassembler.net/docs.php?article=fasmg FASMG overview], [https://flatassembler.net/docs.php?article=fasmg_manual FASMG manual]<br />
<br />
=== Fasmg port ===<br />
Tomasz Grysztar (creator of FASM) [https://flatassembler.net/docs.php?article=fasmg introduced] FASMG, a new assembler engine. It would be nice to support its new syntax in KolibriOS.<br />
* Primary goal: Write FASMG application like FASM one. Port standard KolibriOS macros to FASMG syntax.<br />
* Additional goal: Implement macros for compatibility with FASM.<br />
* Language: Assembler/FASM/FASMG<br />
* Links: [https://flatassembler.net/docs.php?article=fasmg FASMG overview], [https://flatassembler.net/docs.php?article=fasmg_manual FASMG manual]<br />
<br />
=== Unicode library ===<br />
Unicode is a huge and sophisticated standard. Nevertheless modern OS should provide libraries with Unicode related routines like NFC, NFD, sorting, comparing, etc.<br />
* Primary goal: Write a tiny Unicode library with core Unicode algorithms and example application.<br />
* Additional goal: Upgrade existing applications to use the new library.<br />
* Language: Assembler/FASM<br />
* Links: [http://git.suckless.org/libutf/ libutf]<br />
<br />
=== Document viewer ===<br />
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.<br />
* Primary goal: Design API for a document viewer extendable with plugins, implement it as a KolibriOS application.<br />
* Additional goal: Write some plugins like PDF or DJVU.<br />
* Language: Assembler/FASM<br />
* Links: [https://pwmt.org/projects/zathura/plugins/development/ Zathura plugin system]<br />
<br />
=== Virt-IO driver ===<br />
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. <br />
* Primary goal: Write kernel driver for, say, virt-io Ethernet card.<br />
* Additional goal: Write more drivers.<br />
* Language: Assembler/FASM<br />
* Links: [https://wiki.libvirt.org/page/Virtio Virt-IO wiki]<br />
<br />
=== Loop device driver ===<br />
* Primary goal: Write loop device driver and example application to manage loop devices.<br />
* Additional goal: Prepare a set of disk images to be used in filesystem unit tests.<br />
* Language: Assembler/FASM<br />
* Links: [https://en.wikipedia.org/wiki/Loop_device loop device overview]<br />
<br />
=== GIMP plugin for skins ===<br />
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.<br />
* Primary goal: Write a GIMP plugin to open/save KolibriOS skins.<br />
* Additional goal: Create more skins.<br />
* Language: C/Python/Scheme<br />
* Links: [https://developer.gimp.org/writing-a-plug-in/1/ How to write a GIMP plugin]<br />
<br />
=== RSS/Atom news reader ===<br />
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.<br />
* Primary goal: Write RSS news reader as a standalone KolibriOS application.<br />
* Additional goal: Add Atom support to the app.<br />
* Language: Assembler/FASM<br />
* Links: [http://tibleiz.net/asm-xml/ AsmXml library], [https://en.wikipedia.org/wiki/RSS RSS], [https://en.wikipedia.org/wiki/Atom_(standard) Atom]<br />
<br />
[[Category:Misc]]<br />
<br />
Most importantly...Have Fun!</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Ideas_Page&diff=5459Ideas Page2019-02-03T23:43:18Z<p>Punk Joker: </p>
<hr />
<div>== Introduction ==<br />
This is our ideas page for new developers.<br />
<br />
== Organization ==<br />
<br />
You can find the organizers at our forum: http://board.kolibrios.org/<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
|Ivan Baravy<br />
|[[User:dunkaist|dunkaist]]<br />
|Administrator, Mentor<br />
|-<br />
|Dmitriy Smirnov<br />
|Pathoswithin<br />
|Mentor, (Administrator)<br />
|-<br />
|Serhii Sakhno<br />
|[[User:Punk_Joker|Punk_Joker]]<br />
|Mentor<br />
|-<br />
|<br />
|<br />
|Mentor<br />
|}<br />
<br />
== Ideas ==<br />
<!--<br />
documentation from source generator<br />
filesystem in userspace (FUSE)<br />
gui layout engine using Cassowary algorithm https://duckduckgo.com/?q=The+Cassowary+linear+arithmetic+constraint+solving+algorithm&t=ffab&ia=web<br />
test suite: kernel, libraries<br />
disk usage utility<br />
libsort<br />
Haiku vector icon format<br />
--><br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Programming Language<br />
! Mentors<br />
|-<br />
| [[#File_system|File system]]<br />
| Kernel/Application<br />
| FASM (Assembler)<br />
| Pathoswithin<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide<br />
| FASM (Assembler), C<br />
| dunkaist<br />
|-<br />
| [[#Port_PolarSSL|Port PolarSSL]]<br />
| Library<br />
| C/FASM<br />
| Punk_Joker<br />
|-<br />
| [[#Port_FLTK|Port FLTK]]<br />
| Library<br />
| C<br />
| Punk_Joker<br />
|-<br />
| [[#XMPP.2FJabber_client|XMPP/Jabber client]]<br />
| Application<br />
| Assembler/FASM<br />
| <br />
|-<br />
| [[#Fasmg_port|Fasmg port]]<br />
| Application<br />
| FASM/FASMG (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Unicode_library|Unicode library]]<br />
| Library/Application<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Document_viewer|Document viewer]]<br />
| Library/Application<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Virt-IO_driver|Virt-IO driver]]<br />
| Kernel<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Loop_device_driver|Loop device driver]]<br />
| Kernel<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#GIMP_plugin_for_skins|GIMP plugin for skins]]<br />
| Application<br />
| C/Python/Scheme<br />
| dunkaist<br />
|-<br />
| [[#RSS/Atom_news_reader|RSS/Atom news reader]]<br />
| Application<br />
| FASM (Assembler)<br />
| dunkaist<br />
|}<br />
<br />
=== File system ===<br />
* Primary goal: Add write support for ext4 file system (ext4 reading and ext2 writing are already supported).<br />
* Additional goal: Improve write support for NTFS file system.<br />
* Language: FASM (Assembler)<br />
* Links: [https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout Ext4 Disk Layout]<br />
<br />
=== Widget toolkit ===<br />
* 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.<br />
* Additional goal: Integrate created box_lib widgets to the C-framework, extend framework with font handling, layout manager<br />
* Language: FASM (Assembler), C (framework) <br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
=== Port PolarSSL ===<br />
* Primary goal: Make a working port of PolarSSL (as native KolibriOS MS COFF library) and add it to the automatic build-system.<br />
* Additional goal: Update HTTP library (written in FASM) to support HTTPS.<br />
* Language: C/FASM<br />
* 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]<br />
<br />
=== Port FLTK ===<br />
* Primary goal: Make a working port of FLTK (widget library) and add it to the automatic build-system.<br />
* Additional goal: port Scintilla (minimum working version)<br />
* Language: C<br />
* Links: [https://www.fltk.org/ Official site]<br />
<br />
=== XMPP/Jabber client ===<br />
* Primary goal: Write a basic XMPP/Jabber library and client for KolibriOS.<br />
* Additional goal: Implement some xmpp extentions.<br />
* Language: Assembler/FASM<br />
* 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]<br />
<br />
=== Fasmg port ===<br />
Tomasz Grysztar (creator of FASM) [https://flatassembler.net/docs.php?article=fasmg introduced] FASMG, a new assembler engine. It would be nice to support its new syntax in KolibriOS.<br />
* Primary goal: Write FASMG application like FASM one. Port standard KolibriOS macros to FASMG syntax.<br />
* Additional goal: Implement macros for compatibility with FASM.<br />
* Language: Assembler/FASM/FASMG<br />
* Links: [https://flatassembler.net/docs.php?article=fasmg FASMG overview], [https://flatassembler.net/docs.php?article=fasmg_manual FASMG manual]<br />
<br />
=== Unicode library ===<br />
Unicode is a huge and sophisticated standard. Nevertheless modern OS should provide libraries with Unicode related routines like NFC, NFD, sorting, comparing, etc.<br />
* Primary goal: Write a tiny Unicode library with core Unicode algorithms and example application.<br />
* Additional goal: Upgrade existing applications to use the new library.<br />
* Language: Assembler/FASM<br />
* Links: [http://git.suckless.org/libutf/ libutf]<br />
<br />
=== Document viewer ===<br />
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.<br />
* Primary goal: Design API for a document viewer extendable with plugins, implement it as a KolibriOS application.<br />
* Additional goal: Write some plugins like PDF or DJVU.<br />
* Language: Assembler/FASM<br />
* Links: [https://pwmt.org/projects/zathura/plugins/development/ Zathura plugin system]<br />
<br />
=== Virt-IO driver ===<br />
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. <br />
* Primary goal: Write kernel driver for, say, virt-io Ethernet card.<br />
* Additional goal: Write more drivers.<br />
* Language: Assembler/FASM<br />
* Links: [https://wiki.libvirt.org/page/Virtio Virt-IO wiki]<br />
<br />
=== Loop device driver ===<br />
* Primary goal: Write loop device driver and example application to manage loop devices.<br />
* Additional goal: Prepare a set of disk images to be used in filesystem unit tests.<br />
* Language: Assembler/FASM<br />
* Links: [https://en.wikipedia.org/wiki/Loop_device loop device overview]<br />
<br />
=== GIMP plugin for skins ===<br />
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.<br />
* Primary goal: Write a GIMP plugin to open/save KolibriOS skins.<br />
* Additional goal: Create more skins.<br />
* Language: C/Python/Scheme<br />
* Links: [https://developer.gimp.org/writing-a-plug-in/1/ How to write a GIMP plugin]<br />
<br />
=== RSS/Atom news reader ===<br />
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.<br />
* Primary goal: Write RSS news reader as a standalone KolibriOS application.<br />
* Additional goal: Add Atom support to the app.<br />
* Language: Assembler/FASM<br />
* Links: [http://tibleiz.net/asm-xml/ AsmXml library], [https://en.wikipedia.org/wiki/RSS RSS], [https://en.wikipedia.org/wiki/Atom_(standard) Atom]<br />
<br />
[[Category:Misc]]<br />
<br />
Most importantly...Have Fun!</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Ideas_Page&diff=5458Ideas Page2019-02-03T23:39:34Z<p>Punk Joker: /* Sortable list of ideas for easy navigation */</p>
<hr />
<div>== Introduction ==<br />
This is our ideas page for new developers.<br />
<br />
== Organization ==<br />
<br />
You can find the organizers at our forum: http://board.kolibrios.org/<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
|Ivan Baravy<br />
|[[User:dunkaist|dunkaist]]<br />
|Administrator, Mentor<br />
|-<br />
|Dmitriy Smirnov<br />
|Pathoswithin<br />
|Mentor, (Administrator)<br />
|-<br />
|Serhii Sakhno<br />
|[[User:Punk_Joker|Punk_Joker]]<br />
|Mentor<br />
|-<br />
|<br />
|<br />
|Mentor<br />
|}<br />
<br />
== Ideas ==<br />
<!--<br />
documentation from source generator<br />
filesystem in userspace (FUSE)<br />
gui layout engine using Cassowary algorithm https://duckduckgo.com/?q=The+Cassowary+linear+arithmetic+constraint+solving+algorithm&t=ffab&ia=web<br />
test suite: kernel, libraries<br />
disk usage utility<br />
libsort<br />
Haiku vector icon format<br />
--><br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Programming Language<br />
! Mentors<br />
|-<br />
| [[#File_system|File system]]<br />
| Kernel/Application<br />
| FASM (Assembler)<br />
| Pathoswithin<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide<br />
| FASM (Assembler), C<br />
| dunkaist<br />
|-<br />
| [[#Port_PolarSSL|Port PolarSSL]]<br />
| Library<br />
| C/FASM<br />
| Punk_Joker<br />
|-<br />
| [[#Port_FLTK|Port FLTK]]<br />
| Library<br />
| C<br />
| Punk_Joker<br />
|-<br />
| [[#XMPP.2FJabber_client|XMPP/Jabber client]]<br />
| Application<br />
| Assembler/FASM<br />
| <br />
|-<br />
| [[#Fasmg_port|Fasmg port]]<br />
| Application<br />
| FASM/FASMG (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Unicode_library|Unicode library]]<br />
| Library/Application<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Document_viewer|Document viewer]]<br />
| Library/Application<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Virt-IO_driver|Virt-IO driver]]<br />
| Kernel<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Loop_device_driver|Loop device driver]]<br />
| Kernel<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#GIMP_plugin_for_skins|GIMP plugin for skins]]<br />
| Application<br />
| C/Python/Scheme<br />
| dunkaist<br />
|-<br />
| [[#RSS/Atom_news_reader|RSS/Atom news reader]]<br />
| Application<br />
| FASM (Assembler)<br />
| dunkaist<br />
|}<br />
<br />
=== File system ===<br />
* Primary goal: Add write support for ext4 file system (ext4 reading and ext2 writing are already supported).<br />
* Additional goal: Improve write support for NTFS file system.<br />
* Language: FASM (Assembler)<br />
* Links: [https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout Ext4 Disk Layout]<br />
<br />
=== Widget toolkit ===<br />
* 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.<br />
* Additional goal: Integrate created box_lib widgets to the C-framework, extend framework with font handling, layout manager<br />
* Language: FASM (Assembler), C (framework) <br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
=== Port PolarSSL ===<br />
* Primary goal: Make a working port of PolarSSL (as native KolibriOS MS COFF library) and add it to the automatic build-system.<br />
* Additional goal: Update HTTP library (written in FASM) to support HTTPS.<br />
* Language: C/FASM<br />
* 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]<br />
<br />
=== XMPP/Jabber client ===<br />
* Primary goal: Write a basic XMPP/Jabber library and client for KolibriOS.<br />
* Additional goal: Implement some xmpp extentions.<br />
* Language: Assembler/FASM<br />
* 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]<br />
<br />
=== Fasmg port ===<br />
Tomasz Grysztar (creator of FASM) [https://flatassembler.net/docs.php?article=fasmg introduced] FASMG, a new assembler engine. It would be nice to support its new syntax in KolibriOS.<br />
* Primary goal: Write FASMG application like FASM one. Port standard KolibriOS macros to FASMG syntax.<br />
* Additional goal: Implement macros for compatibility with FASM.<br />
* Language: Assembler/FASM/FASMG<br />
* Links: [https://flatassembler.net/docs.php?article=fasmg FASMG overview], [https://flatassembler.net/docs.php?article=fasmg_manual FASMG manual]<br />
<br />
=== Unicode library ===<br />
Unicode is a huge and sophisticated standard. Nevertheless modern OS should provide libraries with Unicode related routines like NFC, NFD, sorting, comparing, etc.<br />
* Primary goal: Write a tiny Unicode library with core Unicode algorithms and example application.<br />
* Additional goal: Upgrade existing applications to use the new library.<br />
* Language: Assembler/FASM<br />
* Links: [http://git.suckless.org/libutf/ libutf]<br />
<br />
=== Document viewer ===<br />
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.<br />
* Primary goal: Design API for a document viewer extendable with plugins, implement it as a KolibriOS application.<br />
* Additional goal: Write some plugins like PDF or DJVU.<br />
* Language: Assembler/FASM<br />
* Links: [https://pwmt.org/projects/zathura/plugins/development/ Zathura plugin system]<br />
<br />
=== Virt-IO driver ===<br />
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. <br />
* Primary goal: Write kernel driver for, say, virt-io Ethernet card.<br />
* Additional goal: Write more drivers.<br />
* Language: Assembler/FASM<br />
* Links: [https://wiki.libvirt.org/page/Virtio Virt-IO wiki]<br />
<br />
=== Loop device driver ===<br />
* Primary goal: Write loop device driver and example application to manage loop devices.<br />
* Additional goal: Prepare a set of disk images to be used in filesystem unit tests.<br />
* Language: Assembler/FASM<br />
* Links: [https://en.wikipedia.org/wiki/Loop_device loop device overview]<br />
<br />
=== GIMP plugin for skins ===<br />
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.<br />
* Primary goal: Write a GIMP plugin to open/save KolibriOS skins.<br />
* Additional goal: Create more skins.<br />
* Language: C/Python/Scheme<br />
* Links: [https://developer.gimp.org/writing-a-plug-in/1/ How to write a GIMP plugin]<br />
<br />
=== RSS/Atom news reader ===<br />
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.<br />
* Primary goal: Write RSS news reader as a standalone KolibriOS application.<br />
* Additional goal: Add Atom support to the app.<br />
* Language: Assembler/FASM<br />
* Links: [http://tibleiz.net/asm-xml/ AsmXml library], [https://en.wikipedia.org/wiki/RSS RSS], [https://en.wikipedia.org/wiki/Atom_(standard) Atom]<br />
<br />
[[Category:Misc]]<br />
<br />
Most importantly...Have Fun!</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Ideas_Page&diff=5456Ideas Page2019-02-02T09:52:31Z<p>Punk Joker: </p>
<hr />
<div>== Introduction ==<br />
This is our ideas page for new developers.<br />
<br />
== Organization ==<br />
<br />
You can find the organizers at our forum: http://board.kolibrios.org/<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
|Ivan Baravy<br />
|[[User:dunkaist|dunkaist]]<br />
|Administrator, Mentor<br />
|-<br />
|<br />
|<br />
|Administrator, Mentor<br />
|-<br />
|Serhii Sakhno<br />
|[[User:Punk_Joker|Punk_Joker]]<br />
|Mentor<br />
|-<br />
|<br />
|<br />
|Mentor<br />
|}<br />
<br />
== Ideas ==<br />
<!--<br />
documentation from source generator<br />
filesystem in userspace (FUSE)<br />
gui layout engine using Cassowary algorithm https://duckduckgo.com/?q=The+Cassowary+linear+arithmetic+constraint+solving+algorithm&t=ffab&ia=web<br />
test suite: kernel, libraries<br />
disk usage utility<br />
libsort<br />
Haiku vector icon format<br />
--><br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Programming Language<br />
! Mentors<br />
|-<br />
| [[#File_system|File system]]<br />
| Kernel/Application<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide<br />
| FASM (Assembler), C<br />
| dunkaist<br />
|-<br />
| [[#Port_PolarSSL|Port PolarSSL]]<br />
| Library<br />
| C/FASM<br />
| Punk_Joker<br />
|-<br />
| [[#XMPP.2FJabber_client|XMPP/Jabber client]]<br />
| Application<br />
| Assembler/FASM<br />
| <br />
|-<br />
| [[#Fasmg_port|Fasmg port]]<br />
| Application<br />
| FASM/FASMG (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Unicode_library|Unicode library]]<br />
| Library/Application<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Document_viewer|Document viewer]]<br />
| Library/Application<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Virt-IO_driver|Virt-IO driver]]<br />
| Kernel<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#Loop_device_driver|Loop device driver]]<br />
| Kernel<br />
| FASM (Assembler)<br />
| dunkaist<br />
|-<br />
| [[#GIMP_plugin_for_skins|GIMP plugin for skins]]<br />
| Application<br />
| C/Python/Scheme<br />
| dunkaist<br />
|-<br />
| [[#RSS/Atom_news_reader|RSS/Atom news reader]]<br />
| Application<br />
| FASM (Assembler)<br />
| dunkaist<br />
|}<br />
<br />
=== File system ===<br />
* Primary goal: Add write support for ext4 file system (ext4 reading and ext2 writing are already supported).<br />
* Additional goal: Improve write support for NTFS file system.<br />
* Language: FASM (Assembler)<br />
* Links: [https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout Ext4 Disk Layout]<br />
<br />
=== Widget toolkit ===<br />
* 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.<br />
* Additional goal: Integrate created box_lib widgets to the C-framework, extend framework with font handling, layout manager<br />
* Language: FASM (Assembler), C (framework) <br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
=== Port PolarSSL ===<br />
* Primary goal: Make a working port of PolarSSL (as native KolibriOS MS COFF library) and add it to the automatic build-system.<br />
* Additional goal: Update HTTP library (written in FASM) to support HTTPS.<br />
* Language: C/FASM<br />
* 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]<br />
<br />
=== XMPP/Jabber client ===<br />
* Primary goal: Write a basic XMPP/Jabber library and client for KolibriOS.<br />
* Additional goal: Implement some xmpp extentions.<br />
* Language: Assembler/FASM<br />
* 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]<br />
<br />
=== Fasmg port ===<br />
Tomasz Grysztar (creator of FASM) [https://flatassembler.net/docs.php?article=fasmg introduced] FASMG, a new assembler engine. It would be nice to support its new syntax in KolibriOS.<br />
* Primary goal: Write FASMG application like FASM one. Port standard KolibriOS macros to FASMG syntax.<br />
* Additional goal: Implement macros for compatibility with FASM.<br />
* Language: Assembler/FASM/FASMG<br />
* Links: [https://flatassembler.net/docs.php?article=fasmg FASMG overview], [https://flatassembler.net/docs.php?article=fasmg_manual FASMG manual]<br />
<br />
=== Unicode library ===<br />
Unicode is a huge and sophisticated standard. Nevertheless modern OS should provide libraries with Unicode related routines like NFC, NFD, sorting, comparing, etc.<br />
* Primary goal: Write a tiny Unicode library with core Unicode algorithms and example application.<br />
* Additional goal: Upgrade existing applications to use the new library.<br />
* Language: Assembler/FASM<br />
* Links: [http://git.suckless.org/libutf/ libutf]<br />
<br />
=== Document viewer ===<br />
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.<br />
* Primary goal: Design API for a document viewer extendable with plugins, implement it as a KolibriOS application.<br />
* Additional goal: Write some plugins like PDF or DJVU.<br />
* Language: Assembler/FASM<br />
* Links: [https://pwmt.org/projects/zathura/plugins/development/ Zathura plugin system]<br />
<br />
=== Virt-IO driver ===<br />
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. <br />
* Primary goal: Write kernel driver for, say, virt-io Ethernet card.<br />
* Additional goal: Write more drivers.<br />
* Language: Assembler/FASM<br />
* Links: [https://wiki.libvirt.org/page/Virtio Virt-IO wiki]<br />
<br />
=== Loop device driver ===<br />
* Primary goal: Write loop device driver and example application to manage loop devices.<br />
* Additional goal: Prepare a set of disk images to be used in filesystem unit tests.<br />
* Language: Assembler/FASM<br />
* Links: [https://en.wikipedia.org/wiki/Loop_device loop device overview]<br />
<br />
=== GIMP plugin for skins ===<br />
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.<br />
* Primary goal: Write a GIMP plugin to open/save KolibriOS skins.<br />
* Additional goal: Create more skins.<br />
* Language: C/Python/Scheme<br />
* Links: [https://developer.gimp.org/writing-a-plug-in/1/ How to write a GIMP plugin]<br />
<br />
=== RSS/Atom news reader ===<br />
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.<br />
* Primary goal: Write RSS news reader as a standalone KolibriOS application.<br />
* Additional goal: Add Atom support to the app.<br />
* Language: Assembler/FASM<br />
* Links: [http://tibleiz.net/asm-xml/ AsmXml library], [https://en.wikipedia.org/wiki/RSS RSS], [https://en.wikipedia.org/wiki/Atom_(standard) Atom]<br />
<br />
[[Category:Misc]]<br />
<br />
Most importantly...Have Fun!</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Google_Summer_of_Code_2016&diff=5328Google Summer of Code 20162016-03-30T14:06:25Z<p>Punk Joker: /* Sortable list of ideas for easy navigation */</p>
<hr />
<div><!-- [[Image:GSoC2015.png|right]] --><br />
== Introduction ==<br />
KolibriOS is going to apply as a mentoring organization for [https://developers.google.com/open-source/gsoc/ Google Summer of Code 2016]. This page contains our ideas list and some additional information for students and mentors.<br />
<br />
We have previously participated as a Mentoring Organization in [http://www.google-melange.com/gsoc/homepage/google/gsoc2014 Google Summer of Code 2014]. The [[Google Summer of Code 2014|ideas page for 2014]] is available for your reference. Our organization page for GSoC 2014 and successfully completed projects for that year can be accessed [https://www.google-melange.com/gsoc/org2/google/gsoc2014/kolibrios via this link]. To our great delight, both successful students of GSoC2014 stayed with the project and continue contributing to KolibriOS voluntarily in their spare time.<br />
<br />
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.<br />
<br />
== Student Requirements ==<br />
Prospective students are required to register [http://board.kolibrios.org/ on our developers forum], register [http://board.kolibrios.org/viewtopic.php?f=7&t=3240 yourself as a student], 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] (25 March 19:00 UTC).'''<br><br><br />
In addition, students need to answer the following questions when applying:<br />
# Full Name (First + Last Name).<br />
# E-mail address.<br />
# Phone (home or mobile).<br />
# Another phone '''for emergency cases''' (if we cannot contact you) - parents, boy/girlfriend, husband/wife etc.<br />
# Nickname you plan to use on our forums, SVN repository or IRC chat.<br />
# Age.<br />
# Country + city of residence.<br />
# Human languages you speak (state all languages and knowledge level - basic/intermediate/expert/mother tongue).<br />
# Name of college or university you are accepted into or enrolled in + link to their website.<br />
# Name of program (or faculty, or department) in that college/university you are accepted into or enrolled in.<br />
# Your current timezone in UTC/GMT terms (for example, Paris is UTC/GMT +1 hours right now).<br />
# Have you been involved with any open-source project in the past? If yes, which one, and what have you done for that project?<br />
# 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.<br />
# The task you are willing to work on from our list of Summer of Code 2016 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.<br />
# 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.''<br />
<br />
== Organization ==<br />
<br />
You can find the organizers on the IRC channel (#kolibrios @ irc.freenode.net) or at our forum: http://board.kolibrios.org/<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
|Dmitriy Smirnov<br />
|Pathoswithin<br />
|Administrator for GSoC, mentor<br />
|-<br />
|Jeffrey Amelynck<br />
|[[User:Hidnplayr|hidnplayr]]<br />
|Mentor, backup administrator<br />
|-<br />
|Kiril Lipatov<br />
|[[User:Leency|Leency]]<br />
|Mentor<br />
|-<br />
|Ashish Gupta<br />
|[[User:ashmew2|ashmew2]]<br />
|Mentor<br />
|-<br />
|Sergey Kuzmin<br />
|[[User:Wildwest|Wildwest]]<br />
|Mentor<br />
|-<br />
|}<br />
We have discussed "Google Summer of Code 2016" application with all active members of the KolibriOS Project Team, and selected only those 3 (three) people who have both the knowledge, the dedication, and the 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.<br />
<br />
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 GSoC2014.<br />
<br />
== Ideas for Google Summer of Code 2016 ==<br />
The below list contains ideas suggested by KolibriOS team members. '''It is neither complete nor final.'''<br><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.<br />
<br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Required Skill Level<br />
! Importance for KolibriOS<br />
! Programming Language<br />
! Mentor<br />
|-<br />
| [[#XDXF_dictionary|XDXF dictionary]]<br />
| Application<br />
| Basic<br />
| Low<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#CPUID_tool|CPUID tool]]<br />
| Application<br />
| Beginner<br />
| Low<br />
| Assembler(FASM)<br />
| Wildwest<br />
|-<br />
| [[#FTP_client|FTP client]]<br />
| Application<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Torrent_client|Torrent client]]<br />
| Application<br />
| Advanced<br />
| High<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#XMPP.2FJabber_client|XMPP/Jabber client]]<br />
| Application<br />
| Intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Music_player|Music player]]<br />
| Application<br />
| Advanced<br />
| Medium<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#Web_browser|Web browser]]<br />
| Application<br />
| Intermediate<br />
| High<br />
| [http://www.dev0.de/cmm/indexe.htm Sphinx C--]<br />
| Leency<br />
|-<br />
| [[#Ethernet_driver.28s.29|Ethernet driver(s)]]<br />
| Driver<br />
| Advanced<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#SD_Host_Controller|SD Host Controller driver]]<br />
| Driver<br />
| Advanced<br />
| Low<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#USB_devices|USB device drivers]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Filesystem_support|Filesystem support]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#Wi-Fi|Wi-Fi]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide task<br />
| Intermediate<br />
| High<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#QR-code_in_boot_log|QR-code in boot log]]<br />
| Kernel/Library<br />
| Basic<br />
| Low<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#C layer for KolibriOS|C layer for KolibriOS]]<br />
| Library<br />
| Intermediate / Advanced<br />
| Medium / High<br />
| C<br />
| Ashmew2<br />
|-<br />
| [[#Virtualbox / QEMU support for KolibriOS|Virtualbox support for KolibriOS]]<br />
| Library<br />
| Advanced<br />
| Medium<br />
| C<br />
| Ashmew2<br />
|-<br />
| [[#Port PolarSSL|Port PolarSSL]]<br />
| Library<br />
| Intermediate / Advanced <br />
| High<br />
| C / FASM<br />
| hidnplayr / ashmew2<br />
|-<br />
| [[#Port ScummVM|Port ScummVM]]<br />
| Library<br />
| Intermediate / Advanced <br />
| Medium <br />
| C / FASM<br />
| hidnplayr / ashmew2<br />
|}<br />
Explanation of required skill level:<br />
* Beginner: No knowledge at all of the topic,<br />
* Basic: A very basic knowledge of the topic but no professional usage,<br />
* Intermediate: A basic knowledge of the topic but no regular professional usage,<br />
* Advanced: A good knowledge of the topic and a regular professional usage,<br />
* Expert: a perfect knowledge of the topic and a daily professional usage.<br />
<br />
Explanation of importance for the project:<br />
* Low: For sure it doesn't hurt to implement, but if nobody does it, no one will even notice.<br />
* Medium: Nice-to-have feature. Will improve everyday life of users and developers.<br />
* High: This feature is needed for the project to start being adopted by masses.<br />
<br />
=== Applications ===<br />
These are userspace tasks. They often require only basic knowledge of algorithms and data structures.<br><br />
No specific experience is required but welcome.<br />
<br />
==== XDXF dictionary ====<br />
'''Summary:''' Write dictionary application with support of XDXF (XML Dictionary eXchange Format)<br />
<br />
'''Details:'''<br />
* Primary goal: Write library and corresponding dictionary application<br />
* Additional goal: Support of other dictioinary formats<br />
* Language: Assembler/FASM<br />
* Skill level: basic<br />
* Importance: low<br />
* Mentor: Pathoswithin<br />
* Links: [http://tibleiz.net/asm-xml/ fasm xml library], [https://en.wikipedia.org/wiki/XDXF XDXF format]<br />
<br />
<br />
==== CPUID tool ====<br />
'''Summary:''' Update existing CPUID application to be aware of new CPUs and their features<br />
<br />
'''Details:'''<br />
* Primary goal: Write code to detect and report new CPUs and features + size detection for caches<br />
* Additional goal: Refactor code as to use system libraries (libimg, box_lib, etc.)<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: low<br />
* Mentor: Wildwest<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fprograms%2Fsystem%2Fcpuid%2Ftrunk%2F&#aec5d374b78ae8f08110b3327c3ba5f56 CPUID program], [http://bochs.sourceforge.net/techspec/24161821.pdf Intel cpuid], [http://support.amd.com/TechDocs/25481.pdf AMD cpuid], [http://board.kolibrios.org/viewtopic.php?f=42&t=594&start=90 forum topic about application]<br />
<br />
==== FTP client ====<br />
'''Summary:''' Create a GUI based FTP client or add FTP support to one of the existing file managers<br />
<br />
'''Details:'''<br />
* Primary goal: FTP access (download/upload/etc.)<br />
* Additional goal: Create an FTP client library<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [https://www.ietf.org/rfc/rfc959.txt File Transfer Protocol (RFC959)], [http://board.kolibrios.org/viewtopic.php?f=40&t=2360 CLI FTP client (demo)]<br />
<br />
<br />
==== Torrent client ====<br />
'''Summary:''' Write a (bit-)torrent client for KolibriOS, or port an existing one<br />
<br />
'''Details:'''<br />
* Primary goal: Implement a torrent client similar to [http://www.utorrent.com/ µTorrent Free edition]<br />
* Alternative goal (less preferred, but still possible): Port an existing torrent client to KolibriOS<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://www.bittorrent.org Information about the protocol]<br />
<br />
<br />
==== XMPP/Jabber client ====<br />
'''Summary:''' Write a XMPP/Jabber library and client for KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Write basic xmpp library/client<br />
* Additional goal: Implement some xmpp extentions<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* 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]<br />
<br />
<br />
==== Music player ====<br />
'''Summary:''' Improve the current music player in Kolibri<br />
<br />
'''Details:'''<br />
* Primary goal: Rewrite the current music player (ac97snd), in FASM, and improve its functionality<br />
:* Support for file formats wav, mp3 and xm (using available external libraries)<br />
:* Support for playlists (m3u)<br />
:* A time display<br />
* Additional goal:<br />
:* Use of system wide hotkeys to control player<br />
:* Support for metadata (ID3, ...)<br />
:* More codecs (flac, vorbis, ...)<br />
:* Audio indication (oscillograph, bar graph, ...)<br />
:* Show cover art from files or album folder<br />
:* Fade in/out and/or crossover<br />
:* Streaming radio (at least mp3 over http stream)<br />
:* Skins<br />
:* Media library<br />
* Language: Assembler/FASM (C/C++ to port codec)<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: hidnplayr<br />
* Links: [http://board.kolibrios.org/viewtopic.php?f=38&t=1596 AC97SND (MP3 player in C)], [http://board.kolibrios.org/viewtopic.php?f=28&t=317 Sound drivers and architecture], [http://board.kolibrios.org/viewtopic.php?f=38&t=3003 Flac decoder],[http://board.kolibrios.org/viewtopic.php?f=38&t=2220 Minimp3 (minimalistic mp3 decoding library)], [http://board.kolibrios.org/viewtopic.php?f=38&t=161 SuperMP3 (IDv3 tag demo)]<br />
<br />
<br />
==== Web browser ====<br />
'''Summary:''' Improve existing text-only web browser Aelia (ex WebView) - add more functionality and compatibility<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: [http://www.dev0.de/cmm/indexe.htm Sphinx C--]. May require writing a few lines in FASM though<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: Leency<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
* [http://board.kolibrios.org/viewtopic.php?f=40&t=1075 Work done so far on WebView (mostly in Russian)]. If you don't know Russian, you can read [http://translate.google.com/translate?hl=en&sl=ru&tl=en&u=http%3A%2F%2Fboard.kolibrios.org%2Fviewtopic.php%3Ff%3D40%26t%3D1075 English translation using Google-Translate]<br />
<br />
==== Port ScummVM ====<br />
'''Summary:''' Port ScummVM to KolibriOS.<br />
<br />
'''Details:'''<br />
* Primary goal: Port ScummVM to KolibriOS so that users can enjoy a wide range of already available software that runs on it.<br />
* Secondary goal: Optimize for KolibriOS<br />
* Language: C / FASM<br />
* Skill level: intermediate / advanced<br />
* Importance: Medium<br />
* Mentors: hidnplayr / ashmew2<br />
'''Links:'''<br />
* [https://sourceforge.net/projects/scummvm/ ScummVM website], [https://sourceforge.net/projects/menuet/files/CD/A/ Old ScummVM port for MenuetOS]<br />
<br />
=== Drivers ===<br />
Writing drivers is about supporting new hardware and filesystems.<br><br />
Knowledge of specifications and previous experience are ''not'' required but surely desirable.<br />
<br />
==== Ethernet driver(s) ====<br />
'''Summary:''' Write an Ethernet driver<br />
<br />
'''Details:'''<br />
* Primary goal: Support for popular Broadcom, Atheros or Marvell Yukon ethernet cards<br />
* Additional goal: A second driver for another card family, PPPoE support in kernel, ...<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: Medium<br />
* Mentor: hidnplayr<br />
* Links: [https://www.broadcom.com/collateral/pg/57XX-PG105-R.pdf BCM57xx programmers guide], [[Writing network drivers for KolibriOS]], [https://github.com/UDOOboard/U-Boot_Unico/blob/master/drivers/net/bcm570x.c BCM570x driver for u-boot (in C)], [http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fdrivers%2Funfinished%2Fbcm57xx.asm Stub for BCM57xx driver]<br />
<br />
<br />
==== SD Host Controller ====<br />
'''Summary:''' Add support for SD Host Controller<br />
<br />
'''Details:'''<br />
* Primary goal: Write driver for particular controller<br />
* Additional goal: Test and update driver to work for all controllers<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: Low<br />
* Mentor: Pathoswithin<br />
* Links: [https://www.sdcard.org/downloads/pls/simplified_specs/index.html SD specifications]<br />
<br />
==== USB devices ====<br />
'''Summary:''' Add USB drivers for the new USB stack (webcams, gamepads, joysticks, tablets, etc.)<br />
<br />
'''Details:'''<br />
* Primary goal: Write USB driver for currently unsupported device (you should have one)<br />
* Additional goal: Adopt code to work with all devices of the same class<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://en.wikipedia.org/wiki/USB#Device_classes USB device classes]<br />
<br />
<br />
==== Filesystem support ====<br />
'''Summary:''' Improve filesystem support in KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Update/fix read-write support for ext2/3/4 filesystems (partially done)<br />
* Additional goal: Any improvement of filesystem support in KolibriOS<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: Pathoswithin<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Ffs%2F&#a0aa5cede7308db82d4bae78266ed8462 Filesystems in KolibriOS]<br />
<br />
<br />
==== Wi-Fi ====<br />
'''Summary:''' Add Wi-Fi support to KolibriOS. <br />
<br />
'''Details:'''<br />
* Description: Write or port a Wi-Fi driver for KolibriOS, implement the ability to set a wireless connection.<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [https://en.wikipedia.org/wiki/Comparison_of_open-source_wireless_drivers Comparison of open source wifi drivers]<br />
<br />
<br />
=== System wide tasks ===<br />
These tasks comprise both user space and kernel space work. Some developers consider them as of most importance for KolibriOS.<br><br />
Architecture and algorithm design skills are highly desirable.<br />
<br />
==== Widget toolkit ====<br />
'''Summary:''' Extend Box_lib (a set of separate widgets) to create a full-featured widget toolkit<br />
<br />
'''Details:'''<br />
* Primary goal: Design architecture and implement focus handling, callbacks and other core ideas<br />
* Additional goal: Integrate box_lib widgets to this framework<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Importance: High<br />
* Mentor: Pathoswithin<br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
<br />
==== QR-code in boot log ====<br />
'''Summary:''' Add a [http://en.wikipedia.org/wiki/QR_code QR-code] (containing the debug log) at the end of boot process<br />
<br />
[[File:QR-code.png]]<br />
<br />
'''Details:'''<br />
* Description: Sometimes KolibriOS cannot boot on a certain hardware configuration (gets stuck during or after boot process). In such cases, we request the user having this problem to enable debug log at boot time, take a photo of the screen and show it to us (in the forum). However, sometimes taking a good quality photo can be quite challenging (bad camera, shaking hands etc.) and the attached photo is so blurry to the point the debug log cannot be even read. The idea suggested hereby is to simultaneously encode the debug log which is outputted on the screen, to the form of QR-code, and show the resulting QR-code on empty space on the screen. In such way, any user possessing a smartphone with a camera and QR-code scanner, could scan the QR-code and submit the encoded text directly on our forums (without having a need to take a photo), and our developers, in turn, would get the debug log text immediately and won't have to unscramble a blurry photo.<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Mentor: Pathoswithin<br />
<br />
<br />
==== C layer for KolibriOS ====<br />
'''Summary:''' Building a C layer for KolibriOS, so that we can get more developers and port more code to KolibriOS more easily.<br />
<br />
'''Details:'''<br />
* Description: As a lot of software out there is available in C and useful for KolibriOS, building an ecosystem around C and FASM is required. Some work towards a cross compiler has already been done. Since KolibriOS is neither Linux, nor Windows..it is challenging to port software. In order to automate this, we need to port existing libraries and figure out a way to automate/streamline this process. The best part about this is that you get to mix C and FASM in unprecedented ways and learn along the way. The end result should be as easy as writing a Makefile and calling the cross compiler which creates a binary for Kolibri OS. The eventual aim is to have libraries in C available for KolibriOS which let you use the same ASM procedures in C code. Some work on this has already been done. Get in touch to know more!<br />
Example:<br />
#include<kolibri.h><br />
int main()<br />
{ <br />
kolibri_window("Hi!");<br />
return 0;<br />
}<br />
* Language(s):<br />
:* C - Required<br />
:* FASM <Not a strict requirement, but is desirable><br />
:* GNU Autotools (Easy to pick up, safe to assume optional).<br />
* Skill level: intermediate, bonus points for the ability in designing a clean approach to achieve this.<br />
* Mentor: ashmew2<br />
* Additional details: This project relies on working with the mentor on completing this project as it might be too large to be finished by a single student over one summer. The mentor will also actively work on the same project with the student.<br />
<br />
<br />
==== Virtualbox / QEMU support for KolibriOS ====<br />
'''Summary:''' Building Virtualbox / QEMU support for KolibriOS so that it is easier to use in a virtual machine.<br />
<br />
'''Details:'''<br />
* Description: Create a set of tools which let KolibriOS seamlessly interface with a host running Kolibri via VirtualBox. Develop parts required, especially shared folders, which resemble Guest Additions. (For a Linux based Host running KolibriOS as Guest.)<br />
If not virtualbox, QEMU could use some feature enhancements for example the ability to update a usb drive from outside Kolibri and make Kolibri understand the new contents of the usb drive. This requires investigation skills as well as working in both Kolibri for support and QEMU / Virtualbox source code (as and when required).<br />
<br />
* Language(s):<br />
:* C - Virtualbox Source code<br />
:* FASM - To understand the source code of KolibriOS better and prepare interfaces with Guest additions.<br />
* Skill level: Advanced [ Unknown ], ability to understand a larger source code base and contribute to it are very desirable!<br />
* Mentor: ashmew2<br />
<br />
==== Port PolarSSL ====<br />
'''Summary:''' Port PolarSSL to KolibriOS.<br />
'''Details:'''<br />
* Primary goal: Make a working port of PolarSSL (as native KolibriOS MS COFF library) and add it to the automatic build-system.<br />
* Additional goal: Update HTTP library (written in FASM) to support HTTPS.<br />
* Language: C / FASM<br />
* Skill level: intermediate / advanced<br />
* Importance: High<br />
* Mentors: hidnplayr / ashmew2<br />
* 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]<br />
<br />
=== Miscellanous / Crazy Ideas ===<br />
These ideas are not necessarily suited for a GSoC project but I think would be good to have.<br><br />
<br />
==== Combine Forum Chat and IRC ====<br />
'''Summary:''' Transfer Forum Chat messages to IRC and IRC messages to Forum Chat.<br />
'''Details:'''<br />
* Background: It would help keep the growing KolibriOS community together. It would also be useful for developers as they can have IRC alerts built into IRC clients but no alerts for Forum Chat. I already wrote an IRC bot for #kolibriOS based on Willie and it would be desirable to integrate this feature with that bot.<br />
<br />
* Language: Python for IRC Bot / Not sure about Forum Chat watching (Maybe Selenium script?) <br />
* Skill level: beginner / intermediate / learner : want to learn about this stuff<br />
* Importance: High<br />
* Mentors: ashmew2<br />
* Links: [https://github.com/ashmew2/IRCBot IRC Bot Source Code]<br />
<br />
<!--<br />
=== Open Ideas (without appointed mentor) ===<br />
<br />
==== One core for graphics ====<br />
'''Summary:''' On multi-core systems, dedicate one core for graphics rendering ONLY<br />
<br />
'''Details:'''<br />
* Goal: Move graphics subsystem to a single, dedicated core if multicore machine detected<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Serge(?)<br />
<br />
==== Partition editor ====<br />
'''Summary:''' Add a partition/HDD editor utility<br />
<br />
'''Details:'''<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Mario(?)<br />
<br />
==== Rewrite "Table" in Assembler ====<br />
'''Summary:''' Rewrite a great Kolibri spreadsheet application [[Table]] from C++ to FASM<br />
<br />
'''Details:'''<br />
* Goal: Port Table (C++) to Assembler/FASM<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Mentor: ???<br />
<br />
==== Kernel vulnerabilities ====<br />
'''Summary:''' Find and fix as many kernel vulnerabilities as you can<br />
<br />
'''Details:'''<br />
* Goal: Check the list of kernel API functions versus their actual implementation in KolibriOS kernel (for example, check that the function doesn't destroy register values if it declares in description that it doesn't). If you find a vulnerability, try to fix it so that it works according to API. If you cannot fix it yourself, document the vulnerability and describe the problem.<br />
* Language: Assembler/FASM<br />
* Skill level: Intermediate/Expert<br />
* Mentor: Serge '''(Is not always available to answer questions, so select this task only if you can work fairly independently.)'''<br />
<br />
==== Web browser in FASM ====<br />
'''Summary:''' Write a proper HTML web browser for KolibriOS<br />
<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Mentor: SoUrcerer<br />
<br />
<br />
==== Printing/scanning API ====<br />
'''Summary:''' Add a printing and scanning API and drivers.<br />
<br />
'''Details:'''<br />
* Primary goal: Design and code infrastructure for printing and scanning devices.<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: SoUrcerer<br />
--><br />
<br />
[[Category:Misc]]<br />
<br />
== Rough Guide for Prospective Students ==<br />
<br />
* As the kernel is written in FASM, ability to write and understand i386-assembly code is very useful.<br />
* 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.<br />
* Familiarity with the GNu landscape like Autotools, GCC etc are also a plus to have (especially for porting software)<br />
* 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. (The mentors can help you with that :) )<br />
* Hanging out on Freenode's #kolibriOS , and our Chat (accessible through kolibrios.org -> Forum -> Chat) are where developers mostly hang out.<br />
* Languages used for communication are Russian and English (although most developers are bilingual, and you can always ask someone for help)<br />
* Get in touch with other developers via IRC / Chat / Forums and enjoy your stay!<br />
<br />
== I'm a potential GSoC student. I'm scared of all the assembly and docs here! Where should I start?! :'( ==<br />
Start here : http://wiki.kolibrios.org/wiki/HowTo<br />
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!<br />
<br />
== I'm a potential GSoC student. What is this test task?! ==<br />
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.<br />
<br />
== I want to play with the code but my college blocks SVN ==<br />
If you are have trouble accessing, please do mention it on the forums.<br />
You can temporarily use this backup git repository: http://repo.or.cz/w/kolibrios.git<br />
<br />
== All the ideas seem interesting, But.. ==<br />
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.<br />
<br />
== Great Guide! But I still don't understand X ==<br />
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.<br />
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.<br />
<br />
Most importantly...Have Fun!</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Google_Summer_of_Code_2016&diff=5314Google Summer of Code 20162016-03-09T15:21:27Z<p>Punk Joker: </p>
<hr />
<div><!-- [[Image:GSoC2015.png|right]] --><br />
== Introduction ==<br />
KolibriOS is going to apply as a mentoring organization for [https://developers.google.com/open-source/gsoc/ Google Summer of Code 2016]. This page contains our ideas list and some additional information for students and mentors.<br />
<br />
We have previously participated as a Mentoring Organization in [http://www.google-melange.com/gsoc/homepage/google/gsoc2014 Google Summer of Code 2014]. The [[Google Summer of Code 2014|ideas page for 2014]] is available for your reference. Our organization page for GSoC 2014 and successfully completed projects for that year can be accessed [https://www.google-melange.com/gsoc/org2/google/gsoc2014/kolibrios via this link]. To our great delight, both successful students of GSoC2014 stayed with the project and continue contributing to KolibriOS voluntarily in their spare time.<br />
<br />
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.<br />
<br />
== Student Requirements ==<br />
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] (25 March 19:00 UTC).'''<br><br><br />
In addition, students need to answer the following questions when applying:<br />
# Full Name (First + Last Name).<br />
# E-mail address.<br />
# Phone (home or mobile).<br />
# Another phone '''for emergency cases''' (if we cannot contact you) - parents, boy/girlfriend, husband/wife etc.<br />
# Nickname you plan to use on our forums, SVN repository or IRC chat.<br />
# Age.<br />
# Country + city of residence.<br />
# Human languages you speak (state all languages and knowledge level - basic/intermediate/expert/mother tongue).<br />
# Name of college or university you are accepted into or enrolled in + link to their website.<br />
# Name of program (or faculty, or department) in that college/university you are accepted into or enrolled in.<br />
# Your current timezone in UTC/GMT terms (for example, Paris is UTC/GMT +1 hours right now).<br />
# Have you been involved with any open-source project in the past? If yes, which one, and what have you done for that project?<br />
# 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.<br />
# The task you are willing to work on from our list of Summer of Code 2016 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.<br />
# 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.''<br />
<br />
== Organization ==<br />
<br />
You can find the organizers on the IRC channel (#kolibrios @ irc.freenode.net) or at our forum: http://board.kolibrios.org/<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
|Dmitriy Smirnov<br />
|Pathoswithin<br />
|Administrator for GSoC, mentor<br />
|-<br />
|Jeffrey Amelynck<br />
|[[User:Hidnplayr|hidnplayr]]<br />
|Mentor, backup administrator<br />
|-<br />
|Kiril Lipatov<br />
|[[User:Leency|Leency]]<br />
|Mentor<br />
|-<br />
|Ashish Gupta<br />
|[[User:ashmew2|ashmew2]]<br />
|Mentor<br />
|-<br />
|}<br />
We have discussed "Google Summer of Code 2016" application with all active members of the KolibriOS Project Team, and selected only those 3 (three) people who have both the knowledge, the dedication, and the 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.<br />
<br />
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 GSoC2014.<br />
<br />
== Ideas for Google Summer of Code 2016 ==<br />
The below list contains ideas suggested by KolibriOS team members. '''It is neither complete nor final.'''<br><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.<br />
<br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Required Skill Level<br />
! Importance for KolibriOS<br />
! Programming Language<br />
! Mentor<br />
|-<br />
| [[#XDXF_dictionary|XDXF dictionary]]<br />
| Application<br />
| Basic<br />
| Low<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#CPUID_tool|CPUID tool]]<br />
| Application<br />
| Beginner<br />
| Low<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#FTP_client|FTP client]]<br />
| Application<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Torrent_client|Torrent client]]<br />
| Application<br />
| Advanced<br />
| High<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#XMPP.2FJabber_client|XMPP/Jabber client]]<br />
| Application<br />
| Intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Music_player|Music player]]<br />
| Application<br />
| Advanced<br />
| Medium<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#Web_browser|Web browser]]<br />
| Application<br />
| Intermediate<br />
| High<br />
| [http://www.dev0.de/cmm/indexe.htm Sphinx C--]<br />
| Leency<br />
|-<br />
| [[#Ethernet_driver.28s.29|Ethernet driver(s)]]<br />
| Driver<br />
| Advanced<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#SD_Host_Controller|SD Host Controller driver]]<br />
| Driver<br />
| Advanced<br />
| Low<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#USB_devices|USB device drivers]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Filesystem_support|Filesystem support]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#Wi-Fi|Wi-Fi]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide task<br />
| Intermediate<br />
| High<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#QR-code_in_boot_log|QR-code in boot log]]<br />
| Kernel/Library<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#C layer for KolibriOS|C layer for KolibriOS]]<br />
| Library<br />
| Intermediate<br />
| Medium<br />
| C<br />
| Ashmew2<br />
|-<br />
| [[#Virtualbox support for KolibriOS|Virtualbox support for KolibriOS]]<br />
| Library<br />
| Advanced<br />
| Medium<br />
| C<br />
| Ashmew2<br />
|-<br />
| [[#Port PolarSSL|Port PolarSSL]]<br />
| Library<br />
| intermediate / advanced <br />
| High<br />
| C / FASM<br />
| hidnplayr / ashmew2<br />
|-<br />
| [[#Port ScummVM|Port ScummVM]]<br />
| Library<br />
| intermediate / advanced <br />
| High<br />
| C / FASM<br />
| hidnplayr / ashmew2<br />
|}<br />
Explanation of required skill level:<br />
* Beginner: No knowledge at all of the topic,<br />
* Basic: A very basic knowledge of the topic but no professional usage,<br />
* Intermediate: A basic knowledge of the topic but no regular professional usage,<br />
* Advanced: A good knowledge of the topic and a regular professional usage,<br />
* Expert: a perfect knowledge of the topic and a daily professional usage.<br />
<br />
Explanation of importance for the project:<br />
* Low: For sure it doesn't hurt to implement, but if nobody does it, no one will even notice.<br />
* Medium: Nice-to-have feature. Will improve everyday life of users and developers.<br />
* High: This feature is needed for the project to start being adopted by masses.<br />
<br />
=== Applications ===<br />
These are userspace tasks. They often require only basic knowledge of algorithms and data structures.<br><br />
No specific experience is required but welcome.<br />
<br />
==== XDXF dictionary ====<br />
'''Summary:''' Write dictionary application with support of XDXF (XML Dictionary eXchange Format)<br />
<br />
'''Details:'''<br />
* Primary goal: Write library and corresponding dictionary application<br />
* Additional goal: Support of other dictioinary formats<br />
* Language: Assembler/FASM<br />
* Skill level: basic<br />
* Importance: low<br />
* Mentor: Pathoswithin<br />
* Links: [http://tibleiz.net/asm-xml/ fasm xml library], [https://en.wikipedia.org/wiki/XDXF XDXF format]<br />
<br />
<br />
==== CPUID tool ====<br />
'''Summary:''' Update existing CPUID application to be aware of new CPUs and their features<br />
<br />
'''Details:'''<br />
* Primary goal: Write code to detect and report new CPUs and features + size detection for caches<br />
* Additional goal: Refactor code as to use system libraries (libimg, box_lib, etc.)<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: low<br />
* Mentor: Pathoswithin / Wildwest<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fprograms%2Fsystem%2Fcpuid%2Ftrunk%2F&#aec5d374b78ae8f08110b3327c3ba5f56 CPUID program], [http://bochs.sourceforge.net/techspec/24161821.pdf Intel cpuid], [http://support.amd.com/TechDocs/25481.pdf AMD cpuid], [http://board.kolibrios.org/viewtopic.php?f=42&t=594&start=90 forum topic about application]<br />
<br />
==== FTP client ====<br />
'''Summary:''' Create a GUI based FTP client or add FTP support to one of the existing file managers<br />
<br />
'''Details:'''<br />
* Primary goal: FTP access (download/upload/etc.)<br />
* Additional goal: Create an FTP client library<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [https://www.ietf.org/rfc/rfc959.txt File Transfer Protocol (RFC959)], [http://board.kolibrios.org/viewtopic.php?f=40&t=2360 CLI FTP client (demo)]<br />
<br />
<br />
==== Torrent client ====<br />
'''Summary:''' Write a (bit-)torrent client for KolibriOS, or port an existing one<br />
<br />
'''Details:'''<br />
* Primary goal: Implement a torrent client similar to [http://www.utorrent.com/ µTorrent Free edition]<br />
* Alternative goal (less preferred, but still possible): Port an existing torrent client to KolibriOS<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://www.bittorrent.org Information about the protocol]<br />
<br />
<br />
==== XMPP/Jabber client ====<br />
'''Summary:''' Write a XMPP/Jabber library and client for KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Write basic xmpp library/client<br />
* Additional goal: Implement some xmpp extentions<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* 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]<br />
<br />
<br />
==== Music player ====<br />
'''Summary:''' Improve the current music player in Kolibri<br />
<br />
'''Details:'''<br />
* Primary goal: Rewrite the current music player (ac97snd), in FASM, and improve its functionality<br />
:* Support for file formats wav, mp3 and xm (using available external libraries)<br />
:* Support for playlists (m3u)<br />
:* A time display<br />
* Additional goal:<br />
:* Use of system wide hotkeys to control player<br />
:* Support for metadata (ID3, ...)<br />
:* More codecs (flac, vorbis, ...)<br />
:* Audio indication (oscillograph, bar graph, ...)<br />
:* Show cover art from files or album folder<br />
:* Fade in/out and/or crossover<br />
:* Streaming radio (at least mp3 over http stream)<br />
:* Skins<br />
:* Media library<br />
* Language: Assembler/FASM (C/C++ to port codec)<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: hidnplayr / Pathoswithin<br />
* Links: [http://board.kolibrios.org/viewtopic.php?f=38&t=1596 AC97SND (MP3 player in C)], [http://board.kolibrios.org/viewtopic.php?f=28&t=317 Sound drivers and architecture], [http://board.kolibrios.org/viewtopic.php?f=38&t=3003 Flac decoder],[http://board.kolibrios.org/viewtopic.php?f=38&t=2220 Minimp3 (minimalistic mp3 decoding library)], [http://board.kolibrios.org/viewtopic.php?f=38&t=161 SuperMP3 (IDv3 tag demo)]<br />
<br />
<br />
==== Web browser ====<br />
'''Summary:''' Improve existing text-only web browser Aelia (ex WebView) - add more functionality and compatibility<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: [http://www.dev0.de/cmm/indexe.htm Sphinx C--]. May require writing a few lines in FASM though<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: Leency<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
* [http://board.kolibrios.org/viewtopic.php?f=40&t=1075 Work done so far on WebView (mostly in Russian)]. If you don't know Russian, you can read [http://translate.google.com/translate?hl=en&sl=ru&tl=en&u=http%3A%2F%2Fboard.kolibrios.org%2Fviewtopic.php%3Ff%3D40%26t%3D1075 English translation using Google-Translate]<br />
<br />
==== Port ScummVM ====<br />
'''Summary:''' Port ScummVM to KolibriOS.<br />
<br />
'''Details:'''<br />
* Primary goal: Port ScummVM to KolibriOS so that users can enjoy a wide range of already available software that runs on it.<br />
* Secondary goal: Optimize for KolibriOS<br />
* Language: C / FASM<br />
* Skill level: intermediate / advanced<br />
* Importance: Medium<br />
* Mentors: hidnplayr / ashmew2<br />
'''Links:'''<br />
* [https://sourceforge.net/projects/scummvm/ ScummVM website], [https://sourceforge.net/projects/menuet/files/CD/A/ Old ScummVM port for MenuetOS]<br />
<br />
=== Drivers ===<br />
Writing drivers is about supporting new hardware and filesystems.<br><br />
Knowledge of specifications and previous experience are ''not'' required but surely desirable.<br />
<br />
==== Ethernet driver(s) ====<br />
'''Summary:''' Write an Ethernet driver<br />
<br />
'''Details:'''<br />
* Primary goal: Support for popular Broadcom, Atheros or Marvell Yukon ethernet cards<br />
* Additional goal: A second driver for another card family, PPPoE support in kernel, ...<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: Medium<br />
* Mentor: hidnplayr<br />
* Links: [https://www.broadcom.com/collateral/pg/57XX-PG105-R.pdf BCM57xx programmers guide], [[Writing network drivers for KolibriOS]], [https://github.com/UDOOboard/U-Boot_Unico/blob/master/drivers/net/bcm570x.c BCM570x driver for u-boot (in C)], [http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fdrivers%2Funfinished%2Fbcm57xx.asm Stub for BCM57xx driver]<br />
<br />
<br />
==== SD Host Controller ====<br />
'''Summary:''' Add support for SD Host Controller<br />
<br />
'''Details:'''<br />
* Primary goal: Write driver for particular controller<br />
* Additional goal: Test and update driver to work for all controllers<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: Low<br />
* Mentor: Pathoswithin<br />
* Links: [https://www.sdcard.org/downloads/pls/simplified_specs/index.html SD specifications]<br />
<br />
==== USB devices ====<br />
'''Summary:''' Add USB drivers for the new USB stack (webcams, gamepads, joysticks, tablets, etc.)<br />
<br />
'''Details:'''<br />
* Primary goal: Write USB driver for currently unsupported device (you should have one)<br />
* Additional goal: Adopt code to work with all devices of the same class<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://en.wikipedia.org/wiki/USB#Device_classes USB device classes]<br />
<br />
<br />
==== Filesystem support ====<br />
'''Summary:''' Improve filesystem support in KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Update/fix read-write support for ext2/3/4 filesystems (partially done)<br />
* Additional goal: Any improvement of filesystem support in KolibriOS<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: Pathoswithin<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Ffs%2F&#a0aa5cede7308db82d4bae78266ed8462 Filesystems in KolibriOS]<br />
<br />
<br />
==== Wi-Fi ====<br />
'''Summary:''' Add Wi-Fi support to KolibriOS. <br />
<br />
'''Details:'''<br />
* Description: Write or port a Wi-Fi driver for KolibriOS, implement the ability to set a wireless connection.<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [https://en.wikipedia.org/wiki/Comparison_of_open-source_wireless_drivers Comparison of open source wifi drivers]<br />
<br />
<br />
=== System wide tasks ===<br />
These tasks comprise both user space and kernel space work. Some developers consider them as of most importance for KolibriOS.<br><br />
Architecture and algorithm design skills are highly desirable.<br />
<br />
==== Widget toolkit ====<br />
'''Summary:''' Extend Box_lib (a set of separate widgets) to create a full-featured widget toolkit<br />
<br />
'''Details:'''<br />
* Primary goal: Design architecture and implement focus handling, callbacks and other core ideas<br />
* Additional goal: Integrate box_lib widgets to this framework<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Importance: High<br />
* Mentor: Pathoswithin<br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
<br />
==== QR-code in boot log ====<br />
'''Summary:''' Add a [http://en.wikipedia.org/wiki/QR_code QR-code] (containing the debug log) at the end of boot process<br />
<br />
[[File:QR-code.png]]<br />
<br />
'''Details:'''<br />
* Description: Sometimes KolibriOS cannot boot on a certain hardware configuration (gets stuck during or after boot process). In such cases, we request the user having this problem to enable debug log at boot time, take a photo of the screen and show it to us (in the forum). However, sometimes taking a good quality photo can be quite challenging (bad camera, shaking hands etc.) and the attached photo is so blurry to the point the debug log cannot be even read. The idea suggested hereby is to simultaneously encode the debug log which is outputted on the screen, to the form of QR-code, and show the resulting QR-code on empty space on the screen. In such way, any user possessing a smartphone with a camera and QR-code scanner, could scan the QR-code and submit the encoded text directly on our forums (without having a need to take a photo), and our developers, in turn, would get the debug log text immediately and won't have to unscramble a blurry photo.<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Mentor: Pathoswithin<br />
<br />
<br />
==== C layer for KolibriOS ====<br />
'''Summary:''' Building a C layer for KolibriOS, so that we can get more developers and port more code to KolibriOS more easily.<br />
<br />
'''Details:'''<br />
* Description: As a lot of software out there is available in C and useful for KolibriOS, building an ecosystem around C and FASM is required. Some work towards a cross compiler has already been done. Since KolibriOS is neither Linux, nor Windows..it is challenging to port software. In order to automate this, we need to port existing libraries and figure out a way to automate/streamline this process. The best part about this is that you get to mix C and FASM in unprecedented ways and learn along the way. The end result should be as easy as writing a Makefile and calling the cross compiler which creates a binary for Kolibri OS. The eventual aim is to have libraries in C available for KolibriOS which let you use the same ASM procedures in C code. Some work on this has already been done. Get in touch to know more!<br />
Example:<br />
#include<kolibri.h><br />
int main()<br />
{ <br />
kolibri_window("Hi!");<br />
return 0;<br />
}<br />
* Language(s):<br />
:* C - Required<br />
:* FASM <Not a strict requirement, but is desirable><br />
:* GNU Autotools (Easy to pick up, safe to assume optional).<br />
* Skill level: intermediate, bonus points for the ability in designing a clean approach to achieve this.<br />
* Mentor: ashmew2<br />
<br />
<br />
==== Virtualbox support for KolibriOS ====<br />
'''Summary:''' Building Virtualbox support for KolibriOS so that it is easier to use in a virtual machine.<br />
<br />
'''Details:'''<br />
* Description: Create a set of tools which let KolibriOS seamlessly interface with a host running Kolibri via VirtualBox. Develop parts required, especially shared folders, which resemble Guest Additions. (For a Linux based Host running KolibriOS as Guest.)<br />
* Language(s):<br />
:* C - Virtualbox Source code<br />
:* FASM - To understand the source code of KolibriOS better and prepare interfaces with Guest additions.<br />
* Skill level: Advanced, ability to understand a larger source code base and contribute to it are very desirable!<br />
* Mentor: ashmew2<br />
<br />
==== Port PolarSSL ====<br />
'''Summary:''' Port PolarSSL to KolibriOS.<br />
'''Details:'''<br />
* Primary goal: Make a working port of PolarSSL (as native KolibriOS MS COFF library) and add it to the automatic build-system.<br />
* Additional goal: Update HTTP library (written in FASM) to support HTTPS.<br />
* Language: C / FASM<br />
* Skill level: intermediate / advanced<br />
* Importance: High<br />
* Mentors: hidnplayr / ashmew2<br />
* 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]<br />
<br />
=== Miscellanous / Crazy Ideas ===<br />
These ideas are not necessarily suited for a GSoC project but I think would be good to have.<br><br />
<br />
==== Combine Forum Chat and IRC ====<br />
'''Summary:''' Transfer Forum Chat messages to IRC and IRC messages to Forum Chat.<br />
'''Details:'''<br />
* Background: It would help keep the growing KolibriOS community together. It would also be useful for developers as they can have IRC alerts built into IRC clients but no alerts for Forum Chat. I already wrote an IRC bot for #kolibriOS based on Willie and it would be desirable to integrate this feature with that bot.<br />
<br />
* Language: Python for IRC Bot / Not sure about Forum Chat watching (Maybe Selenium script?) <br />
* Skill level: beginner / intermediate / learner : want to learn about this stuff<br />
* Importance: High<br />
* Mentors: ashmew2<br />
* Links: [https://github.com/ashmew2/IRCBot IRC Bot Source Code]<br />
<br />
<!--<br />
=== Open Ideas (without appointed mentor) ===<br />
<br />
==== One core for graphics ====<br />
'''Summary:''' On multi-core systems, dedicate one core for graphics rendering ONLY<br />
<br />
'''Details:'''<br />
* Goal: Move graphics subsystem to a single, dedicated core if multicore machine detected<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Serge(?)<br />
<br />
==== Partition editor ====<br />
'''Summary:''' Add a partition/HDD editor utility<br />
<br />
'''Details:'''<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Mario(?)<br />
<br />
==== Rewrite "Table" in Assembler ====<br />
'''Summary:''' Rewrite a great Kolibri spreadsheet application [[Table]] from C++ to FASM<br />
<br />
'''Details:'''<br />
* Goal: Port Table (C++) to Assembler/FASM<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Mentor: ???<br />
<br />
==== Kernel vulnerabilities ====<br />
'''Summary:''' Find and fix as many kernel vulnerabilities as you can<br />
<br />
'''Details:'''<br />
* Goal: Check the list of kernel API functions versus their actual implementation in KolibriOS kernel (for example, check that the function doesn't destroy register values if it declares in description that it doesn't). If you find a vulnerability, try to fix it so that it works according to API. If you cannot fix it yourself, document the vulnerability and describe the problem.<br />
* Language: Assembler/FASM<br />
* Skill level: Intermediate/Expert<br />
* Mentor: Serge '''(Is not always available to answer questions, so select this task only if you can work fairly independently.)'''<br />
<br />
==== Web browser in FASM ====<br />
'''Summary:''' Write a proper HTML web browser for KolibriOS<br />
<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Mentor: SoUrcerer<br />
<br />
<br />
==== Printing/scanning API ====<br />
'''Summary:''' Add a printing and scanning API and drivers.<br />
<br />
'''Details:'''<br />
* Primary goal: Design and code infrastructure for printing and scanning devices.<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: SoUrcerer<br />
--><br />
<br />
[[Category:Misc]]<br />
<br />
== Rough Guide for Prospective Students ==<br />
<br />
* As the kernel is written in FASM, ability to write and understand i386-assembly code is very useful.<br />
* 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.<br />
* Familiarity with the GNu landscape like Autotools, GCC etc are also a plus to have (especially for porting software)<br />
* 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. (The mentors can help you with that :) )<br />
* Hanging out on Freenode's #kolibriOS , and our Chat (accessible through kolibrios.org -> Forum -> Chat) are where developers mostly hang out.<br />
* Languages used for communication are Russian and English (although most developers are bilingual, and you can always ask someone for help)<br />
* Get in touch with other developers via IRC / Chat / Forums and enjoy your stay!<br />
<br />
== I'm a potential GSoC student. I'm scared of all the assembly and docs here! Where should I start?! :'( ==<br />
Start here : http://wiki.kolibrios.org/wiki/HowTo<br />
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!<br />
<br />
== I'm a potential GSoC student. What is this test task?! ==<br />
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.<br />
<br />
== I want to play with the code but my college blocks SVN ==<br />
If you are have trouble accessing, please do mention it on the forums.<br />
You can temporarily use this backup git repository: https://github.com/ashmew2/kolibriosSVN<br />
It is not at par with the SVN, but it should not be more than a couple of months old and should thus be enough to get you a taste.<br />
<br />
== All the ideas seem interesting, But.. ==<br />
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.<br />
<br />
== Great Guide! But I still don't understand X ==<br />
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.<br />
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.<br />
<br />
Most importantly...Have Fun!</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Google_Summer_of_Code_2016&diff=5313Google Summer of Code 20162016-03-09T15:20:19Z<p>Punk Joker: </p>
<hr />
<div><!-- [[Image:GSoC2015.png|right]] --><br />
== Introduction ==<br />
KolibriOS is going to apply as a mentoring organization for [https://developers.google.com/open-source/gsoc/ Google Summer of Code 2016]. This page contains our ideas list and some additional information for students and mentors.<br />
<br />
We have previously participated as a Mentoring Organization in [http://www.google-melange.com/gsoc/homepage/google/gsoc2014 Google Summer of Code 2014]. The [[Google Summer of Code 2014|ideas page for 2014]] is available for your reference. Our organization page for GSoC 2014 and successfully completed projects for that year can be accessed [https://www.google-melange.com/gsoc/org2/google/gsoc2014/kolibrios via this link]. To our great delight, both successful students of GSoC2014 stayed with the project and continue contributing to KolibriOS voluntarily in their spare time.<br />
<br />
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.<br />
<br />
== Student Requirements ==<br />
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] (25 March 19:00 UTC).'''<br><br><br />
In addition, students need to answer the following questions when applying:<br />
# Full Name (First + Last Name).<br />
# E-mail address.<br />
# Phone (home or mobile).<br />
# Another phone '''for emergency cases''' (if we cannot contact you) - parents, boy/girlfriend, husband/wife etc.<br />
# Nickname you plan to use on our forums, SVN repository or IRC chat.<br />
# Age.<br />
# Country + city of residence.<br />
# Human languages you speak (state all languages and knowledge level - basic/intermediate/expert/mother tongue).<br />
# Name of college or university you are accepted into or enrolled in + link to their website.<br />
# Name of program (or faculty, or department) in that college/university you are accepted into or enrolled in.<br />
# Your current timezone in UTC/GMT terms (for example, Paris is UTC/GMT +1 hours right now).<br />
# Have you been involved with any open-source project in the past? If yes, which one, and what have you done for that project?<br />
# 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.<br />
# The task you are willing to work on from our list of Summer of Code 2016 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.<br />
# 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.''<br />
<br />
== Organization ==<br />
<br />
You can find the organizers on the IRC channel (#kolibrios @ irc.freenode.net) or at our forum: http://board.kolibrios.org/<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
|Dmitriy Smirnov<br />
|Pathoswithin<br />
|Administrator for GSoC, mentor<br />
|-<br />
|Jeffrey Amelynck<br />
|[[User:Hidnplayr|hidnplayr]]<br />
|Mentor, backup administrator<br />
|-<br />
|Kiril Lipatov<br />
|[[User:Leency|Leency]]<br />
|Mentor<br />
|-<br />
|Ashish Gupta<br />
|[[User:ashmew2|ashmew2]]<br />
|Mentor<br />
|-<br />
|}<br />
We have discussed "Google Summer of Code 2016" application with all active members of the KolibriOS Project Team, and selected only those 3 (three) people who have both the knowledge, the dedication, and the 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.<br />
<br />
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 GSoC2014.<br />
<br />
== Ideas for Google Summer of Code 2016 ==<br />
The below list contains ideas suggested by KolibriOS team members. '''It is neither complete nor final.'''<br><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.<br />
<br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Required Skill Level<br />
! Importance for KolibriOS<br />
! Programming Language<br />
! Mentor<br />
|-<br />
| [[#XDXF_dictionary|XDXF dictionary]]<br />
| Application<br />
| Basic<br />
| Low<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#CPUID_tool|CPUID tool]]<br />
| Application<br />
| Beginner<br />
| Low<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#FTP_client|FTP client]]<br />
| Application<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Torrent_client|Torrent client]]<br />
| Application<br />
| Advanced<br />
| High<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#XMPP.2FJabber_client|XMPP/Jabber client]]<br />
| Application<br />
| Intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Music_player|Music player]]<br />
| Application<br />
| Advanced<br />
| Medium<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#Web_browser|Web browser]]<br />
| Application<br />
| Intermediate<br />
| High<br />
| [http://www.dev0.de/cmm/indexe.htm Sphinx C--]<br />
| Leency<br />
|-<br />
| [[#Port ScummVM|Port ScummVM]]<br />
| Application<br />
| Intermediate<br />
| Medium<br />
| C/C++<br />
| ashmew2 / hidnplayr<br />
|-<br />
| [[#Ethernet_driver.28s.29|Ethernet driver(s)]]<br />
| Driver<br />
| Advanced<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#SD_Host_Controller|SD Host Controller driver]]<br />
| Driver<br />
| Advanced<br />
| Low<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#USB_devices|USB device drivers]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Filesystem_support|Filesystem support]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#Wi-Fi|Wi-Fi]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide task<br />
| Intermediate<br />
| High<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#QR-code_in_boot_log|QR-code in boot log]]<br />
| Kernel/Library<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#C layer for KolibriOS|C layer for KolibriOS]]<br />
| Library<br />
| Intermediate<br />
| Medium<br />
| C<br />
| Ashmew2<br />
|-<br />
| [[#Virtualbox support for KolibriOS|Virtualbox support for KolibriOS]]<br />
| Library<br />
| Advanced<br />
| Medium<br />
| C<br />
| Ashmew2<br />
|-<br />
| [[#Port PolarSSL|Port PolarSSL]]<br />
| Library<br />
| intermediate / advanced <br />
| High<br />
| C / FASM<br />
| hidnplayr / ashmew2<br />
|-<br />
| [[#Port ScummVM|Port ScummVM]]<br />
| Library<br />
| intermediate / advanced <br />
| High<br />
| C / FASM<br />
| hidnplayr / ashmew2<br />
|}<br />
Explanation of required skill level:<br />
* Beginner: No knowledge at all of the topic,<br />
* Basic: A very basic knowledge of the topic but no professional usage,<br />
* Intermediate: A basic knowledge of the topic but no regular professional usage,<br />
* Advanced: A good knowledge of the topic and a regular professional usage,<br />
* Expert: a perfect knowledge of the topic and a daily professional usage.<br />
<br />
Explanation of importance for the project:<br />
* Low: For sure it doesn't hurt to implement, but if nobody does it, no one will even notice.<br />
* Medium: Nice-to-have feature. Will improve everyday life of users and developers.<br />
* High: This feature is needed for the project to start being adopted by masses.<br />
<br />
=== Applications ===<br />
These are userspace tasks. They often require only basic knowledge of algorithms and data structures.<br><br />
No specific experience is required but welcome.<br />
<br />
==== XDXF dictionary ====<br />
'''Summary:''' Write dictionary application with support of XDXF (XML Dictionary eXchange Format)<br />
<br />
'''Details:'''<br />
* Primary goal: Write library and corresponding dictionary application<br />
* Additional goal: Support of other dictioinary formats<br />
* Language: Assembler/FASM<br />
* Skill level: basic<br />
* Importance: low<br />
* Mentor: Pathoswithin<br />
* Links: [http://tibleiz.net/asm-xml/ fasm xml library], [https://en.wikipedia.org/wiki/XDXF XDXF format]<br />
<br />
<br />
==== CPUID tool ====<br />
'''Summary:''' Update existing CPUID application to be aware of new CPUs and their features<br />
<br />
'''Details:'''<br />
* Primary goal: Write code to detect and report new CPUs and features + size detection for caches<br />
* Additional goal: Refactor code as to use system libraries (libimg, box_lib, etc.)<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: low<br />
* Mentor: Pathoswithin / Wildwest<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fprograms%2Fsystem%2Fcpuid%2Ftrunk%2F&#aec5d374b78ae8f08110b3327c3ba5f56 CPUID program], [http://bochs.sourceforge.net/techspec/24161821.pdf Intel cpuid], [http://support.amd.com/TechDocs/25481.pdf AMD cpuid], [http://board.kolibrios.org/viewtopic.php?f=42&t=594&start=90 forum topic about application]<br />
<br />
==== FTP client ====<br />
'''Summary:''' Create a GUI based FTP client or add FTP support to one of the existing file managers<br />
<br />
'''Details:'''<br />
* Primary goal: FTP access (download/upload/etc.)<br />
* Additional goal: Create an FTP client library<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [https://www.ietf.org/rfc/rfc959.txt File Transfer Protocol (RFC959)], [http://board.kolibrios.org/viewtopic.php?f=40&t=2360 CLI FTP client (demo)]<br />
<br />
<br />
==== Torrent client ====<br />
'''Summary:''' Write a (bit-)torrent client for KolibriOS, or port an existing one<br />
<br />
'''Details:'''<br />
* Primary goal: Implement a torrent client similar to [http://www.utorrent.com/ µTorrent Free edition]<br />
* Alternative goal (less preferred, but still possible): Port an existing torrent client to KolibriOS<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://www.bittorrent.org Information about the protocol]<br />
<br />
<br />
==== XMPP/Jabber client ====<br />
'''Summary:''' Write a XMPP/Jabber library and client for KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Write basic xmpp library/client<br />
* Additional goal: Implement some xmpp extentions<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* 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]<br />
<br />
<br />
==== Music player ====<br />
'''Summary:''' Improve the current music player in Kolibri<br />
<br />
'''Details:'''<br />
* Primary goal: Rewrite the current music player (ac97snd), in FASM, and improve its functionality<br />
:* Support for file formats wav, mp3 and xm (using available external libraries)<br />
:* Support for playlists (m3u)<br />
:* A time display<br />
* Additional goal:<br />
:* Use of system wide hotkeys to control player<br />
:* Support for metadata (ID3, ...)<br />
:* More codecs (flac, vorbis, ...)<br />
:* Audio indication (oscillograph, bar graph, ...)<br />
:* Show cover art from files or album folder<br />
:* Fade in/out and/or crossover<br />
:* Streaming radio (at least mp3 over http stream)<br />
:* Skins<br />
:* Media library<br />
* Language: Assembler/FASM (C/C++ to port codec)<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: hidnplayr / Pathoswithin<br />
* Links: [http://board.kolibrios.org/viewtopic.php?f=38&t=1596 AC97SND (MP3 player in C)], [http://board.kolibrios.org/viewtopic.php?f=28&t=317 Sound drivers and architecture], [http://board.kolibrios.org/viewtopic.php?f=38&t=3003 Flac decoder],[http://board.kolibrios.org/viewtopic.php?f=38&t=2220 Minimp3 (minimalistic mp3 decoding library)], [http://board.kolibrios.org/viewtopic.php?f=38&t=161 SuperMP3 (IDv3 tag demo)]<br />
<br />
<br />
==== Web browser ====<br />
'''Summary:''' Improve existing text-only web browser Aelia (ex WebView) - add more functionality and compatibility<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: [http://www.dev0.de/cmm/indexe.htm Sphinx C--]. May require writing a few lines in FASM though<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: Leency<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
* [http://board.kolibrios.org/viewtopic.php?f=40&t=1075 Work done so far on WebView (mostly in Russian)]. If you don't know Russian, you can read [http://translate.google.com/translate?hl=en&sl=ru&tl=en&u=http%3A%2F%2Fboard.kolibrios.org%2Fviewtopic.php%3Ff%3D40%26t%3D1075 English translation using Google-Translate]<br />
<br />
==== Port ScummVM ====<br />
'''Summary:''' Port ScummVM to KolibriOS.<br />
<br />
'''Details:'''<br />
* Primary goal: Port ScummVM to KolibriOS so that users can enjoy a wide range of already available software that runs on it.<br />
* Secondary goal: Optimize for KolibriOS<br />
* Language: C / FASM<br />
* Skill level: intermediate / advanced<br />
* Importance: Medium<br />
* Mentors: hidnplayr / ashmew2<br />
'''Links:'''<br />
* [https://sourceforge.net/projects/scummvm/ ScummVM website], [https://sourceforge.net/projects/menuet/files/CD/A/ Old ScummVM port for MenuetOS]<br />
<br />
=== Drivers ===<br />
Writing drivers is about supporting new hardware and filesystems.<br><br />
Knowledge of specifications and previous experience are ''not'' required but surely desirable.<br />
<br />
==== Ethernet driver(s) ====<br />
'''Summary:''' Write an Ethernet driver<br />
<br />
'''Details:'''<br />
* Primary goal: Support for popular Broadcom, Atheros or Marvell Yukon ethernet cards<br />
* Additional goal: A second driver for another card family, PPPoE support in kernel, ...<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: Medium<br />
* Mentor: hidnplayr<br />
* Links: [https://www.broadcom.com/collateral/pg/57XX-PG105-R.pdf BCM57xx programmers guide], [[Writing network drivers for KolibriOS]], [https://github.com/UDOOboard/U-Boot_Unico/blob/master/drivers/net/bcm570x.c BCM570x driver for u-boot (in C)], [http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fdrivers%2Funfinished%2Fbcm57xx.asm Stub for BCM57xx driver]<br />
<br />
<br />
==== SD Host Controller ====<br />
'''Summary:''' Add support for SD Host Controller<br />
<br />
'''Details:'''<br />
* Primary goal: Write driver for particular controller<br />
* Additional goal: Test and update driver to work for all controllers<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: Low<br />
* Mentor: Pathoswithin<br />
* Links: [https://www.sdcard.org/downloads/pls/simplified_specs/index.html SD specifications]<br />
<br />
==== USB devices ====<br />
'''Summary:''' Add USB drivers for the new USB stack (webcams, gamepads, joysticks, tablets, etc.)<br />
<br />
'''Details:'''<br />
* Primary goal: Write USB driver for currently unsupported device (you should have one)<br />
* Additional goal: Adopt code to work with all devices of the same class<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://en.wikipedia.org/wiki/USB#Device_classes USB device classes]<br />
<br />
<br />
==== Filesystem support ====<br />
'''Summary:''' Improve filesystem support in KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Update/fix read-write support for ext2/3/4 filesystems (partially done)<br />
* Additional goal: Any improvement of filesystem support in KolibriOS<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: Pathoswithin<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Ffs%2F&#a0aa5cede7308db82d4bae78266ed8462 Filesystems in KolibriOS]<br />
<br />
<br />
==== Wi-Fi ====<br />
'''Summary:''' Add Wi-Fi support to KolibriOS. <br />
<br />
'''Details:'''<br />
* Description: Write or port a Wi-Fi driver for KolibriOS, implement the ability to set a wireless connection.<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [https://en.wikipedia.org/wiki/Comparison_of_open-source_wireless_drivers Comparison of open source wifi drivers]<br />
<br />
<br />
=== System wide tasks ===<br />
These tasks comprise both user space and kernel space work. Some developers consider them as of most importance for KolibriOS.<br><br />
Architecture and algorithm design skills are highly desirable.<br />
<br />
==== Widget toolkit ====<br />
'''Summary:''' Extend Box_lib (a set of separate widgets) to create a full-featured widget toolkit<br />
<br />
'''Details:'''<br />
* Primary goal: Design architecture and implement focus handling, callbacks and other core ideas<br />
* Additional goal: Integrate box_lib widgets to this framework<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Importance: High<br />
* Mentor: Pathoswithin<br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
<br />
==== QR-code in boot log ====<br />
'''Summary:''' Add a [http://en.wikipedia.org/wiki/QR_code QR-code] (containing the debug log) at the end of boot process<br />
<br />
[[File:QR-code.png]]<br />
<br />
'''Details:'''<br />
* Description: Sometimes KolibriOS cannot boot on a certain hardware configuration (gets stuck during or after boot process). In such cases, we request the user having this problem to enable debug log at boot time, take a photo of the screen and show it to us (in the forum). However, sometimes taking a good quality photo can be quite challenging (bad camera, shaking hands etc.) and the attached photo is so blurry to the point the debug log cannot be even read. The idea suggested hereby is to simultaneously encode the debug log which is outputted on the screen, to the form of QR-code, and show the resulting QR-code on empty space on the screen. In such way, any user possessing a smartphone with a camera and QR-code scanner, could scan the QR-code and submit the encoded text directly on our forums (without having a need to take a photo), and our developers, in turn, would get the debug log text immediately and won't have to unscramble a blurry photo.<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Mentor: Pathoswithin<br />
<br />
<br />
==== C layer for KolibriOS ====<br />
'''Summary:''' Building a C layer for KolibriOS, so that we can get more developers and port more code to KolibriOS more easily.<br />
<br />
'''Details:'''<br />
* Description: As a lot of software out there is available in C and useful for KolibriOS, building an ecosystem around C and FASM is required. Some work towards a cross compiler has already been done. Since KolibriOS is neither Linux, nor Windows..it is challenging to port software. In order to automate this, we need to port existing libraries and figure out a way to automate/streamline this process. The best part about this is that you get to mix C and FASM in unprecedented ways and learn along the way. The end result should be as easy as writing a Makefile and calling the cross compiler which creates a binary for Kolibri OS. The eventual aim is to have libraries in C available for KolibriOS which let you use the same ASM procedures in C code. Some work on this has already been done. Get in touch to know more!<br />
Example:<br />
#include<kolibri.h><br />
int main()<br />
{ <br />
kolibri_window("Hi!");<br />
return 0;<br />
}<br />
* Language(s):<br />
:* C - Required<br />
:* FASM <Not a strict requirement, but is desirable><br />
:* GNU Autotools (Easy to pick up, safe to assume optional).<br />
* Skill level: intermediate, bonus points for the ability in designing a clean approach to achieve this.<br />
* Mentor: ashmew2<br />
<br />
<br />
==== Virtualbox support for KolibriOS ====<br />
'''Summary:''' Building Virtualbox support for KolibriOS so that it is easier to use in a virtual machine.<br />
<br />
'''Details:'''<br />
* Description: Create a set of tools which let KolibriOS seamlessly interface with a host running Kolibri via VirtualBox. Develop parts required, especially shared folders, which resemble Guest Additions. (For a Linux based Host running KolibriOS as Guest.)<br />
* Language(s):<br />
:* C - Virtualbox Source code<br />
:* FASM - To understand the source code of KolibriOS better and prepare interfaces with Guest additions.<br />
* Skill level: Advanced, ability to understand a larger source code base and contribute to it are very desirable!<br />
* Mentor: ashmew2<br />
<br />
==== Port PolarSSL ====<br />
'''Summary:''' Port PolarSSL to KolibriOS.<br />
'''Details:'''<br />
* Primary goal: Make a working port of PolarSSL (as native KolibriOS MS COFF library) and add it to the automatic build-system.<br />
* Additional goal: Update HTTP library (written in FASM) to support HTTPS.<br />
* Language: C / FASM<br />
* Skill level: intermediate / advanced<br />
* Importance: High<br />
* Mentors: hidnplayr / ashmew2<br />
* 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]<br />
<br />
=== Miscellanous / Crazy Ideas ===<br />
These ideas are not necessarily suited for a GSoC project but I think would be good to have.<br><br />
<br />
==== Combine Forum Chat and IRC ====<br />
'''Summary:''' Transfer Forum Chat messages to IRC and IRC messages to Forum Chat.<br />
'''Details:'''<br />
* Background: It would help keep the growing KolibriOS community together. It would also be useful for developers as they can have IRC alerts built into IRC clients but no alerts for Forum Chat. I already wrote an IRC bot for #kolibriOS based on Willie and it would be desirable to integrate this feature with that bot.<br />
<br />
* Language: Python for IRC Bot / Not sure about Forum Chat watching (Maybe Selenium script?) <br />
* Skill level: beginner / intermediate / learner : want to learn about this stuff<br />
* Importance: High<br />
* Mentors: ashmew2<br />
* Links: [https://github.com/ashmew2/IRCBot IRC Bot Source Code]<br />
<br />
<!--<br />
=== Open Ideas (without appointed mentor) ===<br />
<br />
==== One core for graphics ====<br />
'''Summary:''' On multi-core systems, dedicate one core for graphics rendering ONLY<br />
<br />
'''Details:'''<br />
* Goal: Move graphics subsystem to a single, dedicated core if multicore machine detected<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Serge(?)<br />
<br />
==== Partition editor ====<br />
'''Summary:''' Add a partition/HDD editor utility<br />
<br />
'''Details:'''<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Mario(?)<br />
<br />
==== Rewrite "Table" in Assembler ====<br />
'''Summary:''' Rewrite a great Kolibri spreadsheet application [[Table]] from C++ to FASM<br />
<br />
'''Details:'''<br />
* Goal: Port Table (C++) to Assembler/FASM<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Mentor: ???<br />
<br />
==== Kernel vulnerabilities ====<br />
'''Summary:''' Find and fix as many kernel vulnerabilities as you can<br />
<br />
'''Details:'''<br />
* Goal: Check the list of kernel API functions versus their actual implementation in KolibriOS kernel (for example, check that the function doesn't destroy register values if it declares in description that it doesn't). If you find a vulnerability, try to fix it so that it works according to API. If you cannot fix it yourself, document the vulnerability and describe the problem.<br />
* Language: Assembler/FASM<br />
* Skill level: Intermediate/Expert<br />
* Mentor: Serge '''(Is not always available to answer questions, so select this task only if you can work fairly independently.)'''<br />
<br />
==== Web browser in FASM ====<br />
'''Summary:''' Write a proper HTML web browser for KolibriOS<br />
<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Mentor: SoUrcerer<br />
<br />
<br />
==== Printing/scanning API ====<br />
'''Summary:''' Add a printing and scanning API and drivers.<br />
<br />
'''Details:'''<br />
* Primary goal: Design and code infrastructure for printing and scanning devices.<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: SoUrcerer<br />
--><br />
<br />
[[Category:Misc]]<br />
<br />
== Rough Guide for Prospective Students ==<br />
<br />
* As the kernel is written in FASM, ability to write and understand i386-assembly code is very useful.<br />
* 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.<br />
* Familiarity with the GNu landscape like Autotools, GCC etc are also a plus to have (especially for porting software)<br />
* 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. (The mentors can help you with that :) )<br />
* Hanging out on Freenode's #kolibriOS , and our Chat (accessible through kolibrios.org -> Forum -> Chat) are where developers mostly hang out.<br />
* Languages used for communication are Russian and English (although most developers are bilingual, and you can always ask someone for help)<br />
* Get in touch with other developers via IRC / Chat / Forums and enjoy your stay!<br />
<br />
== I'm a potential GSoC student. I'm scared of all the assembly and docs here! Where should I start?! :'( ==<br />
Start here : http://wiki.kolibrios.org/wiki/HowTo<br />
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!<br />
<br />
== I'm a potential GSoC student. What is this test task?! ==<br />
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.<br />
<br />
== I want to play with the code but my college blocks SVN ==<br />
If you are have trouble accessing, please do mention it on the forums.<br />
You can temporarily use this backup git repository: https://github.com/ashmew2/kolibriosSVN<br />
It is not at par with the SVN, but it should not be more than a couple of months old and should thus be enough to get you a taste.<br />
<br />
== All the ideas seem interesting, But.. ==<br />
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.<br />
<br />
== Great Guide! But I still don't understand X ==<br />
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.<br />
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.<br />
<br />
Most importantly...Have Fun!</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Google_Summer_of_Code_2016&diff=5310Google Summer of Code 20162016-03-08T23:38:15Z<p>Punk Joker: </p>
<hr />
<div><!-- [[Image:GSoC2015.png|right]] --><br />
== Introduction ==<br />
KolibriOS is going to apply as a mentoring organization for [https://developers.google.com/open-source/gsoc/ Google Summer of Code 2016]. This page contains our ideas list and some additional information for students and mentors.<br />
<br />
We have previously participated as a Mentoring Organization in [http://www.google-melange.com/gsoc/homepage/google/gsoc2014 Google Summer of Code 2014]. The [[Google Summer of Code 2014|ideas page for 2014]] is available for your reference. Our organization page for GSoC 2014 and successfully completed projects for that year can be accessed [https://www.google-melange.com/gsoc/org2/google/gsoc2014/kolibrios via this link]. To our great delight, both successful students of GSoC2014 stayed with the project and continue contributing to KolibriOS voluntarily in their spare time.<br />
<br />
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.<br />
<br />
== Student Requirements ==<br />
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] (25 March 19:00 UTC).'''<br><br><br />
In addition, students need to answer the following questions when applying:<br />
# Full Name (First + Last Name).<br />
# E-mail address.<br />
# Phone (home or mobile).<br />
# Another phone '''for emergency cases''' (if we cannot contact you) - parents, boy/girlfriend, husband/wife etc.<br />
# Nickname you plan to use on our forums, SVN repository or IRC chat.<br />
# Age.<br />
# Country + city of residence.<br />
# Human languages you speak (state all languages and knowledge level - basic/intermediate/expert/mother tongue).<br />
# Name of college or university you are accepted into or enrolled in + link to their website.<br />
# Name of program (or faculty, or department) in that college/university you are accepted into or enrolled in.<br />
# Your current timezone in UTC/GMT terms (for example, Paris is UTC/GMT +1 hours right now).<br />
# Have you been involved with any open-source project in the past? If yes, which one, and what have you done for that project?<br />
# 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.<br />
# The task you are willing to work on from our list of Summer of Code 2016 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.<br />
# 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.''<br />
<br />
== Organization ==<br />
<br />
You can find the organizers on the IRC channel (#kolibrios @ irc.freenode.net) or at our forum: http://board.kolibrios.org/<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
|Dmitriy Smirnov<br />
|Pathoswithin<br />
|Administrator for GSoC, mentor<br />
|-<br />
|Jeffrey Amelynck<br />
|[[User:Hidnplayr|hidnplayr]]<br />
|Mentor, backup administrator<br />
|-<br />
|Kiril Lipatov<br />
|[[User:Leency|Leency]]<br />
|Mentor<br />
|-<br />
|Ashish Gupta<br />
|[[User:ashmew2|ashmew2]]<br />
|Mentor<br />
|-<br />
|}<br />
We have discussed "Google Summer of Code 2016" application with all active members of the KolibriOS Project Team, and selected only those 3 (three) people who have both the knowledge, the dedication, and the 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.<br />
<br />
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 GSoC2014.<br />
<br />
== Ideas for Google Summer of Code 2016 ==<br />
The below list contains ideas suggested by KolibriOS team members. '''It is neither complete nor final.'''<br><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.<br />
<br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Required Skill Level<br />
! Importance for KolibriOS<br />
! Programming Language<br />
! Mentor<br />
|-<br />
| [[#XDXF_dictionary|XDXF dictionary]]<br />
| Application<br />
| Basic<br />
| Low<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#CPUID_tool|CPUID tool]]<br />
| Application<br />
| Beginner<br />
| Low<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#FTP_client|FTP client]]<br />
| Application<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Torrent_client|Torrent client]]<br />
| Application<br />
| Advanced<br />
| High<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#XMPP.2FJabber_client|XMPP/Jabber client]]<br />
| Application<br />
| Intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Music_player|Music player]]<br />
| Application<br />
| Advanced<br />
| Medium<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#Web_browser|Web browser]]<br />
| Application<br />
| Intermediate<br />
| High<br />
| [http://www.dev0.de/cmm/indexe.htm Sphinx C--]<br />
| Leency<br />
|-<br />
| [[#Port ScummVM|Port ScummVM]]<br />
| Application<br />
| Intermediate<br />
| Medium<br />
| C/C++<br />
| ashmew2 / hidnplayr<br />
|-<br />
| [[#Ethernet_driver.28s.29|Ethernet driver(s)]]<br />
| Driver<br />
| Advanced<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#SD_Host_Controller|SD Host Controller driver]]<br />
| Driver<br />
| Advanced<br />
| Low<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#USB_devices|USB device drivers]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Filesystem_support|Filesystem support]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#Wi-Fi|Wi-Fi]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide task<br />
| Intermediate<br />
| High<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#QR-code_in_boot_log|QR-code in boot log]]<br />
| Kernel/Library<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#C layer for KolibriOS|C layer for KolibriOS]]<br />
| Library<br />
| Intermediate<br />
| Medium<br />
| C<br />
| Ashmew2<br />
|-<br />
| [[#Virtualbox support for KolibriOS|Virtualbox support for KolibriOS]]<br />
| Library<br />
| Advanced<br />
| Medium<br />
| C<br />
| Ashmew2<br />
|-<br />
| [[#Port PolarSSL|Port PolarSSL]]<br />
| Library<br />
| intermediate / advanced <br />
| High<br />
| C / FASM<br />
| hidnplayr / ashmew2 <br />
|}<br />
Explanation of required skill level:<br />
* Beginner: No knowledge at all of the topic,<br />
* Basic: A very basic knowledge of the topic but no professional usage,<br />
* Intermediate: A basic knowledge of the topic but no regular professional usage,<br />
* Advanced: A good knowledge of the topic and a regular professional usage,<br />
* Expert: a perfect knowledge of the topic and a daily professional usage.<br />
<br />
Explanation of importance for the project:<br />
* Low: For sure it doesn't hurt to implement, but if nobody does it, no one will even notice.<br />
* Medium: Nice-to-have feature. Will improve everyday life of users and developers.<br />
* High: This feature is needed for the project to start being adopted by masses.<br />
<br />
=== Applications ===<br />
These are userspace tasks. They often require only basic knowledge of algorithms and data structures.<br><br />
No specific experience is required but welcome.<br />
<br />
==== XDXF dictionary ====<br />
'''Summary:''' Write dictionary application with support of XDXF (XML Dictionary eXchange Format)<br />
<br />
'''Details:'''<br />
* Primary goal: Write library and corresponding dictionary application<br />
* Additional goal: Support of other dictioinary formats<br />
* Language: Assembler/FASM<br />
* Skill level: basic<br />
* Importance: low<br />
* Mentor: Pathoswithin<br />
* Links: [http://tibleiz.net/asm-xml/ fasm xml library], [https://en.wikipedia.org/wiki/XDXF XDXF format]<br />
<br />
<br />
==== CPUID tool ====<br />
'''Summary:''' Update existing CPUID application to be aware of new CPUs and their features<br />
<br />
'''Details:'''<br />
* Primary goal: Write code to detect and report new CPUs and features + size detection for caches<br />
* Additional goal: Refactor code as to use system libraries (libimg, box_lib, etc.)<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: low<br />
* Mentor: Pathoswithin / Wildwest<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fprograms%2Fsystem%2Fcpuid%2Ftrunk%2F&#aec5d374b78ae8f08110b3327c3ba5f56 CPUID program], [http://bochs.sourceforge.net/techspec/24161821.pdf Intel cpuid], [http://support.amd.com/TechDocs/25481.pdf AMD cpuid]<br />
<br />
<br />
==== FTP client ====<br />
'''Summary:''' Create a GUI based FTP client or add FTP support to one of the existing file managers<br />
<br />
'''Details:'''<br />
* Primary goal: FTP access (download/upload/etc.)<br />
* Additional goal: Create an FTP client library<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [https://www.ietf.org/rfc/rfc959.txt File Transfer Protocol (RFC959)], [http://board.kolibrios.org/viewtopic.php?f=40&t=2360 CLI FTP client (demo)]<br />
<br />
<br />
==== Torrent client ====<br />
'''Summary:''' Write a (bit-)torrent client for KolibriOS, or port an existing one<br />
<br />
'''Details:'''<br />
* Primary goal: Implement a torrent client similar to [http://www.utorrent.com/ µTorrent Free edition]<br />
* Alternative goal (less preferred, but still possible): Port an existing torrent client to KolibriOS<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://www.bittorrent.org Information about the protocol]<br />
<br />
<br />
==== XMPP/Jabber client ====<br />
'''Summary:''' Write a XMPP/Jabber library and client for KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Write basic xmpp library/client<br />
* Additional goal: Implement some xmpp extentions<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* 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]<br />
<br />
<br />
==== Music player ====<br />
'''Summary:''' Improve the current music player in Kolibri<br />
<br />
'''Details:'''<br />
* Primary goal: Rewrite the current music player (ac97snd), in FASM, and improve its functionality<br />
:* Support for file formats wav, mp3 and xm (using available external libraries)<br />
:* Support for playlists (m3u)<br />
:* A time display<br />
* Additional goal:<br />
:* Use of system wide hotkeys to control player<br />
:* Support for metadata (ID3, ...)<br />
:* More codecs (flac, vorbis, ...)<br />
:* Audio indication (oscillograph, bar graph, ...)<br />
:* Show cover art from files or album folder<br />
:* Fade in/out and/or crossover<br />
:* Streaming radio (at least mp3 over http stream)<br />
:* Skins<br />
:* Media library<br />
* Language: Assembler/FASM (C/C++ to port codec)<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: hidnplayr / Pathoswithin<br />
* Links: [http://board.kolibrios.org/viewtopic.php?f=38&t=1596 AC97SND (MP3 player in C)], [http://board.kolibrios.org/viewtopic.php?f=28&t=317 Sound drivers and architecture], [http://board.kolibrios.org/viewtopic.php?f=38&t=3003 Flac decoder],[http://board.kolibrios.org/viewtopic.php?f=38&t=2220 Minimp3 (minimalistic mp3 decoding library)], [http://board.kolibrios.org/viewtopic.php?f=38&t=161 SuperMP3 (IDv3 tag demo)]<br />
<br />
<br />
==== Web browser ====<br />
'''Summary:''' Improve existing text-only web browser Aelia (ex WebView) - add more functionality and compatibility<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: [http://www.dev0.de/cmm/indexe.htm Sphinx C--]. May require writing a few lines in FASM though<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: Leency<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
* [http://board.kolibrios.org/viewtopic.php?f=40&t=1075 Work done so far on WebView (mostly in Russian)]. If you don't know Russian, you can read [http://translate.google.com/translate?hl=en&sl=ru&tl=en&u=http%3A%2F%2Fboard.kolibrios.org%2Fviewtopic.php%3Ff%3D40%26t%3D1075 English translation using Google-Translate]<br />
<br />
==== Port ScummVM ====<br />
'''Summary:''' Port ScummVM to KolibriOS.<br />
<br />
'''Details:'''<br />
* Primary goal: Port ScummVM to KolibriOS so that users can enjoy a wide range of already available software that runs on it.<br />
* Secondary goal: Optimize for KolibriOS<br />
* Language: C / FASM<br />
* Skill level: intermediate / advanced<br />
* Importance: Medium<br />
* Mentors: hidnplayr / ashmew2<br />
'''Links:'''<br />
* [https://sourceforge.net/projects/scummvm/ ScummVM website], [https://sourceforge.net/projects/menuet/files/CD/A/ Old ScummVM port for MenuetOS]<br />
<br />
=== Drivers ===<br />
Writing drivers is about supporting new hardware and filesystems.<br><br />
Knowledge of specifications and previous experience are ''not'' required but surely desirable.<br />
<br />
==== Ethernet driver(s) ====<br />
'''Summary:''' Write an Ethernet driver<br />
<br />
'''Details:'''<br />
* Primary goal: Support for popular Broadcom, Atheros or Marvell Yukon ethernet cards<br />
* Additional goal: A second driver for another card family, PPPoE support in kernel, ...<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: Medium<br />
* Mentor: hidnplayr<br />
* Links: [https://www.broadcom.com/collateral/pg/57XX-PG105-R.pdf BCM57xx programmers guide], [[Writing network drivers for KolibriOS]], [https://github.com/UDOOboard/U-Boot_Unico/blob/master/drivers/net/bcm570x.c BCM570x driver for u-boot (in C)], [http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fdrivers%2Funfinished%2Fbcm57xx.asm Stub for BCM57xx driver]<br />
<br />
<br />
==== SD Host Controller ====<br />
'''Summary:''' Add support for SD Host Controller<br />
<br />
'''Details:'''<br />
* Primary goal: Write driver for particular controller<br />
* Additional goal: Test and update driver to work for all controllers<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: Low<br />
* Mentor: Pathoswithin<br />
* Links: [https://www.sdcard.org/downloads/pls/simplified_specs/index.html SD specifications]<br />
<br />
==== USB devices ====<br />
'''Summary:''' Add USB drivers for the new USB stack (webcams, gamepads, joysticks, tablets, etc.)<br />
<br />
'''Details:'''<br />
* Primary goal: Write USB driver for currently unsupported device (you should have one)<br />
* Additional goal: Adopt code to work with all devices of the same class<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://en.wikipedia.org/wiki/USB#Device_classes USB device classes]<br />
<br />
<br />
==== Filesystem support ====<br />
'''Summary:''' Improve filesystem support in KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Update/fix read-write support for ext2/3/4 filesystems (partially done)<br />
* Additional goal: Any improvement of filesystem support in KolibriOS<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: Pathoswithin<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Ffs%2F&#a0aa5cede7308db82d4bae78266ed8462 Filesystems in KolibriOS]<br />
<br />
<br />
==== Wi-Fi ====<br />
'''Summary:''' Add Wi-Fi support to KolibriOS. <br />
<br />
'''Details:'''<br />
* Description: Write or port a Wi-Fi driver for KolibriOS, implement the ability to set a wireless connection.<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [https://en.wikipedia.org/wiki/Comparison_of_open-source_wireless_drivers Comparison of open source wifi drivers]<br />
<br />
<br />
=== System wide tasks ===<br />
These tasks comprise both user space and kernel space work. Some developers consider them as of most importance for KolibriOS.<br><br />
Architecture and algorithm design skills are highly desirable.<br />
<br />
==== Widget toolkit ====<br />
'''Summary:''' Extend Box_lib (a set of separate widgets) to create a full-featured widget toolkit<br />
<br />
'''Details:'''<br />
* Primary goal: Design architecture and implement focus handling, callbacks and other core ideas<br />
* Additional goal: Integrate box_lib widgets to this framework<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Importance: High<br />
* Mentor: Pathoswithin<br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
<br />
==== QR-code in boot log ====<br />
'''Summary:''' Add a [http://en.wikipedia.org/wiki/QR_code QR-code] (containing the debug log) at the end of boot process<br />
<br />
[[File:QR-code.png]]<br />
<br />
'''Details:'''<br />
* Description: Sometimes KolibriOS cannot boot on a certain hardware configuration (gets stuck during or after boot process). In such cases, we request the user having this problem to enable debug log at boot time, take a photo of the screen and show it to us (in the forum). However, sometimes taking a good quality photo can be quite challenging (bad camera, shaking hands etc.) and the attached photo is so blurry to the point the debug log cannot be even read. The idea suggested hereby is to simultaneously encode the debug log which is outputted on the screen, to the form of QR-code, and show the resulting QR-code on empty space on the screen. In such way, any user possessing a smartphone with a camera and QR-code scanner, could scan the QR-code and submit the encoded text directly on our forums (without having a need to take a photo), and our developers, in turn, would get the debug log text immediately and won't have to unscramble a blurry photo.<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Mentor: Pathoswithin<br />
<br />
<br />
==== C layer for KolibriOS ====<br />
'''Summary:''' Building a C layer for KolibriOS, so that we can get more developers and port more code to KolibriOS more easily.<br />
<br />
'''Details:'''<br />
* Description: As a lot of software out there is available in C and useful for KolibriOS, building an ecosystem around C and FASM is required. Some work towards a cross compiler has already been done. Since KolibriOS is neither Linux, nor Windows..it is challenging to port software. In order to automate this, we need to port existing libraries and figure out a way to automate/streamline this process. The best part about this is that you get to mix C and FASM in unprecedented ways and learn along the way. The end result should be as easy as writing a Makefile and calling the cross compiler which creates a binary for Kolibri OS. The eventual aim is to have libraries in C available for KolibriOS which let you use the same ASM procedures in C code. Some work on this has already been done. Get in touch to know more!<br />
Example:<br />
#include<kolibri.h><br />
int main()<br />
{ <br />
kolibri_window("Hi!");<br />
return 0;<br />
}<br />
* Language(s):<br />
:* C - Required<br />
:* FASM <Not a strict requirement, but is desirable><br />
:* GNU Autotools (Easy to pick up, safe to assume optional).<br />
* Skill level: intermediate, bonus points for the ability in designing a clean approach to achieve this.<br />
* Mentor: ashmew2<br />
<br />
<br />
==== Virtualbox support for KolibriOS ====<br />
'''Summary:''' Building Virtualbox support for KolibriOS so that it is easier to use in a virtual machine.<br />
<br />
'''Details:'''<br />
* Description: Create a set of tools which let KolibriOS seamlessly interface with a host running Kolibri via VirtualBox. Develop parts required, especially shared folders, which resemble Guest Additions. (For a Linux based Host running KolibriOS as Guest.)<br />
* Language(s):<br />
:* C - Virtualbox Source code<br />
:* FASM - To understand the source code of KolibriOS better and prepare interfaces with Guest additions.<br />
* Skill level: Advanced, ability to understand a larger source code base and contribute to it are very desirable!<br />
* Mentor: ashmew2<br />
<br />
==== Port PolarSSL ====<br />
'''Summary:''' Port PolarSSL to KolibriOS.<br />
'''Details:'''<br />
* Primary goal: Make a working port of PolarSSL (as native KolibriOS MS COFF library) and add it to the automatic build-system.<br />
* Additional goal: Update HTTP library (written in FASM) to support HTTPS.<br />
* Language: C / FASM<br />
* Skill level: intermediate / advanced<br />
* Importance: High<br />
* Mentors: hidnplayr / ashmew2<br />
* 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]<br />
<br />
<br />
<!--<br />
=== Open Ideas (without appointed mentor) ===<br />
<br />
==== One core for graphics ====<br />
'''Summary:''' On multi-core systems, dedicate one core for graphics rendering ONLY<br />
<br />
'''Details:'''<br />
* Goal: Move graphics subsystem to a single, dedicated core if multicore machine detected<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Serge(?)<br />
<br />
==== Partition editor ====<br />
'''Summary:''' Add a partition/HDD editor utility<br />
<br />
'''Details:'''<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Mario(?)<br />
<br />
==== Rewrite "Table" in Assembler ====<br />
'''Summary:''' Rewrite a great Kolibri spreadsheet application [[Table]] from C++ to FASM<br />
<br />
'''Details:'''<br />
* Goal: Port Table (C++) to Assembler/FASM<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Mentor: ???<br />
<br />
==== Kernel vulnerabilities ====<br />
'''Summary:''' Find and fix as many kernel vulnerabilities as you can<br />
<br />
'''Details:'''<br />
* Goal: Check the list of kernel API functions versus their actual implementation in KolibriOS kernel (for example, check that the function doesn't destroy register values if it declares in description that it doesn't). If you find a vulnerability, try to fix it so that it works according to API. If you cannot fix it yourself, document the vulnerability and describe the problem.<br />
* Language: Assembler/FASM<br />
* Skill level: Intermediate/Expert<br />
* Mentor: Serge '''(Is not always available to answer questions, so select this task only if you can work fairly independently.)'''<br />
<br />
==== Web browser in FASM ====<br />
'''Summary:''' Write a proper HTML web browser for KolibriOS<br />
<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Mentor: SoUrcerer<br />
<br />
<br />
==== Printing/scanning API ====<br />
'''Summary:''' Add a printing and scanning API and drivers.<br />
<br />
'''Details:'''<br />
* Primary goal: Design and code infrastructure for printing and scanning devices.<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: SoUrcerer<br />
--><br />
<br />
[[Category:Misc]]<br />
<br />
== Rough Guide for Prospective Students ==<br />
<br />
* As the kernel is written in FASM, ability to write and understand i386-assembly code is very useful.<br />
* 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.<br />
* Familiarity with the GNu landscape like Autotools, GCC etc are also a plus to have (especially for porting software)<br />
* 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. (The mentors can help you with that :) )<br />
* Hanging out on Freenode's #kolibriOS , and our Chat (accessible through kolibrios.org -> Forum -> Chat) are where developers mostly hang out.<br />
* Languages used for communication are Russian and English (although most developers are bilingual, and you can always ask someone for help)<br />
* Get in touch with other developers via IRC / Chat / Forums and enjoy your stay!<br />
<br />
== I'm a potential GSoC student. I'm scared of all the assembly and docs here! Where should I start?! :'( ==<br />
Start here : http://wiki.kolibrios.org/wiki/HowTo<br />
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!<br />
<br />
== I'm a potential GSoC student. What is this test task?! ==<br />
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.<br />
<br />
== I want to play with the code but my college blocks SVN ==<br />
If you are have trouble accessing, please do mention it on the forums.<br />
You can temporarily use this backup git repository: https://github.com/ashmew2/kolibriosSVN<br />
It is not at par with the SVN, but it should not be more than a couple of months old and should thus be enough to get you a taste.<br />
<br />
== All the ideas seem interesting, But.. ==<br />
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.<br />
<br />
== Great Guide! But I still don't understand X ==<br />
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.<br />
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.<br />
<br />
Most importantly...Have Fun!</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Google_Summer_of_Code_2016&diff=5309Google Summer of Code 20162016-03-08T22:26:48Z<p>Punk Joker: /* Sortable list of ideas for easy navigation */</p>
<hr />
<div><!-- [[Image:GSoC2015.png|right]] --><br />
== Introduction ==<br />
KolibriOS is going to apply as a mentoring organization for [https://developers.google.com/open-source/gsoc/ Google Summer of Code 2016]. This page contains our ideas list and some additional information for students and mentors.<br />
<br />
We have previously participated as a Mentoring Organization in [http://www.google-melange.com/gsoc/homepage/google/gsoc2014 Google Summer of Code 2014]. The [[Google Summer of Code 2014|ideas page for 2014]] is available for your reference. Our organization page for GSoC 2014 and successfully completed projects for that year can be accessed [https://www.google-melange.com/gsoc/org2/google/gsoc2014/kolibrios via this link]. To our great delight, both successful students of GSoC2014 stayed with the project and continue contributing to KolibriOS voluntarily in their spare time.<br />
<br />
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.<br />
<br />
== Student Requirements ==<br />
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] (25 March 19:00 UTC).'''<br><br><br />
In addition, students need to answer the following questions when applying:<br />
# Full Name (First + Last Name).<br />
# E-mail address.<br />
# Phone (home or mobile).<br />
# Another phone '''for emergency cases''' (if we cannot contact you) - parents, boy/girlfriend, husband/wife etc.<br />
# Nickname you plan to use on our forums, SVN repository or IRC chat.<br />
# Age.<br />
# Country + city of residence.<br />
# Human languages you speak (state all languages and knowledge level - basic/intermediate/expert/mother tongue).<br />
# Name of college or university you are accepted into or enrolled in + link to their website.<br />
# Name of program (or faculty, or department) in that college/university you are accepted into or enrolled in.<br />
# Your current timezone in UTC/GMT terms (for example, Paris is UTC/GMT +1 hours right now).<br />
# Have you been involved with any open-source project in the past? If yes, which one, and what have you done for that project?<br />
# 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.<br />
# The task you are willing to work on from our list of Summer of Code 2016 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.<br />
# 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.''<br />
<br />
== Organization ==<br />
<br />
You can find the organizers on the IRC channel (#kolibrios @ irc.freenode.net) or at our forum: http://board.kolibrios.org/<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
|Dmitriy Smirnov<br />
|Pathoswithin<br />
|Administrator for GSoC, mentor<br />
|-<br />
|Jeffrey Amelynck<br />
|[[User:Hidnplayr|hidnplayr]]<br />
|Mentor, backup administrator<br />
|-<br />
|Kiril Lipatov<br />
|[[User:Leency|Leency]]<br />
|Mentor<br />
|-<br />
|Ashish Gupta<br />
|[[User:ashmew2|ashmew2]]<br />
|Mentor<br />
|-<br />
|}<br />
We have discussed "Google Summer of Code 2016" application with all active members of the KolibriOS Project Team, and selected only those 3 (three) people who have both the knowledge, the dedication, and the 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.<br />
<br />
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 GSoC2014.<br />
<br />
== Ideas for Google Summer of Code 2016 ==<br />
The below list contains ideas suggested by KolibriOS team members. '''It is neither complete nor final.'''<br><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.<br />
<br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Required Skill Level<br />
! Importance for KolibriOS<br />
! Programming Language<br />
! Mentor<br />
|-<br />
| [[#XDXF_dictionary|XDXF dictionary]]<br />
| Application<br />
| Basic<br />
| Low<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#CPUID_tool|CPUID tool]]<br />
| Application<br />
| Beginner<br />
| Low<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#FTP_client|FTP client]]<br />
| Application<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Torrent_client|Torrent client]]<br />
| Application<br />
| Advanced<br />
| High<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#XMPP.2FJabber_client|XMPP/Jabber client]]<br />
| Application<br />
| Intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Music_player|Music player]]<br />
| Application<br />
| Advanced<br />
| Medium<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#Web_browser|Web browser]]<br />
| Application<br />
| Intermediate<br />
| High<br />
| [http://www.dev0.de/cmm/indexe.htm Sphinx C--]<br />
| Leency<br />
|-<br />
| [[#Port ScummVM|Port ScummVM]]<br />
| Application<br />
| Intermediate<br />
| Medium<br />
| C/C++<br />
| ashmew2 / hidnplayr<br />
|-<br />
| [[#Ethernet_driver.28s.29|Ethernet driver(s)]]<br />
| Driver<br />
| Advanced<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#SD_Host_Controller|SD Host Controller driver]]<br />
| Driver<br />
| Advanced<br />
| Low<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#USB_devices|USB device drivers]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Filesystem_support|Filesystem support]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#Wi-Fi|Wi-Fi]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide task<br />
| Intermediate<br />
| High<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#QR-code_in_boot_log|QR-code in boot log]]<br />
| Kernel/Library<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#C layer for KolibriOS|C layer for KolibriOS]]<br />
| Library<br />
| Intermediate<br />
| Medium<br />
| C<br />
| Ashmew2<br />
|-<br />
| [[#Virtualbox support for KolibriOS|Virtualbox support for KolibriOS]]<br />
| Library<br />
| Advanced<br />
| Medium<br />
| C<br />
| Ashmew2<br />
|}<br />
Explanation of required skill level:<br />
* Beginner: No knowledge at all of the topic,<br />
* Basic: A very basic knowledge of the topic but no professional usage,<br />
* Intermediate: A basic knowledge of the topic but no regular professional usage,<br />
* Advanced: A good knowledge of the topic and a regular professional usage,<br />
* Expert: a perfect knowledge of the topic and a daily professional usage.<br />
<br />
Explanation of importance for the project:<br />
* Low: For sure it doesn't hurt to implement, but if nobody does it, no one will even notice.<br />
* Medium: Nice-to-have feature. Will improve everyday life of users and developers.<br />
* High: This feature is needed for the project to start being adopted by masses.<br />
<br />
=== Applications ===<br />
These are userspace tasks. They often require only basic knowledge of algorithms and data structures.<br><br />
No specific experience is required but welcome.<br />
<br />
==== XDXF dictionary ====<br />
'''Summary:''' Write dictionary application with support of XDXF (XML Dictionary eXchange Format)<br />
<br />
'''Details:'''<br />
* Primary goal: Write library and corresponding dictionary application<br />
* Additional goal: Support of other dictioinary formats<br />
* Language: Assembler/FASM<br />
* Skill level: basic<br />
* Importance: low<br />
* Mentor: Pathoswithin<br />
* Links: [http://tibleiz.net/asm-xml/ fasm xml library], [https://en.wikipedia.org/wiki/XDXF XDXF format]<br />
<br />
<br />
==== CPUID tool ====<br />
'''Summary:''' Update existing CPUID application to be aware of new CPUs and their features<br />
<br />
'''Details:'''<br />
* Primary goal: Write code to detect and report new CPUs and features + size detection for caches<br />
* Additional goal: Refactor code as to use system libraries (libimg, box_lib, etc.)<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: low<br />
* Mentor: Pathoswithin / Wildwest<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fprograms%2Fsystem%2Fcpuid%2Ftrunk%2F&#aec5d374b78ae8f08110b3327c3ba5f56 CPUID program], [http://bochs.sourceforge.net/techspec/24161821.pdf Intel cpuid], [http://support.amd.com/TechDocs/25481.pdf AMD cpuid]<br />
<br />
<br />
==== FTP client ====<br />
'''Summary:''' Create a GUI based FTP client or add FTP support to one of the existing file managers<br />
<br />
'''Details:'''<br />
* Primary goal: FTP access (download/upload/etc.)<br />
* Additional goal: Create an FTP client library<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [https://www.ietf.org/rfc/rfc959.txt File Transfer Protocol (RFC959)], [http://board.kolibrios.org/viewtopic.php?f=40&t=2360 CLI FTP client (demo)]<br />
<br />
<br />
==== Torrent client ====<br />
'''Summary:''' Write a (bit-)torrent client for KolibriOS, or port an existing one<br />
<br />
'''Details:'''<br />
* Primary goal: Implement a torrent client similar to [http://www.utorrent.com/ µTorrent Free edition]<br />
* Alternative goal (less preferred, but still possible): Port an existing torrent client to KolibriOS<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://www.bittorrent.org Information about the protocol]<br />
<br />
<br />
==== XMPP/Jabber client ====<br />
'''Summary:''' Write a XMPP/Jabber library and client for KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Write basic xmpp library/client<br />
* Additional goal: Implement some xmpp extentions<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* 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]<br />
<br />
<br />
==== Music player ====<br />
'''Summary:''' Improve the current music player in Kolibri<br />
<br />
'''Details:'''<br />
* Primary goal: Rewrite the current music player (ac97snd), in FASM, and improve its functionality<br />
:* Support for file formats wav, mp3 and xm (using available external libraries)<br />
:* Support for playlists (m3u)<br />
:* A time display<br />
* Additional goal:<br />
:* Use of system wide hotkeys to control player<br />
:* Support for metadata (ID3, ...)<br />
:* More codecs (flac, vorbis, ...)<br />
:* Audio indication (oscillograph, bar graph, ...)<br />
:* Show cover art from files or album folder<br />
:* Fade in/out and/or crossover<br />
:* Streaming radio (at least mp3 over http stream)<br />
:* Skins<br />
:* Media library<br />
* Language: Assembler/FASM (C/C++ to port codec)<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: hidnplayr / Pathoswithin<br />
* Links: [http://board.kolibrios.org/viewtopic.php?f=38&t=1596 AC97SND (MP3 player in C)], [http://board.kolibrios.org/viewtopic.php?f=28&t=317 Sound drivers and architecture], [http://board.kolibrios.org/viewtopic.php?f=38&t=3003 Flac decoder],[http://board.kolibrios.org/viewtopic.php?f=38&t=2220 Minimp3 (minimalistic mp3 decoding library)], [http://board.kolibrios.org/viewtopic.php?f=38&t=161 SuperMP3 (IDv3 tag demo)]<br />
<br />
<br />
==== Web browser ====<br />
'''Summary:''' Improve existing text-only web browser Aelia (ex WebView) - add more functionality and compatibility<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: [http://www.dev0.de/cmm/indexe.htm Sphinx C--]. May require writing a few lines in FASM though<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: Leency<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
* [http://board.kolibrios.org/viewtopic.php?f=40&t=1075 Work done so far on WebView (mostly in Russian)]. If you don't know Russian, you can read [http://translate.google.com/translate?hl=en&sl=ru&tl=en&u=http%3A%2F%2Fboard.kolibrios.org%2Fviewtopic.php%3Ff%3D40%26t%3D1075 English translation using Google-Translate]<br />
<br />
==== Port ScummVM ====<br />
'''Summary:''' Port ScummVM to KolibriOS.<br />
<br />
'''Details:'''<br />
* Primary goal: Port ScummVM to KolibriOS so that users can enjoy a wide range of already available software that runs on it.<br />
* Secondary goal: Optimize for KolibriOS<br />
* Language: C / FASM<br />
* Skill level: intermediate / advanced<br />
* Importance: Medium<br />
* Mentors: hidnplayr / ashmew2<br />
'''Links:'''<br />
* [https://sourceforge.net/projects/scummvm/ ScummVM website], [https://sourceforge.net/projects/menuet/files/CD/A/ Old ScummVM port for MenuetOS]<br />
<br />
=== Drivers ===<br />
Writing drivers is about supporting new hardware and filesystems.<br><br />
Knowledge of specifications and previous experience are ''not'' required but surely desirable.<br />
<br />
==== Ethernet driver(s) ====<br />
'''Summary:''' Write an Ethernet driver<br />
<br />
'''Details:'''<br />
* Primary goal: Support for popular Broadcom, Atheros or Marvell Yukon ethernet cards<br />
* Additional goal: A second driver for another card family, PPPoE support in kernel, ...<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: Medium<br />
* Mentor: hidnplayr<br />
* Links: [https://www.broadcom.com/collateral/pg/57XX-PG105-R.pdf BCM57xx programmers guide], [[Writing network drivers for KolibriOS]], [https://github.com/UDOOboard/U-Boot_Unico/blob/master/drivers/net/bcm570x.c BCM570x driver for u-boot (in C)], [http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fdrivers%2Funfinished%2Fbcm57xx.asm Stub for BCM57xx driver]<br />
<br />
<br />
==== SD Host Controller ====<br />
'''Summary:''' Add support for SD Host Controller<br />
<br />
'''Details:'''<br />
* Primary goal: Write driver for particular controller<br />
* Additional goal: Test and update driver to work for all controllers<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: Low<br />
* Mentor: Pathoswithin<br />
* Links: [https://www.sdcard.org/downloads/pls/simplified_specs/index.html SD specifications]<br />
<br />
==== USB devices ====<br />
'''Summary:''' Add USB drivers for the new USB stack (webcams, gamepads, joysticks, tablets, etc.)<br />
<br />
'''Details:'''<br />
* Primary goal: Write USB driver for currently unsupported device (you should have one)<br />
* Additional goal: Adopt code to work with all devices of the same class<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://en.wikipedia.org/wiki/USB#Device_classes USB device classes]<br />
<br />
<br />
==== Filesystem support ====<br />
'''Summary:''' Improve filesystem support in KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Update/fix read-write support for ext2/3/4 filesystems (partially done)<br />
* Additional goal: Any improvement of filesystem support in KolibriOS<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: Pathoswithin<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Ffs%2F&#a0aa5cede7308db82d4bae78266ed8462 Filesystems in KolibriOS]<br />
<br />
<br />
==== Wi-Fi ====<br />
'''Summary:''' Add Wi-Fi support to KolibriOS. <br />
<br />
'''Details:'''<br />
* Description: Write or port a Wi-Fi driver for KolibriOS, implement the ability to set a wireless connection.<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [https://en.wikipedia.org/wiki/Comparison_of_open-source_wireless_drivers Comparison of open source wifi drivers]<br />
<br />
<br />
=== System wide tasks ===<br />
These tasks comprise both user space and kernel space work. Some developers consider them as of most importance for KolibriOS.<br><br />
Architecture and algorithm design skills are highly desirable.<br />
<br />
==== Widget toolkit ====<br />
'''Summary:''' Extend Box_lib (a set of separate widgets) to create a full-featured widget toolkit<br />
<br />
'''Details:'''<br />
* Primary goal: Design architecture and implement focus handling, callbacks and other core ideas<br />
* Additional goal: Integrate box_lib widgets to this framework<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Importance: High<br />
* Mentor: Pathoswithin<br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
<br />
==== QR-code in boot log ====<br />
'''Summary:''' Add a [http://en.wikipedia.org/wiki/QR_code QR-code] (containing the debug log) at the end of boot process<br />
<br />
[[File:QR-code.png]]<br />
<br />
'''Details:'''<br />
* Description: Sometimes KolibriOS cannot boot on a certain hardware configuration (gets stuck during or after boot process). In such cases, we request the user having this problem to enable debug log at boot time, take a photo of the screen and show it to us (in the forum). However, sometimes taking a good quality photo can be quite challenging (bad camera, shaking hands etc.) and the attached photo is so blurry to the point the debug log cannot be even read. The idea suggested hereby is to simultaneously encode the debug log which is outputted on the screen, to the form of QR-code, and show the resulting QR-code on empty space on the screen. In such way, any user possessing a smartphone with a camera and QR-code scanner, could scan the QR-code and submit the encoded text directly on our forums (without having a need to take a photo), and our developers, in turn, would get the debug log text immediately and won't have to unscramble a blurry photo.<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Mentor: Pathoswithin<br />
<br />
<br />
==== C layer for KolibriOS ====<br />
'''Summary:''' Building a C layer for KolibriOS, so that we can get more developers and port more code to KolibriOS more easily.<br />
<br />
'''Details:'''<br />
* Description: As a lot of software out there is available in C and useful for KolibriOS, building an ecosystem around C and FASM is required. Some work towards a cross compiler has already been done. Since KolibriOS is neither Linux, nor Windows..it is challenging to port software. In order to automate this, we need to port existing libraries and figure out a way to automate/streamline this process. The best part about this is that you get to mix C and FASM in unprecedented ways and learn along the way. The end result should be as easy as writing a Makefile and calling the cross compiler which creates a binary for Kolibri OS. The eventual aim is to have libraries in C available for KolibriOS which let you use the same ASM procedures in C code. Some work on this has already been done. Get in touch to know more!<br />
Example:<br />
#include<kolibri.h><br />
int main()<br />
{ <br />
kolibri_window("Hi!");<br />
return 0;<br />
}<br />
* Language(s):<br />
:* C - Required<br />
:* FASM <Not a strict requirement, but is desirable><br />
:* GNU Autotools (Easy to pick up, safe to assume optional).<br />
* Skill level: intermediate, bonus points for the ability in designing a clean approach to achieve this.<br />
* Mentor: ashmew2<br />
<br />
<br />
==== Virtualbox support for KolibriOS ====<br />
'''Summary:''' Building Virtualbox support for KolibriOS so that it is easier to use in a virtual machine.<br />
<br />
'''Details:'''<br />
* Description: Create a set of tools which let KolibriOS seamlessly interface with a host running Kolibri via VirtualBox. Develop parts required, especially shared folders, which resemble Guest Additions. (For a Linux based Host running KolibriOS as Guest.)<br />
* Language(s):<br />
:* C - Virtualbox Source code<br />
:* FASM - To understand the source code of KolibriOS better and prepare interfaces with Guest additions.<br />
* Skill level: Advanced, ability to understand a larger source code base and contribute to it are very desirable!<br />
* Mentor: ashmew2<br />
<br />
==== Port PolarSSL ====<br />
'''Summary:''' Port PolarSSL to KolibriOS.<br />
'''Details:'''<br />
* Primary goal: Make a working port of PolarSSL (as native KolibriOS MS COFF library) and add it to the automatic build-system.<br />
* Additional goal: Update HTTP library (written in FASM) to support HTTPS.<br />
* Language: C / FASM<br />
* Skill level: intermediate / advanced<br />
* Importance: High<br />
* Mentors: hidnplayr / ashmew2<br />
* 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]<br />
<br />
<br />
<!--<br />
=== Open Ideas (without appointed mentor) ===<br />
<br />
==== One core for graphics ====<br />
'''Summary:''' On multi-core systems, dedicate one core for graphics rendering ONLY<br />
<br />
'''Details:'''<br />
* Goal: Move graphics subsystem to a single, dedicated core if multicore machine detected<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Serge(?)<br />
<br />
==== Partition editor ====<br />
'''Summary:''' Add a partition/HDD editor utility<br />
<br />
'''Details:'''<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Mario(?)<br />
<br />
==== Rewrite "Table" in Assembler ====<br />
'''Summary:''' Rewrite a great Kolibri spreadsheet application [[Table]] from C++ to FASM<br />
<br />
'''Details:'''<br />
* Goal: Port Table (C++) to Assembler/FASM<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Mentor: ???<br />
<br />
==== Kernel vulnerabilities ====<br />
'''Summary:''' Find and fix as many kernel vulnerabilities as you can<br />
<br />
'''Details:'''<br />
* Goal: Check the list of kernel API functions versus their actual implementation in KolibriOS kernel (for example, check that the function doesn't destroy register values if it declares in description that it doesn't). If you find a vulnerability, try to fix it so that it works according to API. If you cannot fix it yourself, document the vulnerability and describe the problem.<br />
* Language: Assembler/FASM<br />
* Skill level: Intermediate/Expert<br />
* Mentor: Serge '''(Is not always available to answer questions, so select this task only if you can work fairly independently.)'''<br />
<br />
==== Web browser in FASM ====<br />
'''Summary:''' Write a proper HTML web browser for KolibriOS<br />
<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Mentor: SoUrcerer<br />
<br />
<br />
==== Printing/scanning API ====<br />
'''Summary:''' Add a printing and scanning API and drivers.<br />
<br />
'''Details:'''<br />
* Primary goal: Design and code infrastructure for printing and scanning devices.<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: SoUrcerer<br />
--><br />
<br />
[[Category:Misc]]<br />
<br />
== Rough Guide for Prospective Students ==<br />
<br />
* As the kernel is written in FASM, ability to write and understand i386-assembly code is very useful.<br />
* 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.<br />
* Familiarity with the GNu landscape like Autotools, GCC etc are also a plus to have (especially for porting software)<br />
* 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. (The mentors can help you with that :) )<br />
* Hanging out on Freenode's #kolibriOS , and our Chat (accessible through kolibrios.org -> Forum -> Chat) are where developers mostly hang out.<br />
* Languages used for communication are Russian and English (although most developers are bilingual, and you can always ask someone for help)<br />
* Get in touch with other developers via IRC / Chat / Forums and enjoy your stay!<br />
<br />
== I'm a potential GSoC student. I'm scared of all the assembly and docs here! Where should I start?! :'( ==<br />
Start here : http://wiki.kolibrios.org/wiki/HowTo<br />
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!<br />
<br />
== I'm a potential GSoC student. What is this test task?! ==<br />
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.<br />
<br />
== I want to play with the code but my college blocks SVN ==<br />
If you are have trouble accessing, please do mention it on the forums.<br />
You can temporarily use this backup git repository: https://github.com/ashmew2/kolibriosSVN<br />
It is not at par with the SVN, but it should not be more than a couple of months old and should thus be enough to get you a taste.<br />
<br />
== All the ideas seem interesting, But.. ==<br />
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.<br />
<br />
== Great Guide! But I still don't understand X ==<br />
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.<br />
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.<br />
<br />
Most importantly...Have Fun!</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Google_Summer_of_Code_2016&diff=5308Google Summer of Code 20162016-03-08T22:26:23Z<p>Punk Joker: /* Sortable list of ideas for easy navigation */</p>
<hr />
<div><!-- [[Image:GSoC2015.png|right]] --><br />
== Introduction ==<br />
KolibriOS is going to apply as a mentoring organization for [https://developers.google.com/open-source/gsoc/ Google Summer of Code 2016]. This page contains our ideas list and some additional information for students and mentors.<br />
<br />
We have previously participated as a Mentoring Organization in [http://www.google-melange.com/gsoc/homepage/google/gsoc2014 Google Summer of Code 2014]. The [[Google Summer of Code 2014|ideas page for 2014]] is available for your reference. Our organization page for GSoC 2014 and successfully completed projects for that year can be accessed [https://www.google-melange.com/gsoc/org2/google/gsoc2014/kolibrios via this link]. To our great delight, both successful students of GSoC2014 stayed with the project and continue contributing to KolibriOS voluntarily in their spare time.<br />
<br />
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.<br />
<br />
== Student Requirements ==<br />
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] (25 March 19:00 UTC).'''<br><br><br />
In addition, students need to answer the following questions when applying:<br />
# Full Name (First + Last Name).<br />
# E-mail address.<br />
# Phone (home or mobile).<br />
# Another phone '''for emergency cases''' (if we cannot contact you) - parents, boy/girlfriend, husband/wife etc.<br />
# Nickname you plan to use on our forums, SVN repository or IRC chat.<br />
# Age.<br />
# Country + city of residence.<br />
# Human languages you speak (state all languages and knowledge level - basic/intermediate/expert/mother tongue).<br />
# Name of college or university you are accepted into or enrolled in + link to their website.<br />
# Name of program (or faculty, or department) in that college/university you are accepted into or enrolled in.<br />
# Your current timezone in UTC/GMT terms (for example, Paris is UTC/GMT +1 hours right now).<br />
# Have you been involved with any open-source project in the past? If yes, which one, and what have you done for that project?<br />
# 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.<br />
# The task you are willing to work on from our list of Summer of Code 2016 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.<br />
# 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.''<br />
<br />
== Organization ==<br />
<br />
You can find the organizers on the IRC channel (#kolibrios @ irc.freenode.net) or at our forum: http://board.kolibrios.org/<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
|Dmitriy Smirnov<br />
|Pathoswithin<br />
|Administrator for GSoC, mentor<br />
|-<br />
|Jeffrey Amelynck<br />
|[[User:Hidnplayr|hidnplayr]]<br />
|Mentor, backup administrator<br />
|-<br />
|Kiril Lipatov<br />
|[[User:Leency|Leency]]<br />
|Mentor<br />
|-<br />
|Ashish Gupta<br />
|[[User:ashmew2|ashmew2]]<br />
|Mentor<br />
|-<br />
|}<br />
We have discussed "Google Summer of Code 2016" application with all active members of the KolibriOS Project Team, and selected only those 3 (three) people who have both the knowledge, the dedication, and the 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.<br />
<br />
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 GSoC2014.<br />
<br />
== Ideas for Google Summer of Code 2016 ==<br />
The below list contains ideas suggested by KolibriOS team members. '''It is neither complete nor final.'''<br><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.<br />
<br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Required Skill Level<br />
! Importance for KolibriOS<br />
! Programming Language<br />
! Mentor<br />
|-<br />
| [[#XDXF_dictionary|XDXF dictionary]]<br />
| Application<br />
| Basic<br />
| Low<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#CPUID_tool|CPUID tool]]<br />
| Application<br />
| Beginner<br />
| Low<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#FTP_client|FTP client]]<br />
| Application<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Torrent_client|Torrent client]]<br />
| Application<br />
| Advanced<br />
| High<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#XMPP.2FJabber_client|XMPP/Jabber client]]<br />
| Application<br />
| Intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Music_player|Music player]]<br />
| Application<br />
| Advanced<br />
| Medium<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#Web_browser|Web browser]]<br />
| Application<br />
| Intermediate<br />
| High<br />
| [http://www.dev0.de/cmm/indexe.htm Sphinx C--]<br />
| Leency<br />
|-<br />
| [[#ScummVM|Port ScummVM]]<br />
| Application<br />
| Intermediate<br />
| Medium<br />
| C/C++<br />
| ashmew2 / hidnplayr<br />
|-<br />
| [[#Ethernet_driver.28s.29|Ethernet driver(s)]]<br />
| Driver<br />
| Advanced<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#SD_Host_Controller|SD Host Controller driver]]<br />
| Driver<br />
| Advanced<br />
| Low<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#USB_devices|USB device drivers]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Filesystem_support|Filesystem support]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#Wi-Fi|Wi-Fi]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide task<br />
| Intermediate<br />
| High<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#QR-code_in_boot_log|QR-code in boot log]]<br />
| Kernel/Library<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#C layer for KolibriOS|C layer for KolibriOS]]<br />
| Library<br />
| Intermediate<br />
| Medium<br />
| C<br />
| Ashmew2<br />
|-<br />
| [[#Virtualbox support for KolibriOS|Virtualbox support for KolibriOS]]<br />
| Library<br />
| Advanced<br />
| Medium<br />
| C<br />
| Ashmew2<br />
|}<br />
Explanation of required skill level:<br />
* Beginner: No knowledge at all of the topic,<br />
* Basic: A very basic knowledge of the topic but no professional usage,<br />
* Intermediate: A basic knowledge of the topic but no regular professional usage,<br />
* Advanced: A good knowledge of the topic and a regular professional usage,<br />
* Expert: a perfect knowledge of the topic and a daily professional usage.<br />
<br />
Explanation of importance for the project:<br />
* Low: For sure it doesn't hurt to implement, but if nobody does it, no one will even notice.<br />
* Medium: Nice-to-have feature. Will improve everyday life of users and developers.<br />
* High: This feature is needed for the project to start being adopted by masses.<br />
<br />
=== Applications ===<br />
These are userspace tasks. They often require only basic knowledge of algorithms and data structures.<br><br />
No specific experience is required but welcome.<br />
<br />
==== XDXF dictionary ====<br />
'''Summary:''' Write dictionary application with support of XDXF (XML Dictionary eXchange Format)<br />
<br />
'''Details:'''<br />
* Primary goal: Write library and corresponding dictionary application<br />
* Additional goal: Support of other dictioinary formats<br />
* Language: Assembler/FASM<br />
* Skill level: basic<br />
* Importance: low<br />
* Mentor: Pathoswithin<br />
* Links: [http://tibleiz.net/asm-xml/ fasm xml library], [https://en.wikipedia.org/wiki/XDXF XDXF format]<br />
<br />
<br />
==== CPUID tool ====<br />
'''Summary:''' Update existing CPUID application to be aware of new CPUs and their features<br />
<br />
'''Details:'''<br />
* Primary goal: Write code to detect and report new CPUs and features + size detection for caches<br />
* Additional goal: Refactor code as to use system libraries (libimg, box_lib, etc.)<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: low<br />
* Mentor: Pathoswithin / Wildwest<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fprograms%2Fsystem%2Fcpuid%2Ftrunk%2F&#aec5d374b78ae8f08110b3327c3ba5f56 CPUID program], [http://bochs.sourceforge.net/techspec/24161821.pdf Intel cpuid], [http://support.amd.com/TechDocs/25481.pdf AMD cpuid]<br />
<br />
<br />
==== FTP client ====<br />
'''Summary:''' Create a GUI based FTP client or add FTP support to one of the existing file managers<br />
<br />
'''Details:'''<br />
* Primary goal: FTP access (download/upload/etc.)<br />
* Additional goal: Create an FTP client library<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [https://www.ietf.org/rfc/rfc959.txt File Transfer Protocol (RFC959)], [http://board.kolibrios.org/viewtopic.php?f=40&t=2360 CLI FTP client (demo)]<br />
<br />
<br />
==== Torrent client ====<br />
'''Summary:''' Write a (bit-)torrent client for KolibriOS, or port an existing one<br />
<br />
'''Details:'''<br />
* Primary goal: Implement a torrent client similar to [http://www.utorrent.com/ µTorrent Free edition]<br />
* Alternative goal (less preferred, but still possible): Port an existing torrent client to KolibriOS<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://www.bittorrent.org Information about the protocol]<br />
<br />
<br />
==== XMPP/Jabber client ====<br />
'''Summary:''' Write a XMPP/Jabber library and client for KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Write basic xmpp library/client<br />
* Additional goal: Implement some xmpp extentions<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* 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]<br />
<br />
<br />
==== Music player ====<br />
'''Summary:''' Improve the current music player in Kolibri<br />
<br />
'''Details:'''<br />
* Primary goal: Rewrite the current music player (ac97snd), in FASM, and improve its functionality<br />
:* Support for file formats wav, mp3 and xm (using available external libraries)<br />
:* Support for playlists (m3u)<br />
:* A time display<br />
* Additional goal:<br />
:* Use of system wide hotkeys to control player<br />
:* Support for metadata (ID3, ...)<br />
:* More codecs (flac, vorbis, ...)<br />
:* Audio indication (oscillograph, bar graph, ...)<br />
:* Show cover art from files or album folder<br />
:* Fade in/out and/or crossover<br />
:* Streaming radio (at least mp3 over http stream)<br />
:* Skins<br />
:* Media library<br />
* Language: Assembler/FASM (C/C++ to port codec)<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: hidnplayr / Pathoswithin<br />
* Links: [http://board.kolibrios.org/viewtopic.php?f=38&t=1596 AC97SND (MP3 player in C)], [http://board.kolibrios.org/viewtopic.php?f=28&t=317 Sound drivers and architecture], [http://board.kolibrios.org/viewtopic.php?f=38&t=3003 Flac decoder],[http://board.kolibrios.org/viewtopic.php?f=38&t=2220 Minimp3 (minimalistic mp3 decoding library)], [http://board.kolibrios.org/viewtopic.php?f=38&t=161 SuperMP3 (IDv3 tag demo)]<br />
<br />
<br />
==== Web browser ====<br />
'''Summary:''' Improve existing text-only web browser Aelia (ex WebView) - add more functionality and compatibility<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: [http://www.dev0.de/cmm/indexe.htm Sphinx C--]. May require writing a few lines in FASM though<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: Leency<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
* [http://board.kolibrios.org/viewtopic.php?f=40&t=1075 Work done so far on WebView (mostly in Russian)]. If you don't know Russian, you can read [http://translate.google.com/translate?hl=en&sl=ru&tl=en&u=http%3A%2F%2Fboard.kolibrios.org%2Fviewtopic.php%3Ff%3D40%26t%3D1075 English translation using Google-Translate]<br />
<br />
==== Port ScummVM ====<br />
'''Summary:''' Port ScummVM to KolibriOS.<br />
<br />
'''Details:'''<br />
* Primary goal: Port ScummVM to KolibriOS so that users can enjoy a wide range of already available software that runs on it.<br />
* Secondary goal: Optimize for KolibriOS<br />
* Language: C / FASM<br />
* Skill level: intermediate / advanced<br />
* Importance: Medium<br />
* Mentors: hidnplayr / ashmew2<br />
'''Links:'''<br />
* [https://sourceforge.net/projects/scummvm/ ScummVM website], [https://sourceforge.net/projects/menuet/files/CD/A/ Old ScummVM port for MenuetOS]<br />
<br />
=== Drivers ===<br />
Writing drivers is about supporting new hardware and filesystems.<br><br />
Knowledge of specifications and previous experience are ''not'' required but surely desirable.<br />
<br />
==== Ethernet driver(s) ====<br />
'''Summary:''' Write an Ethernet driver<br />
<br />
'''Details:'''<br />
* Primary goal: Support for popular Broadcom, Atheros or Marvell Yukon ethernet cards<br />
* Additional goal: A second driver for another card family, PPPoE support in kernel, ...<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: Medium<br />
* Mentor: hidnplayr<br />
* Links: [https://www.broadcom.com/collateral/pg/57XX-PG105-R.pdf BCM57xx programmers guide], [[Writing network drivers for KolibriOS]], [https://github.com/UDOOboard/U-Boot_Unico/blob/master/drivers/net/bcm570x.c BCM570x driver for u-boot (in C)], [http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fdrivers%2Funfinished%2Fbcm57xx.asm Stub for BCM57xx driver]<br />
<br />
<br />
==== SD Host Controller ====<br />
'''Summary:''' Add support for SD Host Controller<br />
<br />
'''Details:'''<br />
* Primary goal: Write driver for particular controller<br />
* Additional goal: Test and update driver to work for all controllers<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: Low<br />
* Mentor: Pathoswithin<br />
* Links: [https://www.sdcard.org/downloads/pls/simplified_specs/index.html SD specifications]<br />
<br />
==== USB devices ====<br />
'''Summary:''' Add USB drivers for the new USB stack (webcams, gamepads, joysticks, tablets, etc.)<br />
<br />
'''Details:'''<br />
* Primary goal: Write USB driver for currently unsupported device (you should have one)<br />
* Additional goal: Adopt code to work with all devices of the same class<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://en.wikipedia.org/wiki/USB#Device_classes USB device classes]<br />
<br />
<br />
==== Filesystem support ====<br />
'''Summary:''' Improve filesystem support in KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Update/fix read-write support for ext2/3/4 filesystems (partially done)<br />
* Additional goal: Any improvement of filesystem support in KolibriOS<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: Pathoswithin<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Ffs%2F&#a0aa5cede7308db82d4bae78266ed8462 Filesystems in KolibriOS]<br />
<br />
<br />
==== Wi-Fi ====<br />
'''Summary:''' Add Wi-Fi support to KolibriOS. <br />
<br />
'''Details:'''<br />
* Description: Write or port a Wi-Fi driver for KolibriOS, implement the ability to set a wireless connection.<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [https://en.wikipedia.org/wiki/Comparison_of_open-source_wireless_drivers Comparison of open source wifi drivers]<br />
<br />
<br />
=== System wide tasks ===<br />
These tasks comprise both user space and kernel space work. Some developers consider them as of most importance for KolibriOS.<br><br />
Architecture and algorithm design skills are highly desirable.<br />
<br />
==== Widget toolkit ====<br />
'''Summary:''' Extend Box_lib (a set of separate widgets) to create a full-featured widget toolkit<br />
<br />
'''Details:'''<br />
* Primary goal: Design architecture and implement focus handling, callbacks and other core ideas<br />
* Additional goal: Integrate box_lib widgets to this framework<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Importance: High<br />
* Mentor: Pathoswithin<br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
<br />
==== QR-code in boot log ====<br />
'''Summary:''' Add a [http://en.wikipedia.org/wiki/QR_code QR-code] (containing the debug log) at the end of boot process<br />
<br />
[[File:QR-code.png]]<br />
<br />
'''Details:'''<br />
* Description: Sometimes KolibriOS cannot boot on a certain hardware configuration (gets stuck during or after boot process). In such cases, we request the user having this problem to enable debug log at boot time, take a photo of the screen and show it to us (in the forum). However, sometimes taking a good quality photo can be quite challenging (bad camera, shaking hands etc.) and the attached photo is so blurry to the point the debug log cannot be even read. The idea suggested hereby is to simultaneously encode the debug log which is outputted on the screen, to the form of QR-code, and show the resulting QR-code on empty space on the screen. In such way, any user possessing a smartphone with a camera and QR-code scanner, could scan the QR-code and submit the encoded text directly on our forums (without having a need to take a photo), and our developers, in turn, would get the debug log text immediately and won't have to unscramble a blurry photo.<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Mentor: Pathoswithin<br />
<br />
<br />
==== C layer for KolibriOS ====<br />
'''Summary:''' Building a C layer for KolibriOS, so that we can get more developers and port more code to KolibriOS more easily.<br />
<br />
'''Details:'''<br />
* Description: As a lot of software out there is available in C and useful for KolibriOS, building an ecosystem around C and FASM is required. Some work towards a cross compiler has already been done. Since KolibriOS is neither Linux, nor Windows..it is challenging to port software. In order to automate this, we need to port existing libraries and figure out a way to automate/streamline this process. The best part about this is that you get to mix C and FASM in unprecedented ways and learn along the way. The end result should be as easy as writing a Makefile and calling the cross compiler which creates a binary for Kolibri OS. The eventual aim is to have libraries in C available for KolibriOS which let you use the same ASM procedures in C code. Some work on this has already been done. Get in touch to know more!<br />
Example:<br />
#include<kolibri.h><br />
int main()<br />
{ <br />
kolibri_window("Hi!");<br />
return 0;<br />
}<br />
* Language(s):<br />
:* C - Required<br />
:* FASM <Not a strict requirement, but is desirable><br />
:* GNU Autotools (Easy to pick up, safe to assume optional).<br />
* Skill level: intermediate, bonus points for the ability in designing a clean approach to achieve this.<br />
* Mentor: ashmew2<br />
<br />
<br />
==== Virtualbox support for KolibriOS ====<br />
'''Summary:''' Building Virtualbox support for KolibriOS so that it is easier to use in a virtual machine.<br />
<br />
'''Details:'''<br />
* Description: Create a set of tools which let KolibriOS seamlessly interface with a host running Kolibri via VirtualBox. Develop parts required, especially shared folders, which resemble Guest Additions. (For a Linux based Host running KolibriOS as Guest.)<br />
* Language(s):<br />
:* C - Virtualbox Source code<br />
:* FASM - To understand the source code of KolibriOS better and prepare interfaces with Guest additions.<br />
* Skill level: Advanced, ability to understand a larger source code base and contribute to it are very desirable!<br />
* Mentor: ashmew2<br />
<br />
==== Port PolarSSL ====<br />
'''Summary:''' Port PolarSSL to KolibriOS.<br />
'''Details:'''<br />
* Primary goal: Make a working port of PolarSSL (as native KolibriOS MS COFF library) and add it to the automatic build-system.<br />
* Additional goal: Update HTTP library (written in FASM) to support HTTPS.<br />
* Language: C / FASM<br />
* Skill level: intermediate / advanced<br />
* Importance: High<br />
* Mentors: hidnplayr / ashmew2<br />
* 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]<br />
<br />
<br />
<!--<br />
=== Open Ideas (without appointed mentor) ===<br />
<br />
==== One core for graphics ====<br />
'''Summary:''' On multi-core systems, dedicate one core for graphics rendering ONLY<br />
<br />
'''Details:'''<br />
* Goal: Move graphics subsystem to a single, dedicated core if multicore machine detected<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Serge(?)<br />
<br />
==== Partition editor ====<br />
'''Summary:''' Add a partition/HDD editor utility<br />
<br />
'''Details:'''<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Mario(?)<br />
<br />
==== Rewrite "Table" in Assembler ====<br />
'''Summary:''' Rewrite a great Kolibri spreadsheet application [[Table]] from C++ to FASM<br />
<br />
'''Details:'''<br />
* Goal: Port Table (C++) to Assembler/FASM<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Mentor: ???<br />
<br />
==== Kernel vulnerabilities ====<br />
'''Summary:''' Find and fix as many kernel vulnerabilities as you can<br />
<br />
'''Details:'''<br />
* Goal: Check the list of kernel API functions versus their actual implementation in KolibriOS kernel (for example, check that the function doesn't destroy register values if it declares in description that it doesn't). If you find a vulnerability, try to fix it so that it works according to API. If you cannot fix it yourself, document the vulnerability and describe the problem.<br />
* Language: Assembler/FASM<br />
* Skill level: Intermediate/Expert<br />
* Mentor: Serge '''(Is not always available to answer questions, so select this task only if you can work fairly independently.)'''<br />
<br />
==== Web browser in FASM ====<br />
'''Summary:''' Write a proper HTML web browser for KolibriOS<br />
<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Mentor: SoUrcerer<br />
<br />
<br />
==== Printing/scanning API ====<br />
'''Summary:''' Add a printing and scanning API and drivers.<br />
<br />
'''Details:'''<br />
* Primary goal: Design and code infrastructure for printing and scanning devices.<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: SoUrcerer<br />
--><br />
<br />
[[Category:Misc]]<br />
<br />
== Rough Guide for Prospective Students ==<br />
<br />
* As the kernel is written in FASM, ability to write and understand i386-assembly code is very useful.<br />
* 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.<br />
* Familiarity with the GNu landscape like Autotools, GCC etc are also a plus to have (especially for porting software)<br />
* 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. (The mentors can help you with that :) )<br />
* Hanging out on Freenode's #kolibriOS , and our Chat (accessible through kolibrios.org -> Forum -> Chat) are where developers mostly hang out.<br />
* Languages used for communication are Russian and English (although most developers are bilingual, and you can always ask someone for help)<br />
* Get in touch with other developers via IRC / Chat / Forums and enjoy your stay!<br />
<br />
== I'm a potential GSoC student. I'm scared of all the assembly and docs here! Where should I start?! :'( ==<br />
Start here : http://wiki.kolibrios.org/wiki/HowTo<br />
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!<br />
<br />
== I'm a potential GSoC student. What is this test task?! ==<br />
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.<br />
<br />
== I want to play with the code but my college blocks SVN ==<br />
If you are have trouble accessing, please do mention it on the forums.<br />
You can temporarily use this backup git repository: https://github.com/ashmew2/kolibriosSVN<br />
It is not at par with the SVN, but it should not be more than a couple of months old and should thus be enough to get you a taste.<br />
<br />
== All the ideas seem interesting, But.. ==<br />
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.<br />
<br />
== Great Guide! But I still don't understand X ==<br />
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.<br />
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.<br />
<br />
Most importantly...Have Fun!</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Google_Summer_of_Code_2016&diff=5294Google Summer of Code 20162016-03-01T17:39:38Z<p>Punk Joker: /* SD Host Controller */</p>
<hr />
<div><!-- [[Image:GSoC2015.png|right]] --><br />
== Introduction ==<br />
KolibriOS is going to apply as a mentoring organization for [https://developers.google.com/open-source/gsoc/ Google Summer of Code 2016]. This page contains our ideas list and some additional information for students and mentors.<br />
<br />
We have previously participated as a Mentoring Organization in [http://www.google-melange.com/gsoc/homepage/google/gsoc2014 Google Summer of Code 2014]. The [[Google Summer of Code 2014|ideas page for 2014]] is available for your reference. Our organization page for GSoC 2014 and successfully completed projects for that year can be accessed [https://www.google-melange.com/gsoc/org2/google/gsoc2014/kolibrios via this link]. To our great delight, both successful students of GSoC2014 stayed with the project and continue contributing to KolibriOS voluntarily in their spare time.<br />
<br />
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.<br />
<br />
== Student Requirements ==<br />
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] (25 March 19:00 UTC).'''<br><br><br />
In addition, students need to answer the following questions when applying:<br />
# Full Name (First + Last Name).<br />
# E-mail address.<br />
# Phone (home or mobile).<br />
# Another phone '''for emergency cases''' (if we cannot contact you) - parents, boy/girlfriend, husband/wife etc.<br />
# Nickname you plan to use on our forums, SVN repository or IRC chat.<br />
# Age.<br />
# Country + city of residence.<br />
# Human languages you speak (state all languages and knowledge level - basic/intermediate/expert/mother tongue).<br />
# Name of college or university you are accepted into or enrolled in + link to their website.<br />
# Name of program (or faculty, or department) in that college/university you are accepted into or enrolled in.<br />
# Your current timezone in UTC/GMT terms (for example, Paris is UTC/GMT +1 hours right now).<br />
# Have you been involved with any open-source project in the past? If yes, which one, and what have you done for that project?<br />
# 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.<br />
# The task you are willing to work on from our list of Summer of Code 2016 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.<br />
# 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.''<br />
<br />
== Organization ==<br />
<br />
You can find the organizers on the IRC channel (#kolibrios @ irc.freenode.net) or at our forum: http://board.kolibrios.org/<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
|Dmitriy Smirnov<br />
|Pathoswithin<br />
|Administrator for GSoC, mentor<br />
|-<br />
|Jeffrey Amelynck<br />
|[[User:Hidnplayr|hidnplayr]]<br />
|Mentor, backup administrator<br />
|-<br />
|Kiril Lipatov<br />
|[[User:Leency|Leency]]<br />
|Mentor<br />
|-<br />
|Ashish Gupta<br />
|[[User:ashmew2|ashmew2]]<br />
|Mentor<br />
|-<br />
|}<br />
We have discussed "Google Summer of Code 2016" application with all active members of the KolibriOS Project Team, and selected only those 3 (three) people who have both the knowledge, the dedication, and the 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.<br />
<br />
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 GSoC2014.<br />
<br />
== Ideas for Google Summer of Code 2016 ==<br />
The below list contains ideas suggested by KolibriOS team members. '''It is neither complete nor final.'''<br><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.<br />
<br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Required Skill Level<br />
! Importance for KolibriOS<br />
! Programming Language<br />
! Mentor<br />
|-<br />
| [[#XDXF_dictionary|XDXF dictionary]]<br />
| Application<br />
| Basic<br />
| Low<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#CPUID_tool|CPUID tool]]<br />
| Application<br />
| Beginner<br />
| Low<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#FTP_client|FTP client]]<br />
| Application<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Torrent_client|Torrent client]]<br />
| Application<br />
| Advanced<br />
| High<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#XMPP.2FJabber_client|XMPP/Jabber client]]<br />
| Application<br />
| Intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Music_player|Music player]]<br />
| Application<br />
| Advanced<br />
| Medium<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#Web_browser|Web browser]]<br />
| Application<br />
| Intermediate<br />
| High<br />
| [http://www.dev0.de/cmm/indexe.htm Sphinx C--]<br />
| Leency<br />
|-<br />
| [[#Ethernet_driver.28s.29|Ethernet driver(s)]]<br />
| Driver<br />
| Advanced<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#SD_Host_Controller|SD Host Controller driver]]<br />
| Driver<br />
| Advanced<br />
| Low<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#USB_devices|USB device drivers]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Filesystem_support|Filesystem support]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#Wi-Fi|Wi-Fi]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide task<br />
| Intermediate<br />
| High<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#QR-code_in_boot_log|QR-code in boot log]]<br />
| Kernel/Library<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#C layer for KolibriOS|C layer for KolibriOS]]<br />
| Library<br />
| Intermediate<br />
| Medium<br />
| C<br />
| Ashmew2<br />
|-<br />
| [[#Virtualbox support for KolibriOS|Virtualbox support for KolibriOS]]<br />
| Library<br />
| Advanced<br />
| Medium<br />
| C<br />
| Ashmew2<br />
|}<br />
Explanation of required skill level:<br />
* Beginner: No knowledge at all of the topic,<br />
* Basic: A very basic knowledge of the topic but no professional usage,<br />
* Intermediate: A basic knowledge of the topic but no regular professional usage,<br />
* Advanced: A good knowledge of the topic and a regular professional usage,<br />
* Expert: a perfect knowledge of the topic and a daily professional usage.<br />
<br />
Explanation of importance for the project:<br />
* Low: For sure it doesn't hurt to implement, but if nobody does it, no one will even notice.<br />
* Medium: Nice-to-have feature. Will improve everyday life of users and developers.<br />
* High: This feature is needed for the project to start being adopted by masses.<br />
<br />
=== Applications ===<br />
These are userspace tasks. They often require only basic knowledge of algorithms and data structures.<br><br />
No specific experience is required but welcome.<br />
<br />
==== XDXF dictionary ====<br />
'''Summary:''' Write dictionary application with support of XDXF (XML Dictionary eXchange Format)<br />
<br />
'''Details:'''<br />
* Primary goal: Write library and corresponding dictionary application<br />
* Additional goal: Support of other dictioinary formats<br />
* Language: Assembler/FASM<br />
* Skill level: basic<br />
* Importance: low<br />
* Mentor: Pathoswithin<br />
* Links: [http://tibleiz.net/asm-xml/ fasm xml library], [https://en.wikipedia.org/wiki/XDXF XDXF format]<br />
<br />
<br />
==== CPUID tool ====<br />
'''Summary:''' Update existing CPUID application to be aware of new CPUs and their features<br />
<br />
'''Details:'''<br />
* Primary goal: Write code to detect and report new CPUs and features + size detection for caches<br />
* Additional goal: Refactor code as to use system libraries (libimg, box_lib, etc.)<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: low<br />
* Mentor: Pathoswithin / Wildwest<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fprograms%2Fsystem%2Fcpuid%2Ftrunk%2F&#aec5d374b78ae8f08110b3327c3ba5f56 CPUID program], [http://bochs.sourceforge.net/techspec/24161821.pdf Intel cpuid], [http://support.amd.com/TechDocs/25481.pdf AMD cpuid]<br />
<br />
<br />
==== FTP client ====<br />
'''Summary:''' Create a GUI based FTP client or add FTP support to one of the existing file managers<br />
<br />
'''Details:'''<br />
* Primary goal: FTP access (download/upload/etc.)<br />
* Additional goal: Create an FTP client library<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [https://www.ietf.org/rfc/rfc959.txt File Transfer Protocol (RFC959)], [http://board.kolibrios.org/viewtopic.php?f=40&t=2360 CLI FTP client (demo)]<br />
<br />
<br />
==== Torrent client ====<br />
'''Summary:''' Write a (bit-)torrent client for KolibriOS, or port an existing one<br />
<br />
'''Details:'''<br />
* Primary goal: Implement a torrent client similar to [http://www.utorrent.com/ µTorrent Free edition]<br />
* Alternative goal (less preferred, but still possible): Port an existing torrent client to KolibriOS<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://www.bittorrent.org Information about the protocol]<br />
<br />
<br />
==== XMPP/Jabber client ====<br />
'''Summary:''' Write a XMPP/Jabber library and client for KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Write basic xmpp library/client<br />
* Additional goal: Implement some xmpp extentions<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* 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]<br />
<br />
<br />
==== Music player ====<br />
'''Summary:''' Improve the current music player in Kolibri<br />
<br />
'''Details:'''<br />
* Primary goal: Rewrite the current music player (ac97snd), in FASM, and improve its functionality<br />
:* Support for file formats wav, mp3 and xm (using available external libraries)<br />
:* Support for playlists (m3u)<br />
:* A time display<br />
* Additional goal:<br />
:* Use of system wide hotkeys to control player<br />
:* Support for metadata (ID3, ...)<br />
:* More codecs (flac, vorbis, ...)<br />
:* Audio indication (oscillograph, bar graph, ...)<br />
:* Show cover art from files or album folder<br />
:* Fade in/out and/or crossover<br />
:* Streaming radio (at least mp3 over http stream)<br />
:* Skins<br />
:* Media library<br />
* Language: Assembler/FASM (C/C++ to port codec)<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: hidnplayr / Pathoswithin<br />
* Links: [http://board.kolibrios.org/viewtopic.php?f=38&t=1596 AC97SND (MP3 player in C)], [http://board.kolibrios.org/viewtopic.php?f=28&t=317 Sound drivers and architecture], [http://board.kolibrios.org/viewtopic.php?f=38&t=3003 Flac decoder],[http://board.kolibrios.org/viewtopic.php?f=38&t=2220 Minimp3 (minimalistic mp3 decoding library)], [http://board.kolibrios.org/viewtopic.php?f=38&t=161 SuperMP3 (IDv3 tag demo)]<br />
<br />
<br />
==== Web browser ====<br />
'''Summary:''' Improve existing text-only web browser Aelia (ex WebView) - add more functionality and compatibility<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: [http://www.dev0.de/cmm/indexe.htm Sphinx C--]. May require writing a few lines in FASM though<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: Leency<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
* [http://board.kolibrios.org/viewtopic.php?f=40&t=1075 Work done so far on WebView (mostly in Russian)]. If you don't know Russian, you can read [http://translate.google.com/translate?hl=en&sl=ru&tl=en&u=http%3A%2F%2Fboard.kolibrios.org%2Fviewtopic.php%3Ff%3D40%26t%3D1075 English translation using Google-Translate]<br />
<br />
<br />
=== Drivers ===<br />
Writing drivers is about supporting new hardware and filesystems.<br><br />
Knowledge of specifications and previous experience are ''not'' required but surely desirable.<br />
<br />
==== Ethernet driver(s) ====<br />
'''Summary:''' Write an Ethernet driver<br />
<br />
'''Details:'''<br />
* Primary goal: Support for popular Broadcom, Atheros or Marvell Yukon ethernet cards<br />
* Additional goal: A second driver for another card family, PPPoE support in kernel, ...<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: Medium<br />
* Mentor: hidnplayr<br />
* Links: [https://www.broadcom.com/collateral/pg/57XX-PG105-R.pdf BCM57xx programmers guide], [[Writing network drivers for KolibriOS]], [https://github.com/UDOOboard/U-Boot_Unico/blob/master/drivers/net/bcm570x.c BCM570x driver for u-boot (in C)], [http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fdrivers%2Funfinished%2Fbcm57xx.asm Stub for BCM57xx driver]<br />
<br />
<br />
==== SD Host Controller ====<br />
'''Summary:''' Add support for SD Host Controller<br />
<br />
'''Details:'''<br />
* Primary goal: Write driver for particular controller<br />
* Additional goal: Test and update driver to work for all controllers<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: Low<br />
* Mentor: Pathoswithin<br />
* Links: [https://www.sdcard.org/downloads/pls/simplified_specs/index.html SD specifications]<br />
<br />
==== USB devices ====<br />
'''Summary:''' Add USB drivers for the new USB stack (webcams, gamepads, joysticks, tablets, etc.)<br />
<br />
'''Details:'''<br />
* Primary goal: Write USB driver for currently unsupported device (you should have one)<br />
* Additional goal: Adopt code to work with all devices of the same class<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://en.wikipedia.org/wiki/USB#Device_classes USB device classes]<br />
<br />
<br />
==== Filesystem support ====<br />
'''Summary:''' Improve filesystem support in KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Update/fix read-write support for ext2/3/4 filesystems (partially done)<br />
* Additional goal: Any improvement of filesystem support in KolibriOS<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: Pathoswithin<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Ffs%2F&#a0aa5cede7308db82d4bae78266ed8462 Filesystems in KolibriOS]<br />
<br />
<br />
==== Wi-Fi ====<br />
'''Summary:''' Add Wi-Fi support to KolibriOS. <br />
<br />
'''Details:'''<br />
* Description: Write or port a Wi-Fi driver for KolibriOS, implement the ability to set a wireless connection.<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [https://en.wikipedia.org/wiki/Comparison_of_open-source_wireless_drivers Comparison of open source wifi drivers]<br />
<br />
<br />
=== System wide tasks ===<br />
These tasks comprise both user space and kernel space work. Some developers consider them as of most importance for KolibriOS.<br><br />
Architecture and algorithm design skills are highly desirable.<br />
<br />
==== Widget toolkit ====<br />
'''Summary:''' Extend Box_lib (a set of separate widgets) to create a full-featured widget toolkit<br />
<br />
'''Details:'''<br />
* Primary goal: Design architecture and implement focus handling, callbacks and other core ideas<br />
* Additional goal: Integrate box_lib widgets to this framework<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Importance: High<br />
* Mentor: Pathoswithin<br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
<br />
==== QR-code in boot log ====<br />
'''Summary:''' Add a [http://en.wikipedia.org/wiki/QR_code QR-code] (containing the debug log) at the end of boot process<br />
<br />
[[File:QR-code.png]]<br />
<br />
'''Details:'''<br />
* Description: Sometimes KolibriOS cannot boot on a certain hardware configuration (gets stuck during or after boot process). In such cases, we request the user having this problem to enable debug log at boot time, take a photo of the screen and show it to us (in the forum). However, sometimes taking a good quality photo can be quite challenging (bad camera, shaking hands etc.) and the attached photo is so blurry to the point the debug log cannot be even read. The idea suggested hereby is to simultaneously encode the debug log which is outputted on the screen, to the form of QR-code, and show the resulting QR-code on empty space on the screen. In such way, any user possessing a smartphone with a camera and QR-code scanner, could scan the QR-code and submit the encoded text directly on our forums (without having a need to take a photo), and our developers, in turn, would get the debug log text immediately and won't have to unscramble a blurry photo.<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Mentor: Pathoswithin<br />
<br />
<br />
==== C layer for KolibriOS ====<br />
'''Summary:''' Building a C layer for KolibriOS, so that we can get more developers and port more code to KolibriOS more easily.<br />
<br />
'''Details:'''<br />
* Description: As a lot of software out there is available in C and useful for KolibriOS, building an ecosystem around C and FASM is required. Some work towards a cross compiler has already been done. Since KolibriOS is neither Linux, nor Windows..it is challenging to port software. In order to automate this, we need to port existing libraries and figure out a way to automate/streamline this process. The best part about this is that you get to mix C and FASM in unprecedented ways and learn along the way. The end result should be as easy as writing a Makefile and calling the cross compiler which creates a binary for Kolibri OS. The eventual aim is to have libraries in C available for KolibriOS which let you use the same ASM procedures in C code. Some work on this has already been done. Get in touch to know more!<br />
Example:<br />
#include<kolibri.h><br />
int main()<br />
{ <br />
kolibri_window("Hi!");<br />
return 0;<br />
}<br />
* Language(s):<br />
:* C - Required<br />
:* FASM <Not a strict requirement, but is desirable><br />
:* GNU Autotools (Easy to pick up, safe to assume optional).<br />
* Skill level: intermediate, bonus points for the ability in designing a clean approach to achieve this.<br />
* Mentor: ashmew2<br />
<br />
<br />
==== Virtualbox support for KolibriOS ====<br />
'''Summary:''' Building Virtualbox support for KolibriOS so that it is easier to use in a virtual machine.<br />
<br />
'''Details:'''<br />
* Description: Create a set of tools which let KolibriOS seamlessly interface with a host running Kolibri via VirtualBox. Develop parts required, especially shared folders, which resemble Guest Additions. (For a Linux based Host running KolibriOS as Guest.)<br />
* Language(s):<br />
:* C - Virtualbox Source code<br />
:* FASM - To understand the source code of KolibriOS better and prepare interfaces with Guest additions.<br />
* Skill level: Advanced, ability to understand a larger source code base and contribute to it are very desirable!<br />
* Mentor: ashmew2<br />
<br />
<br />
<!--<br />
=== Open Ideas (without appointed mentor) ===<br />
<br />
==== One core for graphics ====<br />
'''Summary:''' On multi-core systems, dedicate one core for graphics rendering ONLY<br />
<br />
'''Details:'''<br />
* Goal: Move graphics subsystem to a single, dedicated core if multicore machine detected<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Serge(?)<br />
<br />
==== Partition editor ====<br />
'''Summary:''' Add a partition/HDD editor utility<br />
<br />
'''Details:'''<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Mario(?)<br />
<br />
==== Rewrite "Table" in Assembler ====<br />
'''Summary:''' Rewrite a great Kolibri spreadsheet application [[Table]] from C++ to FASM<br />
<br />
'''Details:'''<br />
* Goal: Port Table (C++) to Assembler/FASM<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Mentor: ???<br />
<br />
==== Kernel vulnerabilities ====<br />
'''Summary:''' Find and fix as many kernel vulnerabilities as you can<br />
<br />
'''Details:'''<br />
* Goal: Check the list of kernel API functions versus their actual implementation in KolibriOS kernel (for example, check that the function doesn't destroy register values if it declares in description that it doesn't). If you find a vulnerability, try to fix it so that it works according to API. If you cannot fix it yourself, document the vulnerability and describe the problem.<br />
* Language: Assembler/FASM<br />
* Skill level: Intermediate/Expert<br />
* Mentor: Serge '''(Is not always available to answer questions, so select this task only if you can work fairly independently.)'''<br />
<br />
==== Web browser in FASM ====<br />
'''Summary:''' Write a proper HTML web browser for KolibriOS<br />
<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Mentor: SoUrcerer<br />
<br />
<br />
==== Printing/scanning API ====<br />
'''Summary:''' Add a printing and scanning API and drivers.<br />
<br />
'''Details:'''<br />
* Primary goal: Design and code infrastructure for printing and scanning devices.<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: SoUrcerer<br />
--><br />
<br />
[[Category:Misc]]<br />
<br />
== Rough Guide for Prospective Students ==<br />
<br />
* As the kernel is written in FASM, ability to write and understand i386-assembly code is very useful.<br />
* 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.<br />
* Familiarity with the GNu landscape like Autotools, GCC etc are also a plus to have (especially for porting software)<br />
* 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. (The mentors can help you with that :) )<br />
* Hanging out on Freenode's #kolibriOS , and our Chat (accessible through kolibrios.org -> Forum -> Chat) are where developers mostly hang out.<br />
* Languages used for communication are Russian and English (although most developers are bilingual, and you can always ask someone for help)<br />
* Get in touch with other developers via IRC / Chat / Forums and enjoy your stay!</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Library/ru&diff=5277Library/ru2016-02-12T20:30:45Z<p>Punk Joker: </p>
<hr />
<div>{| class="wikitable" border="1" <br />
! Имя библиотеки<br />
! Краткое описание<br />
! Тема на форуме<br />
|-<br />
| '''[[Box lib/ru|Box lib]]'''<br />
| Библиотека box_lib.obj содержит разные элементы управления, которые можно использовать при написании приложений.<br />
| http://board.kolibrios.org/viewtopic.php?f=24&t=1220<br />
|-<br />
| '''[[OpenDialog/ru|OpenDialog]]'''<br />
| Является подобием Windows компонента Microsoft Common Dialog Control или его аналогов в Linux (там их вообще несколько разных присутствует), и служит для выбор пути.<br />
| <br />
|-<br />
| '''[[Libs-dev/libio/ru|libio]]'''<br />
| Библиотека предоставляет средства для выполнения основных операций ввода-вывода, таких как открытие, закрытие, чтение, изменение, урезание файлов, получение и установка позиции файлового указателя. Также присутствуют методы для перебора файлов в пределах определённой директории с именами, соответствующими маске.<br />
<br />
Ею должны, в общем случае, пользоваться программы, которым необходимо производить низкоуровневые файловые операции.<br />
|<br />
|-<br />
| '''[[Libs-dev/libini/ru|libini]]'''<br />
| Библиотека предоставляет средства для работы с INI файлами, представляющими собой текстовые файлы с набором ключей и значений, которые пользователь имеет возможность изменять вручную в любом внешнем редакторе.<br />
<br />
Ею должны, в общем случае, пользоваться программы, которым необходимо сохранять и загружать свои настройки платформо-независимым образом.<br />
| http://board.kolibrios.org/viewtopic.php?f=24&t=1114<br />
|-<br />
| '''[[Libs-dev/libimg/ru|libimg]]'''<br />
| Библиотека предоставляет средства для работы с графическими файлами и контейнерами. Она расширяема и может прозрачным образом декодировать изображения в разных форматах, идентифицируя их по файловым сигнатурам и другими эвристическими способами.<br />
<br />
Ею должны, в общем случае, пользоваться программы, которым необходимо отображать картинки в их пользовательском интерфейсе (например, иконки на кнопках).<br />
| http://board.kolibrios.org/viewtopic.php?f=24&t=1728<br />
|-<br />
| '''[[Libs-dev/libgfx/ru|libgfx]]'''<br />
| Библиотека предоставляет средства для рисования различных графических примитивов, таких как точки, линии, простые и закрашенные прямоугольники, круги и т.п. Она использует абстракцию холста, чтобы иметь возможность буферизированной отрисовки.<br />
<br />
Ею должны, в общем случае, пользоваться программы, которым необходимо рисовать графику на экране (что, в принципе, относится ко всем существующим программам, так как Kolibri является полностью графической операционной системой).<br />
| <br />
|-<br />
| '''[[Buf2d/ru|buf2d]]'''<br />
| Эта библиотека создана для работы с 2d изображениями. С ее помощью можно создавать буфера с изображениями в памяти, и при необходимости выводить их на экран. Изображения можно накладывать одно на другое, поддерживается работа с прозрачными изображениями. Есть функции рисования линий, кривых Безье, прямоугольников, окружностей. Также есть функции для рисований воксельной графики.<br />
| http://board.kolibrios.org/viewtopic.php?f=24&t=1319<br />
|-<br />
| '''xml'''<br />
| Библиотека для разбора xml<br />
| http://board.kolibrios.org/viewtopic.php?f=24&t=1701<br />
|-<br />
| '''exif'''<br />
| Просмотр данных EXIF изображений<br />
| http://board.kolibrios.org/viewtopic.php?f=24&t=2757<br />
|-<br />
| '''libcrash'''<br />
| Криптографические хэш функции и проч.<br />
| http://board.kolibrios.org/viewtopic.php?f=24&t=2189<br />
|-<br />
| '''console'''<br />
| Работа с консолью<br />
| http://board.kolibrios.org/viewtopic.php?f=24&t=930<br />
|}<br />
<br />
=Тестирование библиотек=<br />
В исходных кодах присутствует директория <tt>.test</tt>, содержащая различные тесты библиотек. Они спроектированы независимыми друг от друга и должны генерировать (или содержать заранее сгенерированные) тестовые данные, которые приводят к одинаковым результатам независимо от порядка их выполнения.<br />
<br />
Программа [[Kiv/ru|KIV]] была изначально основана на одном из таких тестов (002), использующем библиотеки '''libio''' и '''libimg''', чтобы показать их возможности в небольшой графической программе, способной отображать картинку по пути, переданному в качестве параметра командной строки.<br />
<br />
=Стиль кодирования=<br />
Все публичные функции содержатся в файле <tt><имя библиотеки>.asm</tt>, вспомогательные публичные определения &mdash; в файле <tt><имя библиотеки>.inc</tt>. Все остальные специфичные для библиотеки (приватные и вспомогательные) основные функции и определения отделены в файлы <tt><имя библиотеки>_p.asm</tt> и <tt><имя библиотеки>_p.inc</tt>. Также могут присутствовать отдельные файлы с говорящими именами, предоставляющие дополнительную функциональность.<br />
<br />
Функции, находящиеся в публичных файлах, используют соглашение об именовании <tt><имя области функции>.<имя функции></tt>. Функции, содержащиеся в приватных файлах, используют соглашение об именовании <tt><имя библиотеки>._.<имя функции></tt>. Это позволяет разделить код библиотек при статической сборке.<br />
<br />
Используется специфический тип описательных комментариев к функциям, что позволит в будущем генерировать документацию автоматически.<br />
<br />
=Смотрите также=<br />
* [[Libraries|Разъяснения по библиотекам KolibriOS]]<br />
<br />
[[Category:Кодинг]][[Category:Руководства]]<br />
[[Category:Библиотеки]]</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=CObj/ru&diff=5276CObj/ru2016-02-12T20:15:33Z<p>Punk Joker: </p>
<hr />
<div>[[Image:CObj_console.png|thumb|right|320px]]<br />
'''cObj''' - программа для просмотра списка функций, экспортируемых динамической библиотекой.<br />
<br />
==Описание программы==<br />
Консольное приложение (использует библиотеку console.obj), принимает в качестве параметра путь к корректной динамической библиотеке KolibriOS (COFF файл с глобальной переменной EXPORTS или _EXPORTS). При запуске без параметра, завершает работу, даже не создавая окно консоли.<br />
<br />
==Разработчик==<br />
Александр Богомаз aka Albom<br />
<br />
{{Разработка}}<br />
[[Category:Разработка]]<br />
[[Category:Программы на ассемблере]]</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Keyascii/ru&diff=5275Keyascii/ru2016-02-12T20:14:48Z<p>Punk Joker: </p>
<hr />
<div>[[Image:KEYASCII.png|thumb|right]]<br />
<CODE> Keyascii</CODE> - определят ASCII и SCANCODE (для состояния "нажата") коды нажатой клавиши.<br />
<br />
== Авторы ==<br />
<br />
M. Lisovin<br />
<br />
<br />
{{Разработка}}<br />
[[Category:Разработка]]<br />
[[Category:Программы на ассемблере]]</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Fasm/ru&diff=5274Fasm/ru2016-02-12T20:11:46Z<p>Punk Joker: /* FASM - flat assembler. */</p>
<hr />
<div>[[File:FASM Window.png|thumb|right|alt=Окно FASM 1.69.10|Окно компилятора FASM]]<br />
<br />
== FASM - flat assembler. ==<br />
Портированный компилятор ассемблера [http://ru.wikipedia.org/wiki/FASM FASM]. Ядро и большая часть программ в КолибриОС написаны именно на FASM. В дистрибутив 0.7.7.0 включена версия 1.69.10.<br />
В последней ночной сборке включена версия 1.71.16.<br />
<br />
== Разработчики ==<br />
Оригинал : [mailto:tgrysztar@flatassembler.net Томаш Грыштар](Tomasz Grysztar)<br />
<BR><br />
Портировал: VT<br />
<BR><br />
Модернизация и обновление: Heavyiron, diamond, Serge, Spraid, Mario, IgorA, <Lrz>, Ataualpa, Leency, dunkaist, GerdtR<br />
{{Разработка}}<br />
[[Category:Разработка]]<br />
[[Category:Программы на ассемблере]]</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Board/ru&diff=5273Board/ru2016-02-12T20:08:32Z<p>Punk Joker: </p>
<hr />
<div>[[Image:board.jpg|thumb|right]]<br />
<code>Board</code> - программа отображения отладочных сообщений ядра и приложений<br />
<br />
== Авторы ==<br />
<br />
VT, Heavyiron, diamond, Asper, Mario, Serge, CleverMouse<br />
<br />
{{Разработка}}<br />
[[Category:Программы на ассемблере]]</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Tinypad/ru&diff=5272Tinypad/ru2016-02-12T19:58:31Z<p>Punk Joker: </p>
<hr />
<div>[[Image:tinypad.gif|thumb|right]]<br />
<code>TinyPad</code> - это текстовый редактор/текстовый процессор для KolibriOS, помимо обычных функций, присущих любому текстовому редактору имеет также:<br />
* поддержку вкладок<br />
* конвертацию кодировок<br />
* встроенная подсветка ассемблерного кода<br />
* настраиваемый интерфейс<br />
* компиляция и запуск программы, запуск программы в отладчике<br />
* изменение размера шрифта<br />
<br />
== Авторы ==<br />
[[User:Mike.dld|mike.dld]], Mario, Pathoswithin<br />
<br />
{{Офис}}<br />
<br />
[[Category:Офис]]<br />
[[Category:Программы на ассемблере]]</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=TextEdit_(ru)&diff=5271TextEdit (ru)2016-02-12T19:55:13Z<p>Punk Joker: /* TextEditor */</p>
<hr />
<div>==TextEditor==<br />
[[File:T_edit_15.png]]<br><br />
В Kolibri есть текстовый редактор, который называется '''TinyPad''', а также текстовый редактор, встроенный в '''KFar'''. Программа '''TextEditor''' была создана позже.<br />
У каждой из этих программ есть свои сильные и слабые стороны. Неполное сравнение трёх упомянутых редакторов:<br />
<br />
Особенности данного редактора:<br />
* отмена/повтор действия<br />
* настраиваемая подсветка<br />
<br />
Также есть вспомогательная утилита '''TextEditor syntax file viewer''' для работы с файлами подсветки синтаксиса<br><br />
[[File:Te_syntax.png]]<br><br />
Алгоритм работы с этой программой такой:<br />
* загрузить файл синтаксиса .syn (не упакованный kpack-ом)<br />
* ввести путь и новое имя для сохранения в формате .asm<br />
* изменить в файле .asm интересующие пользователя параметры<br />
* компилировать в fasm<br />
* исправить расширение получившегося файла .bin на .syn<br />
<br />
==Разработчики==<br />
IgorA (''Игорь А.'') - автор программы. В программе также используются библиотеки написанные другими программистами.<br />
<br />
{{Офис}}<br />
<br />
[[Category:Офис]]<br />
[[Category:Программы на ассемблере]]</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=TextEdit_(ru)&diff=5270TextEdit (ru)2016-02-12T19:52:50Z<p>Punk Joker: </p>
<hr />
<div>==TextEditor==<br />
[[File:T_edit_15.png]]<br><br />
В Kolibri есть текстовый редактор, который называется '''TinyPad''', а также текстовый редактор, встроенный в '''KFar'''. Программа '''TextEditor''' была создана позже.<br />
У каждой из этих программ есть свои сильные и слабые стороны. Неполное сравнение трёх упомянутых редакторов:<br />
{| border="1"<br />
|Действия<br />
|TinyPad<br />
|TextEditor<br />
|KFar<br />
|-<br />
|Работа с несколькими документами<br />
|есть<br />
|нет<br />
|есть<br />
|-<br />
|Поддержка кодировок KOI8M, Win<br />
|есть<br />
|частично<br />
|нет<br />
|-<br />
|Подсветка синтаксиса<br />
|подсветка заранее зашита в программу<br />
|подсветка берется из файлов, которые может указать пользователь. Также есть возможность получать справку по подсвечиваемым словам (если она есть в файлах подсветки, навести курсор на слово и нажать F1).<br />
|подсветка отсутствует<br />
|-<br />
|Многократная отмена/повтор действий<br />
|нет<br />
|есть<br />
|нет<br />
|-<br />
|Ограничения на размер файлов (помимо доступной памяти)<br />
|нет<br />
|в некоторых случаях есть при редактировании файлов<br />
|нет<br />
|-<br />
|Крупный шрифт<br />
|Да <br />
|нет<br />
|выбирается при компиляции (6х9, 7х12, 8х9, 8х16 или 10х20)<br />
|}<br />
Также есть вспомогательная утилита '''TextEditor syntax file viewer''' для работы с файлами подсветки синтаксиса<br><br />
[[File:Te_syntax.png]]<br><br />
Алгоритм работы с этой программой такой:<br />
* загрузить файл синтаксиса .syn (не упакованный kpack-ом)<br />
* ввести путь и новое имя для сохранения в формате .asm<br />
* изменить в файле .asm интересующие пользователя параметры<br />
* компилировать в fasm<br />
* исправить расширение получившегося файла .bin на .syn<br />
<br />
==Разработчики==<br />
IgorA (''Игорь А.'') - автор программы. В программе также используются библиотеки написанные другими программистами.<br />
<br />
{{Офис}}<br />
<br />
[[Category:Офис]]<br />
[[Category:Программы на ассемблере]]</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Google_Summer_of_Code_2016&diff=5219Google Summer of Code 20162016-02-09T21:06:12Z<p>Punk Joker: /* Sortable list of ideas for easy navigation */</p>
<hr />
<div><!-- [[Image:GSoC2015.png|right]] --><br />
== Introduction ==<br />
KolibriOS is going to apply as a mentoring organization for [https://developers.google.com/open-source/gsoc/ Google Summer of Code 2016]. This page contains our ideas list and some additional information for students and mentors.<br />
<br />
We have previously participated as a Mentoring Organization in [http://www.google-melange.com/gsoc/homepage/google/gsoc2014 Google Summer of Code 2014]. The [[Google Summer of Code 2014|ideas page for 2014]] is available for your reference. Our organization page for GSoC 2014 and successfully completed projects for that year can be accessed [https://www.google-melange.com/gsoc/org2/google/gsoc2014/kolibrios via this link]. To our great delight, both successful students of GSoC2014 stayed with the project and continue contributing to KolibriOS voluntarily in their spare time.<br />
<br />
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.<br />
<br />
== Student Requirements ==<br />
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] (25 March 19:00 UTC).'''<br><br><br />
In addition, students need to answer the following questions when applying:<br />
# Full Name (First + Last Name).<br />
# E-mail address.<br />
# Phone (home or mobile).<br />
# Another phone '''for emergency cases''' (if we cannot contact you) - parents, boy/girlfriend, husband/wife etc.<br />
# Nickname you plan to use on our forums, SVN repository or IRC chat.<br />
# Age.<br />
# Country + city of residence.<br />
# Human languages you speak (state all languages and knowledge level - basic/intermediate/expert/mother tongue).<br />
# Name of college or university you are accepted into or enrolled in + link to their website.<br />
# Name of program (or faculty, or department) in that college/university you are accepted into or enrolled in.<br />
# Your current timezone in UTC/GMT terms (for example, Paris is UTC/GMT +1 hours right now).<br />
# Have you been involved with any open-source project in the past? If yes, which one, and what have you done for that project?<br />
# 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.<br />
# The task you are willing to work on from our list of Summer of Code 2016 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.<br />
# 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.''<br />
<br />
== Organization ==<br />
<br />
You can find the organizers on the IRC channel (#kolibrios @ irc.freenode.net) or at our forum: http://board.kolibrios.org/<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
| vacant<br />
| vacant<br />
|Organization Administrator<br />
|-<br />
|Jeffrey Amelynck<br />
|[[User:Hidnplayr|hidnplayr]]<br />
|Mentor, Backup Administrator<br />
|-<br />
|Kiril Lipatov<br />
|[[User:Punk Joker|Leency]]<br />
|Mentor<br />
|-<br />
|Ashish Gupta<br />
|[[User:ashmew2|ashmew2]]<br />
|Mentor<br />
|-<br />
|}<br />
We have discussed "Google Summer of Code 2016" application with all active members of the KolibriOS Project Team, and selected only those 3 (three) people who have both the knowledge, the dedication, and the 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.<br />
<br />
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 GSoC2014.<br />
<br />
== Ideas for Google Summer of Code 2016 ==<br />
The below list contains ideas suggested by KolibriOS team members. '''It is neither complete nor final.'''<br><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.<br />
<br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Required Skill Level<br />
! Importance for KolibriOS<br />
! Programming Language<br />
! Mentor<br />
|-<br />
| [[#XDXF_dictionary|XDXF dictionary]]<br />
| Application<br />
| Basic<br />
| Low<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#CPUID_tool|CPUID tool]]<br />
| Application<br />
| Beginner<br />
| Low<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#FTP_client|FTP client]]<br />
| Application<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Torrent_client|Torrent client]]<br />
| Application<br />
| Advanced<br />
| High<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#XMPP.2FJabber_client|XMPP/Jabber client]]<br />
| Application<br />
| Intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Music_player|Music player]]<br />
| Application<br />
| Advanced<br />
| Medium<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#Web_browser:_WebView|Web browser: WebView]]<br />
| Application<br />
| intermediate<br />
| Standard<br />
| [http://www.dev0.de/cmm/indexe.htm Sphinx C--]<br />
| Leency<br />
|-<br />
| [[#Ethernet_driver.28s.29|Ethernet driver(s)]]<br />
| Driver<br />
| Advanced<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#SD_Host_Controller|SD Host Controller driver]]<br />
| Driver<br />
| Advanced<br />
| Low<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#USB_devices|USB device drivers]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Filesystem_support|Filesystem support]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide task<br />
| intermediate<br />
| Standard<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#Unit_testing_framework|Unit testing framework]]<br />
| System wide task<br />
| intermediate<br />
| High<br />
| Any<br />
| ?<br />
|-<br />
| [[#QR-code_in_boot_log|QR-code in boot log]]<br />
| Kernel/Library<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#Wi-Fi|Wi-Fi]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#C layer for KolibriOS|C layer for KolibriOS]]<br />
| Library<br />
| intermediate<br />
| Medium<br />
| C<br />
| Ashmew2<br />
|-<br />
| [[Virtualbox support for KolibriOS|Virtualbox support for KolibriOS]]<br />
| Library<br />
| Advanced / unknown<br />
| Medium<br />
| C<br />
| Ashmew2<br />
|}<br />
Explanation of required skill level:<br />
* Beginner: No knowledge at all of the topic,<br />
* Basic: A very basic knowledge of the topic but no professional usage,<br />
* Intermediate: A basic knowledge of the topic but no regular professional usage,<br />
* Advanced: A good knowledge of the topic and a regular professional usage,<br />
* Expert: a perfect knowledge of the topic and a daily professional usage.<br />
<br />
Explanation of importance for the project:<br />
* Low: For sure it doesn't hurt to implement, but if nobody does it, no one will even notice.<br />
* Medium: Nice-to-have feature. Will improve everyday life of users and developers.<br />
* High: This feature is needed for the project to start being adopted by masses.<br />
* Critical: This functionality is vital for the project to become useful.<br />
<br />
=== Applications ===<br />
These are userspace tasks. They often require only basic knowledge of algorithms and data structures.<br><br />
No specific experience is required but welcome.<br />
<br />
==== XDXF dictionary ====<br />
'''Summary:''' Write dictionary application with support of XDXF (XML Dictionary eXchange Format)<br />
<br />
'''Details:'''<br />
* Primary goal: Write library and corresponding dictionary application<br />
* Additional goal: Support of other dictioinary formats<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate<br />
* Importance: Standard<br />
* Mentor: Pathoswithin<br />
* Links: [http://tibleiz.net/asm-xml/ fasm xml library], [https://en.wikipedia.org/wiki/XDXF XDXF format]<br />
<br />
<br />
==== CPUID tool ====<br />
'''Summary:''' Update existing CPUID application to be aware of new CPUs and their features<br />
<br />
'''Details:'''<br />
* Primary goal: Write code to detect and report new CPUs and features + size detection for caches<br />
* Additional goal: Refactor code as to use system libraries (libimg, box_lib, etc.)<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: Standard<br />
* Mentor: Pathoswithin / Wildwest<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fprograms%2Fsystem%2Fcpuid%2Ftrunk%2F&#aec5d374b78ae8f08110b3327c3ba5f56 CPUID program], [http://bochs.sourceforge.net/techspec/24161821.pdf Intel cpuid], [http://support.amd.com/TechDocs/25481.pdf AMD cpuid]<br />
<br />
<br />
==== FTP client ====<br />
'''Summary:''' Create a GUI based FTP client or add FTP support to one of the existing file managers<br />
<br />
'''Details:'''<br />
* Primary goal: FTP access (download/upload/etc.)<br />
* Additional goal: Create an FTP client library<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [https://www.ietf.org/rfc/rfc959.txt File Transfer Protocol (RFC959)], [http://board.kolibrios.org/viewtopic.php?f=40&t=2360 CLI FTP client (demo)]<br />
<br />
==== Torrent client ====<br />
'''Summary:''' Write a (bit-)torrent client for KolibriOS, or port an existing one<br />
<br />
'''Details:'''<br />
* Primary goal: Implement a torrent client similar to [http://www.utorrent.com/ µTorrent Free edition]<br />
* Alternative goal (less preferred, but still possible): Port an existing torrent client to KolibriOS<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://www.bittorrent.org Information about the protocol]<br />
<br />
==== XMPP/Jabber client ====<br />
'''Summary:''' Write a XMPP/Jabber library and client for KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Write basic xmpp library/client<br />
* Additional goal: Implement some xmpp extentions<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: Pathoswithin / hidnplayr<br />
* 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]<br />
<br />
==== Music player ====<br />
'''Summary:''' Improve the current music player in Kolibri<br />
<br />
'''Details:'''<br />
* Primary goal: Rewrite the current music player (ac97snd), in FASM, and improve its functionality<br />
: * Support for file formats wav, mp3 and xm (using available external libraries)<br />
: * Support for playlists (m3u)<br />
: * A time display<br />
* Additional goal:<br />
: * Use of system wide hotkeys to control player<br />
: * Support for metadata (ID3, ...)<br />
: * More codecs (flac, vorbis, ...)<br />
: * Audio indication (oscillograph, bar graph, ...)<br />
: * Show cover art from files or album folder<br />
: * Fade in/out and/or crossover<br />
: * Streaming radio (at least mp3 over http stream)<br />
: * Skins<br />
: * Media library<br />
* Language: Assembler/FASM (C/C++ to port codec)<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: hidnplayr / Pathoswithin<br />
* Links: [http://board.kolibrios.org/viewtopic.php?f=38&t=1596 AC97SND (MP3 player in C)], [http://board.kolibrios.org/viewtopic.php?f=28&t=317 Sound drivers and architecture], [http://board.kolibrios.org/viewtopic.php?f=38&t=3003 Flac decoder],[http://board.kolibrios.org/viewtopic.php?f=38&t=2220 Minimp3 (minimalistic mp3 decoding library)], [http://board.kolibrios.org/viewtopic.php?f=38&t=161 SuperMP3 (IDv3 tag demo)]<br />
<br />
==== Web browser: WebView ====<br />
'''Summary:''' Improve existing text-only web browser WebView - add more functionality and compatibility<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: [http://www.dev0.de/cmm/indexe.htm Sphinx C--]. May require writing a few lines in FASM though<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: Leency<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
* [http://board.kolibrios.org/viewtopic.php?f=40&t=1075 Work done so far on WebView (mostly in Russian)]. If you don't know Russian, you can read [http://translate.google.com/translate?hl=en&sl=ru&tl=en&u=http%3A%2F%2Fboard.kolibrios.org%2Fviewtopic.php%3Ff%3D40%26t%3D1075 English translation using Google-Translate]<br />
<br />
=== Drivers ===<br />
Writing drivers is about new hardware and filesystems.<br><br />
Knowledge of specifications and previous experience are ''not'' required but surely desirable.<br />
<br />
==== Ethernet driver(s) ====<br />
'''Summary:''' Write an Ethernet driver<br />
<br />
'''Details:'''<br />
* Primary goal: Support for popular Broadcom, Atheros or Marvell Yukon ethernet cards<br />
* Additional goal: A second driver for another card family, PPPoE support in kernel, ...<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: Medium<br />
* Mentor: hidnplayr<br />
* Links: [https://www.broadcom.com/collateral/pg/57XX-PG105-R.pdf BCM57xx programmers guide], [[Writing network drivers for KolibriOS]], [https://github.com/UDOOboard/U-Boot_Unico/blob/master/drivers/net/bcm570x.c BCM570x driver for u-boot (in C)], [http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fdrivers%2Funfinished%2Fbcm57xx.asm Stub for BCM57xx driver]<br />
<br />
==== SD Host Controller ====<br />
'''Summary:''' Add support for SD Host Controller<br />
<br />
'''Details:'''<br />
* Primary goal: Write driver for particular controller<br />
* Additional goal: Test and update driver to work for all controllers<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: Pathoswithin<br />
* Links: [https://www.sdcard.org/downloads/pls/simplified_specs/index.html SD specifications]<br />
<br />
<br />
==== USB devices ====<br />
'''Summary:''' Add USB drivers for the new USB stack (webcams, gamepads, joysticks, tablets, etc.)<br />
<br />
'''Details:'''<br />
* Primary goal: Write USB driver for currently unsupported device (you should have one)<br />
* Additional goal: Adopt code to work with all devices of the same class<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://en.wikipedia.org/wiki/USB#Device_classes USB device classes]<br />
<br />
==== Filesystem support ====<br />
'''Summary:''' Improve filesystem support in KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Update/fix read-write support for EXT2/3/4 filesystems (partially done)<br />
* Alternative goal: Add write support for the NTFS filesystem (read-only support already exists)<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: Pathoswithin<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Ffs%2F&#a0aa5cede7308db82d4bae78266ed8462 Filesystems in KolibriOS]<br />
<br />
==== Wi-Fi ====<br />
'''Summary:''' Write or port a Wi-Fi driver for KolibriOS. <br />
<br />
'''Details:'''<br />
* Description: <br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: Pathoswithin<br />
* Links: [[https://en.wikipedia.org/wiki/Comparison_of_open-source_wireless_drivers Comparison of open source wifi drivers]]<br />
<br />
=== System wide tasks ===<br />
These tasks comprise both user space and kernel space work. Some developers consider them as of most importance for KolibriOS.<br><br />
Architecture and algorithm design skills are highly desirable.<br />
<br />
<br />
==== Widget toolkit ====<br />
'''Summary:''' Extend Box_lib (a set of separate widgets) to create a full-featured widget toolkit<br />
<br />
'''Details:'''<br />
* Primary goal: Design architecture and implement focus handling, callbacks and other core ideas<br />
* Additional goal: Integrate box_lib widgets to this framework<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Importance: Vital<br />
* Mentor: Pathoswithin<br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
<br />
==== Unit testing framework ====<br />
'''Summary:''' Design and implement an unit testing framework, write tests for kernel functions<br />
<br />
'''Details:'''<br />
* Primary goal: Design and implement a framework, write tests for kernel functions<br />
* Additional goal: Write tests for system libraries (libio, libini)<br />
* Language: Assembler/FASM (preferrable), any other working in KolibriOS<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: Pathoswithin<br />
* Links: [http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks list of unit testing frameworks]<br />
<br />
==== QR-code in boot log ====<br />
'''Summary:''' Add a [http://en.wikipedia.org/wiki/QR_code QR-code] (containing the debug log) at the end of boot process<br />
<br />
[[File:QR-code.png]]<br />
<br />
'''Details:'''<br />
* Description: Sometimes KolibriOS cannot boot on a certain hardware configuration (gets stuck during or after boot process). In such cases, we request the user having this problem to enable debug log at boot time, take a photo of the screen and show it to us (in the forum). However, sometimes taking a good quality photo can be quite challenging (bad camera, shaking hands etc.) and the attached photo is so blurry to the point the debug log cannot be even read. The idea suggested hereby is to simultaneously encode the debug log which is outputted on the screen, to the form of QR-code, and [http://wiki.kolibrios.org/wiki/File:QR-code.png show the resulting QR-code on empty space on the screen]. In such way, any user possessing a smartphone with a camera and QR-code scanner, could scan the QR-code and submit the encoded text directly on our forums (without having a need to take a photo), and our developers, in turn, would get the debug log text immediately and won't have to unscramble a blurry photo.<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Mentor: Pathoswithin<br />
<br />
==== C layer for KolibriOS ====<br />
'''Summary:''' Building a C layer for KolibriOS, so that we can get more developers and port more code to KolibriOS more easily.<br />
<br />
'''Details:'''<br />
* Description:<br />
As a lot of software out there is available in C and useful for KolibriOS, building an ecosystem around C and FASM is required. Some work towards a cross compiler has already been done. Since KolibriOS is neither Linux, nor Windows..it is challenging to port software. In order to automate this, we need to port existing libraries and figure out a way to automate/streamline this process. The best part about this is that you get to mix C and FASM in unprecedented ways and learn along the way.<br />
<br />
The end result should be as easy as writing a Makefile and calling the cross compiler which creates a binary for Kolibri OS.<br />
<br />
The eventual aim is to have libraries in C available for KolibriOS which let you use the same ASM procedures in C code.<br />
<br />
Example:<br />
#include<kolibri.h><br />
int main()<br />
{ <br />
kolibri_window("Hi!");<br />
return 0;<br />
}<br />
<br />
Some work on this has already been done. Get in touch to know more!<br />
<br />
* Language(s): <br />
C - Required <br />
FASM <Not a strict requirement, but is desirable><br />
GNU Autotools (Easy to pick up, safe to assume optional)<br />
* Bonus points for the ability in designing a clean approach to achieve this.<br />
<br />
* Skill level: intermediate / unknown<br />
* Mentor: ashmew2<br />
<br />
==== Virtualbox support for KolibriOS ====<br />
'''Summary:''' Building Virtualbox support for KolibriOS so that it is easier to use in a virtual machine.<br />
<br />
'''Details:'''<br />
* Description:<br />
Create a set of tools which let KolibriOS seamlessly interface with a host running Kolibri via VirtualBox. Develop parts required, especially shared folders, which resemble Guest Additions.<br />
(For a Linux based Host running KolibriOS as Guest.)<br />
<br />
* Language(s): <br />
<br />
C - Virtualbox Source code.<br />
FASM - To understand the source code of KolibriOS better and prepare interfaces with Guest additions.<br />
<br />
<br />
* Ability to understand a larger source code base and contribute to it are very desirable!<br />
<br />
* Skill level: Advanced / unknown<br />
* Mentor: ashmew2<br />
<br />
<br />
<!--<br />
=== Open Ideas (without appointed mentor) ===<br />
<br />
==== One core for graphics ====<br />
'''Summary:''' On multi-core systems, dedicate one core for graphics rendering ONLY<br />
<br />
'''Details:'''<br />
* Goal: Move graphics subsystem to a single, dedicated core if multicore machine detected<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Serge(?)<br />
<br />
==== Partition editor ====<br />
'''Summary:''' Add a partition/HDD editor utility<br />
<br />
'''Details:'''<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Mario(?)<br />
<br />
==== Rewrite "Table" in Assembler ====<br />
'''Summary:''' Rewrite a great Kolibri spreadsheet application [[Table]] from C++ to FASM<br />
<br />
'''Details:'''<br />
* Goal: Port Table (C++) to Assembler/FASM<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Mentor: ???<br />
<br />
==== Kernel vulnerabilities ====<br />
'''Summary:''' Find and fix as many kernel vulnerabilities as you can<br />
<br />
'''Details:'''<br />
* Goal: Check the list of kernel API functions versus their actual implementation in KolibriOS kernel (for example, check that the function doesn't destroy register values if it declares in description that it doesn't). If you find a vulnerability, try to fix it so that it works according to API. If you cannot fix it yourself, document the vulnerability and describe the problem.<br />
* Language: Assembler/FASM<br />
* Skill level: Intermediate/Expert<br />
* Mentor: Serge '''(Is not always available to answer questions, so select this task only if you can work fairly independently.)'''<br />
<br />
==== Web browser in FASM ====<br />
'''Summary:''' Write a proper HTML web browser for KolibriOS<br />
<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Mentor: SoUrcerer<br />
<br />
<br />
==== Printing/scanning API ====<br />
'''Summary:''' Add a printing and scanning API and drivers.<br />
<br />
'''Details:'''<br />
* Primary goal: Design and code infrastructure for printing and scanning devices.<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: SoUrcerer<br />
--><br />
<br />
[[Category:Misc]]<br />
<br />
<br />
== Rough Guide for Prospective Students ==<br />
<br />
* As the kernel is written in FASM, ability to write and understand i386-assembly code is very useful.<br />
* 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.<br />
* Familiarity with the GNu landscape like Autotools, GCC etc are also a plus to have (especially for porting software)<br />
* 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. (The mentors can help you with that :) )<br />
* Hanging out on Freenode's #kolibriOS , and our Chat (accessible through kolibrios.org -> Forum -> Chat) are where developers mostly hang out.<br />
* Languages used for communication are Russian and English (although most developers are bilingual, and you can always ask someone for help)<br />
* Get in touch with other developers via IRC / Chat / Forums and enjoy your stay!</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Google_Summer_of_Code_2016&diff=5218Google Summer of Code 20162016-02-09T21:03:45Z<p>Punk Joker: /* XMPP/Jabber client */</p>
<hr />
<div><!-- [[Image:GSoC2015.png|right]] --><br />
== Introduction ==<br />
KolibriOS is going to apply as a mentoring organization for [https://developers.google.com/open-source/gsoc/ Google Summer of Code 2016]. This page contains our ideas list and some additional information for students and mentors.<br />
<br />
We have previously participated as a Mentoring Organization in [http://www.google-melange.com/gsoc/homepage/google/gsoc2014 Google Summer of Code 2014]. The [[Google Summer of Code 2014|ideas page for 2014]] is available for your reference. Our organization page for GSoC 2014 and successfully completed projects for that year can be accessed [https://www.google-melange.com/gsoc/org2/google/gsoc2014/kolibrios via this link]. To our great delight, both successful students of GSoC2014 stayed with the project and continue contributing to KolibriOS voluntarily in their spare time.<br />
<br />
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.<br />
<br />
== Student Requirements ==<br />
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] (25 March 19:00 UTC).'''<br><br><br />
In addition, students need to answer the following questions when applying:<br />
# Full Name (First + Last Name).<br />
# E-mail address.<br />
# Phone (home or mobile).<br />
# Another phone '''for emergency cases''' (if we cannot contact you) - parents, boy/girlfriend, husband/wife etc.<br />
# Nickname you plan to use on our forums, SVN repository or IRC chat.<br />
# Age.<br />
# Country + city of residence.<br />
# Human languages you speak (state all languages and knowledge level - basic/intermediate/expert/mother tongue).<br />
# Name of college or university you are accepted into or enrolled in + link to their website.<br />
# Name of program (or faculty, or department) in that college/university you are accepted into or enrolled in.<br />
# Your current timezone in UTC/GMT terms (for example, Paris is UTC/GMT +1 hours right now).<br />
# Have you been involved with any open-source project in the past? If yes, which one, and what have you done for that project?<br />
# 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.<br />
# The task you are willing to work on from our list of Summer of Code 2016 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.<br />
# 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.''<br />
<br />
== Organization ==<br />
<br />
You can find the organizers on the IRC channel (#kolibrios @ irc.freenode.net) or at our forum: http://board.kolibrios.org/<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
| vacant<br />
| vacant<br />
|Organization Administrator<br />
|-<br />
|Jeffrey Amelynck<br />
|[[User:Hidnplayr|hidnplayr]]<br />
|Mentor, Backup Administrator<br />
|-<br />
|Kiril Lipatov<br />
|[[User:Punk Joker|Leency]]<br />
|Mentor<br />
|-<br />
|Ashish Gupta<br />
|[[User:ashmew2|ashmew2]]<br />
|Mentor<br />
|-<br />
|}<br />
We have discussed "Google Summer of Code 2016" application with all active members of the KolibriOS Project Team, and selected only those 3 (three) people who have both the knowledge, the dedication, and the 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.<br />
<br />
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 GSoC2014.<br />
<br />
== Ideas for Google Summer of Code 2016 ==<br />
The below list contains ideas suggested by KolibriOS team members. '''It is neither complete nor final.'''<br><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.<br />
<br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Required Skill Level<br />
! Importance for KolibriOS<br />
! Programming Language<br />
! Mentor<br />
|-<br />
| [[#XDXF_dictionary|XDXF dictionary]]<br />
| Application<br />
| Basic<br />
| Low<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#CPUID_tool|CPUID tool]]<br />
| Application<br />
| Beginner<br />
| Low<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#FTP_client|FTP client]]<br />
| Application<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Torrent_client|Torrent client]]<br />
| Application<br />
| Advanced<br />
| High<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#XMPP.2FJabber_client|XMPP/Jabber client]]<br />
| Application<br />
| Intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Music_player|Music player]]<br />
| Application<br />
| Advanced<br />
| Medium<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#Web_browser:_WebView|Web browser: WebView]]<br />
| Application<br />
| intermediate<br />
| Standard<br />
| [http://www.dev0.de/cmm/indexe.htm Sphinx C--]<br />
| Leency<br />
|-<br />
| [[#Ethernet_driver.28s.29|Ethernet driver(s)]]<br />
| Driver<br />
| Advanced<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#SD_Host_Controller|SD Host Controller driver]]<br />
| Driver<br />
| Advanced<br />
| Low<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#USB_devices|USB device drivers]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Filesystem_support|Filesystem support]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide task<br />
| intermediate<br />
| Standard<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#Unit_testing_framework|Unit testing framework]]<br />
| System wide task<br />
| intermediate<br />
| High<br />
| Any<br />
| ?<br />
|-<br />
| [[#QR-code_in_boot_log|QR-code in boot log]]<br />
| Kernel/Library<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#Wi-Fi|Wi-Fi]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#C layer for KolibriOS|C layer for KolibriOS]]<br />
| Library<br />
| intermediate<br />
| Medium<br />
| C<br />
| Ashmew2<br />
|}<br />
Explanation of required skill level:<br />
* Beginner: No knowledge at all of the topic,<br />
* Basic: A very basic knowledge of the topic but no professional usage,<br />
* Intermediate: A basic knowledge of the topic but no regular professional usage,<br />
* Advanced: A good knowledge of the topic and a regular professional usage,<br />
* Expert: a perfect knowledge of the topic and a daily professional usage.<br />
<br />
Explanation of importance for the project:<br />
* Low: For sure it doesn't hurt to implement, but if nobody does it, no one will even notice.<br />
* Medium: Nice-to-have feature. Will improve everyday life of users and developers.<br />
* High: This feature is needed for the project to start being adopted by masses.<br />
* Critical: This functionality is vital for the project to become useful.<br />
<br />
=== Applications ===<br />
These are userspace tasks. They often require only basic knowledge of algorithms and data structures.<br><br />
No specific experience is required but welcome.<br />
<br />
==== XDXF dictionary ====<br />
'''Summary:''' Write dictionary application with support of XDXF (XML Dictionary eXchange Format)<br />
<br />
'''Details:'''<br />
* Primary goal: Write library and corresponding dictionary application<br />
* Additional goal: Support of other dictioinary formats<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate<br />
* Importance: Standard<br />
* Mentor: Pathoswithin<br />
* Links: [http://tibleiz.net/asm-xml/ fasm xml library], [https://en.wikipedia.org/wiki/XDXF XDXF format]<br />
<br />
<br />
==== CPUID tool ====<br />
'''Summary:''' Update existing CPUID application to be aware of new CPUs and their features<br />
<br />
'''Details:'''<br />
* Primary goal: Write code to detect and report new CPUs and features + size detection for caches<br />
* Additional goal: Refactor code as to use system libraries (libimg, box_lib, etc.)<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: Standard<br />
* Mentor: Pathoswithin / Wildwest<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fprograms%2Fsystem%2Fcpuid%2Ftrunk%2F&#aec5d374b78ae8f08110b3327c3ba5f56 CPUID program], [http://bochs.sourceforge.net/techspec/24161821.pdf Intel cpuid], [http://support.amd.com/TechDocs/25481.pdf AMD cpuid]<br />
<br />
<br />
==== FTP client ====<br />
'''Summary:''' Create a GUI based FTP client or add FTP support to one of the existing file managers<br />
<br />
'''Details:'''<br />
* Primary goal: FTP access (download/upload/etc.)<br />
* Additional goal: Create an FTP client library<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [https://www.ietf.org/rfc/rfc959.txt File Transfer Protocol (RFC959)], [http://board.kolibrios.org/viewtopic.php?f=40&t=2360 CLI FTP client (demo)]<br />
<br />
==== Torrent client ====<br />
'''Summary:''' Write a (bit-)torrent client for KolibriOS, or port an existing one<br />
<br />
'''Details:'''<br />
* Primary goal: Implement a torrent client similar to [http://www.utorrent.com/ µTorrent Free edition]<br />
* Alternative goal (less preferred, but still possible): Port an existing torrent client to KolibriOS<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://www.bittorrent.org Information about the protocol]<br />
<br />
==== XMPP/Jabber client ====<br />
'''Summary:''' Write a XMPP/Jabber library and client for KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Write basic xmpp library/client<br />
* Additional goal: Implement some xmpp extentions<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: Pathoswithin / hidnplayr<br />
* 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]<br />
<br />
==== Music player ====<br />
'''Summary:''' Improve the current music player in Kolibri<br />
<br />
'''Details:'''<br />
* Primary goal: Rewrite the current music player (ac97snd), in FASM, and improve its functionality<br />
: * Support for file formats wav, mp3 and xm (using available external libraries)<br />
: * Support for playlists (m3u)<br />
: * A time display<br />
* Additional goal:<br />
: * Use of system wide hotkeys to control player<br />
: * Support for metadata (ID3, ...)<br />
: * More codecs (flac, vorbis, ...)<br />
: * Audio indication (oscillograph, bar graph, ...)<br />
: * Show cover art from files or album folder<br />
: * Fade in/out and/or crossover<br />
: * Streaming radio (at least mp3 over http stream)<br />
: * Skins<br />
: * Media library<br />
* Language: Assembler/FASM (C/C++ to port codec)<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: hidnplayr / Pathoswithin<br />
* Links: [http://board.kolibrios.org/viewtopic.php?f=38&t=1596 AC97SND (MP3 player in C)], [http://board.kolibrios.org/viewtopic.php?f=28&t=317 Sound drivers and architecture], [http://board.kolibrios.org/viewtopic.php?f=38&t=3003 Flac decoder],[http://board.kolibrios.org/viewtopic.php?f=38&t=2220 Minimp3 (minimalistic mp3 decoding library)], [http://board.kolibrios.org/viewtopic.php?f=38&t=161 SuperMP3 (IDv3 tag demo)]<br />
<br />
==== Web browser: WebView ====<br />
'''Summary:''' Improve existing text-only web browser WebView - add more functionality and compatibility<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: [http://www.dev0.de/cmm/indexe.htm Sphinx C--]. May require writing a few lines in FASM though<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: Leency<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
* [http://board.kolibrios.org/viewtopic.php?f=40&t=1075 Work done so far on WebView (mostly in Russian)]. If you don't know Russian, you can read [http://translate.google.com/translate?hl=en&sl=ru&tl=en&u=http%3A%2F%2Fboard.kolibrios.org%2Fviewtopic.php%3Ff%3D40%26t%3D1075 English translation using Google-Translate]<br />
<br />
=== Drivers ===<br />
Writing drivers is about new hardware and filesystems.<br><br />
Knowledge of specifications and previous experience are ''not'' required but surely desirable.<br />
<br />
==== Ethernet driver(s) ====<br />
'''Summary:''' Write an Ethernet driver<br />
<br />
'''Details:'''<br />
* Primary goal: Support for popular Broadcom, Atheros or Marvell Yukon ethernet cards<br />
* Additional goal: A second driver for another card family, PPPoE support in kernel, ...<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: Medium<br />
* Mentor: hidnplayr<br />
* Links: [https://www.broadcom.com/collateral/pg/57XX-PG105-R.pdf BCM57xx programmers guide], [[Writing network drivers for KolibriOS]], [https://github.com/UDOOboard/U-Boot_Unico/blob/master/drivers/net/bcm570x.c BCM570x driver for u-boot (in C)], [http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fdrivers%2Funfinished%2Fbcm57xx.asm Stub for BCM57xx driver]<br />
<br />
==== SD Host Controller ====<br />
'''Summary:''' Add support for SD Host Controller<br />
<br />
'''Details:'''<br />
* Primary goal: Write driver for particular controller<br />
* Additional goal: Test and update driver to work for all controllers<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: Pathoswithin<br />
* Links: [https://www.sdcard.org/downloads/pls/simplified_specs/index.html SD specifications]<br />
<br />
<br />
==== USB devices ====<br />
'''Summary:''' Add USB drivers for the new USB stack (webcams, gamepads, joysticks, tablets, etc.)<br />
<br />
'''Details:'''<br />
* Primary goal: Write USB driver for currently unsupported device (you should have one)<br />
* Additional goal: Adopt code to work with all devices of the same class<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://en.wikipedia.org/wiki/USB#Device_classes USB device classes]<br />
<br />
==== Filesystem support ====<br />
'''Summary:''' Improve filesystem support in KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Update/fix read-write support for EXT2/3/4 filesystems (partially done)<br />
* Alternative goal: Add write support for the NTFS filesystem (read-only support already exists)<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: Pathoswithin<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Ffs%2F&#a0aa5cede7308db82d4bae78266ed8462 Filesystems in KolibriOS]<br />
<br />
==== Wi-Fi ====<br />
'''Summary:''' Write or port a Wi-Fi driver for KolibriOS. <br />
<br />
'''Details:'''<br />
* Description: <br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: Pathoswithin<br />
* Links: [[https://en.wikipedia.org/wiki/Comparison_of_open-source_wireless_drivers Comparison of open source wifi drivers]]<br />
<br />
=== System wide tasks ===<br />
These tasks comprise both user space and kernel space work. Some developers consider them as of most importance for KolibriOS.<br><br />
Architecture and algorithm design skills are highly desirable.<br />
<br />
<br />
==== Widget toolkit ====<br />
'''Summary:''' Extend Box_lib (a set of separate widgets) to create a full-featured widget toolkit<br />
<br />
'''Details:'''<br />
* Primary goal: Design architecture and implement focus handling, callbacks and other core ideas<br />
* Additional goal: Integrate box_lib widgets to this framework<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Importance: Vital<br />
* Mentor: Pathoswithin<br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
<br />
==== Unit testing framework ====<br />
'''Summary:''' Design and implement an unit testing framework, write tests for kernel functions<br />
<br />
'''Details:'''<br />
* Primary goal: Design and implement a framework, write tests for kernel functions<br />
* Additional goal: Write tests for system libraries (libio, libini)<br />
* Language: Assembler/FASM (preferrable), any other working in KolibriOS<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: Pathoswithin<br />
* Links: [http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks list of unit testing frameworks]<br />
<br />
==== QR-code in boot log ====<br />
'''Summary:''' Add a [http://en.wikipedia.org/wiki/QR_code QR-code] (containing the debug log) at the end of boot process<br />
<br />
[[File:QR-code.png]]<br />
<br />
'''Details:'''<br />
* Description: Sometimes KolibriOS cannot boot on a certain hardware configuration (gets stuck during or after boot process). In such cases, we request the user having this problem to enable debug log at boot time, take a photo of the screen and show it to us (in the forum). However, sometimes taking a good quality photo can be quite challenging (bad camera, shaking hands etc.) and the attached photo is so blurry to the point the debug log cannot be even read. The idea suggested hereby is to simultaneously encode the debug log which is outputted on the screen, to the form of QR-code, and [http://wiki.kolibrios.org/wiki/File:QR-code.png show the resulting QR-code on empty space on the screen]. In such way, any user possessing a smartphone with a camera and QR-code scanner, could scan the QR-code and submit the encoded text directly on our forums (without having a need to take a photo), and our developers, in turn, would get the debug log text immediately and won't have to unscramble a blurry photo.<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Mentor: Pathoswithin<br />
<br />
==== C layer for KolibriOS ====<br />
'''Summary:''' Building a C layer for KolibriOS, so that we can get more developers and port more code to KolibriOS more easily.<br />
<br />
'''Details:'''<br />
* Description:<br />
As a lot of software out there is available in C and useful for KolibriOS, building an ecosystem around C and FASM is required. Some work towards a cross compiler has already been done. Since KolibriOS is neither Linux, nor Windows..it is challenging to port software. In order to automate this, we need to port existing libraries and figure out a way to automate/streamline this process. The best part about this is that you get to mix C and FASM in unprecedented ways and learn along the way.<br />
<br />
The end result should be as easy as writing a Makefile and calling the cross compiler which creates a binary for Kolibri OS.<br />
<br />
The eventual aim is to have libraries in C available for KolibriOS which let you use the same ASM procedures in C code.<br />
<br />
Example:<br />
#include<kolibri.h><br />
int main()<br />
{ <br />
kolibri_window("Hi!");<br />
return 0;<br />
}<br />
<br />
Some work on this has already been done. Get in touch to know more!<br />
<br />
* Language(s): <br />
C - Required <br />
FASM <Not a strict requirement, but is desirable><br />
GNU Autotools (Easy to pick up, safe to assume optional)<br />
* Bonus points for the ability in designing a clean approach to achieve this.<br />
<br />
* Skill level: intermediate / unknown<br />
* Mentor: ashmew2<br />
<br />
==== Virtualbox support for KolibriOS ====<br />
'''Summary:''' Building Virtualbox support for KolibriOS so that it is easier to use in a virtual machine.<br />
<br />
'''Details:'''<br />
* Description:<br />
Create a set of tools which let KolibriOS seamlessly interface with a host running Kolibri via VirtualBox. Develop parts required, especially shared folders, which resemble Guest Additions.<br />
(For a Linux based Host running KolibriOS as Guest.)<br />
<br />
* Language(s): <br />
<br />
C - Virtualbox Source code.<br />
FASM - To understand the source code of KolibriOS better and prepare interfaces with Guest additions.<br />
<br />
<br />
* Ability to understand a larger source code base and contribute to it are very desirable!<br />
<br />
* Skill level: Advanced / unknown<br />
* Mentor: ashmew2<br />
<br />
<br />
<!--<br />
=== Open Ideas (without appointed mentor) ===<br />
<br />
==== One core for graphics ====<br />
'''Summary:''' On multi-core systems, dedicate one core for graphics rendering ONLY<br />
<br />
'''Details:'''<br />
* Goal: Move graphics subsystem to a single, dedicated core if multicore machine detected<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Serge(?)<br />
<br />
==== Partition editor ====<br />
'''Summary:''' Add a partition/HDD editor utility<br />
<br />
'''Details:'''<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Mario(?)<br />
<br />
==== Rewrite "Table" in Assembler ====<br />
'''Summary:''' Rewrite a great Kolibri spreadsheet application [[Table]] from C++ to FASM<br />
<br />
'''Details:'''<br />
* Goal: Port Table (C++) to Assembler/FASM<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Mentor: ???<br />
<br />
==== Kernel vulnerabilities ====<br />
'''Summary:''' Find and fix as many kernel vulnerabilities as you can<br />
<br />
'''Details:'''<br />
* Goal: Check the list of kernel API functions versus their actual implementation in KolibriOS kernel (for example, check that the function doesn't destroy register values if it declares in description that it doesn't). If you find a vulnerability, try to fix it so that it works according to API. If you cannot fix it yourself, document the vulnerability and describe the problem.<br />
* Language: Assembler/FASM<br />
* Skill level: Intermediate/Expert<br />
* Mentor: Serge '''(Is not always available to answer questions, so select this task only if you can work fairly independently.)'''<br />
<br />
==== Web browser in FASM ====<br />
'''Summary:''' Write a proper HTML web browser for KolibriOS<br />
<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Mentor: SoUrcerer<br />
<br />
<br />
==== Printing/scanning API ====<br />
'''Summary:''' Add a printing and scanning API and drivers.<br />
<br />
'''Details:'''<br />
* Primary goal: Design and code infrastructure for printing and scanning devices.<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: SoUrcerer<br />
--><br />
<br />
[[Category:Misc]]<br />
<br />
<br />
== Rough Guide for Prospective Students ==<br />
<br />
* As the kernel is written in FASM, ability to write and understand i386-assembly code is very useful.<br />
* 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.<br />
* Familiarity with the GNu landscape like Autotools, GCC etc are also a plus to have (especially for porting software)<br />
* 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. (The mentors can help you with that :) )<br />
* Hanging out on Freenode's #kolibriOS , and our Chat (accessible through kolibrios.org -> Forum -> Chat) are where developers mostly hang out.<br />
* Languages used for communication are Russian and English (although most developers are bilingual, and you can always ask someone for help)<br />
* Get in touch with other developers via IRC / Chat / Forums and enjoy your stay!</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Google_Summer_of_Code_2016&diff=5217Google Summer of Code 20162016-02-09T21:03:24Z<p>Punk Joker: </p>
<hr />
<div><!-- [[Image:GSoC2015.png|right]] --><br />
== Introduction ==<br />
KolibriOS is going to apply as a mentoring organization for [https://developers.google.com/open-source/gsoc/ Google Summer of Code 2016]. This page contains our ideas list and some additional information for students and mentors.<br />
<br />
We have previously participated as a Mentoring Organization in [http://www.google-melange.com/gsoc/homepage/google/gsoc2014 Google Summer of Code 2014]. The [[Google Summer of Code 2014|ideas page for 2014]] is available for your reference. Our organization page for GSoC 2014 and successfully completed projects for that year can be accessed [https://www.google-melange.com/gsoc/org2/google/gsoc2014/kolibrios via this link]. To our great delight, both successful students of GSoC2014 stayed with the project and continue contributing to KolibriOS voluntarily in their spare time.<br />
<br />
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.<br />
<br />
== Student Requirements ==<br />
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] (25 March 19:00 UTC).'''<br><br><br />
In addition, students need to answer the following questions when applying:<br />
# Full Name (First + Last Name).<br />
# E-mail address.<br />
# Phone (home or mobile).<br />
# Another phone '''for emergency cases''' (if we cannot contact you) - parents, boy/girlfriend, husband/wife etc.<br />
# Nickname you plan to use on our forums, SVN repository or IRC chat.<br />
# Age.<br />
# Country + city of residence.<br />
# Human languages you speak (state all languages and knowledge level - basic/intermediate/expert/mother tongue).<br />
# Name of college or university you are accepted into or enrolled in + link to their website.<br />
# Name of program (or faculty, or department) in that college/university you are accepted into or enrolled in.<br />
# Your current timezone in UTC/GMT terms (for example, Paris is UTC/GMT +1 hours right now).<br />
# Have you been involved with any open-source project in the past? If yes, which one, and what have you done for that project?<br />
# 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.<br />
# The task you are willing to work on from our list of Summer of Code 2016 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.<br />
# 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.''<br />
<br />
== Organization ==<br />
<br />
You can find the organizers on the IRC channel (#kolibrios @ irc.freenode.net) or at our forum: http://board.kolibrios.org/<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
| vacant<br />
| vacant<br />
|Organization Administrator<br />
|-<br />
|Jeffrey Amelynck<br />
|[[User:Hidnplayr|hidnplayr]]<br />
|Mentor, Backup Administrator<br />
|-<br />
|Kiril Lipatov<br />
|[[User:Punk Joker|Leency]]<br />
|Mentor<br />
|-<br />
|Ashish Gupta<br />
|[[User:ashmew2|ashmew2]]<br />
|Mentor<br />
|-<br />
|}<br />
We have discussed "Google Summer of Code 2016" application with all active members of the KolibriOS Project Team, and selected only those 3 (three) people who have both the knowledge, the dedication, and the 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.<br />
<br />
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 GSoC2014.<br />
<br />
== Ideas for Google Summer of Code 2016 ==<br />
The below list contains ideas suggested by KolibriOS team members. '''It is neither complete nor final.'''<br><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.<br />
<br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Required Skill Level<br />
! Importance for KolibriOS<br />
! Programming Language<br />
! Mentor<br />
|-<br />
| [[#XDXF_dictionary|XDXF dictionary]]<br />
| Application<br />
| Basic<br />
| Low<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#CPUID_tool|CPUID tool]]<br />
| Application<br />
| Beginner<br />
| Low<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#FTP_client|FTP client]]<br />
| Application<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Torrent_client|Torrent client]]<br />
| Application<br />
| Advanced<br />
| High<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#XMPP.2FJabber_client|XMPP/Jabber client]]<br />
| Application<br />
| Intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Music_player|Music player]]<br />
| Application<br />
| Advanced<br />
| Medium<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#Web_browser:_WebView|Web browser: WebView]]<br />
| Application<br />
| intermediate<br />
| Standard<br />
| [http://www.dev0.de/cmm/indexe.htm Sphinx C--]<br />
| Leency<br />
|-<br />
| [[#Ethernet_driver.28s.29|Ethernet driver(s)]]<br />
| Driver<br />
| Advanced<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#SD_Host_Controller|SD Host Controller driver]]<br />
| Driver<br />
| Advanced<br />
| Low<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#USB_devices|USB device drivers]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Filesystem_support|Filesystem support]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide task<br />
| intermediate<br />
| Standard<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#Unit_testing_framework|Unit testing framework]]<br />
| System wide task<br />
| intermediate<br />
| High<br />
| Any<br />
| ?<br />
|-<br />
| [[#QR-code_in_boot_log|QR-code in boot log]]<br />
| Kernel/Library<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#Wi-Fi|Wi-Fi]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#C layer for KolibriOS|C layer for KolibriOS]]<br />
| Library<br />
| intermediate<br />
| Medium<br />
| C<br />
| Ashmew2<br />
|}<br />
Explanation of required skill level:<br />
* Beginner: No knowledge at all of the topic,<br />
* Basic: A very basic knowledge of the topic but no professional usage,<br />
* Intermediate: A basic knowledge of the topic but no regular professional usage,<br />
* Advanced: A good knowledge of the topic and a regular professional usage,<br />
* Expert: a perfect knowledge of the topic and a daily professional usage.<br />
<br />
Explanation of importance for the project:<br />
* Low: For sure it doesn't hurt to implement, but if nobody does it, no one will even notice.<br />
* Medium: Nice-to-have feature. Will improve everyday life of users and developers.<br />
* High: This feature is needed for the project to start being adopted by masses.<br />
* Critical: This functionality is vital for the project to become useful.<br />
<br />
=== Applications ===<br />
These are userspace tasks. They often require only basic knowledge of algorithms and data structures.<br><br />
No specific experience is required but welcome.<br />
<br />
==== XDXF dictionary ====<br />
'''Summary:''' Write dictionary application with support of XDXF (XML Dictionary eXchange Format)<br />
<br />
'''Details:'''<br />
* Primary goal: Write library and corresponding dictionary application<br />
* Additional goal: Support of other dictioinary formats<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate<br />
* Importance: Standard<br />
* Mentor: Pathoswithin<br />
* Links: [http://tibleiz.net/asm-xml/ fasm xml library], [https://en.wikipedia.org/wiki/XDXF XDXF format]<br />
<br />
<br />
==== CPUID tool ====<br />
'''Summary:''' Update existing CPUID application to be aware of new CPUs and their features<br />
<br />
'''Details:'''<br />
* Primary goal: Write code to detect and report new CPUs and features + size detection for caches<br />
* Additional goal: Refactor code as to use system libraries (libimg, box_lib, etc.)<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: Standard<br />
* Mentor: Pathoswithin / Wildwest<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fprograms%2Fsystem%2Fcpuid%2Ftrunk%2F&#aec5d374b78ae8f08110b3327c3ba5f56 CPUID program], [http://bochs.sourceforge.net/techspec/24161821.pdf Intel cpuid], [http://support.amd.com/TechDocs/25481.pdf AMD cpuid]<br />
<br />
<br />
==== FTP client ====<br />
'''Summary:''' Create a GUI based FTP client or add FTP support to one of the existing file managers<br />
<br />
'''Details:'''<br />
* Primary goal: FTP access (download/upload/etc.)<br />
* Additional goal: Create an FTP client library<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [https://www.ietf.org/rfc/rfc959.txt File Transfer Protocol (RFC959)], [http://board.kolibrios.org/viewtopic.php?f=40&t=2360 CLI FTP client (demo)]<br />
<br />
==== Torrent client ====<br />
'''Summary:''' Write a (bit-)torrent client for KolibriOS, or port an existing one<br />
<br />
'''Details:'''<br />
* Primary goal: Implement a torrent client similar to [http://www.utorrent.com/ µTorrent Free edition]<br />
* Alternative goal (less preferred, but still possible): Port an existing torrent client to KolibriOS<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://www.bittorrent.org Information about the protocol]<br />
<br />
==== XMPP/Jabber client ====<br />
'''Summary:''' Write a XMPP/Jabber library and client for KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Write basic xmpp library/client<br />
* Additional goal: Implement some xmpp extentions<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: Pathoswithin/hidnplayr<br />
* 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]<br />
<br />
==== Music player ====<br />
'''Summary:''' Improve the current music player in Kolibri<br />
<br />
'''Details:'''<br />
* Primary goal: Rewrite the current music player (ac97snd), in FASM, and improve its functionality<br />
: * Support for file formats wav, mp3 and xm (using available external libraries)<br />
: * Support for playlists (m3u)<br />
: * A time display<br />
* Additional goal:<br />
: * Use of system wide hotkeys to control player<br />
: * Support for metadata (ID3, ...)<br />
: * More codecs (flac, vorbis, ...)<br />
: * Audio indication (oscillograph, bar graph, ...)<br />
: * Show cover art from files or album folder<br />
: * Fade in/out and/or crossover<br />
: * Streaming radio (at least mp3 over http stream)<br />
: * Skins<br />
: * Media library<br />
* Language: Assembler/FASM (C/C++ to port codec)<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: hidnplayr / Pathoswithin<br />
* Links: [http://board.kolibrios.org/viewtopic.php?f=38&t=1596 AC97SND (MP3 player in C)], [http://board.kolibrios.org/viewtopic.php?f=28&t=317 Sound drivers and architecture], [http://board.kolibrios.org/viewtopic.php?f=38&t=3003 Flac decoder],[http://board.kolibrios.org/viewtopic.php?f=38&t=2220 Minimp3 (minimalistic mp3 decoding library)], [http://board.kolibrios.org/viewtopic.php?f=38&t=161 SuperMP3 (IDv3 tag demo)]<br />
<br />
==== Web browser: WebView ====<br />
'''Summary:''' Improve existing text-only web browser WebView - add more functionality and compatibility<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: [http://www.dev0.de/cmm/indexe.htm Sphinx C--]. May require writing a few lines in FASM though<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: Leency<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
* [http://board.kolibrios.org/viewtopic.php?f=40&t=1075 Work done so far on WebView (mostly in Russian)]. If you don't know Russian, you can read [http://translate.google.com/translate?hl=en&sl=ru&tl=en&u=http%3A%2F%2Fboard.kolibrios.org%2Fviewtopic.php%3Ff%3D40%26t%3D1075 English translation using Google-Translate]<br />
<br />
=== Drivers ===<br />
Writing drivers is about new hardware and filesystems.<br><br />
Knowledge of specifications and previous experience are ''not'' required but surely desirable.<br />
<br />
==== Ethernet driver(s) ====<br />
'''Summary:''' Write an Ethernet driver<br />
<br />
'''Details:'''<br />
* Primary goal: Support for popular Broadcom, Atheros or Marvell Yukon ethernet cards<br />
* Additional goal: A second driver for another card family, PPPoE support in kernel, ...<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: Medium<br />
* Mentor: hidnplayr<br />
* Links: [https://www.broadcom.com/collateral/pg/57XX-PG105-R.pdf BCM57xx programmers guide], [[Writing network drivers for KolibriOS]], [https://github.com/UDOOboard/U-Boot_Unico/blob/master/drivers/net/bcm570x.c BCM570x driver for u-boot (in C)], [http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fdrivers%2Funfinished%2Fbcm57xx.asm Stub for BCM57xx driver]<br />
<br />
==== SD Host Controller ====<br />
'''Summary:''' Add support for SD Host Controller<br />
<br />
'''Details:'''<br />
* Primary goal: Write driver for particular controller<br />
* Additional goal: Test and update driver to work for all controllers<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: Pathoswithin<br />
* Links: [https://www.sdcard.org/downloads/pls/simplified_specs/index.html SD specifications]<br />
<br />
<br />
==== USB devices ====<br />
'''Summary:''' Add USB drivers for the new USB stack (webcams, gamepads, joysticks, tablets, etc.)<br />
<br />
'''Details:'''<br />
* Primary goal: Write USB driver for currently unsupported device (you should have one)<br />
* Additional goal: Adopt code to work with all devices of the same class<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://en.wikipedia.org/wiki/USB#Device_classes USB device classes]<br />
<br />
==== Filesystem support ====<br />
'''Summary:''' Improve filesystem support in KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Update/fix read-write support for EXT2/3/4 filesystems (partially done)<br />
* Alternative goal: Add write support for the NTFS filesystem (read-only support already exists)<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: Pathoswithin<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Ffs%2F&#a0aa5cede7308db82d4bae78266ed8462 Filesystems in KolibriOS]<br />
<br />
==== Wi-Fi ====<br />
'''Summary:''' Write or port a Wi-Fi driver for KolibriOS. <br />
<br />
'''Details:'''<br />
* Description: <br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: Pathoswithin<br />
* Links: [[https://en.wikipedia.org/wiki/Comparison_of_open-source_wireless_drivers Comparison of open source wifi drivers]]<br />
<br />
=== System wide tasks ===<br />
These tasks comprise both user space and kernel space work. Some developers consider them as of most importance for KolibriOS.<br><br />
Architecture and algorithm design skills are highly desirable.<br />
<br />
<br />
==== Widget toolkit ====<br />
'''Summary:''' Extend Box_lib (a set of separate widgets) to create a full-featured widget toolkit<br />
<br />
'''Details:'''<br />
* Primary goal: Design architecture and implement focus handling, callbacks and other core ideas<br />
* Additional goal: Integrate box_lib widgets to this framework<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Importance: Vital<br />
* Mentor: Pathoswithin<br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
<br />
==== Unit testing framework ====<br />
'''Summary:''' Design and implement an unit testing framework, write tests for kernel functions<br />
<br />
'''Details:'''<br />
* Primary goal: Design and implement a framework, write tests for kernel functions<br />
* Additional goal: Write tests for system libraries (libio, libini)<br />
* Language: Assembler/FASM (preferrable), any other working in KolibriOS<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: Pathoswithin<br />
* Links: [http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks list of unit testing frameworks]<br />
<br />
==== QR-code in boot log ====<br />
'''Summary:''' Add a [http://en.wikipedia.org/wiki/QR_code QR-code] (containing the debug log) at the end of boot process<br />
<br />
[[File:QR-code.png]]<br />
<br />
'''Details:'''<br />
* Description: Sometimes KolibriOS cannot boot on a certain hardware configuration (gets stuck during or after boot process). In such cases, we request the user having this problem to enable debug log at boot time, take a photo of the screen and show it to us (in the forum). However, sometimes taking a good quality photo can be quite challenging (bad camera, shaking hands etc.) and the attached photo is so blurry to the point the debug log cannot be even read. The idea suggested hereby is to simultaneously encode the debug log which is outputted on the screen, to the form of QR-code, and [http://wiki.kolibrios.org/wiki/File:QR-code.png show the resulting QR-code on empty space on the screen]. In such way, any user possessing a smartphone with a camera and QR-code scanner, could scan the QR-code and submit the encoded text directly on our forums (without having a need to take a photo), and our developers, in turn, would get the debug log text immediately and won't have to unscramble a blurry photo.<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Mentor: Pathoswithin<br />
<br />
==== C layer for KolibriOS ====<br />
'''Summary:''' Building a C layer for KolibriOS, so that we can get more developers and port more code to KolibriOS more easily.<br />
<br />
'''Details:'''<br />
* Description:<br />
As a lot of software out there is available in C and useful for KolibriOS, building an ecosystem around C and FASM is required. Some work towards a cross compiler has already been done. Since KolibriOS is neither Linux, nor Windows..it is challenging to port software. In order to automate this, we need to port existing libraries and figure out a way to automate/streamline this process. The best part about this is that you get to mix C and FASM in unprecedented ways and learn along the way.<br />
<br />
The end result should be as easy as writing a Makefile and calling the cross compiler which creates a binary for Kolibri OS.<br />
<br />
The eventual aim is to have libraries in C available for KolibriOS which let you use the same ASM procedures in C code.<br />
<br />
Example:<br />
#include<kolibri.h><br />
int main()<br />
{ <br />
kolibri_window("Hi!");<br />
return 0;<br />
}<br />
<br />
Some work on this has already been done. Get in touch to know more!<br />
<br />
* Language(s): <br />
C - Required <br />
FASM <Not a strict requirement, but is desirable><br />
GNU Autotools (Easy to pick up, safe to assume optional)<br />
* Bonus points for the ability in designing a clean approach to achieve this.<br />
<br />
* Skill level: intermediate / unknown<br />
* Mentor: ashmew2<br />
<br />
==== Virtualbox support for KolibriOS ====<br />
'''Summary:''' Building Virtualbox support for KolibriOS so that it is easier to use in a virtual machine.<br />
<br />
'''Details:'''<br />
* Description:<br />
Create a set of tools which let KolibriOS seamlessly interface with a host running Kolibri via VirtualBox. Develop parts required, especially shared folders, which resemble Guest Additions.<br />
(For a Linux based Host running KolibriOS as Guest.)<br />
<br />
* Language(s): <br />
<br />
C - Virtualbox Source code.<br />
FASM - To understand the source code of KolibriOS better and prepare interfaces with Guest additions.<br />
<br />
<br />
* Ability to understand a larger source code base and contribute to it are very desirable!<br />
<br />
* Skill level: Advanced / unknown<br />
* Mentor: ashmew2<br />
<br />
<br />
<!--<br />
=== Open Ideas (without appointed mentor) ===<br />
<br />
==== One core for graphics ====<br />
'''Summary:''' On multi-core systems, dedicate one core for graphics rendering ONLY<br />
<br />
'''Details:'''<br />
* Goal: Move graphics subsystem to a single, dedicated core if multicore machine detected<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Serge(?)<br />
<br />
==== Partition editor ====<br />
'''Summary:''' Add a partition/HDD editor utility<br />
<br />
'''Details:'''<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Mario(?)<br />
<br />
==== Rewrite "Table" in Assembler ====<br />
'''Summary:''' Rewrite a great Kolibri spreadsheet application [[Table]] from C++ to FASM<br />
<br />
'''Details:'''<br />
* Goal: Port Table (C++) to Assembler/FASM<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Mentor: ???<br />
<br />
==== Kernel vulnerabilities ====<br />
'''Summary:''' Find and fix as many kernel vulnerabilities as you can<br />
<br />
'''Details:'''<br />
* Goal: Check the list of kernel API functions versus their actual implementation in KolibriOS kernel (for example, check that the function doesn't destroy register values if it declares in description that it doesn't). If you find a vulnerability, try to fix it so that it works according to API. If you cannot fix it yourself, document the vulnerability and describe the problem.<br />
* Language: Assembler/FASM<br />
* Skill level: Intermediate/Expert<br />
* Mentor: Serge '''(Is not always available to answer questions, so select this task only if you can work fairly independently.)'''<br />
<br />
==== Web browser in FASM ====<br />
'''Summary:''' Write a proper HTML web browser for KolibriOS<br />
<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Mentor: SoUrcerer<br />
<br />
<br />
==== Printing/scanning API ====<br />
'''Summary:''' Add a printing and scanning API and drivers.<br />
<br />
'''Details:'''<br />
* Primary goal: Design and code infrastructure for printing and scanning devices.<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: SoUrcerer<br />
--><br />
<br />
[[Category:Misc]]<br />
<br />
<br />
== Rough Guide for Prospective Students ==<br />
<br />
* As the kernel is written in FASM, ability to write and understand i386-assembly code is very useful.<br />
* 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.<br />
* Familiarity with the GNu landscape like Autotools, GCC etc are also a plus to have (especially for porting software)<br />
* 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. (The mentors can help you with that :) )<br />
* Hanging out on Freenode's #kolibriOS , and our Chat (accessible through kolibrios.org -> Forum -> Chat) are where developers mostly hang out.<br />
* Languages used for communication are Russian and English (although most developers are bilingual, and you can always ask someone for help)<br />
* Get in touch with other developers via IRC / Chat / Forums and enjoy your stay!</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Google_Summer_of_Code_2016&diff=5216Google Summer of Code 20162016-02-09T21:01:11Z<p>Punk Joker: /* Sortable list of ideas for easy navigation */</p>
<hr />
<div><!-- [[Image:GSoC2015.png|right]] --><br />
== Introduction ==<br />
KolibriOS is going to apply as a mentoring organization for [https://developers.google.com/open-source/gsoc/ Google Summer of Code 2016]. This page contains our ideas list and some additional information for students and mentors.<br />
<br />
We have previously participated as a Mentoring Organization in [http://www.google-melange.com/gsoc/homepage/google/gsoc2014 Google Summer of Code 2014]. The [[Google Summer of Code 2014|ideas page for 2014]] is available for your reference. Our organization page for GSoC 2014 and successfully completed projects for that year can be accessed [https://www.google-melange.com/gsoc/org2/google/gsoc2014/kolibrios via this link]. To our great delight, both successful students of GSoC2014 stayed with the project and continue contributing to KolibriOS voluntarily in their spare time.<br />
<br />
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.<br />
<br />
== Student Requirements ==<br />
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] (25 March 19:00 UTC).'''<br><br><br />
In addition, students need to answer the following questions when applying:<br />
# Full Name (First + Last Name).<br />
# E-mail address.<br />
# Phone (home or mobile).<br />
# Another phone '''for emergency cases''' (if we cannot contact you) - parents, boy/girlfriend, husband/wife etc.<br />
# Nickname you plan to use on our forums, SVN repository or IRC chat.<br />
# Age.<br />
# Country + city of residence.<br />
# Human languages you speak (state all languages and knowledge level - basic/intermediate/expert/mother tongue).<br />
# Name of college or university you are accepted into or enrolled in + link to their website.<br />
# Name of program (or faculty, or department) in that college/university you are accepted into or enrolled in.<br />
# Your current timezone in UTC/GMT terms (for example, Paris is UTC/GMT +1 hours right now).<br />
# Have you been involved with any open-source project in the past? If yes, which one, and what have you done for that project?<br />
# 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.<br />
# The task you are willing to work on from our list of Summer of Code 2016 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.<br />
# 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.''<br />
<br />
== Organization ==<br />
<br />
You can find the organizers on the IRC channel (#kolibrios @ irc.freenode.net) or at our forum: http://board.kolibrios.org/<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
| vacant<br />
| vacant<br />
|Organization Administrator<br />
|-<br />
|Jeffrey Amelynck<br />
|[[User:Hidnplayr|hidnplayr]]<br />
|Mentor, Backup Administrator<br />
|-<br />
|Kiril Lipatov<br />
|[[User:Punk Joker|Leency]]<br />
|Mentor<br />
|-<br />
|Ashish Gupta<br />
|[[User:ashmew2|ashmew2]]<br />
|Mentor<br />
|-<br />
|}<br />
We have discussed "Google Summer of Code 2016" application with all active members of the KolibriOS Project Team, and selected only those 3 (three) people who have both the knowledge, the dedication, and the 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.<br />
<br />
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 GSoC2014.<br />
<br />
== Ideas for Google Summer of Code 2016 ==<br />
The below list contains ideas suggested by KolibriOS team members. '''It is neither complete nor final.'''<br><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.<br />
<br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Required Skill Level<br />
! Importance for KolibriOS<br />
! Programming Language<br />
! Mentor<br />
|-<br />
| [[#XDXF_dictionary|XDXF dictionary]]<br />
| Application<br />
| Basic<br />
| Low<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#CPUID_tool|CPUID tool]]<br />
| Application<br />
| Beginner<br />
| Low<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#FTP_client|FTP client]]<br />
| Application<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Torrent_client|Torrent client]]<br />
| Application<br />
| Advanced<br />
| High<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#XMPP.2FJabber_client|XMPP/Jabber client]]<br />
| Application<br />
| Intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Music_player|Music player]]<br />
| Application<br />
| Advanced<br />
| Medium<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#Web_browser:_WebView|Web browser: WebView]]<br />
| Application<br />
| intermediate<br />
| Standard<br />
| [http://www.dev0.de/cmm/indexe.htm Sphinx C--]<br />
| Leency<br />
|-<br />
| [[#Ethernet_driver.28s.29|Ethernet driver(s)]]<br />
| Driver<br />
| Advanced<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#SD_Host_Controller|SD Host Controller driver]]<br />
| Driver<br />
| Advanced<br />
| Low<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#USB_devices|USB device drivers]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Filesystem_support|Filesystem support]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide task<br />
| intermediate<br />
| Standard<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#Unit_testing_framework|Unit testing framework]]<br />
| System wide task<br />
| intermediate<br />
| High<br />
| Any<br />
| ?<br />
|-<br />
| [[#QR-code_in_boot_log|QR-code in boot log]]<br />
| Kernel/Library<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#Wi-Fi|Wi-Fi]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| Pathoswithin<br />
|-<br />
| [[#C layer for KolibriOS|C layer for KolibriOS]]<br />
| Library<br />
| intermediate<br />
| Medium<br />
| C<br />
| Ashmew2<br />
|}<br />
Explanation of required skill level:<br />
* Beginner: No knowledge at all of the topic,<br />
* Basic: A very basic knowledge of the topic but no professional usage,<br />
* Intermediate: A basic knowledge of the topic but no regular professional usage,<br />
* Advanced: A good knowledge of the topic and a regular professional usage,<br />
* Expert: a perfect knowledge of the topic and a daily professional usage.<br />
<br />
Explanation of importance for the project:<br />
* Low: For sure it doesn't hurt to implement, but if nobody does it, no one will even notice.<br />
* Medium: Nice-to-have feature. Will improve everyday life of users and developers.<br />
* High: This feature is needed for the project to start being adopted by masses.<br />
* Critical: This functionality is vital for the project to become useful.<br />
<br />
=== Applications ===<br />
These are userspace tasks. They often require only basic knowledge of algorithms and data structures.<br><br />
No specific experience is required but welcome.<br />
<br />
==== XDXF dictionary ====<br />
'''Summary:''' Write dictionary application with support of XDXF (XML Dictionary eXchange Format)<br />
<br />
'''Details:'''<br />
* Primary goal: Write library and corresponding dictionary application<br />
* Additional goal: Support of other dictioinary formats<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate<br />
* Importance: Standard<br />
* Mentor: dunkaist<br />
* Links: [http://tibleiz.net/asm-xml/ fasm xml library], [https://en.wikipedia.org/wiki/XDXF XDXF format]<br />
<br />
<br />
==== CPUID tool ====<br />
'''Summary:''' Update existing CPUID application to be aware of new CPUs and their features<br />
<br />
'''Details:'''<br />
* Primary goal: Write code to detect and report new CPUs and features + size detection for caches<br />
* Additional goal: Refactor code as to use system libraries (libimg, box_lib, etc.)<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: Standard<br />
* Mentor: dunkaist / Wildwest<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fprograms%2Fsystem%2Fcpuid%2Ftrunk%2F&#aec5d374b78ae8f08110b3327c3ba5f56 CPUID program], [http://bochs.sourceforge.net/techspec/24161821.pdf Intel cpuid], [http://support.amd.com/TechDocs/25481.pdf AMD cpuid]<br />
<br />
<br />
==== FTP client ====<br />
'''Summary:''' Create a GUI based FTP client or add FTP support to one of the existing file managers<br />
<br />
'''Details:'''<br />
* Primary goal: FTP access (download/upload/etc.)<br />
* Additional goal: Create an FTP client library<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [https://www.ietf.org/rfc/rfc959.txt File Transfer Protocol (RFC959)], [http://board.kolibrios.org/viewtopic.php?f=40&t=2360 CLI FTP client (demo)]<br />
<br />
==== Torrent client ====<br />
'''Summary:''' Write a (bit-)torrent client for KolibriOS, or port an existing one<br />
<br />
'''Details:'''<br />
* Primary goal: Implement a torrent client similar to [http://www.utorrent.com/ µTorrent Free edition]<br />
* Alternative goal (less preferred, but still possible): Port an existing torrent client to KolibriOS<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://www.bittorrent.org Information about the protocol]<br />
<br />
==== XMPP/Jabber client ====<br />
'''Summary:''' Write a XMPP/Jabber library and client for KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Write basic xmpp library/client<br />
* Additional goal: Implement some xmpp extentions<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist/hidnplayr<br />
* 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]<br />
<br />
==== Music player ====<br />
'''Summary:''' Improve the current music player in Kolibri<br />
<br />
'''Details:'''<br />
* Primary goal: Rewrite the current music player (ac97snd), in FASM, and improve its functionality<br />
: * Support for file formats wav, mp3 and xm (using available external libraries)<br />
: * Support for playlists (m3u)<br />
: * A time display<br />
* Additional goal:<br />
: * Use of system wide hotkeys to control player<br />
: * Support for metadata (ID3, ...)<br />
: * More codecs (flac, vorbis, ...)<br />
: * Audio indication (oscillograph, bar graph, ...)<br />
: * Show cover art from files or album folder<br />
: * Fade in/out and/or crossover<br />
: * Streaming radio (at least mp3 over http stream)<br />
: * Skins<br />
: * Media library<br />
* Language: Assembler/FASM (C/C++ to port codec)<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: hidnplayr / dunkaist<br />
* Links: [http://board.kolibrios.org/viewtopic.php?f=38&t=1596 AC97SND (MP3 player in C)], [http://board.kolibrios.org/viewtopic.php?f=28&t=317 Sound drivers and architecture], [http://board.kolibrios.org/viewtopic.php?f=38&t=3003 Flac decoder],[http://board.kolibrios.org/viewtopic.php?f=38&t=2220 Minimp3 (minimalistic mp3 decoding library)], [http://board.kolibrios.org/viewtopic.php?f=38&t=161 SuperMP3 (IDv3 tag demo)]<br />
<br />
==== Web browser: WebView ====<br />
'''Summary:''' Improve existing text-only web browser WebView - add more functionality and compatibility<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: [http://www.dev0.de/cmm/indexe.htm Sphinx C--]. May require writing a few lines in FASM though<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: Leency<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
* [http://board.kolibrios.org/viewtopic.php?f=40&t=1075 Work done so far on WebView (mostly in Russian)]. If you don't know Russian, you can read [http://translate.google.com/translate?hl=en&sl=ru&tl=en&u=http%3A%2F%2Fboard.kolibrios.org%2Fviewtopic.php%3Ff%3D40%26t%3D1075 English translation using Google-Translate]<br />
<br />
=== Drivers ===<br />
Writing drivers is about new hardware and filesystems.<br><br />
Knowledge of specifications and previous experience are ''not'' required but surely desirable.<br />
<br />
==== Ethernet driver(s) ====<br />
'''Summary:''' Write an Ethernet driver<br />
<br />
'''Details:'''<br />
* Primary goal: Support for popular Broadcom, Atheros or Marvell Yukon ethernet cards<br />
* Additional goal: A second driver for another card family, PPPoE support in kernel, ...<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: Medium<br />
* Mentor: hidnplayr<br />
* Links: [https://www.broadcom.com/collateral/pg/57XX-PG105-R.pdf BCM57xx programmers guide], [[Writing network drivers for KolibriOS]], [https://github.com/UDOOboard/U-Boot_Unico/blob/master/drivers/net/bcm570x.c BCM570x driver for u-boot (in C)], [http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fdrivers%2Funfinished%2Fbcm57xx.asm Stub for BCM57xx driver]<br />
<br />
==== SD Host Controller ====<br />
'''Summary:''' Add support for SD Host Controller<br />
<br />
'''Details:'''<br />
* Primary goal: Write driver for particular controller<br />
* Additional goal: Test and update driver to work for all controllers<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [https://www.sdcard.org/downloads/pls/simplified_specs/index.html SD specifications]<br />
<br />
<br />
==== USB devices ====<br />
'''Summary:''' Add USB drivers for the new USB stack (webcams, gamepads, joysticks, tablets, etc.)<br />
<br />
'''Details:'''<br />
* Primary goal: Write USB driver for currently unsupported device (you should have one)<br />
* Additional goal: Adopt code to work with all devices of the same class<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://en.wikipedia.org/wiki/USB#Device_classes USB device classes]<br />
<br />
==== Filesystem support ====<br />
'''Summary:''' Improve filesystem support in KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Update/fix read-write support for EXT2/3/4 filesystems (partially done)<br />
* Alternative goal: Add write support for the NTFS filesystem (read-only support already exists)<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Ffs%2F&#a0aa5cede7308db82d4bae78266ed8462 Filesystems in KolibriOS]<br />
<br />
==== Wi-Fi ====<br />
'''Summary:''' Write or port a Wi-Fi driver for KolibriOS. <br />
<br />
'''Details:'''<br />
* Description: <br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: ?<br />
* Links: [[https://en.wikipedia.org/wiki/Comparison_of_open-source_wireless_drivers Comparison of open source wifi drivers]]<br />
<br />
=== System wide tasks ===<br />
These tasks comprise both user space and kernel space work. Some developers consider them as of most importance for KolibriOS.<br><br />
Architecture and algorithm design skills are highly desirable.<br />
<br />
<br />
==== Widget toolkit ====<br />
'''Summary:''' Extend Box_lib (a set of separate widgets) to create a full-featured widget toolkit<br />
<br />
'''Details:'''<br />
* Primary goal: Design architecture and implement focus handling, callbacks and other core ideas<br />
* Additional goal: Integrate box_lib widgets to this framework<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Importance: Vital<br />
* Mentor: dunkaist<br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
<br />
==== Unit testing framework ====<br />
'''Summary:''' Design and implement an unit testing framework, write tests for kernel functions<br />
<br />
'''Details:'''<br />
* Primary goal: Design and implement a framework, write tests for kernel functions<br />
* Additional goal: Write tests for system libraries (libio, libini)<br />
* Language: Assembler/FASM (preferrable), any other working in KolibriOS<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks list of unit testing frameworks]<br />
<br />
==== QR-code in boot log ====<br />
'''Summary:''' Add a [http://en.wikipedia.org/wiki/QR_code QR-code] (containing the debug log) at the end of boot process<br />
<br />
[[File:QR-code.png]]<br />
<br />
'''Details:'''<br />
* Description: Sometimes KolibriOS cannot boot on a certain hardware configuration (gets stuck during or after boot process). In such cases, we request the user having this problem to enable debug log at boot time, take a photo of the screen and show it to us (in the forum). However, sometimes taking a good quality photo can be quite challenging (bad camera, shaking hands etc.) and the attached photo is so blurry to the point the debug log cannot be even read. The idea suggested hereby is to simultaneously encode the debug log which is outputted on the screen, to the form of QR-code, and [http://wiki.kolibrios.org/wiki/File:QR-code.png show the resulting QR-code on empty space on the screen]. In such way, any user possessing a smartphone with a camera and QR-code scanner, could scan the QR-code and submit the encoded text directly on our forums (without having a need to take a photo), and our developers, in turn, would get the debug log text immediately and won't have to unscramble a blurry photo.<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Mentor: dunkaist<br />
<br />
==== C layer for KolibriOS ====<br />
'''Summary:''' Building a C layer for KolibriOS, so that we can get more developers and port more code to KolibriOS more easily.<br />
<br />
'''Details:'''<br />
* Description:<br />
As a lot of software out there is available in C and useful for KolibriOS, building an ecosystem around C and FASM is required. Some work towards a cross compiler has already been done. Since KolibriOS is neither Linux, nor Windows..it is challenging to port software. In order to automate this, we need to port existing libraries and figure out a way to automate/streamline this process. The best part about this is that you get to mix C and FASM in unprecedented ways and learn along the way.<br />
<br />
The end result should be as easy as writing a Makefile and calling the cross compiler which creates a binary for Kolibri OS.<br />
<br />
The eventual aim is to have libraries in C available for KolibriOS which let you use the same ASM procedures in C code.<br />
<br />
Example:<br />
#include<kolibri.h><br />
int main()<br />
{ <br />
kolibri_window("Hi!");<br />
return 0;<br />
}<br />
<br />
Some work on this has already been done. Get in touch to know more!<br />
<br />
* Language(s): <br />
C - Required <br />
FASM <Not a strict requirement, but is desirable><br />
GNU Autotools (Easy to pick up, safe to assume optional)<br />
* Bonus points for the ability in designing a clean approach to achieve this.<br />
<br />
* Skill level: intermediate / unknown<br />
* Mentor: ashmew2<br />
<br />
==== Virtualbox support for KolibriOS ====<br />
'''Summary:''' Building Virtualbox support for KolibriOS so that it is easier to use in a virtual machine.<br />
<br />
'''Details:'''<br />
* Description:<br />
Create a set of tools which let KolibriOS seamlessly interface with a host running Kolibri via VirtualBox. Develop parts required, especially shared folders, which resemble Guest Additions.<br />
(For a Linux based Host running KolibriOS as Guest.)<br />
<br />
* Language(s): <br />
<br />
C - Virtualbox Source code.<br />
FASM - To understand the source code of KolibriOS better and prepare interfaces with Guest additions.<br />
<br />
<br />
* Ability to understand a larger source code base and contribute to it are very desirable!<br />
<br />
* Skill level: Advanced / unknown<br />
* Mentor: ashmew2<br />
<br />
<br />
<!--<br />
=== Open Ideas (without appointed mentor) ===<br />
<br />
==== One core for graphics ====<br />
'''Summary:''' On multi-core systems, dedicate one core for graphics rendering ONLY<br />
<br />
'''Details:'''<br />
* Goal: Move graphics subsystem to a single, dedicated core if multicore machine detected<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Serge(?)<br />
<br />
==== Partition editor ====<br />
'''Summary:''' Add a partition/HDD editor utility<br />
<br />
'''Details:'''<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Mario(?)<br />
<br />
==== Rewrite "Table" in Assembler ====<br />
'''Summary:''' Rewrite a great Kolibri spreadsheet application [[Table]] from C++ to FASM<br />
<br />
'''Details:'''<br />
* Goal: Port Table (C++) to Assembler/FASM<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Mentor: ???<br />
<br />
==== Kernel vulnerabilities ====<br />
'''Summary:''' Find and fix as many kernel vulnerabilities as you can<br />
<br />
'''Details:'''<br />
* Goal: Check the list of kernel API functions versus their actual implementation in KolibriOS kernel (for example, check that the function doesn't destroy register values if it declares in description that it doesn't). If you find a vulnerability, try to fix it so that it works according to API. If you cannot fix it yourself, document the vulnerability and describe the problem.<br />
* Language: Assembler/FASM<br />
* Skill level: Intermediate/Expert<br />
* Mentor: Serge '''(Is not always available to answer questions, so select this task only if you can work fairly independently.)'''<br />
<br />
==== Web browser in FASM ====<br />
'''Summary:''' Write a proper HTML web browser for KolibriOS<br />
<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Mentor: SoUrcerer<br />
<br />
<br />
==== Printing/scanning API ====<br />
'''Summary:''' Add a printing and scanning API and drivers.<br />
<br />
'''Details:'''<br />
* Primary goal: Design and code infrastructure for printing and scanning devices.<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: SoUrcerer<br />
--><br />
<br />
[[Category:Misc]]<br />
<br />
<br />
== Rough Guide for Prospective Students ==<br />
<br />
* As the kernel is written in FASM, ability to write and understand i386-assembly code is very useful.<br />
* 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.<br />
* Familiarity with the GNu landscape like Autotools, GCC etc are also a plus to have (especially for porting software)<br />
* 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. (The mentors can help you with that :) )<br />
* Hanging out on Freenode's #kolibriOS , and our Chat (accessible through kolibrios.org -> Forum -> Chat) are where developers mostly hang out.<br />
* Languages used for communication are Russian and English (although most developers are bilingual, and you can always ask someone for help)<br />
* Get in touch with other developers via IRC / Chat / Forums and enjoy your stay!</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Google_Summer_of_Code_2016&diff=5184Google Summer of Code 20162016-01-19T13:35:41Z<p>Punk Joker: /* Sortable list of ideas for easy navigation */</p>
<hr />
<div><!-- [[Image:GSoC2015.png|right]] --><br />
== Introduction ==<br />
KolibriOS is going to apply as a mentoring organization for [https://developers.google.com/open-source/gsoc/ Google Summer of Code 2016]. This page contains our ideas list and some additional information for students and mentors.<br />
<br />
We have previously participated as a Mentoring Organization in [http://www.google-melange.com/gsoc/homepage/google/gsoc2014 Google Summer of Code 2014]. The [[Google Summer of Code 2014|ideas page for 2014]] is available for your reference. Our organization page for GSoC 2014 and successfully completed projects for that year can be accessed [https://www.google-melange.com/gsoc/org2/google/gsoc2014/kolibrios via this link]. To our great delight, both successful students of GSoC2014 stayed with the project and continue contributing to KolibriOS voluntarily in their spare time.<br />
<br />
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.<br />
<br />
== Student Requirements ==<br />
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] (25 March 19:00 UTC).'''<br><br><br />
In addition, students need to answer the following questions when applying:<br />
# Full Name (First + Last Name).<br />
# E-mail address.<br />
# Phone (home or mobile).<br />
# Another phone '''for emergency cases''' (if we cannot contact you) - parents, boy/girlfriend, husband/wife etc.<br />
# Nickname you plan to use on our forums, SVN repository or IRC chat.<br />
# Age.<br />
# Country + city of residence.<br />
# Human languages you speak (state all languages and knowledge level - basic/intermediate/expert/mother tongue).<br />
# Name of college or university you are accepted into or enrolled in + link to their website.<br />
# Name of program (or faculty, or department) in that college/university you are accepted into or enrolled in.<br />
# Your current timezone in UTC/GMT terms (for example, Paris is UTC/GMT +1 hours right now).<br />
# Have you been involved with any open-source project in the past? If yes, which one, and what have you done for that project?<br />
# 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.<br />
# The task you are willing to work on from our list of Summer of Code 2016 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.<br />
# 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.''<br />
<br />
== Organization ==<br />
<br />
You can find the organizers on the IRC channel (#kolibrios @ irc.freenode.net) or at our forum: http://board.kolibrios.org/<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
| vacant<br />
| vacant<br />
|Organization Administrator<br />
|-<br />
|Jeffrey Amelynck<br />
|[[User:Hidnplayr|hidnplayr]]<br />
|Mentor, Backup Administrator<br />
|-<br />
|Kiril Lipatov<br />
|[[User:Punk Joker|Leency]]<br />
|Mentor<br />
|-<br />
|Artem Zherdev<br />
|[[User:art_zh|art_zh]]<br />
|Mentor<br />
|-<br />
|Ashish Gupta<br />
|[[User:Ashmew2|Ashmew2]]<br />
|Mentor<br />
|-<br />
|}<br />
We have discussed "Google Summer of Code 2016" application with all active members of the KolibriOS Project Team, and selected only those 3 (three) people who have both the knowledge, the dedication, and the 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.<br />
<br />
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 GSoC2014.<br />
<br />
== Ideas for Google Summer of Code 2016 ==<br />
The below list contains ideas suggested by KolibriOS team members. '''It is neither complete nor final.'''<br><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.<br />
<br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Required Skill Level<br />
! Importance for KolibriOS<br />
! Programming Language<br />
! Mentor<br />
|-<br />
| [[#XDXF_dictionary|XDXF dictionary]]<br />
| Application<br />
| Basic<br />
| Low<br />
| Assembler(FASM)<br />
| ?<br />
|-<br />
| [[#CPUID_tool|CPUID tool]]<br />
| Application<br />
| Beginner<br />
| Low<br />
| Assembler(FASM)<br />
| ?<br />
|-<br />
| [[#FTP_client|FTP client]]<br />
| Application<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Torrent_client|Torrent client]]<br />
| Application<br />
| Advanced<br />
| High<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#XMPP.2FJabber_client|XMPP/Jabber client]]<br />
| Application<br />
| Intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Music_player|Music player]]<br />
| Application<br />
| Advanced<br />
| Medium<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#Web_browser:_WebView|Web browser: WebView]]<br />
| Application<br />
| intermediate<br />
| Standard<br />
| [http://www.dev0.de/cmm/indexe.htm Sphinx C--]<br />
| Leency<br />
|-<br />
| [[#Ethernet_driver.28s.29|Ethernet driver(s)]]<br />
| Driver<br />
| Advanced<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#SD_Host_Controller|SD Host Controller driver]]<br />
| Driver<br />
| Advanced<br />
| Low<br />
| Assembler(FASM)<br />
| ?<br />
|-<br />
| [[#USB_devices|USB device drivers]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Filesystem_support|Filesystem support]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| ?<br />
|-<br />
| [[#Kolibri-A|Kolibri-A]]<br />
| Kernel<br />
| intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| art_zh<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide task<br />
| intermediate<br />
| Standard<br />
| Assembler(FASM)<br />
| ?<br />
|-<br />
| [[#Unit_testing_framework|Unit testing framework]]<br />
| System wide task<br />
| intermediate<br />
| High<br />
| Any<br />
| ?<br />
|-<br />
| [[#QR-code_in_boot_log|QR-code in boot log]]<br />
| Kernel/Library<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| ?<br />
|-<br />
| [[#Wi-Fi|Wi-Fi]]<br />
| Driver<br />
| intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| ?<br />
|-<br />
| [[#C layer for KolibriOS|C layer for KolibriOS]]<br />
| Library<br />
| intermediate<br />
| Medium<br />
| C<br />
| Ashmew2<br />
|}<br />
Explanation of required skill level:<br />
* Beginner: No knowledge at all of the topic,<br />
* Basic: A very basic knowledge of the topic but no professional usage,<br />
* Intermediate: A basic knowledge of the topic but no regular professional usage,<br />
* Advanced: A good knowledge of the topic and a regular professional usage,<br />
* Expert: a perfect knowledge of the topic and a daily professional usage.<br />
<br />
Explanation of importance for the project:<br />
* Low: For sure it doesn't hurt to implement, but if nobody does it, no one will even notice.<br />
* Medium: Nice-to-have feature. Will improve everyday life of users and developers.<br />
* High: This feature is needed for the project to start being adopted by masses.<br />
* Critical: This functionality is vital for the project to become useful.<br />
<br />
=== Applications ===<br />
These are userspace tasks. They often require only basic knowledge of algorithms and data structures.<br><br />
No specific experience is required but welcome.<br />
<br />
==== XDXF dictionary ====<br />
'''Summary:''' Write dictionary application with support of XDXF (XML Dictionary eXchange Format)<br />
<br />
'''Details:'''<br />
* Primary goal: Write library and corresponding dictionary application<br />
* Additional goal: Support of other dictioinary formats<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate<br />
* Importance: Standard<br />
* Mentor: dunkaist<br />
* Links: [http://tibleiz.net/asm-xml/ fasm xml library], [https://en.wikipedia.org/wiki/XDXF XDXF format]<br />
<br />
<br />
==== CPUID tool ====<br />
'''Summary:''' Update existing CPUID application to be aware of new CPUs and their features<br />
<br />
'''Details:'''<br />
* Primary goal: Write code to detect and report new CPUs and features + size detection for caches<br />
* Additional goal: Refactor code as to use system libraries (libimg, box_lib, etc.)<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: Standard<br />
* Mentor: dunkaist / Wildwest<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fprograms%2Fsystem%2Fcpuid%2Ftrunk%2F&#aec5d374b78ae8f08110b3327c3ba5f56 CPUID program], [http://bochs.sourceforge.net/techspec/24161821.pdf Intel cpuid], [http://support.amd.com/TechDocs/25481.pdf AMD cpuid]<br />
<br />
<br />
==== FTP client ====<br />
'''Summary:''' Create a GUI based FTP client or add FTP support to one of the existing file managers<br />
<br />
'''Details:'''<br />
* Primary goal: FTP access (download/upload/etc.)<br />
* Additional goal: Create an FTP client library<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [https://www.ietf.org/rfc/rfc959.txt File Transfer Protocol (RFC959)], [http://board.kolibrios.org/viewtopic.php?f=40&t=2360 CLI FTP client (demo)]<br />
<br />
==== Torrent client ====<br />
'''Summary:''' Write a (bit-)torrent client for KolibriOS, or port an existing one<br />
<br />
'''Details:'''<br />
* Primary goal: Implement a torrent client similar to [http://www.utorrent.com/ µTorrent Free edition]<br />
* Alternative goal (less preferred, but still possible): Port an existing torrent client to KolibriOS<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://www.bittorrent.org Information about the protocol]<br />
<br />
==== XMPP/Jabber client ====<br />
'''Summary:''' Write a XMPP/Jabber library and client for KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Write basic xmpp library/client<br />
* Additional goal: Implement some xmpp extentions<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist/hidnplayr<br />
* 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]<br />
<br />
==== Music player ====<br />
'''Summary:''' Improve the current music player in Kolibri<br />
<br />
'''Details:'''<br />
* Primary goal: Rewrite the current music player (ac97snd), in FASM, and improve its functionality<br />
: * Support for file formats wav, mp3 and xm (using available external libraries)<br />
: * Support for playlists (m3u)<br />
: * A time display<br />
* Additional goal:<br />
: * Use of system wide hotkeys to control player<br />
: * Support for metadata (ID3, ...)<br />
: * More codecs (flac, vorbis, ...)<br />
: * Audio indication (oscillograph, bar graph, ...)<br />
: * Show cover art from files or album folder<br />
: * Fade in/out and/or crossover<br />
: * Streaming radio (at least mp3 over http stream)<br />
: * Skins<br />
: * Media library<br />
* Language: Assembler/FASM (C/C++ to port codec)<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: hidnplayr / dunkaist<br />
* Links: [http://board.kolibrios.org/viewtopic.php?f=38&t=1596 AC97SND (MP3 player in C)], [http://board.kolibrios.org/viewtopic.php?f=28&t=317 Sound drivers and architecture], [http://board.kolibrios.org/viewtopic.php?f=38&t=3003 Flac decoder],[http://board.kolibrios.org/viewtopic.php?f=38&t=2220 Minimp3 (minimalistic mp3 decoding library)], [http://board.kolibrios.org/viewtopic.php?f=38&t=161 SuperMP3 (IDv3 tag demo)]<br />
<br />
==== Web browser: WebView ====<br />
'''Summary:''' Improve existing text-only web browser WebView - add more functionality and compatibility<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: [http://www.dev0.de/cmm/indexe.htm Sphinx C--]. May require writing a few lines in FASM though<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: Leency<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
* [http://board.kolibrios.org/viewtopic.php?f=40&t=1075 Work done so far on WebView (mostly in Russian)]. If you don't know Russian, you can read [http://translate.google.com/translate?hl=en&sl=ru&tl=en&u=http%3A%2F%2Fboard.kolibrios.org%2Fviewtopic.php%3Ff%3D40%26t%3D1075 English translation using Google-Translate]<br />
<br />
=== Drivers ===<br />
Writing drivers is about new hardware and filesystems.<br><br />
Knowledge of specifications and previous experience are ''not'' required but surely desirable.<br />
<br />
==== Ethernet driver(s) ====<br />
'''Summary:''' Write an Ethernet driver<br />
<br />
'''Details:'''<br />
* Primary goal: Support for popular Broadcom, Atheros or Marvell Yukon ethernet cards<br />
* Additional goal: A second driver for another card family, PPPoE support in kernel, ...<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: Medium<br />
* Mentor: hidnplayr<br />
* Links: [https://www.broadcom.com/collateral/pg/57XX-PG105-R.pdf BCM57xx programmers guide], [[Writing network drivers for KolibriOS]], [https://github.com/UDOOboard/U-Boot_Unico/blob/master/drivers/net/bcm570x.c BCM570x driver for u-boot (in C)], [http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fdrivers%2Funfinished%2Fbcm57xx.asm Stub for BCM57xx driver]<br />
<br />
==== SD Host Controller ====<br />
'''Summary:''' Add support for SD Host Controller<br />
<br />
'''Details:'''<br />
* Primary goal: Write driver for particular controller<br />
* Additional goal: Test and update driver to work for all controllers<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [https://www.sdcard.org/downloads/pls/simplified_specs/index.html SD specifications]<br />
<br />
<br />
==== USB devices ====<br />
'''Summary:''' Add USB drivers for the new USB stack (webcams, gamepads, joysticks, tablets, etc.)<br />
<br />
'''Details:'''<br />
* Primary goal: Write USB driver for currently unsupported device (you should have one)<br />
* Additional goal: Adopt code to work with all devices of the same class<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://en.wikipedia.org/wiki/USB#Device_classes USB device classes]<br />
<br />
==== Filesystem support ====<br />
'''Summary:''' Improve filesystem support in KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Update/fix read-write support for EXT2/3/4 filesystems (partially done)<br />
* Alternative goal: Add write support for the NTFS filesystem (read-only support already exists)<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Ffs%2F&#a0aa5cede7308db82d4bae78266ed8462 Filesystems in KolibriOS]<br />
<br />
==== Wi-Fi ====<br />
'''Summary:''' Add a Wi-Fi driver<br />
<br />
'''Details:'''<br />
* Description: <br />
* Language: Assembler/FASM<br />
* Skill level: intermediate<br />
* Importance: Medium<br />
* Mentor: ?<br />
<br />
=== System wide tasks ===<br />
These tasks comprise both user space and kernel space work. Some developers consider them as of most importance for KolibriOS.<br><br />
Architecture and algorithm design skills are highly desirable.<br />
<br />
==== Kolibri-A ====<br />
'''Summary:''' Porting Kolibri-A to Intel Atom<br />
<br />
'''Details:'''<br />
* Primary goal: Porting to Intel Atom and sync with the trunk<br />
* Language: Assembler/FASM<br />
* Skill level: advanced<br />
* Importance: Medium<br />
* Mentor: art_zh<br />
* Links:<br />
<br />
==== Widget toolkit ====<br />
'''Summary:''' Extend Box_lib (a set of separate widgets) to create a full-featured widget toolkit<br />
<br />
'''Details:'''<br />
* Primary goal: Design architecture and implement focus handling, callbacks and other core ideas<br />
* Additional goal: Integrate box_lib widgets to this framework<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Importance: Vital<br />
* Mentor: dunkaist<br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
<br />
==== Unit testing framework ====<br />
'''Summary:''' Design and implement an unit testing framework, write tests for kernel functions<br />
<br />
'''Details:'''<br />
* Primary goal: Design and implement a framework, write tests for kernel functions<br />
* Additional goal: Write tests for system libraries (libio, libini)<br />
* Language: Assembler/FASM (preferrable), any other working in KolibriOS<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks list of unit testing frameworks]<br />
<br />
==== QR-code in boot log ====<br />
'''Summary:''' Add a [http://en.wikipedia.org/wiki/QR_code QR-code] (containing the debug log) at the end of boot process<br />
<br />
[[File:QR-code.png]]<br />
<br />
'''Details:'''<br />
* Description: Sometimes KolibriOS cannot boot on a certain hardware configuration (gets stuck during or after boot process). In such cases, we request the user having this problem to enable debug log at boot time, take a photo of the screen and show it to us (in the forum). However, sometimes taking a good quality photo can be quite challenging (bad camera, shaking hands etc.) and the attached photo is so blurry to the point the debug log cannot be even read. The idea suggested hereby is to simultaneously encode the debug log which is outputted on the screen, to the form of QR-code, and [http://wiki.kolibrios.org/wiki/File:QR-code.png show the resulting QR-code on empty space on the screen]. In such way, any user possessing a smartphone with a camera and QR-code scanner, could scan the QR-code and submit the encoded text directly on our forums (without having a need to take a photo), and our developers, in turn, would get the debug log text immediately and won't have to unscramble a blurry photo.<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Mentor: dunkaist<br />
<br />
==== C layer for KolibriOS ====<br />
'''Summary:''' Building a C layer for KolibriOS, so that we can get more developers and port more code to KolibriOS more easily<br />
<br />
'''Details:'''<br />
* Description: <br />
* Language: C<br />
* Skill level: intermediate<br />
* Mentor: Ashmew2<br />
<br />
<!--<br />
=== Open Ideas (without appointed mentor) ===<br />
<br />
==== One core for graphics ====<br />
'''Summary:''' On multi-core systems, dedicate one core for graphics rendering ONLY<br />
<br />
'''Details:'''<br />
* Goal: Move graphics subsystem to a single, dedicated core if multicore machine detected<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Serge(?)<br />
<br />
==== Partition editor ====<br />
'''Summary:''' Add a partition/HDD editor utility<br />
<br />
'''Details:'''<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Mario(?)<br />
<br />
==== Rewrite "Table" in Assembler ====<br />
'''Summary:''' Rewrite a great Kolibri spreadsheet application [[Table]] from C++ to FASM<br />
<br />
'''Details:'''<br />
* Goal: Port Table (C++) to Assembler/FASM<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Mentor: ???<br />
<br />
==== Kernel vulnerabilities ====<br />
'''Summary:''' Find and fix as many kernel vulnerabilities as you can<br />
<br />
'''Details:'''<br />
* Goal: Check the list of kernel API functions versus their actual implementation in KolibriOS kernel (for example, check that the function doesn't destroy register values if it declares in description that it doesn't). If you find a vulnerability, try to fix it so that it works according to API. If you cannot fix it yourself, document the vulnerability and describe the problem.<br />
* Language: Assembler/FASM<br />
* Skill level: Intermediate/Expert<br />
* Mentor: Serge '''(Is not always available to answer questions, so select this task only if you can work fairly independently.)'''<br />
<br />
==== Web browser in FASM ====<br />
'''Summary:''' Write a proper HTML web browser for KolibriOS<br />
<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Mentor: SoUrcerer<br />
<br />
<br />
==== Printing/scanning API ====<br />
'''Summary:''' Add a printing and scanning API and drivers.<br />
<br />
'''Details:'''<br />
* Primary goal: Design and code infrastructure for printing and scanning devices.<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: SoUrcerer<br />
--><br />
<br />
[[Category:Misc]]</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Google_Summer_of_Code_2016&diff=5183Google Summer of Code 20162016-01-19T13:34:09Z<p>Punk Joker: /* Web browser: WebView */</p>
<hr />
<div><!-- [[Image:GSoC2015.png|right]] --><br />
== Introduction ==<br />
KolibriOS is going to apply as a mentoring organization for [https://developers.google.com/open-source/gsoc/ Google Summer of Code 2016]. This page contains our ideas list and some additional information for students and mentors.<br />
<br />
We have previously participated as a Mentoring Organization in [http://www.google-melange.com/gsoc/homepage/google/gsoc2014 Google Summer of Code 2014]. The [[Google Summer of Code 2014|ideas page for 2014]] is available for your reference. Our organization page for GSoC 2014 and successfully completed projects for that year can be accessed [https://www.google-melange.com/gsoc/org2/google/gsoc2014/kolibrios via this link]. To our great delight, both successful students of GSoC2014 stayed with the project and continue contributing to KolibriOS voluntarily in their spare time.<br />
<br />
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.<br />
<br />
== Student Requirements ==<br />
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] (25 March 19:00 UTC).'''<br><br><br />
In addition, students need to answer the following questions when applying:<br />
# Full Name (First + Last Name).<br />
# E-mail address.<br />
# Phone (home or mobile).<br />
# Another phone '''for emergency cases''' (if we cannot contact you) - parents, boy/girlfriend, husband/wife etc.<br />
# Nickname you plan to use on our forums, SVN repository or IRC chat.<br />
# Age.<br />
# Country + city of residence.<br />
# Human languages you speak (state all languages and knowledge level - basic/intermediate/expert/mother tongue).<br />
# Name of college or university you are accepted into or enrolled in + link to their website.<br />
# Name of program (or faculty, or department) in that college/university you are accepted into or enrolled in.<br />
# Your current timezone in UTC/GMT terms (for example, Paris is UTC/GMT +1 hours right now).<br />
# Have you been involved with any open-source project in the past? If yes, which one, and what have you done for that project?<br />
# 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.<br />
# The task you are willing to work on from our list of Summer of Code 2016 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.<br />
# 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.''<br />
<br />
== Organization ==<br />
<br />
You can find the organizers on the IRC channel (#kolibrios @ irc.freenode.net) or at our forum: http://board.kolibrios.org/<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
| vacant<br />
| vacant<br />
|Organization Administrator<br />
|-<br />
|Jeffrey Amelynck<br />
|[[User:Hidnplayr|hidnplayr]]<br />
|Mentor, Backup Administrator<br />
|-<br />
|Kiril Lipatov<br />
|[[User:Punk Joker|Leency]]<br />
|Mentor<br />
|-<br />
|Artem Zherdev<br />
|[[User:art_zh|art_zh]]<br />
|Mentor<br />
|-<br />
|Ashish Gupta<br />
|[[User:Ashmew2|Ashmew2]]<br />
|Mentor<br />
|-<br />
|}<br />
We have discussed "Google Summer of Code 2016" application with all active members of the KolibriOS Project Team, and selected only those 3 (three) people who have both the knowledge, the dedication, and the 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.<br />
<br />
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 GSoC2014.<br />
<br />
== Ideas for Google Summer of Code 2016 ==<br />
The below list contains ideas suggested by KolibriOS team members. '''It is neither complete nor final.'''<br><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.<br />
<br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Required Skill Level<br />
! Importance for KolibriOS<br />
! Programming Language<br />
! Mentor<br />
|-<br />
| [[#XDXF_dictionary|XDXF dictionary]]<br />
| Application<br />
| Basic<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#CPUID_tool|CPUID tool]]<br />
| Application<br />
| Beginner<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#FTP_client|FTP client]]<br />
| Application<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Torrent_client|Torrent client]]<br />
| Application<br />
| Advanced<br />
| High<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#XMPP.2FJabber_client|XMPP/Jabber client]]<br />
| Application<br />
| Intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| dunkaist/hidnplayr<br />
|-<br />
| [[#Music_player|Music player]]<br />
| Application<br />
| Advanced<br />
| Medium<br />
| Assembler(FASM)/C/C++<br />
| dunkaist/hidnplayr<br />
|-<br />
| [[#Web_browser:_WebView|Web browser: WebView]]<br />
| Application<br />
| intermediate<br />
| Standard<br />
| [http://www.dev0.de/cmm/indexe.htm Sphinx C--]<br />
| Leency<br />
|-<br />
| [[#Ethernet_driver.28s.29|Ethernet driver(s)]]<br />
| Driver<br />
| Advanced<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#SD_Host_Controller|SD Host Controller driver]]<br />
| Driver<br />
| Advanced<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#USB_devices|USB device drivers]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Filesystem_support|Filesystem support]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#Kolibri-A|Kolibri-A]]<br />
| Kernel<br />
| intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| art_zh<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide task<br />
| intermediate<br />
| Standard<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#Unit_testing_framework|Unit testing framework]]<br />
| System wide task<br />
| intermediate<br />
| High<br />
| Any<br />
| dunkaist<br />
|-<br />
| [[#QR-code_in_boot_log|QR-code in boot log]]<br />
| Kernel/Library<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#Wi-Fi|Wi-Fi]]<br />
| Driver<br />
| intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| ?<br />
|-<br />
| [[#C layer for KolibriOS|C layer for KolibriOS]]<br />
| Library<br />
| intermediate<br />
| Medium<br />
| C<br />
| Ashmew2<br />
|}<br />
Explanation of required skill level:<br />
* Beginner: No knowledge at all of the topic,<br />
* Basic: A very basic knowledge of the topic but no professional usage,<br />
* Intermediate: A basic knowledge of the topic but no regular professional usage,<br />
* Advanced: A good knowledge of the topic and a regular professional usage,<br />
* Expert: a perfect knowledge of the topic and a daily professional usage.<br />
<br />
Explanation of importance for the project:<br />
* Low: For sure it doesn't hurt to implement, but if nobody does it, no one will even notice.<br />
* Medium: Nice-to-have feature. Will improve everyday life of users and developers.<br />
* High: This feature is needed for the project to start being adopted by masses.<br />
* Critical: This functionality is vital for the project to become useful.<br />
<br />
=== Applications ===<br />
These are userspace tasks. They often require only basic knowledge of algorithms and data structures.<br><br />
No specific experience is required but welcome.<br />
<br />
==== XDXF dictionary ====<br />
'''Summary:''' Write dictionary application with support of XDXF (XML Dictionary eXchange Format)<br />
<br />
'''Details:'''<br />
* Primary goal: Write library and corresponding dictionary application<br />
* Additional goal: Support of other dictioinary formats<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate<br />
* Importance: Standard<br />
* Mentor: dunkaist<br />
* Links: [http://tibleiz.net/asm-xml/ fasm xml library], [https://en.wikipedia.org/wiki/XDXF XDXF format]<br />
<br />
<br />
==== CPUID tool ====<br />
'''Summary:''' Update existing CPUID application to be aware of new CPUs and their features<br />
<br />
'''Details:'''<br />
* Primary goal: Write code to detect and report new CPUs and features + size detection for caches<br />
* Additional goal: Refactor code as to use system libraries (libimg, box_lib, etc.)<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: Standard<br />
* Mentor: dunkaist / Wildwest<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fprograms%2Fsystem%2Fcpuid%2Ftrunk%2F&#aec5d374b78ae8f08110b3327c3ba5f56 CPUID program], [http://bochs.sourceforge.net/techspec/24161821.pdf Intel cpuid], [http://support.amd.com/TechDocs/25481.pdf AMD cpuid]<br />
<br />
<br />
==== FTP client ====<br />
'''Summary:''' Create a GUI based FTP client or add FTP support to one of the existing file managers<br />
<br />
'''Details:'''<br />
* Primary goal: FTP access (download/upload/etc.)<br />
* Additional goal: Create an FTP client library<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [https://www.ietf.org/rfc/rfc959.txt File Transfer Protocol (RFC959)], [http://board.kolibrios.org/viewtopic.php?f=40&t=2360 CLI FTP client (demo)]<br />
<br />
==== Torrent client ====<br />
'''Summary:''' Write a (bit-)torrent client for KolibriOS, or port an existing one<br />
<br />
'''Details:'''<br />
* Primary goal: Implement a torrent client similar to [http://www.utorrent.com/ µTorrent Free edition]<br />
* Alternative goal (less preferred, but still possible): Port an existing torrent client to KolibriOS<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://www.bittorrent.org Information about the protocol]<br />
<br />
==== XMPP/Jabber client ====<br />
'''Summary:''' Write a XMPP/Jabber library and client for KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Write basic xmpp library/client<br />
* Additional goal: Implement some xmpp extentions<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist/hidnplayr<br />
* 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]<br />
<br />
==== Music player ====<br />
'''Summary:''' Improve the current music player in Kolibri<br />
<br />
'''Details:'''<br />
* Primary goal: Rewrite the current music player (ac97snd), in FASM, and improve its functionality<br />
: * Support for file formats wav, mp3 and xm (using available external libraries)<br />
: * Support for playlists (m3u)<br />
: * A time display<br />
* Additional goal:<br />
: * Use of system wide hotkeys to control player<br />
: * Support for metadata (ID3, ...)<br />
: * More codecs (flac, vorbis, ...)<br />
: * Audio indication (oscillograph, bar graph, ...)<br />
: * Show cover art from files or album folder<br />
: * Fade in/out and/or crossover<br />
: * Streaming radio (at least mp3 over http stream)<br />
: * Skins<br />
: * Media library<br />
* Language: Assembler/FASM (C/C++ to port codec)<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: hidnplayr / dunkaist<br />
* Links: [http://board.kolibrios.org/viewtopic.php?f=38&t=1596 AC97SND (MP3 player in C)], [http://board.kolibrios.org/viewtopic.php?f=28&t=317 Sound drivers and architecture], [http://board.kolibrios.org/viewtopic.php?f=38&t=3003 Flac decoder],[http://board.kolibrios.org/viewtopic.php?f=38&t=2220 Minimp3 (minimalistic mp3 decoding library)], [http://board.kolibrios.org/viewtopic.php?f=38&t=161 SuperMP3 (IDv3 tag demo)]<br />
<br />
==== Web browser: WebView ====<br />
'''Summary:''' Improve existing text-only web browser WebView - add more functionality and compatibility<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: [http://www.dev0.de/cmm/indexe.htm Sphinx C--]. May require writing a few lines in FASM though<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: Leency<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
* [http://board.kolibrios.org/viewtopic.php?f=40&t=1075 Work done so far on WebView (mostly in Russian)]. If you don't know Russian, you can read [http://translate.google.com/translate?hl=en&sl=ru&tl=en&u=http%3A%2F%2Fboard.kolibrios.org%2Fviewtopic.php%3Ff%3D40%26t%3D1075 English translation using Google-Translate]<br />
<br />
=== Drivers ===<br />
Writing drivers is about new hardware and filesystems.<br><br />
Knowledge of specifications and previous experience are ''not'' required but surely desirable.<br />
<br />
==== Ethernet driver(s) ====<br />
'''Summary:''' Write an Ethernet driver<br />
<br />
'''Details:'''<br />
* Primary goal: Support for popular Broadcom, Atheros or Marvell Yukon ethernet cards<br />
* Additional goal: A second driver for another card family, PPPoE support in kernel, ...<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: Medium<br />
* Mentor: hidnplayr<br />
* Links: [https://www.broadcom.com/collateral/pg/57XX-PG105-R.pdf BCM57xx programmers guide], [[Writing network drivers for KolibriOS]], [https://github.com/UDOOboard/U-Boot_Unico/blob/master/drivers/net/bcm570x.c BCM570x driver for u-boot (in C)], [http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fdrivers%2Funfinished%2Fbcm57xx.asm Stub for BCM57xx driver]<br />
<br />
==== SD Host Controller ====<br />
'''Summary:''' Add support for SD Host Controller<br />
<br />
'''Details:'''<br />
* Primary goal: Write driver for particular controller<br />
* Additional goal: Test and update driver to work for all controllers<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [https://www.sdcard.org/downloads/pls/simplified_specs/index.html SD specifications]<br />
<br />
<br />
==== USB devices ====<br />
'''Summary:''' Add USB drivers for the new USB stack (webcams, gamepads, joysticks, tablets, etc.)<br />
<br />
'''Details:'''<br />
* Primary goal: Write USB driver for currently unsupported device (you should have one)<br />
* Additional goal: Adopt code to work with all devices of the same class<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://en.wikipedia.org/wiki/USB#Device_classes USB device classes]<br />
<br />
==== Filesystem support ====<br />
'''Summary:''' Improve filesystem support in KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Update/fix read-write support for EXT2/3/4 filesystems (partially done)<br />
* Alternative goal: Add write support for the NTFS filesystem (read-only support already exists)<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Ffs%2F&#a0aa5cede7308db82d4bae78266ed8462 Filesystems in KolibriOS]<br />
<br />
==== Wi-Fi ====<br />
'''Summary:''' Add a Wi-Fi driver<br />
<br />
'''Details:'''<br />
* Description: <br />
* Language: Assembler/FASM<br />
* Skill level: intermediate<br />
* Importance: Medium<br />
* Mentor: ?<br />
<br />
=== System wide tasks ===<br />
These tasks comprise both user space and kernel space work. Some developers consider them as of most importance for KolibriOS.<br><br />
Architecture and algorithm design skills are highly desirable.<br />
<br />
==== Kolibri-A ====<br />
'''Summary:''' Porting Kolibri-A to Intel Atom<br />
<br />
'''Details:'''<br />
* Primary goal: Porting to Intel Atom and sync with the trunk<br />
* Language: Assembler/FASM<br />
* Skill level: advanced<br />
* Importance: Medium<br />
* Mentor: art_zh<br />
* Links:<br />
<br />
==== Widget toolkit ====<br />
'''Summary:''' Extend Box_lib (a set of separate widgets) to create a full-featured widget toolkit<br />
<br />
'''Details:'''<br />
* Primary goal: Design architecture and implement focus handling, callbacks and other core ideas<br />
* Additional goal: Integrate box_lib widgets to this framework<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Importance: Vital<br />
* Mentor: dunkaist<br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
<br />
==== Unit testing framework ====<br />
'''Summary:''' Design and implement an unit testing framework, write tests for kernel functions<br />
<br />
'''Details:'''<br />
* Primary goal: Design and implement a framework, write tests for kernel functions<br />
* Additional goal: Write tests for system libraries (libio, libini)<br />
* Language: Assembler/FASM (preferrable), any other working in KolibriOS<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks list of unit testing frameworks]<br />
<br />
==== QR-code in boot log ====<br />
'''Summary:''' Add a [http://en.wikipedia.org/wiki/QR_code QR-code] (containing the debug log) at the end of boot process<br />
<br />
[[File:QR-code.png]]<br />
<br />
'''Details:'''<br />
* Description: Sometimes KolibriOS cannot boot on a certain hardware configuration (gets stuck during or after boot process). In such cases, we request the user having this problem to enable debug log at boot time, take a photo of the screen and show it to us (in the forum). However, sometimes taking a good quality photo can be quite challenging (bad camera, shaking hands etc.) and the attached photo is so blurry to the point the debug log cannot be even read. The idea suggested hereby is to simultaneously encode the debug log which is outputted on the screen, to the form of QR-code, and [http://wiki.kolibrios.org/wiki/File:QR-code.png show the resulting QR-code on empty space on the screen]. In such way, any user possessing a smartphone with a camera and QR-code scanner, could scan the QR-code and submit the encoded text directly on our forums (without having a need to take a photo), and our developers, in turn, would get the debug log text immediately and won't have to unscramble a blurry photo.<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Mentor: dunkaist<br />
<br />
==== C layer for KolibriOS ====<br />
'''Summary:''' Building a C layer for KolibriOS, so that we can get more developers and port more code to KolibriOS more easily<br />
<br />
'''Details:'''<br />
* Description: <br />
* Language: C<br />
* Skill level: intermediate<br />
* Mentor: Ashmew2<br />
<br />
<!--<br />
=== Open Ideas (without appointed mentor) ===<br />
<br />
==== One core for graphics ====<br />
'''Summary:''' On multi-core systems, dedicate one core for graphics rendering ONLY<br />
<br />
'''Details:'''<br />
* Goal: Move graphics subsystem to a single, dedicated core if multicore machine detected<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Serge(?)<br />
<br />
==== Partition editor ====<br />
'''Summary:''' Add a partition/HDD editor utility<br />
<br />
'''Details:'''<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Mario(?)<br />
<br />
==== Rewrite "Table" in Assembler ====<br />
'''Summary:''' Rewrite a great Kolibri spreadsheet application [[Table]] from C++ to FASM<br />
<br />
'''Details:'''<br />
* Goal: Port Table (C++) to Assembler/FASM<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Mentor: ???<br />
<br />
==== Kernel vulnerabilities ====<br />
'''Summary:''' Find and fix as many kernel vulnerabilities as you can<br />
<br />
'''Details:'''<br />
* Goal: Check the list of kernel API functions versus their actual implementation in KolibriOS kernel (for example, check that the function doesn't destroy register values if it declares in description that it doesn't). If you find a vulnerability, try to fix it so that it works according to API. If you cannot fix it yourself, document the vulnerability and describe the problem.<br />
* Language: Assembler/FASM<br />
* Skill level: Intermediate/Expert<br />
* Mentor: Serge '''(Is not always available to answer questions, so select this task only if you can work fairly independently.)'''<br />
<br />
==== Web browser in FASM ====<br />
'''Summary:''' Write a proper HTML web browser for KolibriOS<br />
<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Mentor: SoUrcerer<br />
<br />
<br />
==== Printing/scanning API ====<br />
'''Summary:''' Add a printing and scanning API and drivers.<br />
<br />
'''Details:'''<br />
* Primary goal: Design and code infrastructure for printing and scanning devices.<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: SoUrcerer<br />
--><br />
<br />
[[Category:Misc]]</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Google_Summer_of_Code_2016&diff=5182Google Summer of Code 20162016-01-19T13:33:05Z<p>Punk Joker: /* Kolibri-A */</p>
<hr />
<div><!-- [[Image:GSoC2015.png|right]] --><br />
== Introduction ==<br />
KolibriOS is going to apply as a mentoring organization for [https://developers.google.com/open-source/gsoc/ Google Summer of Code 2016]. This page contains our ideas list and some additional information for students and mentors.<br />
<br />
We have previously participated as a Mentoring Organization in [http://www.google-melange.com/gsoc/homepage/google/gsoc2014 Google Summer of Code 2014]. The [[Google Summer of Code 2014|ideas page for 2014]] is available for your reference. Our organization page for GSoC 2014 and successfully completed projects for that year can be accessed [https://www.google-melange.com/gsoc/org2/google/gsoc2014/kolibrios via this link]. To our great delight, both successful students of GSoC2014 stayed with the project and continue contributing to KolibriOS voluntarily in their spare time.<br />
<br />
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.<br />
<br />
== Student Requirements ==<br />
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] (25 March 19:00 UTC).'''<br><br><br />
In addition, students need to answer the following questions when applying:<br />
# Full Name (First + Last Name).<br />
# E-mail address.<br />
# Phone (home or mobile).<br />
# Another phone '''for emergency cases''' (if we cannot contact you) - parents, boy/girlfriend, husband/wife etc.<br />
# Nickname you plan to use on our forums, SVN repository or IRC chat.<br />
# Age.<br />
# Country + city of residence.<br />
# Human languages you speak (state all languages and knowledge level - basic/intermediate/expert/mother tongue).<br />
# Name of college or university you are accepted into or enrolled in + link to their website.<br />
# Name of program (or faculty, or department) in that college/university you are accepted into or enrolled in.<br />
# Your current timezone in UTC/GMT terms (for example, Paris is UTC/GMT +1 hours right now).<br />
# Have you been involved with any open-source project in the past? If yes, which one, and what have you done for that project?<br />
# 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.<br />
# The task you are willing to work on from our list of Summer of Code 2016 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.<br />
# 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.''<br />
<br />
== Organization ==<br />
<br />
You can find the organizers on the IRC channel (#kolibrios @ irc.freenode.net) or at our forum: http://board.kolibrios.org/<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
| vacant<br />
| vacant<br />
|Organization Administrator<br />
|-<br />
|Jeffrey Amelynck<br />
|[[User:Hidnplayr|hidnplayr]]<br />
|Mentor, Backup Administrator<br />
|-<br />
|Kiril Lipatov<br />
|[[User:Punk Joker|Leency]]<br />
|Mentor<br />
|-<br />
|Artem Zherdev<br />
|[[User:art_zh|art_zh]]<br />
|Mentor<br />
|-<br />
|Ashish Gupta<br />
|[[User:Ashmew2|Ashmew2]]<br />
|Mentor<br />
|-<br />
|}<br />
We have discussed "Google Summer of Code 2016" application with all active members of the KolibriOS Project Team, and selected only those 3 (three) people who have both the knowledge, the dedication, and the 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.<br />
<br />
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 GSoC2014.<br />
<br />
== Ideas for Google Summer of Code 2016 ==<br />
The below list contains ideas suggested by KolibriOS team members. '''It is neither complete nor final.'''<br><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.<br />
<br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Required Skill Level<br />
! Importance for KolibriOS<br />
! Programming Language<br />
! Mentor<br />
|-<br />
| [[#XDXF_dictionary|XDXF dictionary]]<br />
| Application<br />
| Basic<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#CPUID_tool|CPUID tool]]<br />
| Application<br />
| Beginner<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#FTP_client|FTP client]]<br />
| Application<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Torrent_client|Torrent client]]<br />
| Application<br />
| Advanced<br />
| High<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#XMPP.2FJabber_client|XMPP/Jabber client]]<br />
| Application<br />
| Intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| dunkaist/hidnplayr<br />
|-<br />
| [[#Music_player|Music player]]<br />
| Application<br />
| Advanced<br />
| Medium<br />
| Assembler(FASM)/C/C++<br />
| dunkaist/hidnplayr<br />
|-<br />
| [[#Web_browser:_WebView|Web browser: WebView]]<br />
| Application<br />
| intermediate<br />
| Standard<br />
| [http://www.dev0.de/cmm/indexe.htm Sphinx C--]<br />
| Leency<br />
|-<br />
| [[#Ethernet_driver.28s.29|Ethernet driver(s)]]<br />
| Driver<br />
| Advanced<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#SD_Host_Controller|SD Host Controller driver]]<br />
| Driver<br />
| Advanced<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#USB_devices|USB device drivers]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Filesystem_support|Filesystem support]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#Kolibri-A|Kolibri-A]]<br />
| Kernel<br />
| intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| art_zh<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide task<br />
| intermediate<br />
| Standard<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#Unit_testing_framework|Unit testing framework]]<br />
| System wide task<br />
| intermediate<br />
| High<br />
| Any<br />
| dunkaist<br />
|-<br />
| [[#QR-code_in_boot_log|QR-code in boot log]]<br />
| Kernel/Library<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#Wi-Fi|Wi-Fi]]<br />
| Driver<br />
| intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| ?<br />
|-<br />
| [[#C layer for KolibriOS|C layer for KolibriOS]]<br />
| Library<br />
| intermediate<br />
| Medium<br />
| C<br />
| Ashmew2<br />
|}<br />
Explanation of required skill level:<br />
* Beginner: No knowledge at all of the topic,<br />
* Basic: A very basic knowledge of the topic but no professional usage,<br />
* Intermediate: A basic knowledge of the topic but no regular professional usage,<br />
* Advanced: A good knowledge of the topic and a regular professional usage,<br />
* Expert: a perfect knowledge of the topic and a daily professional usage.<br />
<br />
Explanation of importance for the project:<br />
* Low: For sure it doesn't hurt to implement, but if nobody does it, no one will even notice.<br />
* Medium: Nice-to-have feature. Will improve everyday life of users and developers.<br />
* High: This feature is needed for the project to start being adopted by masses.<br />
* Critical: This functionality is vital for the project to become useful.<br />
<br />
=== Applications ===<br />
These are userspace tasks. They often require only basic knowledge of algorithms and data structures.<br><br />
No specific experience is required but welcome.<br />
<br />
==== XDXF dictionary ====<br />
'''Summary:''' Write dictionary application with support of XDXF (XML Dictionary eXchange Format)<br />
<br />
'''Details:'''<br />
* Primary goal: Write library and corresponding dictionary application<br />
* Additional goal: Support of other dictioinary formats<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate<br />
* Importance: Standard<br />
* Mentor: dunkaist<br />
* Links: [http://tibleiz.net/asm-xml/ fasm xml library], [https://en.wikipedia.org/wiki/XDXF XDXF format]<br />
<br />
<br />
==== CPUID tool ====<br />
'''Summary:''' Update existing CPUID application to be aware of new CPUs and their features<br />
<br />
'''Details:'''<br />
* Primary goal: Write code to detect and report new CPUs and features + size detection for caches<br />
* Additional goal: Refactor code as to use system libraries (libimg, box_lib, etc.)<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: Standard<br />
* Mentor: dunkaist / Wildwest<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fprograms%2Fsystem%2Fcpuid%2Ftrunk%2F&#aec5d374b78ae8f08110b3327c3ba5f56 CPUID program], [http://bochs.sourceforge.net/techspec/24161821.pdf Intel cpuid], [http://support.amd.com/TechDocs/25481.pdf AMD cpuid]<br />
<br />
<br />
==== FTP client ====<br />
'''Summary:''' Create a GUI based FTP client or add FTP support to one of the existing file managers<br />
<br />
'''Details:'''<br />
* Primary goal: FTP access (download/upload/etc.)<br />
* Additional goal: Create an FTP client library<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [https://www.ietf.org/rfc/rfc959.txt File Transfer Protocol (RFC959)], [http://board.kolibrios.org/viewtopic.php?f=40&t=2360 CLI FTP client (demo)]<br />
<br />
==== Torrent client ====<br />
'''Summary:''' Write a (bit-)torrent client for KolibriOS, or port an existing one<br />
<br />
'''Details:'''<br />
* Primary goal: Implement a torrent client similar to [http://www.utorrent.com/ µTorrent Free edition]<br />
* Alternative goal (less preferred, but still possible): Port an existing torrent client to KolibriOS<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://www.bittorrent.org Information about the protocol]<br />
<br />
==== XMPP/Jabber client ====<br />
'''Summary:''' Write a XMPP/Jabber library and client for KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Write basic xmpp library/client<br />
* Additional goal: Implement some xmpp extentions<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist/hidnplayr<br />
* 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]<br />
<br />
==== Music player ====<br />
'''Summary:''' Improve the current music player in Kolibri<br />
<br />
'''Details:'''<br />
* Primary goal: Rewrite the current music player (ac97snd), in FASM, and improve its functionality<br />
: * Support for file formats wav, mp3 and xm (using available external libraries)<br />
: * Support for playlists (m3u)<br />
: * A time display<br />
* Additional goal:<br />
: * Use of system wide hotkeys to control player<br />
: * Support for metadata (ID3, ...)<br />
: * More codecs (flac, vorbis, ...)<br />
: * Audio indication (oscillograph, bar graph, ...)<br />
: * Show cover art from files or album folder<br />
: * Fade in/out and/or crossover<br />
: * Streaming radio (at least mp3 over http stream)<br />
: * Skins<br />
: * Media library<br />
* Language: Assembler/FASM (C/C++ to port codec)<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: hidnplayr / dunkaist<br />
* Links: [http://board.kolibrios.org/viewtopic.php?f=38&t=1596 AC97SND (MP3 player in C)], [http://board.kolibrios.org/viewtopic.php?f=28&t=317 Sound drivers and architecture], [http://board.kolibrios.org/viewtopic.php?f=38&t=3003 Flac decoder],[http://board.kolibrios.org/viewtopic.php?f=38&t=2220 Minimp3 (minimalistic mp3 decoding library)], [http://board.kolibrios.org/viewtopic.php?f=38&t=161 SuperMP3 (IDv3 tag demo)]<br />
<br />
==== Web browser: WebView ====<br />
'''Summary:''' Improve existing text-only web browser WebView - add more functionality and compatibility<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: [http://www.dev0.de/cmm/indexe.htm Sphinx C--]. May require writing a few lines in FASM though<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: punk_joker<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
* [http://board.kolibrios.org/viewtopic.php?f=40&t=1075 Work done so far on WebView (mostly in Russian)]. If you don't know Russian, you can read [http://translate.google.com/translate?hl=en&sl=ru&tl=en&u=http%3A%2F%2Fboard.kolibrios.org%2Fviewtopic.php%3Ff%3D40%26t%3D1075 English translation using Google-Translate]<br />
<br />
=== Drivers ===<br />
Writing drivers is about new hardware and filesystems.<br><br />
Knowledge of specifications and previous experience are ''not'' required but surely desirable.<br />
<br />
==== Ethernet driver(s) ====<br />
'''Summary:''' Write an Ethernet driver<br />
<br />
'''Details:'''<br />
* Primary goal: Support for popular Broadcom, Atheros or Marvell Yukon ethernet cards<br />
* Additional goal: A second driver for another card family, PPPoE support in kernel, ...<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: Medium<br />
* Mentor: hidnplayr<br />
* Links: [https://www.broadcom.com/collateral/pg/57XX-PG105-R.pdf BCM57xx programmers guide], [[Writing network drivers for KolibriOS]], [https://github.com/UDOOboard/U-Boot_Unico/blob/master/drivers/net/bcm570x.c BCM570x driver for u-boot (in C)], [http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fdrivers%2Funfinished%2Fbcm57xx.asm Stub for BCM57xx driver]<br />
<br />
==== SD Host Controller ====<br />
'''Summary:''' Add support for SD Host Controller<br />
<br />
'''Details:'''<br />
* Primary goal: Write driver for particular controller<br />
* Additional goal: Test and update driver to work for all controllers<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [https://www.sdcard.org/downloads/pls/simplified_specs/index.html SD specifications]<br />
<br />
<br />
==== USB devices ====<br />
'''Summary:''' Add USB drivers for the new USB stack (webcams, gamepads, joysticks, tablets, etc.)<br />
<br />
'''Details:'''<br />
* Primary goal: Write USB driver for currently unsupported device (you should have one)<br />
* Additional goal: Adopt code to work with all devices of the same class<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://en.wikipedia.org/wiki/USB#Device_classes USB device classes]<br />
<br />
==== Filesystem support ====<br />
'''Summary:''' Improve filesystem support in KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Update/fix read-write support for EXT2/3/4 filesystems (partially done)<br />
* Alternative goal: Add write support for the NTFS filesystem (read-only support already exists)<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Ffs%2F&#a0aa5cede7308db82d4bae78266ed8462 Filesystems in KolibriOS]<br />
<br />
==== Wi-Fi ====<br />
'''Summary:''' Add a Wi-Fi driver<br />
<br />
'''Details:'''<br />
* Description: <br />
* Language: Assembler/FASM<br />
* Skill level: intermediate<br />
* Importance: Medium<br />
* Mentor: ?<br />
<br />
=== System wide tasks ===<br />
These tasks comprise both user space and kernel space work. Some developers consider them as of most importance for KolibriOS.<br><br />
Architecture and algorithm design skills are highly desirable.<br />
<br />
==== Kolibri-A ====<br />
'''Summary:''' Porting Kolibri-A to Intel Atom<br />
<br />
'''Details:'''<br />
* Primary goal: Porting to Intel Atom and sync with the trunk<br />
* Language: Assembler/FASM<br />
* Skill level: advanced<br />
* Importance: Medium<br />
* Mentor: art_zh<br />
* Links:<br />
<br />
==== Widget toolkit ====<br />
'''Summary:''' Extend Box_lib (a set of separate widgets) to create a full-featured widget toolkit<br />
<br />
'''Details:'''<br />
* Primary goal: Design architecture and implement focus handling, callbacks and other core ideas<br />
* Additional goal: Integrate box_lib widgets to this framework<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Importance: Vital<br />
* Mentor: dunkaist<br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
<br />
==== Unit testing framework ====<br />
'''Summary:''' Design and implement an unit testing framework, write tests for kernel functions<br />
<br />
'''Details:'''<br />
* Primary goal: Design and implement a framework, write tests for kernel functions<br />
* Additional goal: Write tests for system libraries (libio, libini)<br />
* Language: Assembler/FASM (preferrable), any other working in KolibriOS<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks list of unit testing frameworks]<br />
<br />
==== QR-code in boot log ====<br />
'''Summary:''' Add a [http://en.wikipedia.org/wiki/QR_code QR-code] (containing the debug log) at the end of boot process<br />
<br />
[[File:QR-code.png]]<br />
<br />
'''Details:'''<br />
* Description: Sometimes KolibriOS cannot boot on a certain hardware configuration (gets stuck during or after boot process). In such cases, we request the user having this problem to enable debug log at boot time, take a photo of the screen and show it to us (in the forum). However, sometimes taking a good quality photo can be quite challenging (bad camera, shaking hands etc.) and the attached photo is so blurry to the point the debug log cannot be even read. The idea suggested hereby is to simultaneously encode the debug log which is outputted on the screen, to the form of QR-code, and [http://wiki.kolibrios.org/wiki/File:QR-code.png show the resulting QR-code on empty space on the screen]. In such way, any user possessing a smartphone with a camera and QR-code scanner, could scan the QR-code and submit the encoded text directly on our forums (without having a need to take a photo), and our developers, in turn, would get the debug log text immediately and won't have to unscramble a blurry photo.<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Mentor: dunkaist<br />
<br />
==== C layer for KolibriOS ====<br />
'''Summary:''' Building a C layer for KolibriOS, so that we can get more developers and port more code to KolibriOS more easily<br />
<br />
'''Details:'''<br />
* Description: <br />
* Language: C<br />
* Skill level: intermediate<br />
* Mentor: Ashmew2<br />
<br />
<!--<br />
=== Open Ideas (without appointed mentor) ===<br />
<br />
==== One core for graphics ====<br />
'''Summary:''' On multi-core systems, dedicate one core for graphics rendering ONLY<br />
<br />
'''Details:'''<br />
* Goal: Move graphics subsystem to a single, dedicated core if multicore machine detected<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Serge(?)<br />
<br />
==== Partition editor ====<br />
'''Summary:''' Add a partition/HDD editor utility<br />
<br />
'''Details:'''<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Mario(?)<br />
<br />
==== Rewrite "Table" in Assembler ====<br />
'''Summary:''' Rewrite a great Kolibri spreadsheet application [[Table]] from C++ to FASM<br />
<br />
'''Details:'''<br />
* Goal: Port Table (C++) to Assembler/FASM<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Mentor: ???<br />
<br />
==== Kernel vulnerabilities ====<br />
'''Summary:''' Find and fix as many kernel vulnerabilities as you can<br />
<br />
'''Details:'''<br />
* Goal: Check the list of kernel API functions versus their actual implementation in KolibriOS kernel (for example, check that the function doesn't destroy register values if it declares in description that it doesn't). If you find a vulnerability, try to fix it so that it works according to API. If you cannot fix it yourself, document the vulnerability and describe the problem.<br />
* Language: Assembler/FASM<br />
* Skill level: Intermediate/Expert<br />
* Mentor: Serge '''(Is not always available to answer questions, so select this task only if you can work fairly independently.)'''<br />
<br />
==== Web browser in FASM ====<br />
'''Summary:''' Write a proper HTML web browser for KolibriOS<br />
<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Mentor: SoUrcerer<br />
<br />
<br />
==== Printing/scanning API ====<br />
'''Summary:''' Add a printing and scanning API and drivers.<br />
<br />
'''Details:'''<br />
* Primary goal: Design and code infrastructure for printing and scanning devices.<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: SoUrcerer<br />
--><br />
<br />
[[Category:Misc]]</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Google_Summer_of_Code_2016&diff=5181Google Summer of Code 20162016-01-19T13:32:47Z<p>Punk Joker: /* Wi-Fi */</p>
<hr />
<div><!-- [[Image:GSoC2015.png|right]] --><br />
== Introduction ==<br />
KolibriOS is going to apply as a mentoring organization for [https://developers.google.com/open-source/gsoc/ Google Summer of Code 2016]. This page contains our ideas list and some additional information for students and mentors.<br />
<br />
We have previously participated as a Mentoring Organization in [http://www.google-melange.com/gsoc/homepage/google/gsoc2014 Google Summer of Code 2014]. The [[Google Summer of Code 2014|ideas page for 2014]] is available for your reference. Our organization page for GSoC 2014 and successfully completed projects for that year can be accessed [https://www.google-melange.com/gsoc/org2/google/gsoc2014/kolibrios via this link]. To our great delight, both successful students of GSoC2014 stayed with the project and continue contributing to KolibriOS voluntarily in their spare time.<br />
<br />
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.<br />
<br />
== Student Requirements ==<br />
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] (25 March 19:00 UTC).'''<br><br><br />
In addition, students need to answer the following questions when applying:<br />
# Full Name (First + Last Name).<br />
# E-mail address.<br />
# Phone (home or mobile).<br />
# Another phone '''for emergency cases''' (if we cannot contact you) - parents, boy/girlfriend, husband/wife etc.<br />
# Nickname you plan to use on our forums, SVN repository or IRC chat.<br />
# Age.<br />
# Country + city of residence.<br />
# Human languages you speak (state all languages and knowledge level - basic/intermediate/expert/mother tongue).<br />
# Name of college or university you are accepted into or enrolled in + link to their website.<br />
# Name of program (or faculty, or department) in that college/university you are accepted into or enrolled in.<br />
# Your current timezone in UTC/GMT terms (for example, Paris is UTC/GMT +1 hours right now).<br />
# Have you been involved with any open-source project in the past? If yes, which one, and what have you done for that project?<br />
# 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.<br />
# The task you are willing to work on from our list of Summer of Code 2016 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.<br />
# 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.''<br />
<br />
== Organization ==<br />
<br />
You can find the organizers on the IRC channel (#kolibrios @ irc.freenode.net) or at our forum: http://board.kolibrios.org/<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
| vacant<br />
| vacant<br />
|Organization Administrator<br />
|-<br />
|Jeffrey Amelynck<br />
|[[User:Hidnplayr|hidnplayr]]<br />
|Mentor, Backup Administrator<br />
|-<br />
|Kiril Lipatov<br />
|[[User:Punk Joker|Leency]]<br />
|Mentor<br />
|-<br />
|Artem Zherdev<br />
|[[User:art_zh|art_zh]]<br />
|Mentor<br />
|-<br />
|Ashish Gupta<br />
|[[User:Ashmew2|Ashmew2]]<br />
|Mentor<br />
|-<br />
|}<br />
We have discussed "Google Summer of Code 2016" application with all active members of the KolibriOS Project Team, and selected only those 3 (three) people who have both the knowledge, the dedication, and the 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.<br />
<br />
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 GSoC2014.<br />
<br />
== Ideas for Google Summer of Code 2016 ==<br />
The below list contains ideas suggested by KolibriOS team members. '''It is neither complete nor final.'''<br><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.<br />
<br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Required Skill Level<br />
! Importance for KolibriOS<br />
! Programming Language<br />
! Mentor<br />
|-<br />
| [[#XDXF_dictionary|XDXF dictionary]]<br />
| Application<br />
| Basic<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#CPUID_tool|CPUID tool]]<br />
| Application<br />
| Beginner<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#FTP_client|FTP client]]<br />
| Application<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Torrent_client|Torrent client]]<br />
| Application<br />
| Advanced<br />
| High<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#XMPP.2FJabber_client|XMPP/Jabber client]]<br />
| Application<br />
| Intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| dunkaist/hidnplayr<br />
|-<br />
| [[#Music_player|Music player]]<br />
| Application<br />
| Advanced<br />
| Medium<br />
| Assembler(FASM)/C/C++<br />
| dunkaist/hidnplayr<br />
|-<br />
| [[#Web_browser:_WebView|Web browser: WebView]]<br />
| Application<br />
| intermediate<br />
| Standard<br />
| [http://www.dev0.de/cmm/indexe.htm Sphinx C--]<br />
| Leency<br />
|-<br />
| [[#Ethernet_driver.28s.29|Ethernet driver(s)]]<br />
| Driver<br />
| Advanced<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#SD_Host_Controller|SD Host Controller driver]]<br />
| Driver<br />
| Advanced<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#USB_devices|USB device drivers]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Filesystem_support|Filesystem support]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#Kolibri-A|Kolibri-A]]<br />
| Kernel<br />
| intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| art_zh<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide task<br />
| intermediate<br />
| Standard<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#Unit_testing_framework|Unit testing framework]]<br />
| System wide task<br />
| intermediate<br />
| High<br />
| Any<br />
| dunkaist<br />
|-<br />
| [[#QR-code_in_boot_log|QR-code in boot log]]<br />
| Kernel/Library<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#Wi-Fi|Wi-Fi]]<br />
| Driver<br />
| intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| ?<br />
|-<br />
| [[#C layer for KolibriOS|C layer for KolibriOS]]<br />
| Library<br />
| intermediate<br />
| Medium<br />
| C<br />
| Ashmew2<br />
|}<br />
Explanation of required skill level:<br />
* Beginner: No knowledge at all of the topic,<br />
* Basic: A very basic knowledge of the topic but no professional usage,<br />
* Intermediate: A basic knowledge of the topic but no regular professional usage,<br />
* Advanced: A good knowledge of the topic and a regular professional usage,<br />
* Expert: a perfect knowledge of the topic and a daily professional usage.<br />
<br />
Explanation of importance for the project:<br />
* Low: For sure it doesn't hurt to implement, but if nobody does it, no one will even notice.<br />
* Medium: Nice-to-have feature. Will improve everyday life of users and developers.<br />
* High: This feature is needed for the project to start being adopted by masses.<br />
* Critical: This functionality is vital for the project to become useful.<br />
<br />
=== Applications ===<br />
These are userspace tasks. They often require only basic knowledge of algorithms and data structures.<br><br />
No specific experience is required but welcome.<br />
<br />
==== XDXF dictionary ====<br />
'''Summary:''' Write dictionary application with support of XDXF (XML Dictionary eXchange Format)<br />
<br />
'''Details:'''<br />
* Primary goal: Write library and corresponding dictionary application<br />
* Additional goal: Support of other dictioinary formats<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate<br />
* Importance: Standard<br />
* Mentor: dunkaist<br />
* Links: [http://tibleiz.net/asm-xml/ fasm xml library], [https://en.wikipedia.org/wiki/XDXF XDXF format]<br />
<br />
<br />
==== CPUID tool ====<br />
'''Summary:''' Update existing CPUID application to be aware of new CPUs and their features<br />
<br />
'''Details:'''<br />
* Primary goal: Write code to detect and report new CPUs and features + size detection for caches<br />
* Additional goal: Refactor code as to use system libraries (libimg, box_lib, etc.)<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: Standard<br />
* Mentor: dunkaist / Wildwest<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fprograms%2Fsystem%2Fcpuid%2Ftrunk%2F&#aec5d374b78ae8f08110b3327c3ba5f56 CPUID program], [http://bochs.sourceforge.net/techspec/24161821.pdf Intel cpuid], [http://support.amd.com/TechDocs/25481.pdf AMD cpuid]<br />
<br />
<br />
==== FTP client ====<br />
'''Summary:''' Create a GUI based FTP client or add FTP support to one of the existing file managers<br />
<br />
'''Details:'''<br />
* Primary goal: FTP access (download/upload/etc.)<br />
* Additional goal: Create an FTP client library<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [https://www.ietf.org/rfc/rfc959.txt File Transfer Protocol (RFC959)], [http://board.kolibrios.org/viewtopic.php?f=40&t=2360 CLI FTP client (demo)]<br />
<br />
==== Torrent client ====<br />
'''Summary:''' Write a (bit-)torrent client for KolibriOS, or port an existing one<br />
<br />
'''Details:'''<br />
* Primary goal: Implement a torrent client similar to [http://www.utorrent.com/ µTorrent Free edition]<br />
* Alternative goal (less preferred, but still possible): Port an existing torrent client to KolibriOS<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://www.bittorrent.org Information about the protocol]<br />
<br />
==== XMPP/Jabber client ====<br />
'''Summary:''' Write a XMPP/Jabber library and client for KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Write basic xmpp library/client<br />
* Additional goal: Implement some xmpp extentions<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist/hidnplayr<br />
* 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]<br />
<br />
==== Music player ====<br />
'''Summary:''' Improve the current music player in Kolibri<br />
<br />
'''Details:'''<br />
* Primary goal: Rewrite the current music player (ac97snd), in FASM, and improve its functionality<br />
: * Support for file formats wav, mp3 and xm (using available external libraries)<br />
: * Support for playlists (m3u)<br />
: * A time display<br />
* Additional goal:<br />
: * Use of system wide hotkeys to control player<br />
: * Support for metadata (ID3, ...)<br />
: * More codecs (flac, vorbis, ...)<br />
: * Audio indication (oscillograph, bar graph, ...)<br />
: * Show cover art from files or album folder<br />
: * Fade in/out and/or crossover<br />
: * Streaming radio (at least mp3 over http stream)<br />
: * Skins<br />
: * Media library<br />
* Language: Assembler/FASM (C/C++ to port codec)<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: hidnplayr / dunkaist<br />
* Links: [http://board.kolibrios.org/viewtopic.php?f=38&t=1596 AC97SND (MP3 player in C)], [http://board.kolibrios.org/viewtopic.php?f=28&t=317 Sound drivers and architecture], [http://board.kolibrios.org/viewtopic.php?f=38&t=3003 Flac decoder],[http://board.kolibrios.org/viewtopic.php?f=38&t=2220 Minimp3 (minimalistic mp3 decoding library)], [http://board.kolibrios.org/viewtopic.php?f=38&t=161 SuperMP3 (IDv3 tag demo)]<br />
<br />
==== Web browser: WebView ====<br />
'''Summary:''' Improve existing text-only web browser WebView - add more functionality and compatibility<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: [http://www.dev0.de/cmm/indexe.htm Sphinx C--]. May require writing a few lines in FASM though<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: punk_joker<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
* [http://board.kolibrios.org/viewtopic.php?f=40&t=1075 Work done so far on WebView (mostly in Russian)]. If you don't know Russian, you can read [http://translate.google.com/translate?hl=en&sl=ru&tl=en&u=http%3A%2F%2Fboard.kolibrios.org%2Fviewtopic.php%3Ff%3D40%26t%3D1075 English translation using Google-Translate]<br />
<br />
=== Drivers ===<br />
Writing drivers is about new hardware and filesystems.<br><br />
Knowledge of specifications and previous experience are ''not'' required but surely desirable.<br />
<br />
==== Ethernet driver(s) ====<br />
'''Summary:''' Write an Ethernet driver<br />
<br />
'''Details:'''<br />
* Primary goal: Support for popular Broadcom, Atheros or Marvell Yukon ethernet cards<br />
* Additional goal: A second driver for another card family, PPPoE support in kernel, ...<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: Medium<br />
* Mentor: hidnplayr<br />
* Links: [https://www.broadcom.com/collateral/pg/57XX-PG105-R.pdf BCM57xx programmers guide], [[Writing network drivers for KolibriOS]], [https://github.com/UDOOboard/U-Boot_Unico/blob/master/drivers/net/bcm570x.c BCM570x driver for u-boot (in C)], [http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fdrivers%2Funfinished%2Fbcm57xx.asm Stub for BCM57xx driver]<br />
<br />
==== SD Host Controller ====<br />
'''Summary:''' Add support for SD Host Controller<br />
<br />
'''Details:'''<br />
* Primary goal: Write driver for particular controller<br />
* Additional goal: Test and update driver to work for all controllers<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [https://www.sdcard.org/downloads/pls/simplified_specs/index.html SD specifications]<br />
<br />
<br />
==== USB devices ====<br />
'''Summary:''' Add USB drivers for the new USB stack (webcams, gamepads, joysticks, tablets, etc.)<br />
<br />
'''Details:'''<br />
* Primary goal: Write USB driver for currently unsupported device (you should have one)<br />
* Additional goal: Adopt code to work with all devices of the same class<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://en.wikipedia.org/wiki/USB#Device_classes USB device classes]<br />
<br />
==== Filesystem support ====<br />
'''Summary:''' Improve filesystem support in KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Update/fix read-write support for EXT2/3/4 filesystems (partially done)<br />
* Alternative goal: Add write support for the NTFS filesystem (read-only support already exists)<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Ffs%2F&#a0aa5cede7308db82d4bae78266ed8462 Filesystems in KolibriOS]<br />
<br />
==== Wi-Fi ====<br />
'''Summary:''' Add a Wi-Fi driver<br />
<br />
'''Details:'''<br />
* Description: <br />
* Language: Assembler/FASM<br />
* Skill level: intermediate<br />
* Importance: Medium<br />
* Mentor: ?<br />
<br />
=== System wide tasks ===<br />
These tasks comprise both user space and kernel space work. Some developers consider them as of most importance for KolibriOS.<br><br />
Architecture and algorithm design skills are highly desirable.<br />
<br />
==== Kolibri-A ====<br />
'''Summary:''' Porting Kolibri-A to Intel Atom<br />
<br />
'''Details:'''<br />
* Primary goal: Porting to Intel Atom and sync with the trunk<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Importance: art_zh<br />
* Mentor: art_zh<br />
* Links:<br />
<br />
<br />
==== Widget toolkit ====<br />
'''Summary:''' Extend Box_lib (a set of separate widgets) to create a full-featured widget toolkit<br />
<br />
'''Details:'''<br />
* Primary goal: Design architecture and implement focus handling, callbacks and other core ideas<br />
* Additional goal: Integrate box_lib widgets to this framework<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Importance: Vital<br />
* Mentor: dunkaist<br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
<br />
==== Unit testing framework ====<br />
'''Summary:''' Design and implement an unit testing framework, write tests for kernel functions<br />
<br />
'''Details:'''<br />
* Primary goal: Design and implement a framework, write tests for kernel functions<br />
* Additional goal: Write tests for system libraries (libio, libini)<br />
* Language: Assembler/FASM (preferrable), any other working in KolibriOS<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks list of unit testing frameworks]<br />
<br />
==== QR-code in boot log ====<br />
'''Summary:''' Add a [http://en.wikipedia.org/wiki/QR_code QR-code] (containing the debug log) at the end of boot process<br />
<br />
[[File:QR-code.png]]<br />
<br />
'''Details:'''<br />
* Description: Sometimes KolibriOS cannot boot on a certain hardware configuration (gets stuck during or after boot process). In such cases, we request the user having this problem to enable debug log at boot time, take a photo of the screen and show it to us (in the forum). However, sometimes taking a good quality photo can be quite challenging (bad camera, shaking hands etc.) and the attached photo is so blurry to the point the debug log cannot be even read. The idea suggested hereby is to simultaneously encode the debug log which is outputted on the screen, to the form of QR-code, and [http://wiki.kolibrios.org/wiki/File:QR-code.png show the resulting QR-code on empty space on the screen]. In such way, any user possessing a smartphone with a camera and QR-code scanner, could scan the QR-code and submit the encoded text directly on our forums (without having a need to take a photo), and our developers, in turn, would get the debug log text immediately and won't have to unscramble a blurry photo.<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Mentor: dunkaist<br />
<br />
==== C layer for KolibriOS ====<br />
'''Summary:''' Building a C layer for KolibriOS, so that we can get more developers and port more code to KolibriOS more easily<br />
<br />
'''Details:'''<br />
* Description: <br />
* Language: C<br />
* Skill level: intermediate<br />
* Mentor: Ashmew2<br />
<br />
<!--<br />
=== Open Ideas (without appointed mentor) ===<br />
<br />
==== One core for graphics ====<br />
'''Summary:''' On multi-core systems, dedicate one core for graphics rendering ONLY<br />
<br />
'''Details:'''<br />
* Goal: Move graphics subsystem to a single, dedicated core if multicore machine detected<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Serge(?)<br />
<br />
==== Partition editor ====<br />
'''Summary:''' Add a partition/HDD editor utility<br />
<br />
'''Details:'''<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Mario(?)<br />
<br />
==== Rewrite "Table" in Assembler ====<br />
'''Summary:''' Rewrite a great Kolibri spreadsheet application [[Table]] from C++ to FASM<br />
<br />
'''Details:'''<br />
* Goal: Port Table (C++) to Assembler/FASM<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Mentor: ???<br />
<br />
==== Kernel vulnerabilities ====<br />
'''Summary:''' Find and fix as many kernel vulnerabilities as you can<br />
<br />
'''Details:'''<br />
* Goal: Check the list of kernel API functions versus their actual implementation in KolibriOS kernel (for example, check that the function doesn't destroy register values if it declares in description that it doesn't). If you find a vulnerability, try to fix it so that it works according to API. If you cannot fix it yourself, document the vulnerability and describe the problem.<br />
* Language: Assembler/FASM<br />
* Skill level: Intermediate/Expert<br />
* Mentor: Serge '''(Is not always available to answer questions, so select this task only if you can work fairly independently.)'''<br />
<br />
==== Web browser in FASM ====<br />
'''Summary:''' Write a proper HTML web browser for KolibriOS<br />
<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Mentor: SoUrcerer<br />
<br />
<br />
==== Printing/scanning API ====<br />
'''Summary:''' Add a printing and scanning API and drivers.<br />
<br />
'''Details:'''<br />
* Primary goal: Design and code infrastructure for printing and scanning devices.<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: SoUrcerer<br />
--><br />
<br />
[[Category:Misc]]</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Google_Summer_of_Code_2016&diff=5180Google Summer of Code 20162016-01-19T13:32:21Z<p>Punk Joker: /* Sortable list of ideas for easy navigation */</p>
<hr />
<div><!-- [[Image:GSoC2015.png|right]] --><br />
== Introduction ==<br />
KolibriOS is going to apply as a mentoring organization for [https://developers.google.com/open-source/gsoc/ Google Summer of Code 2016]. This page contains our ideas list and some additional information for students and mentors.<br />
<br />
We have previously participated as a Mentoring Organization in [http://www.google-melange.com/gsoc/homepage/google/gsoc2014 Google Summer of Code 2014]. The [[Google Summer of Code 2014|ideas page for 2014]] is available for your reference. Our organization page for GSoC 2014 and successfully completed projects for that year can be accessed [https://www.google-melange.com/gsoc/org2/google/gsoc2014/kolibrios via this link]. To our great delight, both successful students of GSoC2014 stayed with the project and continue contributing to KolibriOS voluntarily in their spare time.<br />
<br />
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.<br />
<br />
== Student Requirements ==<br />
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] (25 March 19:00 UTC).'''<br><br><br />
In addition, students need to answer the following questions when applying:<br />
# Full Name (First + Last Name).<br />
# E-mail address.<br />
# Phone (home or mobile).<br />
# Another phone '''for emergency cases''' (if we cannot contact you) - parents, boy/girlfriend, husband/wife etc.<br />
# Nickname you plan to use on our forums, SVN repository or IRC chat.<br />
# Age.<br />
# Country + city of residence.<br />
# Human languages you speak (state all languages and knowledge level - basic/intermediate/expert/mother tongue).<br />
# Name of college or university you are accepted into or enrolled in + link to their website.<br />
# Name of program (or faculty, or department) in that college/university you are accepted into or enrolled in.<br />
# Your current timezone in UTC/GMT terms (for example, Paris is UTC/GMT +1 hours right now).<br />
# Have you been involved with any open-source project in the past? If yes, which one, and what have you done for that project?<br />
# 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.<br />
# The task you are willing to work on from our list of Summer of Code 2016 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.<br />
# 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.''<br />
<br />
== Organization ==<br />
<br />
You can find the organizers on the IRC channel (#kolibrios @ irc.freenode.net) or at our forum: http://board.kolibrios.org/<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
| vacant<br />
| vacant<br />
|Organization Administrator<br />
|-<br />
|Jeffrey Amelynck<br />
|[[User:Hidnplayr|hidnplayr]]<br />
|Mentor, Backup Administrator<br />
|-<br />
|Kiril Lipatov<br />
|[[User:Punk Joker|Leency]]<br />
|Mentor<br />
|-<br />
|Artem Zherdev<br />
|[[User:art_zh|art_zh]]<br />
|Mentor<br />
|-<br />
|Ashish Gupta<br />
|[[User:Ashmew2|Ashmew2]]<br />
|Mentor<br />
|-<br />
|}<br />
We have discussed "Google Summer of Code 2016" application with all active members of the KolibriOS Project Team, and selected only those 3 (three) people who have both the knowledge, the dedication, and the 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.<br />
<br />
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 GSoC2014.<br />
<br />
== Ideas for Google Summer of Code 2016 ==<br />
The below list contains ideas suggested by KolibriOS team members. '''It is neither complete nor final.'''<br><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.<br />
<br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Required Skill Level<br />
! Importance for KolibriOS<br />
! Programming Language<br />
! Mentor<br />
|-<br />
| [[#XDXF_dictionary|XDXF dictionary]]<br />
| Application<br />
| Basic<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#CPUID_tool|CPUID tool]]<br />
| Application<br />
| Beginner<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#FTP_client|FTP client]]<br />
| Application<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Torrent_client|Torrent client]]<br />
| Application<br />
| Advanced<br />
| High<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#XMPP.2FJabber_client|XMPP/Jabber client]]<br />
| Application<br />
| Intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| dunkaist/hidnplayr<br />
|-<br />
| [[#Music_player|Music player]]<br />
| Application<br />
| Advanced<br />
| Medium<br />
| Assembler(FASM)/C/C++<br />
| dunkaist/hidnplayr<br />
|-<br />
| [[#Web_browser:_WebView|Web browser: WebView]]<br />
| Application<br />
| intermediate<br />
| Standard<br />
| [http://www.dev0.de/cmm/indexe.htm Sphinx C--]<br />
| Leency<br />
|-<br />
| [[#Ethernet_driver.28s.29|Ethernet driver(s)]]<br />
| Driver<br />
| Advanced<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#SD_Host_Controller|SD Host Controller driver]]<br />
| Driver<br />
| Advanced<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#USB_devices|USB device drivers]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Filesystem_support|Filesystem support]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#Kolibri-A|Kolibri-A]]<br />
| Kernel<br />
| intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| art_zh<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide task<br />
| intermediate<br />
| Standard<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#Unit_testing_framework|Unit testing framework]]<br />
| System wide task<br />
| intermediate<br />
| High<br />
| Any<br />
| dunkaist<br />
|-<br />
| [[#QR-code_in_boot_log|QR-code in boot log]]<br />
| Kernel/Library<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#Wi-Fi|Wi-Fi]]<br />
| Driver<br />
| intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| ?<br />
|-<br />
| [[#C layer for KolibriOS|C layer for KolibriOS]]<br />
| Library<br />
| intermediate<br />
| Medium<br />
| C<br />
| Ashmew2<br />
|}<br />
Explanation of required skill level:<br />
* Beginner: No knowledge at all of the topic,<br />
* Basic: A very basic knowledge of the topic but no professional usage,<br />
* Intermediate: A basic knowledge of the topic but no regular professional usage,<br />
* Advanced: A good knowledge of the topic and a regular professional usage,<br />
* Expert: a perfect knowledge of the topic and a daily professional usage.<br />
<br />
Explanation of importance for the project:<br />
* Low: For sure it doesn't hurt to implement, but if nobody does it, no one will even notice.<br />
* Medium: Nice-to-have feature. Will improve everyday life of users and developers.<br />
* High: This feature is needed for the project to start being adopted by masses.<br />
* Critical: This functionality is vital for the project to become useful.<br />
<br />
=== Applications ===<br />
These are userspace tasks. They often require only basic knowledge of algorithms and data structures.<br><br />
No specific experience is required but welcome.<br />
<br />
==== XDXF dictionary ====<br />
'''Summary:''' Write dictionary application with support of XDXF (XML Dictionary eXchange Format)<br />
<br />
'''Details:'''<br />
* Primary goal: Write library and corresponding dictionary application<br />
* Additional goal: Support of other dictioinary formats<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate<br />
* Importance: Standard<br />
* Mentor: dunkaist<br />
* Links: [http://tibleiz.net/asm-xml/ fasm xml library], [https://en.wikipedia.org/wiki/XDXF XDXF format]<br />
<br />
<br />
==== CPUID tool ====<br />
'''Summary:''' Update existing CPUID application to be aware of new CPUs and their features<br />
<br />
'''Details:'''<br />
* Primary goal: Write code to detect and report new CPUs and features + size detection for caches<br />
* Additional goal: Refactor code as to use system libraries (libimg, box_lib, etc.)<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: Standard<br />
* Mentor: dunkaist / Wildwest<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fprograms%2Fsystem%2Fcpuid%2Ftrunk%2F&#aec5d374b78ae8f08110b3327c3ba5f56 CPUID program], [http://bochs.sourceforge.net/techspec/24161821.pdf Intel cpuid], [http://support.amd.com/TechDocs/25481.pdf AMD cpuid]<br />
<br />
<br />
==== FTP client ====<br />
'''Summary:''' Create a GUI based FTP client or add FTP support to one of the existing file managers<br />
<br />
'''Details:'''<br />
* Primary goal: FTP access (download/upload/etc.)<br />
* Additional goal: Create an FTP client library<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [https://www.ietf.org/rfc/rfc959.txt File Transfer Protocol (RFC959)], [http://board.kolibrios.org/viewtopic.php?f=40&t=2360 CLI FTP client (demo)]<br />
<br />
==== Torrent client ====<br />
'''Summary:''' Write a (bit-)torrent client for KolibriOS, or port an existing one<br />
<br />
'''Details:'''<br />
* Primary goal: Implement a torrent client similar to [http://www.utorrent.com/ µTorrent Free edition]<br />
* Alternative goal (less preferred, but still possible): Port an existing torrent client to KolibriOS<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://www.bittorrent.org Information about the protocol]<br />
<br />
==== XMPP/Jabber client ====<br />
'''Summary:''' Write a XMPP/Jabber library and client for KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Write basic xmpp library/client<br />
* Additional goal: Implement some xmpp extentions<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist/hidnplayr<br />
* 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]<br />
<br />
==== Music player ====<br />
'''Summary:''' Improve the current music player in Kolibri<br />
<br />
'''Details:'''<br />
* Primary goal: Rewrite the current music player (ac97snd), in FASM, and improve its functionality<br />
: * Support for file formats wav, mp3 and xm (using available external libraries)<br />
: * Support for playlists (m3u)<br />
: * A time display<br />
* Additional goal:<br />
: * Use of system wide hotkeys to control player<br />
: * Support for metadata (ID3, ...)<br />
: * More codecs (flac, vorbis, ...)<br />
: * Audio indication (oscillograph, bar graph, ...)<br />
: * Show cover art from files or album folder<br />
: * Fade in/out and/or crossover<br />
: * Streaming radio (at least mp3 over http stream)<br />
: * Skins<br />
: * Media library<br />
* Language: Assembler/FASM (C/C++ to port codec)<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: hidnplayr / dunkaist<br />
* Links: [http://board.kolibrios.org/viewtopic.php?f=38&t=1596 AC97SND (MP3 player in C)], [http://board.kolibrios.org/viewtopic.php?f=28&t=317 Sound drivers and architecture], [http://board.kolibrios.org/viewtopic.php?f=38&t=3003 Flac decoder],[http://board.kolibrios.org/viewtopic.php?f=38&t=2220 Minimp3 (minimalistic mp3 decoding library)], [http://board.kolibrios.org/viewtopic.php?f=38&t=161 SuperMP3 (IDv3 tag demo)]<br />
<br />
==== Web browser: WebView ====<br />
'''Summary:''' Improve existing text-only web browser WebView - add more functionality and compatibility<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: [http://www.dev0.de/cmm/indexe.htm Sphinx C--]. May require writing a few lines in FASM though<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: punk_joker<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
* [http://board.kolibrios.org/viewtopic.php?f=40&t=1075 Work done so far on WebView (mostly in Russian)]. If you don't know Russian, you can read [http://translate.google.com/translate?hl=en&sl=ru&tl=en&u=http%3A%2F%2Fboard.kolibrios.org%2Fviewtopic.php%3Ff%3D40%26t%3D1075 English translation using Google-Translate]<br />
<br />
=== Drivers ===<br />
Writing drivers is about new hardware and filesystems.<br><br />
Knowledge of specifications and previous experience are ''not'' required but surely desirable.<br />
<br />
==== Ethernet driver(s) ====<br />
'''Summary:''' Write an Ethernet driver<br />
<br />
'''Details:'''<br />
* Primary goal: Support for popular Broadcom, Atheros or Marvell Yukon ethernet cards<br />
* Additional goal: A second driver for another card family, PPPoE support in kernel, ...<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: Medium<br />
* Mentor: hidnplayr<br />
* Links: [https://www.broadcom.com/collateral/pg/57XX-PG105-R.pdf BCM57xx programmers guide], [[Writing network drivers for KolibriOS]], [https://github.com/UDOOboard/U-Boot_Unico/blob/master/drivers/net/bcm570x.c BCM570x driver for u-boot (in C)], [http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fdrivers%2Funfinished%2Fbcm57xx.asm Stub for BCM57xx driver]<br />
<br />
==== SD Host Controller ====<br />
'''Summary:''' Add support for SD Host Controller<br />
<br />
'''Details:'''<br />
* Primary goal: Write driver for particular controller<br />
* Additional goal: Test and update driver to work for all controllers<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [https://www.sdcard.org/downloads/pls/simplified_specs/index.html SD specifications]<br />
<br />
<br />
==== USB devices ====<br />
'''Summary:''' Add USB drivers for the new USB stack (webcams, gamepads, joysticks, tablets, etc.)<br />
<br />
'''Details:'''<br />
* Primary goal: Write USB driver for currently unsupported device (you should have one)<br />
* Additional goal: Adopt code to work with all devices of the same class<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://en.wikipedia.org/wiki/USB#Device_classes USB device classes]<br />
<br />
==== Filesystem support ====<br />
'''Summary:''' Improve filesystem support in KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Update/fix read-write support for EXT2/3/4 filesystems (partially done)<br />
* Alternative goal: Add write support for the NTFS filesystem (read-only support already exists)<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Ffs%2F&#a0aa5cede7308db82d4bae78266ed8462 Filesystems in KolibriOS]<br />
<br />
==== Wi-Fi ====<br />
'''Summary:''' Add a Wi-Fi driver<br />
<br />
'''Details:'''<br />
* Description: <br />
* Language: Assembler/FASM<br />
* Skill level: intermediate<br />
* Importance: High<br />
* Mentor: ?<br />
<br />
=== System wide tasks ===<br />
These tasks comprise both user space and kernel space work. Some developers consider them as of most importance for KolibriOS.<br><br />
Architecture and algorithm design skills are highly desirable.<br />
<br />
==== Kolibri-A ====<br />
'''Summary:''' Porting Kolibri-A to Intel Atom<br />
<br />
'''Details:'''<br />
* Primary goal: Porting to Intel Atom and sync with the trunk<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Importance: art_zh<br />
* Mentor: art_zh<br />
* Links:<br />
<br />
<br />
==== Widget toolkit ====<br />
'''Summary:''' Extend Box_lib (a set of separate widgets) to create a full-featured widget toolkit<br />
<br />
'''Details:'''<br />
* Primary goal: Design architecture and implement focus handling, callbacks and other core ideas<br />
* Additional goal: Integrate box_lib widgets to this framework<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Importance: Vital<br />
* Mentor: dunkaist<br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
<br />
==== Unit testing framework ====<br />
'''Summary:''' Design and implement an unit testing framework, write tests for kernel functions<br />
<br />
'''Details:'''<br />
* Primary goal: Design and implement a framework, write tests for kernel functions<br />
* Additional goal: Write tests for system libraries (libio, libini)<br />
* Language: Assembler/FASM (preferrable), any other working in KolibriOS<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks list of unit testing frameworks]<br />
<br />
==== QR-code in boot log ====<br />
'''Summary:''' Add a [http://en.wikipedia.org/wiki/QR_code QR-code] (containing the debug log) at the end of boot process<br />
<br />
[[File:QR-code.png]]<br />
<br />
'''Details:'''<br />
* Description: Sometimes KolibriOS cannot boot on a certain hardware configuration (gets stuck during or after boot process). In such cases, we request the user having this problem to enable debug log at boot time, take a photo of the screen and show it to us (in the forum). However, sometimes taking a good quality photo can be quite challenging (bad camera, shaking hands etc.) and the attached photo is so blurry to the point the debug log cannot be even read. The idea suggested hereby is to simultaneously encode the debug log which is outputted on the screen, to the form of QR-code, and [http://wiki.kolibrios.org/wiki/File:QR-code.png show the resulting QR-code on empty space on the screen]. In such way, any user possessing a smartphone with a camera and QR-code scanner, could scan the QR-code and submit the encoded text directly on our forums (without having a need to take a photo), and our developers, in turn, would get the debug log text immediately and won't have to unscramble a blurry photo.<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Mentor: dunkaist<br />
<br />
==== C layer for KolibriOS ====<br />
'''Summary:''' Building a C layer for KolibriOS, so that we can get more developers and port more code to KolibriOS more easily<br />
<br />
'''Details:'''<br />
* Description: <br />
* Language: C<br />
* Skill level: intermediate<br />
* Mentor: Ashmew2<br />
<br />
<!--<br />
=== Open Ideas (without appointed mentor) ===<br />
<br />
==== One core for graphics ====<br />
'''Summary:''' On multi-core systems, dedicate one core for graphics rendering ONLY<br />
<br />
'''Details:'''<br />
* Goal: Move graphics subsystem to a single, dedicated core if multicore machine detected<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Serge(?)<br />
<br />
==== Partition editor ====<br />
'''Summary:''' Add a partition/HDD editor utility<br />
<br />
'''Details:'''<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Mario(?)<br />
<br />
==== Rewrite "Table" in Assembler ====<br />
'''Summary:''' Rewrite a great Kolibri spreadsheet application [[Table]] from C++ to FASM<br />
<br />
'''Details:'''<br />
* Goal: Port Table (C++) to Assembler/FASM<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Mentor: ???<br />
<br />
==== Kernel vulnerabilities ====<br />
'''Summary:''' Find and fix as many kernel vulnerabilities as you can<br />
<br />
'''Details:'''<br />
* Goal: Check the list of kernel API functions versus their actual implementation in KolibriOS kernel (for example, check that the function doesn't destroy register values if it declares in description that it doesn't). If you find a vulnerability, try to fix it so that it works according to API. If you cannot fix it yourself, document the vulnerability and describe the problem.<br />
* Language: Assembler/FASM<br />
* Skill level: Intermediate/Expert<br />
* Mentor: Serge '''(Is not always available to answer questions, so select this task only if you can work fairly independently.)'''<br />
<br />
==== Web browser in FASM ====<br />
'''Summary:''' Write a proper HTML web browser for KolibriOS<br />
<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Mentor: SoUrcerer<br />
<br />
<br />
==== Printing/scanning API ====<br />
'''Summary:''' Add a printing and scanning API and drivers.<br />
<br />
'''Details:'''<br />
* Primary goal: Design and code infrastructure for printing and scanning devices.<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: SoUrcerer<br />
--><br />
<br />
[[Category:Misc]]</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Google_Summer_of_Code_2016&diff=5179Google Summer of Code 20162016-01-19T13:31:45Z<p>Punk Joker: /* Wi-Fi */</p>
<hr />
<div><!-- [[Image:GSoC2015.png|right]] --><br />
== Introduction ==<br />
KolibriOS is going to apply as a mentoring organization for [https://developers.google.com/open-source/gsoc/ Google Summer of Code 2016]. This page contains our ideas list and some additional information for students and mentors.<br />
<br />
We have previously participated as a Mentoring Organization in [http://www.google-melange.com/gsoc/homepage/google/gsoc2014 Google Summer of Code 2014]. The [[Google Summer of Code 2014|ideas page for 2014]] is available for your reference. Our organization page for GSoC 2014 and successfully completed projects for that year can be accessed [https://www.google-melange.com/gsoc/org2/google/gsoc2014/kolibrios via this link]. To our great delight, both successful students of GSoC2014 stayed with the project and continue contributing to KolibriOS voluntarily in their spare time.<br />
<br />
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.<br />
<br />
== Student Requirements ==<br />
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] (25 March 19:00 UTC).'''<br><br><br />
In addition, students need to answer the following questions when applying:<br />
# Full Name (First + Last Name).<br />
# E-mail address.<br />
# Phone (home or mobile).<br />
# Another phone '''for emergency cases''' (if we cannot contact you) - parents, boy/girlfriend, husband/wife etc.<br />
# Nickname you plan to use on our forums, SVN repository or IRC chat.<br />
# Age.<br />
# Country + city of residence.<br />
# Human languages you speak (state all languages and knowledge level - basic/intermediate/expert/mother tongue).<br />
# Name of college or university you are accepted into or enrolled in + link to their website.<br />
# Name of program (or faculty, or department) in that college/university you are accepted into or enrolled in.<br />
# Your current timezone in UTC/GMT terms (for example, Paris is UTC/GMT +1 hours right now).<br />
# Have you been involved with any open-source project in the past? If yes, which one, and what have you done for that project?<br />
# 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.<br />
# The task you are willing to work on from our list of Summer of Code 2016 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.<br />
# 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.''<br />
<br />
== Organization ==<br />
<br />
You can find the organizers on the IRC channel (#kolibrios @ irc.freenode.net) or at our forum: http://board.kolibrios.org/<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
| vacant<br />
| vacant<br />
|Organization Administrator<br />
|-<br />
|Jeffrey Amelynck<br />
|[[User:Hidnplayr|hidnplayr]]<br />
|Mentor, Backup Administrator<br />
|-<br />
|Kiril Lipatov<br />
|[[User:Punk Joker|Leency]]<br />
|Mentor<br />
|-<br />
|Artem Zherdev<br />
|[[User:art_zh|art_zh]]<br />
|Mentor<br />
|-<br />
|Ashish Gupta<br />
|[[User:Ashmew2|Ashmew2]]<br />
|Mentor<br />
|-<br />
|}<br />
We have discussed "Google Summer of Code 2016" application with all active members of the KolibriOS Project Team, and selected only those 3 (three) people who have both the knowledge, the dedication, and the 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.<br />
<br />
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 GSoC2014.<br />
<br />
== Ideas for Google Summer of Code 2016 ==<br />
The below list contains ideas suggested by KolibriOS team members. '''It is neither complete nor final.'''<br><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.<br />
<br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Required Skill Level<br />
! Importance for KolibriOS<br />
! Programming Language<br />
! Mentor<br />
|-<br />
| [[#XDXF_dictionary|XDXF dictionary]]<br />
| Application<br />
| Basic<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#CPUID_tool|CPUID tool]]<br />
| Application<br />
| Beginner<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#FTP_client|FTP client]]<br />
| Application<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Torrent_client|Torrent client]]<br />
| Application<br />
| Advanced<br />
| High<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#XMPP.2FJabber_client|XMPP/Jabber client]]<br />
| Application<br />
| Intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| dunkaist/hidnplayr<br />
|-<br />
| [[#Music_player|Music player]]<br />
| Application<br />
| Advanced<br />
| Medium<br />
| Assembler(FASM)/C/C++<br />
| dunkaist/hidnplayr<br />
|-<br />
| [[#Web_browser:_WebView|Web browser: WebView]]<br />
| Application<br />
| intermediate<br />
| Standard<br />
| [http://www.dev0.de/cmm/indexe.htm Sphinx C--]<br />
| Leency<br />
|-<br />
| [[#Ethernet_driver.28s.29|Ethernet driver(s)]]<br />
| Driver<br />
| Advanced<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#SD_Host_Controller|SD Host Controller driver]]<br />
| Driver<br />
| Advanced<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#USB_devices|USB device drivers]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Filesystem_support|Filesystem support]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#Kolibri-A|Kolibri-A]]<br />
| Kernel<br />
| intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| art_zh<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide task<br />
| intermediate<br />
| Standard<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#Unit_testing_framework|Unit testing framework]]<br />
| System wide task<br />
| intermediate<br />
| High<br />
| Any<br />
| dunkaist<br />
|-<br />
| [[#QR-code_in_boot_log|QR-code in boot log]]<br />
| Kernel/Library<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#Wi-Fi|Wi-Fi]]<br />
| Driver<br />
| intermediate<br />
| Medium<br />
| C--<br />
| Leency<br />
|-<br />
| [[#C layer for KolibriOS|C layer for KolibriOS]]<br />
| Library<br />
| intermediate<br />
| Medium<br />
| C<br />
| Ashmew2<br />
|}<br />
Explanation of required skill level:<br />
* Beginner: No knowledge at all of the topic,<br />
* Basic: A very basic knowledge of the topic but no professional usage,<br />
* Intermediate: A basic knowledge of the topic but no regular professional usage,<br />
* Advanced: A good knowledge of the topic and a regular professional usage,<br />
* Expert: a perfect knowledge of the topic and a daily professional usage.<br />
<br />
Explanation of importance for the project:<br />
* Low: For sure it doesn't hurt to implement, but if nobody does it, no one will even notice.<br />
* Medium: Nice-to-have feature. Will improve everyday life of users and developers.<br />
* High: This feature is needed for the project to start being adopted by masses.<br />
* Critical: This functionality is vital for the project to become useful.<br />
<br />
=== Applications ===<br />
These are userspace tasks. They often require only basic knowledge of algorithms and data structures.<br><br />
No specific experience is required but welcome.<br />
<br />
==== XDXF dictionary ====<br />
'''Summary:''' Write dictionary application with support of XDXF (XML Dictionary eXchange Format)<br />
<br />
'''Details:'''<br />
* Primary goal: Write library and corresponding dictionary application<br />
* Additional goal: Support of other dictioinary formats<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate<br />
* Importance: Standard<br />
* Mentor: dunkaist<br />
* Links: [http://tibleiz.net/asm-xml/ fasm xml library], [https://en.wikipedia.org/wiki/XDXF XDXF format]<br />
<br />
<br />
==== CPUID tool ====<br />
'''Summary:''' Update existing CPUID application to be aware of new CPUs and their features<br />
<br />
'''Details:'''<br />
* Primary goal: Write code to detect and report new CPUs and features + size detection for caches<br />
* Additional goal: Refactor code as to use system libraries (libimg, box_lib, etc.)<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: Standard<br />
* Mentor: dunkaist / Wildwest<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fprograms%2Fsystem%2Fcpuid%2Ftrunk%2F&#aec5d374b78ae8f08110b3327c3ba5f56 CPUID program], [http://bochs.sourceforge.net/techspec/24161821.pdf Intel cpuid], [http://support.amd.com/TechDocs/25481.pdf AMD cpuid]<br />
<br />
<br />
==== FTP client ====<br />
'''Summary:''' Create a GUI based FTP client or add FTP support to one of the existing file managers<br />
<br />
'''Details:'''<br />
* Primary goal: FTP access (download/upload/etc.)<br />
* Additional goal: Create an FTP client library<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [https://www.ietf.org/rfc/rfc959.txt File Transfer Protocol (RFC959)], [http://board.kolibrios.org/viewtopic.php?f=40&t=2360 CLI FTP client (demo)]<br />
<br />
==== Torrent client ====<br />
'''Summary:''' Write a (bit-)torrent client for KolibriOS, or port an existing one<br />
<br />
'''Details:'''<br />
* Primary goal: Implement a torrent client similar to [http://www.utorrent.com/ µTorrent Free edition]<br />
* Alternative goal (less preferred, but still possible): Port an existing torrent client to KolibriOS<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://www.bittorrent.org Information about the protocol]<br />
<br />
==== XMPP/Jabber client ====<br />
'''Summary:''' Write a XMPP/Jabber library and client for KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Write basic xmpp library/client<br />
* Additional goal: Implement some xmpp extentions<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist/hidnplayr<br />
* 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]<br />
<br />
==== Music player ====<br />
'''Summary:''' Improve the current music player in Kolibri<br />
<br />
'''Details:'''<br />
* Primary goal: Rewrite the current music player (ac97snd), in FASM, and improve its functionality<br />
: * Support for file formats wav, mp3 and xm (using available external libraries)<br />
: * Support for playlists (m3u)<br />
: * A time display<br />
* Additional goal:<br />
: * Use of system wide hotkeys to control player<br />
: * Support for metadata (ID3, ...)<br />
: * More codecs (flac, vorbis, ...)<br />
: * Audio indication (oscillograph, bar graph, ...)<br />
: * Show cover art from files or album folder<br />
: * Fade in/out and/or crossover<br />
: * Streaming radio (at least mp3 over http stream)<br />
: * Skins<br />
: * Media library<br />
* Language: Assembler/FASM (C/C++ to port codec)<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: hidnplayr / dunkaist<br />
* Links: [http://board.kolibrios.org/viewtopic.php?f=38&t=1596 AC97SND (MP3 player in C)], [http://board.kolibrios.org/viewtopic.php?f=28&t=317 Sound drivers and architecture], [http://board.kolibrios.org/viewtopic.php?f=38&t=3003 Flac decoder],[http://board.kolibrios.org/viewtopic.php?f=38&t=2220 Minimp3 (minimalistic mp3 decoding library)], [http://board.kolibrios.org/viewtopic.php?f=38&t=161 SuperMP3 (IDv3 tag demo)]<br />
<br />
==== Web browser: WebView ====<br />
'''Summary:''' Improve existing text-only web browser WebView - add more functionality and compatibility<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: [http://www.dev0.de/cmm/indexe.htm Sphinx C--]. May require writing a few lines in FASM though<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: punk_joker<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
* [http://board.kolibrios.org/viewtopic.php?f=40&t=1075 Work done so far on WebView (mostly in Russian)]. If you don't know Russian, you can read [http://translate.google.com/translate?hl=en&sl=ru&tl=en&u=http%3A%2F%2Fboard.kolibrios.org%2Fviewtopic.php%3Ff%3D40%26t%3D1075 English translation using Google-Translate]<br />
<br />
=== Drivers ===<br />
Writing drivers is about new hardware and filesystems.<br><br />
Knowledge of specifications and previous experience are ''not'' required but surely desirable.<br />
<br />
==== Ethernet driver(s) ====<br />
'''Summary:''' Write an Ethernet driver<br />
<br />
'''Details:'''<br />
* Primary goal: Support for popular Broadcom, Atheros or Marvell Yukon ethernet cards<br />
* Additional goal: A second driver for another card family, PPPoE support in kernel, ...<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: Medium<br />
* Mentor: hidnplayr<br />
* Links: [https://www.broadcom.com/collateral/pg/57XX-PG105-R.pdf BCM57xx programmers guide], [[Writing network drivers for KolibriOS]], [https://github.com/UDOOboard/U-Boot_Unico/blob/master/drivers/net/bcm570x.c BCM570x driver for u-boot (in C)], [http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fdrivers%2Funfinished%2Fbcm57xx.asm Stub for BCM57xx driver]<br />
<br />
==== SD Host Controller ====<br />
'''Summary:''' Add support for SD Host Controller<br />
<br />
'''Details:'''<br />
* Primary goal: Write driver for particular controller<br />
* Additional goal: Test and update driver to work for all controllers<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [https://www.sdcard.org/downloads/pls/simplified_specs/index.html SD specifications]<br />
<br />
<br />
==== USB devices ====<br />
'''Summary:''' Add USB drivers for the new USB stack (webcams, gamepads, joysticks, tablets, etc.)<br />
<br />
'''Details:'''<br />
* Primary goal: Write USB driver for currently unsupported device (you should have one)<br />
* Additional goal: Adopt code to work with all devices of the same class<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://en.wikipedia.org/wiki/USB#Device_classes USB device classes]<br />
<br />
==== Filesystem support ====<br />
'''Summary:''' Improve filesystem support in KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Update/fix read-write support for EXT2/3/4 filesystems (partially done)<br />
* Alternative goal: Add write support for the NTFS filesystem (read-only support already exists)<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Ffs%2F&#a0aa5cede7308db82d4bae78266ed8462 Filesystems in KolibriOS]<br />
<br />
==== Wi-Fi ====<br />
'''Summary:''' Add a Wi-Fi driver<br />
<br />
'''Details:'''<br />
* Description: <br />
* Language: Assembler/FASM<br />
* Skill level: intermediate<br />
* Importance: High<br />
* Mentor: ?<br />
<br />
=== System wide tasks ===<br />
These tasks comprise both user space and kernel space work. Some developers consider them as of most importance for KolibriOS.<br><br />
Architecture and algorithm design skills are highly desirable.<br />
<br />
==== Kolibri-A ====<br />
'''Summary:''' Porting Kolibri-A to Intel Atom<br />
<br />
'''Details:'''<br />
* Primary goal: Porting to Intel Atom and sync with the trunk<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Importance: art_zh<br />
* Mentor: art_zh<br />
* Links:<br />
<br />
<br />
==== Widget toolkit ====<br />
'''Summary:''' Extend Box_lib (a set of separate widgets) to create a full-featured widget toolkit<br />
<br />
'''Details:'''<br />
* Primary goal: Design architecture and implement focus handling, callbacks and other core ideas<br />
* Additional goal: Integrate box_lib widgets to this framework<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Importance: Vital<br />
* Mentor: dunkaist<br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
<br />
==== Unit testing framework ====<br />
'''Summary:''' Design and implement an unit testing framework, write tests for kernel functions<br />
<br />
'''Details:'''<br />
* Primary goal: Design and implement a framework, write tests for kernel functions<br />
* Additional goal: Write tests for system libraries (libio, libini)<br />
* Language: Assembler/FASM (preferrable), any other working in KolibriOS<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks list of unit testing frameworks]<br />
<br />
==== QR-code in boot log ====<br />
'''Summary:''' Add a [http://en.wikipedia.org/wiki/QR_code QR-code] (containing the debug log) at the end of boot process<br />
<br />
[[File:QR-code.png]]<br />
<br />
'''Details:'''<br />
* Description: Sometimes KolibriOS cannot boot on a certain hardware configuration (gets stuck during or after boot process). In such cases, we request the user having this problem to enable debug log at boot time, take a photo of the screen and show it to us (in the forum). However, sometimes taking a good quality photo can be quite challenging (bad camera, shaking hands etc.) and the attached photo is so blurry to the point the debug log cannot be even read. The idea suggested hereby is to simultaneously encode the debug log which is outputted on the screen, to the form of QR-code, and [http://wiki.kolibrios.org/wiki/File:QR-code.png show the resulting QR-code on empty space on the screen]. In such way, any user possessing a smartphone with a camera and QR-code scanner, could scan the QR-code and submit the encoded text directly on our forums (without having a need to take a photo), and our developers, in turn, would get the debug log text immediately and won't have to unscramble a blurry photo.<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Mentor: dunkaist<br />
<br />
==== C layer for KolibriOS ====<br />
'''Summary:''' Building a C layer for KolibriOS, so that we can get more developers and port more code to KolibriOS more easily<br />
<br />
'''Details:'''<br />
* Description: <br />
* Language: C<br />
* Skill level: intermediate<br />
* Mentor: Ashmew2<br />
<br />
<!--<br />
=== Open Ideas (without appointed mentor) ===<br />
<br />
==== One core for graphics ====<br />
'''Summary:''' On multi-core systems, dedicate one core for graphics rendering ONLY<br />
<br />
'''Details:'''<br />
* Goal: Move graphics subsystem to a single, dedicated core if multicore machine detected<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Serge(?)<br />
<br />
==== Partition editor ====<br />
'''Summary:''' Add a partition/HDD editor utility<br />
<br />
'''Details:'''<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Mario(?)<br />
<br />
==== Rewrite "Table" in Assembler ====<br />
'''Summary:''' Rewrite a great Kolibri spreadsheet application [[Table]] from C++ to FASM<br />
<br />
'''Details:'''<br />
* Goal: Port Table (C++) to Assembler/FASM<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Mentor: ???<br />
<br />
==== Kernel vulnerabilities ====<br />
'''Summary:''' Find and fix as many kernel vulnerabilities as you can<br />
<br />
'''Details:'''<br />
* Goal: Check the list of kernel API functions versus their actual implementation in KolibriOS kernel (for example, check that the function doesn't destroy register values if it declares in description that it doesn't). If you find a vulnerability, try to fix it so that it works according to API. If you cannot fix it yourself, document the vulnerability and describe the problem.<br />
* Language: Assembler/FASM<br />
* Skill level: Intermediate/Expert<br />
* Mentor: Serge '''(Is not always available to answer questions, so select this task only if you can work fairly independently.)'''<br />
<br />
==== Web browser in FASM ====<br />
'''Summary:''' Write a proper HTML web browser for KolibriOS<br />
<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Mentor: SoUrcerer<br />
<br />
<br />
==== Printing/scanning API ====<br />
'''Summary:''' Add a printing and scanning API and drivers.<br />
<br />
'''Details:'''<br />
* Primary goal: Design and code infrastructure for printing and scanning devices.<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: SoUrcerer<br />
--><br />
<br />
[[Category:Misc]]</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Google_Summer_of_Code_2016&diff=5178Google Summer of Code 20162016-01-19T13:30:26Z<p>Punk Joker: /* Wi-Fi */</p>
<hr />
<div><!-- [[Image:GSoC2015.png|right]] --><br />
== Introduction ==<br />
KolibriOS is going to apply as a mentoring organization for [https://developers.google.com/open-source/gsoc/ Google Summer of Code 2016]. This page contains our ideas list and some additional information for students and mentors.<br />
<br />
We have previously participated as a Mentoring Organization in [http://www.google-melange.com/gsoc/homepage/google/gsoc2014 Google Summer of Code 2014]. The [[Google Summer of Code 2014|ideas page for 2014]] is available for your reference. Our organization page for GSoC 2014 and successfully completed projects for that year can be accessed [https://www.google-melange.com/gsoc/org2/google/gsoc2014/kolibrios via this link]. To our great delight, both successful students of GSoC2014 stayed with the project and continue contributing to KolibriOS voluntarily in their spare time.<br />
<br />
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.<br />
<br />
== Student Requirements ==<br />
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] (25 March 19:00 UTC).'''<br><br><br />
In addition, students need to answer the following questions when applying:<br />
# Full Name (First + Last Name).<br />
# E-mail address.<br />
# Phone (home or mobile).<br />
# Another phone '''for emergency cases''' (if we cannot contact you) - parents, boy/girlfriend, husband/wife etc.<br />
# Nickname you plan to use on our forums, SVN repository or IRC chat.<br />
# Age.<br />
# Country + city of residence.<br />
# Human languages you speak (state all languages and knowledge level - basic/intermediate/expert/mother tongue).<br />
# Name of college or university you are accepted into or enrolled in + link to their website.<br />
# Name of program (or faculty, or department) in that college/university you are accepted into or enrolled in.<br />
# Your current timezone in UTC/GMT terms (for example, Paris is UTC/GMT +1 hours right now).<br />
# Have you been involved with any open-source project in the past? If yes, which one, and what have you done for that project?<br />
# 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.<br />
# The task you are willing to work on from our list of Summer of Code 2016 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.<br />
# 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.''<br />
<br />
== Organization ==<br />
<br />
You can find the organizers on the IRC channel (#kolibrios @ irc.freenode.net) or at our forum: http://board.kolibrios.org/<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
| vacant<br />
| vacant<br />
|Organization Administrator<br />
|-<br />
|Jeffrey Amelynck<br />
|[[User:Hidnplayr|hidnplayr]]<br />
|Mentor, Backup Administrator<br />
|-<br />
|Kiril Lipatov<br />
|[[User:Punk Joker|Leency]]<br />
|Mentor<br />
|-<br />
|Artem Zherdev<br />
|[[User:art_zh|art_zh]]<br />
|Mentor<br />
|-<br />
|Ashish Gupta<br />
|[[User:Ashmew2|Ashmew2]]<br />
|Mentor<br />
|-<br />
|}<br />
We have discussed "Google Summer of Code 2016" application with all active members of the KolibriOS Project Team, and selected only those 3 (three) people who have both the knowledge, the dedication, and the 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.<br />
<br />
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 GSoC2014.<br />
<br />
== Ideas for Google Summer of Code 2016 ==<br />
The below list contains ideas suggested by KolibriOS team members. '''It is neither complete nor final.'''<br><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.<br />
<br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Required Skill Level<br />
! Importance for KolibriOS<br />
! Programming Language<br />
! Mentor<br />
|-<br />
| [[#XDXF_dictionary|XDXF dictionary]]<br />
| Application<br />
| Basic<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#CPUID_tool|CPUID tool]]<br />
| Application<br />
| Beginner<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#FTP_client|FTP client]]<br />
| Application<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Torrent_client|Torrent client]]<br />
| Application<br />
| Advanced<br />
| High<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#XMPP.2FJabber_client|XMPP/Jabber client]]<br />
| Application<br />
| Intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| dunkaist/hidnplayr<br />
|-<br />
| [[#Music_player|Music player]]<br />
| Application<br />
| Advanced<br />
| Medium<br />
| Assembler(FASM)/C/C++<br />
| dunkaist/hidnplayr<br />
|-<br />
| [[#Web_browser:_WebView|Web browser: WebView]]<br />
| Application<br />
| intermediate<br />
| Standard<br />
| [http://www.dev0.de/cmm/indexe.htm Sphinx C--]<br />
| Leency<br />
|-<br />
| [[#Ethernet_driver.28s.29|Ethernet driver(s)]]<br />
| Driver<br />
| Advanced<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#SD_Host_Controller|SD Host Controller driver]]<br />
| Driver<br />
| Advanced<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#USB_devices|USB device drivers]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Filesystem_support|Filesystem support]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#Kolibri-A|Kolibri-A]]<br />
| Kernel<br />
| intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| art_zh<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide task<br />
| intermediate<br />
| Standard<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#Unit_testing_framework|Unit testing framework]]<br />
| System wide task<br />
| intermediate<br />
| High<br />
| Any<br />
| dunkaist<br />
|-<br />
| [[#QR-code_in_boot_log|QR-code in boot log]]<br />
| Kernel/Library<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#Wi-Fi|Wi-Fi]]<br />
| Driver<br />
| intermediate<br />
| Medium<br />
| C--<br />
| Leency<br />
|-<br />
| [[#C layer for KolibriOS|C layer for KolibriOS]]<br />
| Library<br />
| intermediate<br />
| Medium<br />
| C<br />
| Ashmew2<br />
|}<br />
Explanation of required skill level:<br />
* Beginner: No knowledge at all of the topic,<br />
* Basic: A very basic knowledge of the topic but no professional usage,<br />
* Intermediate: A basic knowledge of the topic but no regular professional usage,<br />
* Advanced: A good knowledge of the topic and a regular professional usage,<br />
* Expert: a perfect knowledge of the topic and a daily professional usage.<br />
<br />
Explanation of importance for the project:<br />
* Low: For sure it doesn't hurt to implement, but if nobody does it, no one will even notice.<br />
* Medium: Nice-to-have feature. Will improve everyday life of users and developers.<br />
* High: This feature is needed for the project to start being adopted by masses.<br />
* Critical: This functionality is vital for the project to become useful.<br />
<br />
=== Applications ===<br />
These are userspace tasks. They often require only basic knowledge of algorithms and data structures.<br><br />
No specific experience is required but welcome.<br />
<br />
==== XDXF dictionary ====<br />
'''Summary:''' Write dictionary application with support of XDXF (XML Dictionary eXchange Format)<br />
<br />
'''Details:'''<br />
* Primary goal: Write library and corresponding dictionary application<br />
* Additional goal: Support of other dictioinary formats<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate<br />
* Importance: Standard<br />
* Mentor: dunkaist<br />
* Links: [http://tibleiz.net/asm-xml/ fasm xml library], [https://en.wikipedia.org/wiki/XDXF XDXF format]<br />
<br />
<br />
==== CPUID tool ====<br />
'''Summary:''' Update existing CPUID application to be aware of new CPUs and their features<br />
<br />
'''Details:'''<br />
* Primary goal: Write code to detect and report new CPUs and features + size detection for caches<br />
* Additional goal: Refactor code as to use system libraries (libimg, box_lib, etc.)<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: Standard<br />
* Mentor: dunkaist / Wildwest<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fprograms%2Fsystem%2Fcpuid%2Ftrunk%2F&#aec5d374b78ae8f08110b3327c3ba5f56 CPUID program], [http://bochs.sourceforge.net/techspec/24161821.pdf Intel cpuid], [http://support.amd.com/TechDocs/25481.pdf AMD cpuid]<br />
<br />
<br />
==== FTP client ====<br />
'''Summary:''' Create a GUI based FTP client or add FTP support to one of the existing file managers<br />
<br />
'''Details:'''<br />
* Primary goal: FTP access (download/upload/etc.)<br />
* Additional goal: Create an FTP client library<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [https://www.ietf.org/rfc/rfc959.txt File Transfer Protocol (RFC959)], [http://board.kolibrios.org/viewtopic.php?f=40&t=2360 CLI FTP client (demo)]<br />
<br />
==== Torrent client ====<br />
'''Summary:''' Write a (bit-)torrent client for KolibriOS, or port an existing one<br />
<br />
'''Details:'''<br />
* Primary goal: Implement a torrent client similar to [http://www.utorrent.com/ µTorrent Free edition]<br />
* Alternative goal (less preferred, but still possible): Port an existing torrent client to KolibriOS<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://www.bittorrent.org Information about the protocol]<br />
<br />
==== XMPP/Jabber client ====<br />
'''Summary:''' Write a XMPP/Jabber library and client for KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Write basic xmpp library/client<br />
* Additional goal: Implement some xmpp extentions<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist/hidnplayr<br />
* 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]<br />
<br />
==== Music player ====<br />
'''Summary:''' Improve the current music player in Kolibri<br />
<br />
'''Details:'''<br />
* Primary goal: Rewrite the current music player (ac97snd), in FASM, and improve its functionality<br />
: * Support for file formats wav, mp3 and xm (using available external libraries)<br />
: * Support for playlists (m3u)<br />
: * A time display<br />
* Additional goal:<br />
: * Use of system wide hotkeys to control player<br />
: * Support for metadata (ID3, ...)<br />
: * More codecs (flac, vorbis, ...)<br />
: * Audio indication (oscillograph, bar graph, ...)<br />
: * Show cover art from files or album folder<br />
: * Fade in/out and/or crossover<br />
: * Streaming radio (at least mp3 over http stream)<br />
: * Skins<br />
: * Media library<br />
* Language: Assembler/FASM (C/C++ to port codec)<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: hidnplayr / dunkaist<br />
* Links: [http://board.kolibrios.org/viewtopic.php?f=38&t=1596 AC97SND (MP3 player in C)], [http://board.kolibrios.org/viewtopic.php?f=28&t=317 Sound drivers and architecture], [http://board.kolibrios.org/viewtopic.php?f=38&t=3003 Flac decoder],[http://board.kolibrios.org/viewtopic.php?f=38&t=2220 Minimp3 (minimalistic mp3 decoding library)], [http://board.kolibrios.org/viewtopic.php?f=38&t=161 SuperMP3 (IDv3 tag demo)]<br />
<br />
==== Web browser: WebView ====<br />
'''Summary:''' Improve existing text-only web browser WebView - add more functionality and compatibility<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: [http://www.dev0.de/cmm/indexe.htm Sphinx C--]. May require writing a few lines in FASM though<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: punk_joker<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
* [http://board.kolibrios.org/viewtopic.php?f=40&t=1075 Work done so far on WebView (mostly in Russian)]. If you don't know Russian, you can read [http://translate.google.com/translate?hl=en&sl=ru&tl=en&u=http%3A%2F%2Fboard.kolibrios.org%2Fviewtopic.php%3Ff%3D40%26t%3D1075 English translation using Google-Translate]<br />
<br />
=== Drivers ===<br />
Writing drivers is about new hardware and filesystems.<br><br />
Knowledge of specifications and previous experience are ''not'' required but surely desirable.<br />
<br />
==== Ethernet driver(s) ====<br />
'''Summary:''' Write an Ethernet driver<br />
<br />
'''Details:'''<br />
* Primary goal: Support for popular Broadcom, Atheros or Marvell Yukon ethernet cards<br />
* Additional goal: A second driver for another card family, PPPoE support in kernel, ...<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: Medium<br />
* Mentor: hidnplayr<br />
* Links: [https://www.broadcom.com/collateral/pg/57XX-PG105-R.pdf BCM57xx programmers guide], [[Writing network drivers for KolibriOS]], [https://github.com/UDOOboard/U-Boot_Unico/blob/master/drivers/net/bcm570x.c BCM570x driver for u-boot (in C)], [http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fdrivers%2Funfinished%2Fbcm57xx.asm Stub for BCM57xx driver]<br />
<br />
==== SD Host Controller ====<br />
'''Summary:''' Add support for SD Host Controller<br />
<br />
'''Details:'''<br />
* Primary goal: Write driver for particular controller<br />
* Additional goal: Test and update driver to work for all controllers<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [https://www.sdcard.org/downloads/pls/simplified_specs/index.html SD specifications]<br />
<br />
<br />
==== USB devices ====<br />
'''Summary:''' Add USB drivers for the new USB stack (webcams, gamepads, joysticks, tablets, etc.)<br />
<br />
'''Details:'''<br />
* Primary goal: Write USB driver for currently unsupported device (you should have one)<br />
* Additional goal: Adopt code to work with all devices of the same class<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://en.wikipedia.org/wiki/USB#Device_classes USB device classes]<br />
<br />
==== Filesystem support ====<br />
'''Summary:''' Improve filesystem support in KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Update/fix read-write support for EXT2/3/4 filesystems (partially done)<br />
* Alternative goal: Add write support for the NTFS filesystem (read-only support already exists)<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Ffs%2F&#a0aa5cede7308db82d4bae78266ed8462 Filesystems in KolibriOS]<br />
<br />
==== Wi-Fi ====<br />
'''Summary:''' Add a Wi-Fi driver<br />
<br />
'''Details:'''<br />
* Description: <br />
* Language: Assembler/FASM<br />
* Skill level: intermediate<br />
* Importance: Leency<br />
* Mentor: ?<br />
<br />
=== System wide tasks ===<br />
These tasks comprise both user space and kernel space work. Some developers consider them as of most importance for KolibriOS.<br><br />
Architecture and algorithm design skills are highly desirable.<br />
<br />
==== Kolibri-A ====<br />
'''Summary:''' Porting Kolibri-A to Intel Atom<br />
<br />
'''Details:'''<br />
* Primary goal: Porting to Intel Atom and sync with the trunk<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Importance: art_zh<br />
* Mentor: art_zh<br />
* Links:<br />
<br />
<br />
==== Widget toolkit ====<br />
'''Summary:''' Extend Box_lib (a set of separate widgets) to create a full-featured widget toolkit<br />
<br />
'''Details:'''<br />
* Primary goal: Design architecture and implement focus handling, callbacks and other core ideas<br />
* Additional goal: Integrate box_lib widgets to this framework<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Importance: Vital<br />
* Mentor: dunkaist<br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
<br />
==== Unit testing framework ====<br />
'''Summary:''' Design and implement an unit testing framework, write tests for kernel functions<br />
<br />
'''Details:'''<br />
* Primary goal: Design and implement a framework, write tests for kernel functions<br />
* Additional goal: Write tests for system libraries (libio, libini)<br />
* Language: Assembler/FASM (preferrable), any other working in KolibriOS<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks list of unit testing frameworks]<br />
<br />
==== QR-code in boot log ====<br />
'''Summary:''' Add a [http://en.wikipedia.org/wiki/QR_code QR-code] (containing the debug log) at the end of boot process<br />
<br />
[[File:QR-code.png]]<br />
<br />
'''Details:'''<br />
* Description: Sometimes KolibriOS cannot boot on a certain hardware configuration (gets stuck during or after boot process). In such cases, we request the user having this problem to enable debug log at boot time, take a photo of the screen and show it to us (in the forum). However, sometimes taking a good quality photo can be quite challenging (bad camera, shaking hands etc.) and the attached photo is so blurry to the point the debug log cannot be even read. The idea suggested hereby is to simultaneously encode the debug log which is outputted on the screen, to the form of QR-code, and [http://wiki.kolibrios.org/wiki/File:QR-code.png show the resulting QR-code on empty space on the screen]. In such way, any user possessing a smartphone with a camera and QR-code scanner, could scan the QR-code and submit the encoded text directly on our forums (without having a need to take a photo), and our developers, in turn, would get the debug log text immediately and won't have to unscramble a blurry photo.<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Mentor: dunkaist<br />
<br />
==== C layer for KolibriOS ====<br />
'''Summary:''' Building a C layer for KolibriOS, so that we can get more developers and port more code to KolibriOS more easily<br />
<br />
'''Details:'''<br />
* Description: <br />
* Language: C<br />
* Skill level: intermediate<br />
* Mentor: Ashmew2<br />
<br />
<!--<br />
=== Open Ideas (without appointed mentor) ===<br />
<br />
==== One core for graphics ====<br />
'''Summary:''' On multi-core systems, dedicate one core for graphics rendering ONLY<br />
<br />
'''Details:'''<br />
* Goal: Move graphics subsystem to a single, dedicated core if multicore machine detected<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Serge(?)<br />
<br />
==== Partition editor ====<br />
'''Summary:''' Add a partition/HDD editor utility<br />
<br />
'''Details:'''<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Mario(?)<br />
<br />
==== Rewrite "Table" in Assembler ====<br />
'''Summary:''' Rewrite a great Kolibri spreadsheet application [[Table]] from C++ to FASM<br />
<br />
'''Details:'''<br />
* Goal: Port Table (C++) to Assembler/FASM<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Mentor: ???<br />
<br />
==== Kernel vulnerabilities ====<br />
'''Summary:''' Find and fix as many kernel vulnerabilities as you can<br />
<br />
'''Details:'''<br />
* Goal: Check the list of kernel API functions versus their actual implementation in KolibriOS kernel (for example, check that the function doesn't destroy register values if it declares in description that it doesn't). If you find a vulnerability, try to fix it so that it works according to API. If you cannot fix it yourself, document the vulnerability and describe the problem.<br />
* Language: Assembler/FASM<br />
* Skill level: Intermediate/Expert<br />
* Mentor: Serge '''(Is not always available to answer questions, so select this task only if you can work fairly independently.)'''<br />
<br />
==== Web browser in FASM ====<br />
'''Summary:''' Write a proper HTML web browser for KolibriOS<br />
<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Mentor: SoUrcerer<br />
<br />
<br />
==== Printing/scanning API ====<br />
'''Summary:''' Add a printing and scanning API and drivers.<br />
<br />
'''Details:'''<br />
* Primary goal: Design and code infrastructure for printing and scanning devices.<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: SoUrcerer<br />
--><br />
<br />
[[Category:Misc]]</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Google_Summer_of_Code_2016&diff=5177Google Summer of Code 20162016-01-19T13:30:06Z<p>Punk Joker: /* Wi-Fi */</p>
<hr />
<div><!-- [[Image:GSoC2015.png|right]] --><br />
== Introduction ==<br />
KolibriOS is going to apply as a mentoring organization for [https://developers.google.com/open-source/gsoc/ Google Summer of Code 2016]. This page contains our ideas list and some additional information for students and mentors.<br />
<br />
We have previously participated as a Mentoring Organization in [http://www.google-melange.com/gsoc/homepage/google/gsoc2014 Google Summer of Code 2014]. The [[Google Summer of Code 2014|ideas page for 2014]] is available for your reference. Our organization page for GSoC 2014 and successfully completed projects for that year can be accessed [https://www.google-melange.com/gsoc/org2/google/gsoc2014/kolibrios via this link]. To our great delight, both successful students of GSoC2014 stayed with the project and continue contributing to KolibriOS voluntarily in their spare time.<br />
<br />
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.<br />
<br />
== Student Requirements ==<br />
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] (25 March 19:00 UTC).'''<br><br><br />
In addition, students need to answer the following questions when applying:<br />
# Full Name (First + Last Name).<br />
# E-mail address.<br />
# Phone (home or mobile).<br />
# Another phone '''for emergency cases''' (if we cannot contact you) - parents, boy/girlfriend, husband/wife etc.<br />
# Nickname you plan to use on our forums, SVN repository or IRC chat.<br />
# Age.<br />
# Country + city of residence.<br />
# Human languages you speak (state all languages and knowledge level - basic/intermediate/expert/mother tongue).<br />
# Name of college or university you are accepted into or enrolled in + link to their website.<br />
# Name of program (or faculty, or department) in that college/university you are accepted into or enrolled in.<br />
# Your current timezone in UTC/GMT terms (for example, Paris is UTC/GMT +1 hours right now).<br />
# Have you been involved with any open-source project in the past? If yes, which one, and what have you done for that project?<br />
# 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.<br />
# The task you are willing to work on from our list of Summer of Code 2016 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.<br />
# 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.''<br />
<br />
== Organization ==<br />
<br />
You can find the organizers on the IRC channel (#kolibrios @ irc.freenode.net) or at our forum: http://board.kolibrios.org/<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
| vacant<br />
| vacant<br />
|Organization Administrator<br />
|-<br />
|Jeffrey Amelynck<br />
|[[User:Hidnplayr|hidnplayr]]<br />
|Mentor, Backup Administrator<br />
|-<br />
|Kiril Lipatov<br />
|[[User:Punk Joker|Leency]]<br />
|Mentor<br />
|-<br />
|Artem Zherdev<br />
|[[User:art_zh|art_zh]]<br />
|Mentor<br />
|-<br />
|Ashish Gupta<br />
|[[User:Ashmew2|Ashmew2]]<br />
|Mentor<br />
|-<br />
|}<br />
We have discussed "Google Summer of Code 2016" application with all active members of the KolibriOS Project Team, and selected only those 3 (three) people who have both the knowledge, the dedication, and the 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.<br />
<br />
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 GSoC2014.<br />
<br />
== Ideas for Google Summer of Code 2016 ==<br />
The below list contains ideas suggested by KolibriOS team members. '''It is neither complete nor final.'''<br><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.<br />
<br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Required Skill Level<br />
! Importance for KolibriOS<br />
! Programming Language<br />
! Mentor<br />
|-<br />
| [[#XDXF_dictionary|XDXF dictionary]]<br />
| Application<br />
| Basic<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#CPUID_tool|CPUID tool]]<br />
| Application<br />
| Beginner<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#FTP_client|FTP client]]<br />
| Application<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Torrent_client|Torrent client]]<br />
| Application<br />
| Advanced<br />
| High<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#XMPP.2FJabber_client|XMPP/Jabber client]]<br />
| Application<br />
| Intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| dunkaist/hidnplayr<br />
|-<br />
| [[#Music_player|Music player]]<br />
| Application<br />
| Advanced<br />
| Medium<br />
| Assembler(FASM)/C/C++<br />
| dunkaist/hidnplayr<br />
|-<br />
| [[#Web_browser:_WebView|Web browser: WebView]]<br />
| Application<br />
| intermediate<br />
| Standard<br />
| [http://www.dev0.de/cmm/indexe.htm Sphinx C--]<br />
| Leency<br />
|-<br />
| [[#Ethernet_driver.28s.29|Ethernet driver(s)]]<br />
| Driver<br />
| Advanced<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#SD_Host_Controller|SD Host Controller driver]]<br />
| Driver<br />
| Advanced<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#USB_devices|USB device drivers]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Filesystem_support|Filesystem support]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#Kolibri-A|Kolibri-A]]<br />
| Kernel<br />
| intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| art_zh<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide task<br />
| intermediate<br />
| Standard<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#Unit_testing_framework|Unit testing framework]]<br />
| System wide task<br />
| intermediate<br />
| High<br />
| Any<br />
| dunkaist<br />
|-<br />
| [[#QR-code_in_boot_log|QR-code in boot log]]<br />
| Kernel/Library<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#Wi-Fi|Wi-Fi]]<br />
| Driver<br />
| intermediate<br />
| Medium<br />
| C--<br />
| Leency<br />
|-<br />
| [[#C layer for KolibriOS|C layer for KolibriOS]]<br />
| Library<br />
| intermediate<br />
| Medium<br />
| C<br />
| Ashmew2<br />
|}<br />
Explanation of required skill level:<br />
* Beginner: No knowledge at all of the topic,<br />
* Basic: A very basic knowledge of the topic but no professional usage,<br />
* Intermediate: A basic knowledge of the topic but no regular professional usage,<br />
* Advanced: A good knowledge of the topic and a regular professional usage,<br />
* Expert: a perfect knowledge of the topic and a daily professional usage.<br />
<br />
Explanation of importance for the project:<br />
* Low: For sure it doesn't hurt to implement, but if nobody does it, no one will even notice.<br />
* Medium: Nice-to-have feature. Will improve everyday life of users and developers.<br />
* High: This feature is needed for the project to start being adopted by masses.<br />
* Critical: This functionality is vital for the project to become useful.<br />
<br />
=== Applications ===<br />
These are userspace tasks. They often require only basic knowledge of algorithms and data structures.<br><br />
No specific experience is required but welcome.<br />
<br />
==== XDXF dictionary ====<br />
'''Summary:''' Write dictionary application with support of XDXF (XML Dictionary eXchange Format)<br />
<br />
'''Details:'''<br />
* Primary goal: Write library and corresponding dictionary application<br />
* Additional goal: Support of other dictioinary formats<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate<br />
* Importance: Standard<br />
* Mentor: dunkaist<br />
* Links: [http://tibleiz.net/asm-xml/ fasm xml library], [https://en.wikipedia.org/wiki/XDXF XDXF format]<br />
<br />
<br />
==== CPUID tool ====<br />
'''Summary:''' Update existing CPUID application to be aware of new CPUs and their features<br />
<br />
'''Details:'''<br />
* Primary goal: Write code to detect and report new CPUs and features + size detection for caches<br />
* Additional goal: Refactor code as to use system libraries (libimg, box_lib, etc.)<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: Standard<br />
* Mentor: dunkaist / Wildwest<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fprograms%2Fsystem%2Fcpuid%2Ftrunk%2F&#aec5d374b78ae8f08110b3327c3ba5f56 CPUID program], [http://bochs.sourceforge.net/techspec/24161821.pdf Intel cpuid], [http://support.amd.com/TechDocs/25481.pdf AMD cpuid]<br />
<br />
<br />
==== FTP client ====<br />
'''Summary:''' Create a GUI based FTP client or add FTP support to one of the existing file managers<br />
<br />
'''Details:'''<br />
* Primary goal: FTP access (download/upload/etc.)<br />
* Additional goal: Create an FTP client library<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [https://www.ietf.org/rfc/rfc959.txt File Transfer Protocol (RFC959)], [http://board.kolibrios.org/viewtopic.php?f=40&t=2360 CLI FTP client (demo)]<br />
<br />
==== Torrent client ====<br />
'''Summary:''' Write a (bit-)torrent client for KolibriOS, or port an existing one<br />
<br />
'''Details:'''<br />
* Primary goal: Implement a torrent client similar to [http://www.utorrent.com/ µTorrent Free edition]<br />
* Alternative goal (less preferred, but still possible): Port an existing torrent client to KolibriOS<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://www.bittorrent.org Information about the protocol]<br />
<br />
==== XMPP/Jabber client ====<br />
'''Summary:''' Write a XMPP/Jabber library and client for KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Write basic xmpp library/client<br />
* Additional goal: Implement some xmpp extentions<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist/hidnplayr<br />
* 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]<br />
<br />
==== Music player ====<br />
'''Summary:''' Improve the current music player in Kolibri<br />
<br />
'''Details:'''<br />
* Primary goal: Rewrite the current music player (ac97snd), in FASM, and improve its functionality<br />
: * Support for file formats wav, mp3 and xm (using available external libraries)<br />
: * Support for playlists (m3u)<br />
: * A time display<br />
* Additional goal:<br />
: * Use of system wide hotkeys to control player<br />
: * Support for metadata (ID3, ...)<br />
: * More codecs (flac, vorbis, ...)<br />
: * Audio indication (oscillograph, bar graph, ...)<br />
: * Show cover art from files or album folder<br />
: * Fade in/out and/or crossover<br />
: * Streaming radio (at least mp3 over http stream)<br />
: * Skins<br />
: * Media library<br />
* Language: Assembler/FASM (C/C++ to port codec)<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: hidnplayr / dunkaist<br />
* Links: [http://board.kolibrios.org/viewtopic.php?f=38&t=1596 AC97SND (MP3 player in C)], [http://board.kolibrios.org/viewtopic.php?f=28&t=317 Sound drivers and architecture], [http://board.kolibrios.org/viewtopic.php?f=38&t=3003 Flac decoder],[http://board.kolibrios.org/viewtopic.php?f=38&t=2220 Minimp3 (minimalistic mp3 decoding library)], [http://board.kolibrios.org/viewtopic.php?f=38&t=161 SuperMP3 (IDv3 tag demo)]<br />
<br />
==== Web browser: WebView ====<br />
'''Summary:''' Improve existing text-only web browser WebView - add more functionality and compatibility<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: [http://www.dev0.de/cmm/indexe.htm Sphinx C--]. May require writing a few lines in FASM though<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: punk_joker<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
* [http://board.kolibrios.org/viewtopic.php?f=40&t=1075 Work done so far on WebView (mostly in Russian)]. If you don't know Russian, you can read [http://translate.google.com/translate?hl=en&sl=ru&tl=en&u=http%3A%2F%2Fboard.kolibrios.org%2Fviewtopic.php%3Ff%3D40%26t%3D1075 English translation using Google-Translate]<br />
<br />
=== Drivers ===<br />
Writing drivers is about new hardware and filesystems.<br><br />
Knowledge of specifications and previous experience are ''not'' required but surely desirable.<br />
<br />
==== Ethernet driver(s) ====<br />
'''Summary:''' Write an Ethernet driver<br />
<br />
'''Details:'''<br />
* Primary goal: Support for popular Broadcom, Atheros or Marvell Yukon ethernet cards<br />
* Additional goal: A second driver for another card family, PPPoE support in kernel, ...<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: Medium<br />
* Mentor: hidnplayr<br />
* Links: [https://www.broadcom.com/collateral/pg/57XX-PG105-R.pdf BCM57xx programmers guide], [[Writing network drivers for KolibriOS]], [https://github.com/UDOOboard/U-Boot_Unico/blob/master/drivers/net/bcm570x.c BCM570x driver for u-boot (in C)], [http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fdrivers%2Funfinished%2Fbcm57xx.asm Stub for BCM57xx driver]<br />
<br />
==== SD Host Controller ====<br />
'''Summary:''' Add support for SD Host Controller<br />
<br />
'''Details:'''<br />
* Primary goal: Write driver for particular controller<br />
* Additional goal: Test and update driver to work for all controllers<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [https://www.sdcard.org/downloads/pls/simplified_specs/index.html SD specifications]<br />
<br />
<br />
==== USB devices ====<br />
'''Summary:''' Add USB drivers for the new USB stack (webcams, gamepads, joysticks, tablets, etc.)<br />
<br />
'''Details:'''<br />
* Primary goal: Write USB driver for currently unsupported device (you should have one)<br />
* Additional goal: Adopt code to work with all devices of the same class<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://en.wikipedia.org/wiki/USB#Device_classes USB device classes]<br />
<br />
==== Filesystem support ====<br />
'''Summary:''' Improve filesystem support in KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Update/fix read-write support for EXT2/3/4 filesystems (partially done)<br />
* Alternative goal: Add write support for the NTFS filesystem (read-only support already exists)<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Ffs%2F&#a0aa5cede7308db82d4bae78266ed8462 Filesystems in KolibriOS]<br />
<br />
==== Wi-Fi ====<br />
'''Summary:''' Add a Wi-Fi driver<br />
<br />
'''Details:'''<br />
* Description: <br />
* Language: Assembler(FASM)<br />
* Skill level: intermediate<br />
* Importance: Leency<br />
* Mentor: ?<br />
<br />
=== System wide tasks ===<br />
These tasks comprise both user space and kernel space work. Some developers consider them as of most importance for KolibriOS.<br><br />
Architecture and algorithm design skills are highly desirable.<br />
<br />
==== Kolibri-A ====<br />
'''Summary:''' Porting Kolibri-A to Intel Atom<br />
<br />
'''Details:'''<br />
* Primary goal: Porting to Intel Atom and sync with the trunk<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Importance: art_zh<br />
* Mentor: art_zh<br />
* Links:<br />
<br />
<br />
==== Widget toolkit ====<br />
'''Summary:''' Extend Box_lib (a set of separate widgets) to create a full-featured widget toolkit<br />
<br />
'''Details:'''<br />
* Primary goal: Design architecture and implement focus handling, callbacks and other core ideas<br />
* Additional goal: Integrate box_lib widgets to this framework<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Importance: Vital<br />
* Mentor: dunkaist<br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
<br />
==== Unit testing framework ====<br />
'''Summary:''' Design and implement an unit testing framework, write tests for kernel functions<br />
<br />
'''Details:'''<br />
* Primary goal: Design and implement a framework, write tests for kernel functions<br />
* Additional goal: Write tests for system libraries (libio, libini)<br />
* Language: Assembler/FASM (preferrable), any other working in KolibriOS<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks list of unit testing frameworks]<br />
<br />
==== QR-code in boot log ====<br />
'''Summary:''' Add a [http://en.wikipedia.org/wiki/QR_code QR-code] (containing the debug log) at the end of boot process<br />
<br />
[[File:QR-code.png]]<br />
<br />
'''Details:'''<br />
* Description: Sometimes KolibriOS cannot boot on a certain hardware configuration (gets stuck during or after boot process). In such cases, we request the user having this problem to enable debug log at boot time, take a photo of the screen and show it to us (in the forum). However, sometimes taking a good quality photo can be quite challenging (bad camera, shaking hands etc.) and the attached photo is so blurry to the point the debug log cannot be even read. The idea suggested hereby is to simultaneously encode the debug log which is outputted on the screen, to the form of QR-code, and [http://wiki.kolibrios.org/wiki/File:QR-code.png show the resulting QR-code on empty space on the screen]. In such way, any user possessing a smartphone with a camera and QR-code scanner, could scan the QR-code and submit the encoded text directly on our forums (without having a need to take a photo), and our developers, in turn, would get the debug log text immediately and won't have to unscramble a blurry photo.<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Mentor: dunkaist<br />
<br />
==== C layer for KolibriOS ====<br />
'''Summary:''' Building a C layer for KolibriOS, so that we can get more developers and port more code to KolibriOS more easily<br />
<br />
'''Details:'''<br />
* Description: <br />
* Language: C<br />
* Skill level: intermediate<br />
* Mentor: Ashmew2<br />
<br />
<!--<br />
=== Open Ideas (without appointed mentor) ===<br />
<br />
==== One core for graphics ====<br />
'''Summary:''' On multi-core systems, dedicate one core for graphics rendering ONLY<br />
<br />
'''Details:'''<br />
* Goal: Move graphics subsystem to a single, dedicated core if multicore machine detected<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Serge(?)<br />
<br />
==== Partition editor ====<br />
'''Summary:''' Add a partition/HDD editor utility<br />
<br />
'''Details:'''<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Mario(?)<br />
<br />
==== Rewrite "Table" in Assembler ====<br />
'''Summary:''' Rewrite a great Kolibri spreadsheet application [[Table]] from C++ to FASM<br />
<br />
'''Details:'''<br />
* Goal: Port Table (C++) to Assembler/FASM<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Mentor: ???<br />
<br />
==== Kernel vulnerabilities ====<br />
'''Summary:''' Find and fix as many kernel vulnerabilities as you can<br />
<br />
'''Details:'''<br />
* Goal: Check the list of kernel API functions versus their actual implementation in KolibriOS kernel (for example, check that the function doesn't destroy register values if it declares in description that it doesn't). If you find a vulnerability, try to fix it so that it works according to API. If you cannot fix it yourself, document the vulnerability and describe the problem.<br />
* Language: Assembler/FASM<br />
* Skill level: Intermediate/Expert<br />
* Mentor: Serge '''(Is not always available to answer questions, so select this task only if you can work fairly independently.)'''<br />
<br />
==== Web browser in FASM ====<br />
'''Summary:''' Write a proper HTML web browser for KolibriOS<br />
<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Mentor: SoUrcerer<br />
<br />
<br />
==== Printing/scanning API ====<br />
'''Summary:''' Add a printing and scanning API and drivers.<br />
<br />
'''Details:'''<br />
* Primary goal: Design and code infrastructure for printing and scanning devices.<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: SoUrcerer<br />
--><br />
<br />
[[Category:Misc]]</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Google_Summer_of_Code_2016&diff=5135Google Summer of Code 20162016-01-15T18:21:49Z<p>Punk Joker: /* Sortable list of ideas for easy navigation */</p>
<hr />
<div><!-- [[Image:GSoC2015.png|right]] --><br />
== Introduction ==<br />
KolibriOS is going to apply as a mentoring organization for [https://developers.google.com/open-source/gsoc/ Google Summer of Code 2016]. This page contains our ideas list and some additional information for students and mentors.<br />
<br />
We have previously participated as a Mentoring Organization in [http://www.google-melange.com/gsoc/homepage/google/gsoc2014 Google Summer of Code 2014]. The [[Google Summer of Code 2014|ideas page for 2014]] is available for your reference. Our organization page for GSoC 2014 and successfully completed projects for that year can be accessed [https://www.google-melange.com/gsoc/org2/google/gsoc2014/kolibrios via this link]. To our great delight, both successful students of GSoC2014 stayed with the project and continue contributing to KolibriOS voluntarily in their spare time.<br />
<br />
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.<br />
<br />
== Student Requirements ==<br />
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] (25 March 19:00 UTC).'''<br><br><br />
In addition, students need to answer the following questions when applying:<br />
# Full Name (First + Last Name).<br />
# E-mail address.<br />
# Phone (home or mobile).<br />
# Another phone '''for emergency cases''' (if we cannot contact you) - parents, boy/girlfriend, husband/wife etc.<br />
# Nickname you plan to use on our forums, SVN repository or IRC chat.<br />
# Age.<br />
# Country + city of residence.<br />
# Human languages you speak (state all languages and knowledge level - basic/intermediate/expert/mother tongue).<br />
# Name of college or university you are accepted into or enrolled in + link to their website.<br />
# Name of program (or faculty, or department) in that college/university you are accepted into or enrolled in.<br />
# Your current timezone in UTC/GMT terms (for example, Paris is UTC/GMT +1 hours right now).<br />
# Have you been involved with any open-source project in the past? If yes, which one, and what have you done for that project?<br />
# 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.<br />
# The task you are willing to work on from our list of Summer of Code 2016 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.<br />
# 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.''<br />
<br />
== Organization ==<br />
<br />
You can find the organizers on the IRC channel (#kolibrios @ irc.freenode.net) or at our forum: http://board.kolibrios.org/<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
| vacant<br />
| vacant<br />
|Organization Administrator<br />
|-<br />
|Jeffrey Amelynck<br />
|[[User:Hidnplayr|hidnplayr]]<br />
|Mentor, Backup Administrator<br />
|-<br />
|Kiril Lipatov<br />
|[[User:Punk Joker|Leency]]<br />
|Mentor<br />
|-<br />
|Artem Zherdev<br />
|[[User:Punk Joker|art_zh]]<br />
|Mentor<br />
|-<br />
|}<br />
We have discussed "Google Summer of Code 2016" application with all active members of the KolibriOS Project Team, and selected only those 3 (three) people who have both the knowledge, the dedication, and the 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.<br />
<br />
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 GSoC2014.<br />
<br />
== Ideas for Google Summer of Code 2016 ==<br />
The below list contains ideas suggested by KolibriOS team members. '''It is neither complete nor final.'''<br><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.<br />
<br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Required Skill Level<br />
! Importance for KolibriOS<br />
! Programming Language<br />
! Mentor<br />
|-<br />
| [[#XDXF_dictionary|XDXF dictionary]]<br />
| Application<br />
| Basic<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#CPUID_tool|CPUID tool]]<br />
| Application<br />
| Beginner<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#FTP_client|FTP client]]<br />
| Application<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Torrent_client|Torrent client]]<br />
| Application<br />
| Advanced<br />
| High<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#XMPP.2FJabber_client|XMPP/Jabber client]]<br />
| Application<br />
| Intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| dunkaist/hidnplayr<br />
|-<br />
| [[#Music_player|Music player]]<br />
| Application<br />
| Advanced<br />
| Medium<br />
| Assembler(FASM)/C/C++<br />
| dunkaist/hidnplayr<br />
|-<br />
| [[#Web_browser:_WebView|Web browser: WebView]]<br />
| Application<br />
| intermediate<br />
| Standard<br />
| [http://www.dev0.de/cmm/indexe.htm Sphinx C--]<br />
| Leency<br />
|-<br />
| [[#Ethernet_driver.28s.29|Ethernet driver(s)]]<br />
| Driver<br />
| Advanced<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#SD_Host_Controller|SD Host Controller driver]]<br />
| Driver<br />
| Advanced<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#USB_devices|USB device drivers]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Filesystem_support|Filesystem support]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#Kolibri-A|Kolibri-A]]<br />
| Kernel<br />
| intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| art_zh<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide task<br />
| intermediate<br />
| Standard<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#Unit_testing_framework|Unit testing framework]]<br />
| System wide task<br />
| intermediate<br />
| High<br />
| Any<br />
| dunkaist<br />
|-<br />
| [[#QR-code_in_boot_log|QR-code in boot log]]<br />
| Kernel/Library<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| dunkaist<br />
|}<br />
Explanation of required skill level:<br />
* Beginner: No knowledge at all of the topic,<br />
* Basic: A very basic knowledge of the topic but no professional usage,<br />
* Intermediate: A basic knowledge of the topic but no regular professional usage,<br />
* Advanced: A good knowledge of the topic and a regular professional usage,<br />
* Expert: a perfect knowledge of the topic and a daily professional usage.<br />
<br />
Explanation of importance for the project:<br />
* Low: For sure it doesn't hurt to implement, but if nobody does it, no one will even notice.<br />
* Medium: Nice-to-have feature. Will improve everyday life of users and developers.<br />
* High: This feature is needed for the project to start being adopted by masses.<br />
* Critical: This functionality is vital for the project to become useful.<br />
<br />
=== Applications ===<br />
These are userspace tasks. They often require only basic knowledge of algorithms and data structures.<br><br />
No specific experience is required but welcome.<br />
<br />
==== XDXF dictionary ====<br />
'''Summary:''' Write dictionary application with support of XDXF (XML Dictionary eXchange Format)<br />
<br />
'''Details:'''<br />
* Primary goal: Write library and corresponding dictionary application<br />
* Additional goal: Support of other dictioinary formats<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate<br />
* Importance: Standard<br />
* Mentor: dunkaist<br />
* Links: [http://tibleiz.net/asm-xml/ fasm xml library], [https://en.wikipedia.org/wiki/XDXF XDXF format]<br />
<br />
<br />
==== CPUID tool ====<br />
'''Summary:''' Update existing CPUID application to be aware of new CPUs and their features<br />
<br />
'''Details:'''<br />
* Primary goal: Write code to detect and report new CPUs and features + size detection for caches<br />
* Additional goal: Refactor code as to use system libraries (libimg, box_lib, etc.)<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: Standard<br />
* Mentor: dunkaist / Wildwest<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fprograms%2Fsystem%2Fcpuid%2Ftrunk%2F&#aec5d374b78ae8f08110b3327c3ba5f56 CPUID program], [http://bochs.sourceforge.net/techspec/24161821.pdf Intel cpuid], [http://support.amd.com/TechDocs/25481.pdf AMD cpuid]<br />
<br />
<br />
==== FTP client ====<br />
'''Summary:''' Create a GUI based FTP client or add FTP support to one of the existing file managers<br />
<br />
'''Details:'''<br />
* Primary goal: FTP access (download/upload/etc.)<br />
* Additional goal: Create an FTP client library<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [https://www.ietf.org/rfc/rfc959.txt File Transfer Protocol (RFC959)], [http://board.kolibrios.org/viewtopic.php?f=40&t=2360 CLI FTP client (demo)]<br />
<br />
==== Torrent client ====<br />
'''Summary:''' Write a (bit-)torrent client for KolibriOS, or port an existing one<br />
<br />
'''Details:'''<br />
* Primary goal: Implement a torrent client similar to [http://www.utorrent.com/ µTorrent Free edition]<br />
* Alternative goal (less preferred, but still possible): Port an existing torrent client to KolibriOS<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://www.bittorrent.org Information about the protocol]<br />
<br />
==== XMPP/Jabber client ====<br />
'''Summary:''' Write a XMPP/Jabber library and client for KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Write basic xmpp library/client<br />
* Additional goal: Implement some xmpp extentions<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist/hidnplayr<br />
* 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]<br />
<br />
==== Music player ====<br />
'''Summary:''' Improve the current music player in Kolibri<br />
<br />
'''Details:'''<br />
* Primary goal: Rewrite the current music player (ac97snd), in FASM, and improve its functionality<br />
: * Support for file formats wav, mp3 and xm (using available external libraries)<br />
: * Support for playlists (m3u)<br />
: * A time display<br />
* Additional goal:<br />
: * Use of system wide hotkeys to control player<br />
: * Support for metadata (ID3, ...)<br />
: * More codecs (flac, vorbis, ...)<br />
: * Audio indication (oscillograph, bar graph, ...)<br />
: * Show cover art from files or album folder<br />
: * Fade in/out and/or crossover<br />
: * Streaming radio (at least mp3 over http stream)<br />
: * Skins<br />
: * Media library<br />
* Language: Assembler/FASM (C/C++ to port codec)<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: hidnplayr / dunkaist<br />
* Links: [http://board.kolibrios.org/viewtopic.php?f=38&t=1596 AC97SND (MP3 player in C)], [http://board.kolibrios.org/viewtopic.php?f=28&t=317 Sound drivers and architecture], [http://board.kolibrios.org/viewtopic.php?f=38&t=3003 Flac decoder],[http://board.kolibrios.org/viewtopic.php?f=38&t=2220 Minimp3 (minimalistic mp3 decoding library)], [http://board.kolibrios.org/viewtopic.php?f=38&t=161 SuperMP3 (IDv3 tag demo)]<br />
<br />
==== Web browser: WebView ====<br />
'''Summary:''' Improve existing text-only web browser WebView - add more functionality and compatibility<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: [http://www.dev0.de/cmm/indexe.htm Sphinx C--]. May require writing a few lines in FASM though<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: punk_joker<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
* [http://board.kolibrios.org/viewtopic.php?f=40&t=1075 Work done so far on WebView (mostly in Russian)]. If you don't know Russian, you can read [http://translate.google.com/translate?hl=en&sl=ru&tl=en&u=http%3A%2F%2Fboard.kolibrios.org%2Fviewtopic.php%3Ff%3D40%26t%3D1075 English translation using Google-Translate]<br />
<br />
=== Drivers ===<br />
Writing drivers is about new hardware and filesystems.<br><br />
Knowledge of specifications and previous experience are ''not'' required but surely desirable.<br />
<br />
==== Ethernet driver(s) ====<br />
'''Summary:''' Write an Ethernet driver<br />
<br />
'''Details:'''<br />
* Primary goal: Support for popular Broadcom, Atheros or Marvell Yukon ethernet cards<br />
* Additional goal: A second driver for another card family, PPPoE support in kernel, ...<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: Medium<br />
* Mentor: hidnplayr<br />
* Links: [https://www.broadcom.com/collateral/pg/57XX-PG105-R.pdf BCM57xx programmers guide], [[Writing network drivers for KolibriOS]], [https://github.com/UDOOboard/U-Boot_Unico/blob/master/drivers/net/bcm570x.c BCM570x driver for u-boot (in C)], [http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fdrivers%2Funfinished%2Fbcm57xx.asm Stub for BCM57xx driver]<br />
<br />
==== SD Host Controller ====<br />
'''Summary:''' Add support for SD Host Controller<br />
<br />
'''Details:'''<br />
* Primary goal: Write driver for particular controller<br />
* Additional goal: Test and update driver to work for all controllers<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [https://www.sdcard.org/downloads/pls/simplified_specs/index.html SD specifications]<br />
<br />
<br />
==== USB devices ====<br />
'''Summary:''' Add USB drivers for the new USB stack (webcams, gamepads, joysticks, tablets, etc.)<br />
<br />
'''Details:'''<br />
* Primary goal: Write USB driver for currently unsupported device (you should have one)<br />
* Additional goal: Adopt code to work with all devices of the same class<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://en.wikipedia.org/wiki/USB#Device_classes USB device classes]<br />
<br />
==== Filesystem support ====<br />
'''Summary:''' Improve filesystem support in KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Update/fix read-write support for EXT2/3/4 filesystems (partially done)<br />
* Alternative goal: Add write support for the NTFS filesystem (read-only support already exists)<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Ffs%2F&#a0aa5cede7308db82d4bae78266ed8462 Filesystems in KolibriOS]<br />
<br />
<br />
=== System wide tasks ===<br />
These tasks comprise both user space and kernel space work. Some developers consider them as of most importance for KolibriOS.<br><br />
Architecture and algorithm design skills are highly desirable.<br />
<br />
==== Kolibri-A ====<br />
'''Summary:''' Porting Kolibri-A to Intel Atom<br />
<br />
'''Details:'''<br />
* Primary goal: Porting to Intel Atom and sync with the trunk<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Importance: art_zh<br />
* Mentor: art_zh<br />
* Links:<br />
<br />
<br />
==== Widget toolkit ====<br />
'''Summary:''' Extend Box_lib (a set of separate widgets) to create a full-featured widget toolkit<br />
<br />
'''Details:'''<br />
* Primary goal: Design architecture and implement focus handling, callbacks and other core ideas<br />
* Additional goal: Integrate box_lib widgets to this framework<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Importance: Vital<br />
* Mentor: dunkaist<br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
<br />
==== Unit testing framework ====<br />
'''Summary:''' Design and implement an unit testing framework, write tests for kernel functions<br />
<br />
'''Details:'''<br />
* Primary goal: Design and implement a framework, write tests for kernel functions<br />
* Additional goal: Write tests for system libraries (libio, libini)<br />
* Language: Assembler/FASM (preferrable), any other working in KolibriOS<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks list of unit testing frameworks]<br />
<br />
==== QR-code in boot log ====<br />
'''Summary:''' Add a [http://en.wikipedia.org/wiki/QR_code QR-code] (containing the debug log) at the end of boot process<br />
<br />
[[File:QR-code.png]]<br />
<br />
'''Details:'''<br />
* Description: Sometimes KolibriOS cannot boot on a certain hardware configuration (gets stuck during or after boot process). In such cases, we request the user having this problem to enable debug log at boot time, take a photo of the screen and show it to us (in the forum). However, sometimes taking a good quality photo can be quite challenging (bad camera, shaking hands etc.) and the attached photo is so blurry to the point the debug log cannot be even read. The idea suggested hereby is to simultaneously encode the debug log which is outputted on the screen, to the form of QR-code, and [http://wiki.kolibrios.org/wiki/File:QR-code.png show the resulting QR-code on empty space on the screen]. In such way, any user possessing a smartphone with a camera and QR-code scanner, could scan the QR-code and submit the encoded text directly on our forums (without having a need to take a photo), and our developers, in turn, would get the debug log text immediately and won't have to unscramble a blurry photo.<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Mentor: dunkaist<br />
<br />
<!--<br />
=== Open Ideas (without appointed mentor) ===<br />
<br />
==== One core for graphics ====<br />
'''Summary:''' On multi-core systems, dedicate one core for graphics rendering ONLY<br />
<br />
'''Details:'''<br />
* Goal: Move graphics subsystem to a single, dedicated core if multicore machine detected<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Serge(?)<br />
<br />
==== Partition editor ====<br />
'''Summary:''' Add a partition/HDD editor utility<br />
<br />
'''Details:'''<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Mario(?)<br />
<br />
==== Rewrite "Table" in Assembler ====<br />
'''Summary:''' Rewrite a great Kolibri spreadsheet application [[Table]] from C++ to FASM<br />
<br />
'''Details:'''<br />
* Goal: Port Table (C++) to Assembler/FASM<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Mentor: ???<br />
<br />
==== Kernel vulnerabilities ====<br />
'''Summary:''' Find and fix as many kernel vulnerabilities as you can<br />
<br />
'''Details:'''<br />
* Goal: Check the list of kernel API functions versus their actual implementation in KolibriOS kernel (for example, check that the function doesn't destroy register values if it declares in description that it doesn't). If you find a vulnerability, try to fix it so that it works according to API. If you cannot fix it yourself, document the vulnerability and describe the problem.<br />
* Language: Assembler/FASM<br />
* Skill level: Intermediate/Expert<br />
* Mentor: Serge '''(Is not always available to answer questions, so select this task only if you can work fairly independently.)'''<br />
<br />
==== Web browser in FASM ====<br />
'''Summary:''' Write a proper HTML web browser for KolibriOS<br />
<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Mentor: SoUrcerer<br />
<br />
<br />
==== Printing/scanning API ====<br />
'''Summary:''' Add a printing and scanning API and drivers.<br />
<br />
'''Details:'''<br />
* Primary goal: Design and code infrastructure for printing and scanning devices.<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: SoUrcerer<br />
--><br />
<br />
[[Category:Misc]]</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Google_Summer_of_Code_2016&diff=5134Google Summer of Code 20162016-01-15T18:18:44Z<p>Punk Joker: /* Sortable list of ideas for easy navigation */</p>
<hr />
<div><!-- [[Image:GSoC2015.png|right]] --><br />
== Introduction ==<br />
KolibriOS is going to apply as a mentoring organization for [https://developers.google.com/open-source/gsoc/ Google Summer of Code 2016]. This page contains our ideas list and some additional information for students and mentors.<br />
<br />
We have previously participated as a Mentoring Organization in [http://www.google-melange.com/gsoc/homepage/google/gsoc2014 Google Summer of Code 2014]. The [[Google Summer of Code 2014|ideas page for 2014]] is available for your reference. Our organization page for GSoC 2014 and successfully completed projects for that year can be accessed [https://www.google-melange.com/gsoc/org2/google/gsoc2014/kolibrios via this link]. To our great delight, both successful students of GSoC2014 stayed with the project and continue contributing to KolibriOS voluntarily in their spare time.<br />
<br />
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.<br />
<br />
== Student Requirements ==<br />
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] (25 March 19:00 UTC).'''<br><br><br />
In addition, students need to answer the following questions when applying:<br />
# Full Name (First + Last Name).<br />
# E-mail address.<br />
# Phone (home or mobile).<br />
# Another phone '''for emergency cases''' (if we cannot contact you) - parents, boy/girlfriend, husband/wife etc.<br />
# Nickname you plan to use on our forums, SVN repository or IRC chat.<br />
# Age.<br />
# Country + city of residence.<br />
# Human languages you speak (state all languages and knowledge level - basic/intermediate/expert/mother tongue).<br />
# Name of college or university you are accepted into or enrolled in + link to their website.<br />
# Name of program (or faculty, or department) in that college/university you are accepted into or enrolled in.<br />
# Your current timezone in UTC/GMT terms (for example, Paris is UTC/GMT +1 hours right now).<br />
# Have you been involved with any open-source project in the past? If yes, which one, and what have you done for that project?<br />
# 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.<br />
# The task you are willing to work on from our list of Summer of Code 2016 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.<br />
# 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.''<br />
<br />
== Organization ==<br />
<br />
You can find the organizers on the IRC channel (#kolibrios @ irc.freenode.net) or at our forum: http://board.kolibrios.org/<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
| vacant<br />
| vacant<br />
|Organization Administrator<br />
|-<br />
|Jeffrey Amelynck<br />
|[[User:Hidnplayr|hidnplayr]]<br />
|Mentor, Backup Administrator<br />
|-<br />
|Kiril Lipatov<br />
|[[User:Punk Joker|Leency]]<br />
|Mentor<br />
|-<br />
|Artem Zherdev<br />
|[[User:Punk Joker|art_zh]]<br />
|Mentor<br />
|-<br />
|}<br />
We have discussed "Google Summer of Code 2016" application with all active members of the KolibriOS Project Team, and selected only those 3 (three) people who have both the knowledge, the dedication, and the 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.<br />
<br />
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 GSoC2014.<br />
<br />
== Ideas for Google Summer of Code 2016 ==<br />
The below list contains ideas suggested by KolibriOS team members. '''It is neither complete nor final.'''<br><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.<br />
<br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Required Skill Level<br />
! Importance for KolibriOS<br />
! Programming Language<br />
! Mentor<br />
|-<br />
| [[#XDXF_dictionary|XDXF dictionary]]<br />
| Application<br />
| Basic<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#CPUID_tool|CPUID tool]]<br />
| Application<br />
| Beginner<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#FTP_client|FTP client]]<br />
| Application<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Torrent_client|Torrent client]]<br />
| Application<br />
| Advanced<br />
| High<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#XMPP.2FJabber_client|XMPP/Jabber client]]<br />
| Application<br />
| Intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| dunkaist/hidnplayr<br />
|-<br />
| [[#Music_player|Music player]]<br />
| Application<br />
| Advanced<br />
| Medium<br />
| Assembler(FASM)/C/C++<br />
| dunkaist/hidnplayr<br />
|-<br />
| [[#Web_browser:_WebView|Web browser: WebView]]<br />
| Application<br />
| intermediate<br />
| Standard<br />
| [http://www.dev0.de/cmm/indexe.htm Sphinx C--]<br />
| punk_joker<br />
|-<br />
| [[#Ethernet_driver.28s.29|Ethernet driver(s)]]<br />
| Driver<br />
| Advanced<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#SD_Host_Controller|SD Host Controller driver]]<br />
| Driver<br />
| Advanced<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#USB_devices|USB device drivers]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Filesystem_support|Filesystem support]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#Kolibri-A|Kolibri-A]]<br />
| Kernel<br />
| intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| art_zh<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide task<br />
| intermediate<br />
| Standard<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#Unit_testing_framework|Unit testing framework]]<br />
| System wide task<br />
| intermediate<br />
| High<br />
| Any<br />
| dunkaist<br />
|-<br />
| [[#QR-code_in_boot_log|QR-code in boot log]]<br />
| Kernel/Library<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| dunkaist<br />
|}<br />
Explanation of required skill level:<br />
* Beginner: No knowledge at all of the topic,<br />
* Basic: A very basic knowledge of the topic but no professional usage,<br />
* Intermediate: A basic knowledge of the topic but no regular professional usage,<br />
* Advanced: A good knowledge of the topic and a regular professional usage,<br />
* Expert: a perfect knowledge of the topic and a daily professional usage.<br />
<br />
Explanation of importance for the project:<br />
* Low: For sure it doesn't hurt to implement, but if nobody does it, no one will even notice.<br />
* Medium: Nice-to-have feature. Will improve everyday life of users and developers.<br />
* High: This feature is needed for the project to start being adopted by masses.<br />
* Critical: This functionality is vital for the project to become useful.<br />
<br />
=== Applications ===<br />
These are userspace tasks. They often require only basic knowledge of algorithms and data structures.<br><br />
No specific experience is required but welcome.<br />
<br />
==== XDXF dictionary ====<br />
'''Summary:''' Write dictionary application with support of XDXF (XML Dictionary eXchange Format)<br />
<br />
'''Details:'''<br />
* Primary goal: Write library and corresponding dictionary application<br />
* Additional goal: Support of other dictioinary formats<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate<br />
* Importance: Standard<br />
* Mentor: dunkaist<br />
* Links: [http://tibleiz.net/asm-xml/ fasm xml library], [https://en.wikipedia.org/wiki/XDXF XDXF format]<br />
<br />
<br />
==== CPUID tool ====<br />
'''Summary:''' Update existing CPUID application to be aware of new CPUs and their features<br />
<br />
'''Details:'''<br />
* Primary goal: Write code to detect and report new CPUs and features + size detection for caches<br />
* Additional goal: Refactor code as to use system libraries (libimg, box_lib, etc.)<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: Standard<br />
* Mentor: dunkaist / Wildwest<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fprograms%2Fsystem%2Fcpuid%2Ftrunk%2F&#aec5d374b78ae8f08110b3327c3ba5f56 CPUID program], [http://bochs.sourceforge.net/techspec/24161821.pdf Intel cpuid], [http://support.amd.com/TechDocs/25481.pdf AMD cpuid]<br />
<br />
<br />
==== FTP client ====<br />
'''Summary:''' Create a GUI based FTP client or add FTP support to one of the existing file managers<br />
<br />
'''Details:'''<br />
* Primary goal: FTP access (download/upload/etc.)<br />
* Additional goal: Create an FTP client library<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [https://www.ietf.org/rfc/rfc959.txt File Transfer Protocol (RFC959)], [http://board.kolibrios.org/viewtopic.php?f=40&t=2360 CLI FTP client (demo)]<br />
<br />
==== Torrent client ====<br />
'''Summary:''' Write a (bit-)torrent client for KolibriOS, or port an existing one<br />
<br />
'''Details:'''<br />
* Primary goal: Implement a torrent client similar to [http://www.utorrent.com/ µTorrent Free edition]<br />
* Alternative goal (less preferred, but still possible): Port an existing torrent client to KolibriOS<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://www.bittorrent.org Information about the protocol]<br />
<br />
==== XMPP/Jabber client ====<br />
'''Summary:''' Write a XMPP/Jabber library and client for KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Write basic xmpp library/client<br />
* Additional goal: Implement some xmpp extentions<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist/hidnplayr<br />
* 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]<br />
<br />
==== Music player ====<br />
'''Summary:''' Improve the current music player in Kolibri<br />
<br />
'''Details:'''<br />
* Primary goal: Rewrite the current music player (ac97snd), in FASM, and improve its functionality<br />
: * Support for file formats wav, mp3 and xm (using available external libraries)<br />
: * Support for playlists (m3u)<br />
: * A time display<br />
* Additional goal:<br />
: * Use of system wide hotkeys to control player<br />
: * Support for metadata (ID3, ...)<br />
: * More codecs (flac, vorbis, ...)<br />
: * Audio indication (oscillograph, bar graph, ...)<br />
: * Show cover art from files or album folder<br />
: * Fade in/out and/or crossover<br />
: * Streaming radio (at least mp3 over http stream)<br />
: * Skins<br />
: * Media library<br />
* Language: Assembler/FASM (C/C++ to port codec)<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: hidnplayr / dunkaist<br />
* Links: [http://board.kolibrios.org/viewtopic.php?f=38&t=1596 AC97SND (MP3 player in C)], [http://board.kolibrios.org/viewtopic.php?f=28&t=317 Sound drivers and architecture], [http://board.kolibrios.org/viewtopic.php?f=38&t=3003 Flac decoder],[http://board.kolibrios.org/viewtopic.php?f=38&t=2220 Minimp3 (minimalistic mp3 decoding library)], [http://board.kolibrios.org/viewtopic.php?f=38&t=161 SuperMP3 (IDv3 tag demo)]<br />
<br />
==== Web browser: WebView ====<br />
'''Summary:''' Improve existing text-only web browser WebView - add more functionality and compatibility<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: [http://www.dev0.de/cmm/indexe.htm Sphinx C--]. May require writing a few lines in FASM though<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: punk_joker<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
* [http://board.kolibrios.org/viewtopic.php?f=40&t=1075 Work done so far on WebView (mostly in Russian)]. If you don't know Russian, you can read [http://translate.google.com/translate?hl=en&sl=ru&tl=en&u=http%3A%2F%2Fboard.kolibrios.org%2Fviewtopic.php%3Ff%3D40%26t%3D1075 English translation using Google-Translate]<br />
<br />
=== Drivers ===<br />
Writing drivers is about new hardware and filesystems.<br><br />
Knowledge of specifications and previous experience are ''not'' required but surely desirable.<br />
<br />
==== Ethernet driver(s) ====<br />
'''Summary:''' Write an Ethernet driver<br />
<br />
'''Details:'''<br />
* Primary goal: Support for popular Broadcom, Atheros or Marvell Yukon ethernet cards<br />
* Additional goal: A second driver for another card family, PPPoE support in kernel, ...<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: Medium<br />
* Mentor: hidnplayr<br />
* Links: [https://www.broadcom.com/collateral/pg/57XX-PG105-R.pdf BCM57xx programmers guide], [[Writing network drivers for KolibriOS]], [https://github.com/UDOOboard/U-Boot_Unico/blob/master/drivers/net/bcm570x.c BCM570x driver for u-boot (in C)], [http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fdrivers%2Funfinished%2Fbcm57xx.asm Stub for BCM57xx driver]<br />
<br />
==== SD Host Controller ====<br />
'''Summary:''' Add support for SD Host Controller<br />
<br />
'''Details:'''<br />
* Primary goal: Write driver for particular controller<br />
* Additional goal: Test and update driver to work for all controllers<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [https://www.sdcard.org/downloads/pls/simplified_specs/index.html SD specifications]<br />
<br />
<br />
==== USB devices ====<br />
'''Summary:''' Add USB drivers for the new USB stack (webcams, gamepads, joysticks, tablets, etc.)<br />
<br />
'''Details:'''<br />
* Primary goal: Write USB driver for currently unsupported device (you should have one)<br />
* Additional goal: Adopt code to work with all devices of the same class<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://en.wikipedia.org/wiki/USB#Device_classes USB device classes]<br />
<br />
==== Filesystem support ====<br />
'''Summary:''' Improve filesystem support in KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Update/fix read-write support for EXT2/3/4 filesystems (partially done)<br />
* Alternative goal: Add write support for the NTFS filesystem (read-only support already exists)<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Ffs%2F&#a0aa5cede7308db82d4bae78266ed8462 Filesystems in KolibriOS]<br />
<br />
<br />
=== System wide tasks ===<br />
These tasks comprise both user space and kernel space work. Some developers consider them as of most importance for KolibriOS.<br><br />
Architecture and algorithm design skills are highly desirable.<br />
<br />
==== Kolibri-A ====<br />
'''Summary:''' Porting Kolibri-A to Intel Atom<br />
<br />
'''Details:'''<br />
* Primary goal: Porting to Intel Atom and sync with the trunk<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Importance: art_zh<br />
* Mentor: art_zh<br />
* Links:<br />
<br />
<br />
==== Widget toolkit ====<br />
'''Summary:''' Extend Box_lib (a set of separate widgets) to create a full-featured widget toolkit<br />
<br />
'''Details:'''<br />
* Primary goal: Design architecture and implement focus handling, callbacks and other core ideas<br />
* Additional goal: Integrate box_lib widgets to this framework<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Importance: Vital<br />
* Mentor: dunkaist<br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
<br />
==== Unit testing framework ====<br />
'''Summary:''' Design and implement an unit testing framework, write tests for kernel functions<br />
<br />
'''Details:'''<br />
* Primary goal: Design and implement a framework, write tests for kernel functions<br />
* Additional goal: Write tests for system libraries (libio, libini)<br />
* Language: Assembler/FASM (preferrable), any other working in KolibriOS<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks list of unit testing frameworks]<br />
<br />
==== QR-code in boot log ====<br />
'''Summary:''' Add a [http://en.wikipedia.org/wiki/QR_code QR-code] (containing the debug log) at the end of boot process<br />
<br />
[[File:QR-code.png]]<br />
<br />
'''Details:'''<br />
* Description: Sometimes KolibriOS cannot boot on a certain hardware configuration (gets stuck during or after boot process). In such cases, we request the user having this problem to enable debug log at boot time, take a photo of the screen and show it to us (in the forum). However, sometimes taking a good quality photo can be quite challenging (bad camera, shaking hands etc.) and the attached photo is so blurry to the point the debug log cannot be even read. The idea suggested hereby is to simultaneously encode the debug log which is outputted on the screen, to the form of QR-code, and [http://wiki.kolibrios.org/wiki/File:QR-code.png show the resulting QR-code on empty space on the screen]. In such way, any user possessing a smartphone with a camera and QR-code scanner, could scan the QR-code and submit the encoded text directly on our forums (without having a need to take a photo), and our developers, in turn, would get the debug log text immediately and won't have to unscramble a blurry photo.<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Mentor: dunkaist<br />
<br />
<!--<br />
=== Open Ideas (without appointed mentor) ===<br />
<br />
==== One core for graphics ====<br />
'''Summary:''' On multi-core systems, dedicate one core for graphics rendering ONLY<br />
<br />
'''Details:'''<br />
* Goal: Move graphics subsystem to a single, dedicated core if multicore machine detected<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Serge(?)<br />
<br />
==== Partition editor ====<br />
'''Summary:''' Add a partition/HDD editor utility<br />
<br />
'''Details:'''<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Mario(?)<br />
<br />
==== Rewrite "Table" in Assembler ====<br />
'''Summary:''' Rewrite a great Kolibri spreadsheet application [[Table]] from C++ to FASM<br />
<br />
'''Details:'''<br />
* Goal: Port Table (C++) to Assembler/FASM<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Mentor: ???<br />
<br />
==== Kernel vulnerabilities ====<br />
'''Summary:''' Find and fix as many kernel vulnerabilities as you can<br />
<br />
'''Details:'''<br />
* Goal: Check the list of kernel API functions versus their actual implementation in KolibriOS kernel (for example, check that the function doesn't destroy register values if it declares in description that it doesn't). If you find a vulnerability, try to fix it so that it works according to API. If you cannot fix it yourself, document the vulnerability and describe the problem.<br />
* Language: Assembler/FASM<br />
* Skill level: Intermediate/Expert<br />
* Mentor: Serge '''(Is not always available to answer questions, so select this task only if you can work fairly independently.)'''<br />
<br />
==== Web browser in FASM ====<br />
'''Summary:''' Write a proper HTML web browser for KolibriOS<br />
<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Mentor: SoUrcerer<br />
<br />
<br />
==== Printing/scanning API ====<br />
'''Summary:''' Add a printing and scanning API and drivers.<br />
<br />
'''Details:'''<br />
* Primary goal: Design and code infrastructure for printing and scanning devices.<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: SoUrcerer<br />
--><br />
<br />
[[Category:Misc]]</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Google_Summer_of_Code_2016&diff=5133Google Summer of Code 20162016-01-15T18:18:01Z<p>Punk Joker: /* Sortable list of ideas for easy navigation */</p>
<hr />
<div><!-- [[Image:GSoC2015.png|right]] --><br />
== Introduction ==<br />
KolibriOS is going to apply as a mentoring organization for [https://developers.google.com/open-source/gsoc/ Google Summer of Code 2016]. This page contains our ideas list and some additional information for students and mentors.<br />
<br />
We have previously participated as a Mentoring Organization in [http://www.google-melange.com/gsoc/homepage/google/gsoc2014 Google Summer of Code 2014]. The [[Google Summer of Code 2014|ideas page for 2014]] is available for your reference. Our organization page for GSoC 2014 and successfully completed projects for that year can be accessed [https://www.google-melange.com/gsoc/org2/google/gsoc2014/kolibrios via this link]. To our great delight, both successful students of GSoC2014 stayed with the project and continue contributing to KolibriOS voluntarily in their spare time.<br />
<br />
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.<br />
<br />
== Student Requirements ==<br />
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] (25 March 19:00 UTC).'''<br><br><br />
In addition, students need to answer the following questions when applying:<br />
# Full Name (First + Last Name).<br />
# E-mail address.<br />
# Phone (home or mobile).<br />
# Another phone '''for emergency cases''' (if we cannot contact you) - parents, boy/girlfriend, husband/wife etc.<br />
# Nickname you plan to use on our forums, SVN repository or IRC chat.<br />
# Age.<br />
# Country + city of residence.<br />
# Human languages you speak (state all languages and knowledge level - basic/intermediate/expert/mother tongue).<br />
# Name of college or university you are accepted into or enrolled in + link to their website.<br />
# Name of program (or faculty, or department) in that college/university you are accepted into or enrolled in.<br />
# Your current timezone in UTC/GMT terms (for example, Paris is UTC/GMT +1 hours right now).<br />
# Have you been involved with any open-source project in the past? If yes, which one, and what have you done for that project?<br />
# 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.<br />
# The task you are willing to work on from our list of Summer of Code 2016 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.<br />
# 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.''<br />
<br />
== Organization ==<br />
<br />
You can find the organizers on the IRC channel (#kolibrios @ irc.freenode.net) or at our forum: http://board.kolibrios.org/<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
| vacant<br />
| vacant<br />
|Organization Administrator<br />
|-<br />
|Jeffrey Amelynck<br />
|[[User:Hidnplayr|hidnplayr]]<br />
|Mentor, Backup Administrator<br />
|-<br />
|Kiril Lipatov<br />
|[[User:Punk Joker|Leency]]<br />
|Mentor<br />
|-<br />
|Artem Zherdev<br />
|[[User:Punk Joker|art_zh]]<br />
|Mentor<br />
|-<br />
|}<br />
We have discussed "Google Summer of Code 2016" application with all active members of the KolibriOS Project Team, and selected only those 3 (three) people who have both the knowledge, the dedication, and the 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.<br />
<br />
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 GSoC2014.<br />
<br />
== Ideas for Google Summer of Code 2016 ==<br />
The below list contains ideas suggested by KolibriOS team members. '''It is neither complete nor final.'''<br><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.<br />
<br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Required Skill Level<br />
! Importance for KolibriOS<br />
! Programming Language<br />
! Mentor<br />
|-<br />
| [[#XDXF_dictionary|XDXF dictionary]]<br />
| Application<br />
| Basic<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#CPUID_tool|CPUID tool]]<br />
| Application<br />
| Beginner<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#FTP_client|FTP client]]<br />
| Application<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Torrent_client|Torrent client]]<br />
| Application<br />
| Advanced<br />
| High<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#XMPP.2FJabber_client|XMPP/Jabber client]]<br />
| Application<br />
| Intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| dunkaist/hidnplayr<br />
|-<br />
| [[#Music_player|Music player]]<br />
| Application<br />
| Advanced<br />
| Medium<br />
| Assembler(FASM)/C/C++<br />
| dunkaist/hidnplayr<br />
|-<br />
| [[#Web_browser:_WebView|Web browser: WebView]]<br />
| Application<br />
| intermediate<br />
| Standard<br />
| [http://www.dev0.de/cmm/indexe.htm Sphinx C--]<br />
| punk_joker<br />
|-<br />
| [[#Ethernet_driver.28s.29|Ethernet driver(s)]]<br />
| Driver<br />
| Advanced<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#SD_Host_Controller|SD Host Controller driver]]<br />
| Driver<br />
| Advanced<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#USB_devices|USB device drivers]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Filesystem_support|Filesystem support]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#Widget_toolkit|Kolibri-A]]<br />
| Kernel<br />
| intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| art_zh<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide task<br />
| intermediate<br />
| Standard<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#Unit_testing_framework|Unit testing framework]]<br />
| System wide task<br />
| intermediate<br />
| High<br />
| Any<br />
| dunkaist<br />
|-<br />
| [[#QR-code_in_boot_log|QR-code in boot log]]<br />
| Kernel/Library<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| dunkaist<br />
|}<br />
Explanation of required skill level:<br />
* Beginner: No knowledge at all of the topic,<br />
* Basic: A very basic knowledge of the topic but no professional usage,<br />
* Intermediate: A basic knowledge of the topic but no regular professional usage,<br />
* Advanced: A good knowledge of the topic and a regular professional usage,<br />
* Expert: a perfect knowledge of the topic and a daily professional usage.<br />
<br />
Explanation of importance for the project:<br />
* Low: For sure it doesn't hurt to implement, but if nobody does it, no one will even notice.<br />
* Medium: Nice-to-have feature. Will improve everyday life of users and developers.<br />
* High: This feature is needed for the project to start being adopted by masses.<br />
* Critical: This functionality is vital for the project to become useful.<br />
<br />
=== Applications ===<br />
These are userspace tasks. They often require only basic knowledge of algorithms and data structures.<br><br />
No specific experience is required but welcome.<br />
<br />
==== XDXF dictionary ====<br />
'''Summary:''' Write dictionary application with support of XDXF (XML Dictionary eXchange Format)<br />
<br />
'''Details:'''<br />
* Primary goal: Write library and corresponding dictionary application<br />
* Additional goal: Support of other dictioinary formats<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate<br />
* Importance: Standard<br />
* Mentor: dunkaist<br />
* Links: [http://tibleiz.net/asm-xml/ fasm xml library], [https://en.wikipedia.org/wiki/XDXF XDXF format]<br />
<br />
<br />
==== CPUID tool ====<br />
'''Summary:''' Update existing CPUID application to be aware of new CPUs and their features<br />
<br />
'''Details:'''<br />
* Primary goal: Write code to detect and report new CPUs and features + size detection for caches<br />
* Additional goal: Refactor code as to use system libraries (libimg, box_lib, etc.)<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: Standard<br />
* Mentor: dunkaist / Wildwest<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fprograms%2Fsystem%2Fcpuid%2Ftrunk%2F&#aec5d374b78ae8f08110b3327c3ba5f56 CPUID program], [http://bochs.sourceforge.net/techspec/24161821.pdf Intel cpuid], [http://support.amd.com/TechDocs/25481.pdf AMD cpuid]<br />
<br />
<br />
==== FTP client ====<br />
'''Summary:''' Create a GUI based FTP client or add FTP support to one of the existing file managers<br />
<br />
'''Details:'''<br />
* Primary goal: FTP access (download/upload/etc.)<br />
* Additional goal: Create an FTP client library<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [https://www.ietf.org/rfc/rfc959.txt File Transfer Protocol (RFC959)], [http://board.kolibrios.org/viewtopic.php?f=40&t=2360 CLI FTP client (demo)]<br />
<br />
==== Torrent client ====<br />
'''Summary:''' Write a (bit-)torrent client for KolibriOS, or port an existing one<br />
<br />
'''Details:'''<br />
* Primary goal: Implement a torrent client similar to [http://www.utorrent.com/ µTorrent Free edition]<br />
* Alternative goal (less preferred, but still possible): Port an existing torrent client to KolibriOS<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://www.bittorrent.org Information about the protocol]<br />
<br />
==== XMPP/Jabber client ====<br />
'''Summary:''' Write a XMPP/Jabber library and client for KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Write basic xmpp library/client<br />
* Additional goal: Implement some xmpp extentions<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist/hidnplayr<br />
* 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]<br />
<br />
==== Music player ====<br />
'''Summary:''' Improve the current music player in Kolibri<br />
<br />
'''Details:'''<br />
* Primary goal: Rewrite the current music player (ac97snd), in FASM, and improve its functionality<br />
: * Support for file formats wav, mp3 and xm (using available external libraries)<br />
: * Support for playlists (m3u)<br />
: * A time display<br />
* Additional goal:<br />
: * Use of system wide hotkeys to control player<br />
: * Support for metadata (ID3, ...)<br />
: * More codecs (flac, vorbis, ...)<br />
: * Audio indication (oscillograph, bar graph, ...)<br />
: * Show cover art from files or album folder<br />
: * Fade in/out and/or crossover<br />
: * Streaming radio (at least mp3 over http stream)<br />
: * Skins<br />
: * Media library<br />
* Language: Assembler/FASM (C/C++ to port codec)<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: hidnplayr / dunkaist<br />
* Links: [http://board.kolibrios.org/viewtopic.php?f=38&t=1596 AC97SND (MP3 player in C)], [http://board.kolibrios.org/viewtopic.php?f=28&t=317 Sound drivers and architecture], [http://board.kolibrios.org/viewtopic.php?f=38&t=3003 Flac decoder],[http://board.kolibrios.org/viewtopic.php?f=38&t=2220 Minimp3 (minimalistic mp3 decoding library)], [http://board.kolibrios.org/viewtopic.php?f=38&t=161 SuperMP3 (IDv3 tag demo)]<br />
<br />
==== Web browser: WebView ====<br />
'''Summary:''' Improve existing text-only web browser WebView - add more functionality and compatibility<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: [http://www.dev0.de/cmm/indexe.htm Sphinx C--]. May require writing a few lines in FASM though<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: punk_joker<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
* [http://board.kolibrios.org/viewtopic.php?f=40&t=1075 Work done so far on WebView (mostly in Russian)]. If you don't know Russian, you can read [http://translate.google.com/translate?hl=en&sl=ru&tl=en&u=http%3A%2F%2Fboard.kolibrios.org%2Fviewtopic.php%3Ff%3D40%26t%3D1075 English translation using Google-Translate]<br />
<br />
=== Drivers ===<br />
Writing drivers is about new hardware and filesystems.<br><br />
Knowledge of specifications and previous experience are ''not'' required but surely desirable.<br />
<br />
==== Ethernet driver(s) ====<br />
'''Summary:''' Write an Ethernet driver<br />
<br />
'''Details:'''<br />
* Primary goal: Support for popular Broadcom, Atheros or Marvell Yukon ethernet cards<br />
* Additional goal: A second driver for another card family, PPPoE support in kernel, ...<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: Medium<br />
* Mentor: hidnplayr<br />
* Links: [https://www.broadcom.com/collateral/pg/57XX-PG105-R.pdf BCM57xx programmers guide], [[Writing network drivers for KolibriOS]], [https://github.com/UDOOboard/U-Boot_Unico/blob/master/drivers/net/bcm570x.c BCM570x driver for u-boot (in C)], [http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fdrivers%2Funfinished%2Fbcm57xx.asm Stub for BCM57xx driver]<br />
<br />
==== SD Host Controller ====<br />
'''Summary:''' Add support for SD Host Controller<br />
<br />
'''Details:'''<br />
* Primary goal: Write driver for particular controller<br />
* Additional goal: Test and update driver to work for all controllers<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [https://www.sdcard.org/downloads/pls/simplified_specs/index.html SD specifications]<br />
<br />
<br />
==== USB devices ====<br />
'''Summary:''' Add USB drivers for the new USB stack (webcams, gamepads, joysticks, tablets, etc.)<br />
<br />
'''Details:'''<br />
* Primary goal: Write USB driver for currently unsupported device (you should have one)<br />
* Additional goal: Adopt code to work with all devices of the same class<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://en.wikipedia.org/wiki/USB#Device_classes USB device classes]<br />
<br />
==== Filesystem support ====<br />
'''Summary:''' Improve filesystem support in KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Update/fix read-write support for EXT2/3/4 filesystems (partially done)<br />
* Alternative goal: Add write support for the NTFS filesystem (read-only support already exists)<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Ffs%2F&#a0aa5cede7308db82d4bae78266ed8462 Filesystems in KolibriOS]<br />
<br />
<br />
=== System wide tasks ===<br />
These tasks comprise both user space and kernel space work. Some developers consider them as of most importance for KolibriOS.<br><br />
Architecture and algorithm design skills are highly desirable.<br />
<br />
==== Kolibri-A ====<br />
'''Summary:''' Porting Kolibri-A to Intel Atom<br />
<br />
'''Details:'''<br />
* Primary goal: Porting to Intel Atom and sync with the trunk<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Importance: art_zh<br />
* Mentor: art_zh<br />
* Links:<br />
<br />
<br />
==== Widget toolkit ====<br />
'''Summary:''' Extend Box_lib (a set of separate widgets) to create a full-featured widget toolkit<br />
<br />
'''Details:'''<br />
* Primary goal: Design architecture and implement focus handling, callbacks and other core ideas<br />
* Additional goal: Integrate box_lib widgets to this framework<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Importance: Vital<br />
* Mentor: dunkaist<br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
<br />
==== Unit testing framework ====<br />
'''Summary:''' Design and implement an unit testing framework, write tests for kernel functions<br />
<br />
'''Details:'''<br />
* Primary goal: Design and implement a framework, write tests for kernel functions<br />
* Additional goal: Write tests for system libraries (libio, libini)<br />
* Language: Assembler/FASM (preferrable), any other working in KolibriOS<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks list of unit testing frameworks]<br />
<br />
==== QR-code in boot log ====<br />
'''Summary:''' Add a [http://en.wikipedia.org/wiki/QR_code QR-code] (containing the debug log) at the end of boot process<br />
<br />
[[File:QR-code.png]]<br />
<br />
'''Details:'''<br />
* Description: Sometimes KolibriOS cannot boot on a certain hardware configuration (gets stuck during or after boot process). In such cases, we request the user having this problem to enable debug log at boot time, take a photo of the screen and show it to us (in the forum). However, sometimes taking a good quality photo can be quite challenging (bad camera, shaking hands etc.) and the attached photo is so blurry to the point the debug log cannot be even read. The idea suggested hereby is to simultaneously encode the debug log which is outputted on the screen, to the form of QR-code, and [http://wiki.kolibrios.org/wiki/File:QR-code.png show the resulting QR-code on empty space on the screen]. In such way, any user possessing a smartphone with a camera and QR-code scanner, could scan the QR-code and submit the encoded text directly on our forums (without having a need to take a photo), and our developers, in turn, would get the debug log text immediately and won't have to unscramble a blurry photo.<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Mentor: dunkaist<br />
<br />
<!--<br />
=== Open Ideas (without appointed mentor) ===<br />
<br />
==== One core for graphics ====<br />
'''Summary:''' On multi-core systems, dedicate one core for graphics rendering ONLY<br />
<br />
'''Details:'''<br />
* Goal: Move graphics subsystem to a single, dedicated core if multicore machine detected<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Serge(?)<br />
<br />
==== Partition editor ====<br />
'''Summary:''' Add a partition/HDD editor utility<br />
<br />
'''Details:'''<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Mario(?)<br />
<br />
==== Rewrite "Table" in Assembler ====<br />
'''Summary:''' Rewrite a great Kolibri spreadsheet application [[Table]] from C++ to FASM<br />
<br />
'''Details:'''<br />
* Goal: Port Table (C++) to Assembler/FASM<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Mentor: ???<br />
<br />
==== Kernel vulnerabilities ====<br />
'''Summary:''' Find and fix as many kernel vulnerabilities as you can<br />
<br />
'''Details:'''<br />
* Goal: Check the list of kernel API functions versus their actual implementation in KolibriOS kernel (for example, check that the function doesn't destroy register values if it declares in description that it doesn't). If you find a vulnerability, try to fix it so that it works according to API. If you cannot fix it yourself, document the vulnerability and describe the problem.<br />
* Language: Assembler/FASM<br />
* Skill level: Intermediate/Expert<br />
* Mentor: Serge '''(Is not always available to answer questions, so select this task only if you can work fairly independently.)'''<br />
<br />
==== Web browser in FASM ====<br />
'''Summary:''' Write a proper HTML web browser for KolibriOS<br />
<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Mentor: SoUrcerer<br />
<br />
<br />
==== Printing/scanning API ====<br />
'''Summary:''' Add a printing and scanning API and drivers.<br />
<br />
'''Details:'''<br />
* Primary goal: Design and code infrastructure for printing and scanning devices.<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: SoUrcerer<br />
--><br />
<br />
[[Category:Misc]]</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Google_Summer_of_Code_2016&diff=5132Google Summer of Code 20162016-01-15T18:16:36Z<p>Punk Joker: /* Organization */</p>
<hr />
<div><!-- [[Image:GSoC2015.png|right]] --><br />
== Introduction ==<br />
KolibriOS is going to apply as a mentoring organization for [https://developers.google.com/open-source/gsoc/ Google Summer of Code 2016]. This page contains our ideas list and some additional information for students and mentors.<br />
<br />
We have previously participated as a Mentoring Organization in [http://www.google-melange.com/gsoc/homepage/google/gsoc2014 Google Summer of Code 2014]. The [[Google Summer of Code 2014|ideas page for 2014]] is available for your reference. Our organization page for GSoC 2014 and successfully completed projects for that year can be accessed [https://www.google-melange.com/gsoc/org2/google/gsoc2014/kolibrios via this link]. To our great delight, both successful students of GSoC2014 stayed with the project and continue contributing to KolibriOS voluntarily in their spare time.<br />
<br />
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.<br />
<br />
== Student Requirements ==<br />
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] (25 March 19:00 UTC).'''<br><br><br />
In addition, students need to answer the following questions when applying:<br />
# Full Name (First + Last Name).<br />
# E-mail address.<br />
# Phone (home or mobile).<br />
# Another phone '''for emergency cases''' (if we cannot contact you) - parents, boy/girlfriend, husband/wife etc.<br />
# Nickname you plan to use on our forums, SVN repository or IRC chat.<br />
# Age.<br />
# Country + city of residence.<br />
# Human languages you speak (state all languages and knowledge level - basic/intermediate/expert/mother tongue).<br />
# Name of college or university you are accepted into or enrolled in + link to their website.<br />
# Name of program (or faculty, or department) in that college/university you are accepted into or enrolled in.<br />
# Your current timezone in UTC/GMT terms (for example, Paris is UTC/GMT +1 hours right now).<br />
# Have you been involved with any open-source project in the past? If yes, which one, and what have you done for that project?<br />
# 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.<br />
# The task you are willing to work on from our list of Summer of Code 2016 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.<br />
# 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.''<br />
<br />
== Organization ==<br />
<br />
You can find the organizers on the IRC channel (#kolibrios @ irc.freenode.net) or at our forum: http://board.kolibrios.org/<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
| vacant<br />
| vacant<br />
|Organization Administrator<br />
|-<br />
|Jeffrey Amelynck<br />
|[[User:Hidnplayr|hidnplayr]]<br />
|Mentor, Backup Administrator<br />
|-<br />
|Kiril Lipatov<br />
|[[User:Punk Joker|Leency]]<br />
|Mentor<br />
|-<br />
|Artem Zherdev<br />
|[[User:Punk Joker|art_zh]]<br />
|Mentor<br />
|-<br />
|}<br />
We have discussed "Google Summer of Code 2016" application with all active members of the KolibriOS Project Team, and selected only those 3 (three) people who have both the knowledge, the dedication, and the 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.<br />
<br />
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 GSoC2014.<br />
<br />
== Ideas for Google Summer of Code 2016 ==<br />
The below list contains ideas suggested by KolibriOS team members. '''It is neither complete nor final.'''<br><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.<br />
<br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Required Skill Level<br />
! Importance for KolibriOS<br />
! Programming Language<br />
! Mentor<br />
|-<br />
| [[#XDXF_dictionary|XDXF dictionary]]<br />
| Application<br />
| Basic<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#CPUID_tool|CPUID tool]]<br />
| Application<br />
| Beginner<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#FTP_client|FTP client]]<br />
| Application<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Torrent_client|Torrent client]]<br />
| Application<br />
| Advanced<br />
| High<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#XMPP.2FJabber_client|XMPP/Jabber client]]<br />
| Application<br />
| Intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| dunkaist/hidnplayr<br />
|-<br />
| [[#Music_player|Music player]]<br />
| Application<br />
| Advanced<br />
| Medium<br />
| Assembler(FASM)/C/C++<br />
| dunkaist/hidnplayr<br />
|-<br />
| [[#Web_browser:_WebView|Web browser: WebView]]<br />
| Application<br />
| intermediate<br />
| Standard<br />
| [http://www.dev0.de/cmm/indexe.htm Sphinx C--]<br />
| punk_joker<br />
|-<br />
| [[#Ethernet_driver.28s.29|Ethernet driver(s)]]<br />
| Driver<br />
| Advanced<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#SD_Host_Controller|SD Host Controller driver]]<br />
| Driver<br />
| Advanced<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#USB_devices|USB device drivers]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Filesystem_support|Filesystem support]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide task<br />
| intermediate<br />
| Standard<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#Unit_testing_framework|Unit testing framework]]<br />
| System wide task<br />
| intermediate<br />
| High<br />
| Any<br />
| dunkaist<br />
|-<br />
| [[#QR-code_in_boot_log|QR-code in boot log]]<br />
| Kernel/Library<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| dunkaist<br />
|}<br />
Explanation of required skill level:<br />
* Beginner: No knowledge at all of the topic,<br />
* Basic: A very basic knowledge of the topic but no professional usage,<br />
* Intermediate: A basic knowledge of the topic but no regular professional usage,<br />
* Advanced: A good knowledge of the topic and a regular professional usage,<br />
* Expert: a perfect knowledge of the topic and a daily professional usage.<br />
<br />
Explanation of importance for the project:<br />
* Low: For sure it doesn't hurt to implement, but if nobody does it, no one will even notice.<br />
* Medium: Nice-to-have feature. Will improve everyday life of users and developers.<br />
* High: This feature is needed for the project to start being adopted by masses.<br />
* Critical: This functionality is vital for the project to become useful.<br />
<br />
=== Applications ===<br />
These are userspace tasks. They often require only basic knowledge of algorithms and data structures.<br><br />
No specific experience is required but welcome.<br />
<br />
==== XDXF dictionary ====<br />
'''Summary:''' Write dictionary application with support of XDXF (XML Dictionary eXchange Format)<br />
<br />
'''Details:'''<br />
* Primary goal: Write library and corresponding dictionary application<br />
* Additional goal: Support of other dictioinary formats<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate<br />
* Importance: Standard<br />
* Mentor: dunkaist<br />
* Links: [http://tibleiz.net/asm-xml/ fasm xml library], [https://en.wikipedia.org/wiki/XDXF XDXF format]<br />
<br />
<br />
==== CPUID tool ====<br />
'''Summary:''' Update existing CPUID application to be aware of new CPUs and their features<br />
<br />
'''Details:'''<br />
* Primary goal: Write code to detect and report new CPUs and features + size detection for caches<br />
* Additional goal: Refactor code as to use system libraries (libimg, box_lib, etc.)<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: Standard<br />
* Mentor: dunkaist / Wildwest<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fprograms%2Fsystem%2Fcpuid%2Ftrunk%2F&#aec5d374b78ae8f08110b3327c3ba5f56 CPUID program], [http://bochs.sourceforge.net/techspec/24161821.pdf Intel cpuid], [http://support.amd.com/TechDocs/25481.pdf AMD cpuid]<br />
<br />
<br />
==== FTP client ====<br />
'''Summary:''' Create a GUI based FTP client or add FTP support to one of the existing file managers<br />
<br />
'''Details:'''<br />
* Primary goal: FTP access (download/upload/etc.)<br />
* Additional goal: Create an FTP client library<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [https://www.ietf.org/rfc/rfc959.txt File Transfer Protocol (RFC959)], [http://board.kolibrios.org/viewtopic.php?f=40&t=2360 CLI FTP client (demo)]<br />
<br />
==== Torrent client ====<br />
'''Summary:''' Write a (bit-)torrent client for KolibriOS, or port an existing one<br />
<br />
'''Details:'''<br />
* Primary goal: Implement a torrent client similar to [http://www.utorrent.com/ µTorrent Free edition]<br />
* Alternative goal (less preferred, but still possible): Port an existing torrent client to KolibriOS<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://www.bittorrent.org Information about the protocol]<br />
<br />
==== XMPP/Jabber client ====<br />
'''Summary:''' Write a XMPP/Jabber library and client for KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Write basic xmpp library/client<br />
* Additional goal: Implement some xmpp extentions<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist/hidnplayr<br />
* 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]<br />
<br />
==== Music player ====<br />
'''Summary:''' Improve the current music player in Kolibri<br />
<br />
'''Details:'''<br />
* Primary goal: Rewrite the current music player (ac97snd), in FASM, and improve its functionality<br />
: * Support for file formats wav, mp3 and xm (using available external libraries)<br />
: * Support for playlists (m3u)<br />
: * A time display<br />
* Additional goal:<br />
: * Use of system wide hotkeys to control player<br />
: * Support for metadata (ID3, ...)<br />
: * More codecs (flac, vorbis, ...)<br />
: * Audio indication (oscillograph, bar graph, ...)<br />
: * Show cover art from files or album folder<br />
: * Fade in/out and/or crossover<br />
: * Streaming radio (at least mp3 over http stream)<br />
: * Skins<br />
: * Media library<br />
* Language: Assembler/FASM (C/C++ to port codec)<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: hidnplayr / dunkaist<br />
* Links: [http://board.kolibrios.org/viewtopic.php?f=38&t=1596 AC97SND (MP3 player in C)], [http://board.kolibrios.org/viewtopic.php?f=28&t=317 Sound drivers and architecture], [http://board.kolibrios.org/viewtopic.php?f=38&t=3003 Flac decoder],[http://board.kolibrios.org/viewtopic.php?f=38&t=2220 Minimp3 (minimalistic mp3 decoding library)], [http://board.kolibrios.org/viewtopic.php?f=38&t=161 SuperMP3 (IDv3 tag demo)]<br />
<br />
==== Web browser: WebView ====<br />
'''Summary:''' Improve existing text-only web browser WebView - add more functionality and compatibility<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: [http://www.dev0.de/cmm/indexe.htm Sphinx C--]. May require writing a few lines in FASM though<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: punk_joker<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
* [http://board.kolibrios.org/viewtopic.php?f=40&t=1075 Work done so far on WebView (mostly in Russian)]. If you don't know Russian, you can read [http://translate.google.com/translate?hl=en&sl=ru&tl=en&u=http%3A%2F%2Fboard.kolibrios.org%2Fviewtopic.php%3Ff%3D40%26t%3D1075 English translation using Google-Translate]<br />
<br />
=== Drivers ===<br />
Writing drivers is about new hardware and filesystems.<br><br />
Knowledge of specifications and previous experience are ''not'' required but surely desirable.<br />
<br />
==== Ethernet driver(s) ====<br />
'''Summary:''' Write an Ethernet driver<br />
<br />
'''Details:'''<br />
* Primary goal: Support for popular Broadcom, Atheros or Marvell Yukon ethernet cards<br />
* Additional goal: A second driver for another card family, PPPoE support in kernel, ...<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: Medium<br />
* Mentor: hidnplayr<br />
* Links: [https://www.broadcom.com/collateral/pg/57XX-PG105-R.pdf BCM57xx programmers guide], [[Writing network drivers for KolibriOS]], [https://github.com/UDOOboard/U-Boot_Unico/blob/master/drivers/net/bcm570x.c BCM570x driver for u-boot (in C)], [http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fdrivers%2Funfinished%2Fbcm57xx.asm Stub for BCM57xx driver]<br />
<br />
==== SD Host Controller ====<br />
'''Summary:''' Add support for SD Host Controller<br />
<br />
'''Details:'''<br />
* Primary goal: Write driver for particular controller<br />
* Additional goal: Test and update driver to work for all controllers<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [https://www.sdcard.org/downloads/pls/simplified_specs/index.html SD specifications]<br />
<br />
<br />
==== USB devices ====<br />
'''Summary:''' Add USB drivers for the new USB stack (webcams, gamepads, joysticks, tablets, etc.)<br />
<br />
'''Details:'''<br />
* Primary goal: Write USB driver for currently unsupported device (you should have one)<br />
* Additional goal: Adopt code to work with all devices of the same class<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://en.wikipedia.org/wiki/USB#Device_classes USB device classes]<br />
<br />
==== Filesystem support ====<br />
'''Summary:''' Improve filesystem support in KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Update/fix read-write support for EXT2/3/4 filesystems (partially done)<br />
* Alternative goal: Add write support for the NTFS filesystem (read-only support already exists)<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Ffs%2F&#a0aa5cede7308db82d4bae78266ed8462 Filesystems in KolibriOS]<br />
<br />
<br />
=== System wide tasks ===<br />
These tasks comprise both user space and kernel space work. Some developers consider them as of most importance for KolibriOS.<br><br />
Architecture and algorithm design skills are highly desirable.<br />
<br />
==== Kolibri-A ====<br />
'''Summary:''' Porting Kolibri-A to Intel Atom<br />
<br />
'''Details:'''<br />
* Primary goal: Porting to Intel Atom and sync with the trunk<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Importance: art_zh<br />
* Mentor: art_zh<br />
* Links:<br />
<br />
<br />
==== Widget toolkit ====<br />
'''Summary:''' Extend Box_lib (a set of separate widgets) to create a full-featured widget toolkit<br />
<br />
'''Details:'''<br />
* Primary goal: Design architecture and implement focus handling, callbacks and other core ideas<br />
* Additional goal: Integrate box_lib widgets to this framework<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Importance: Vital<br />
* Mentor: dunkaist<br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
<br />
==== Unit testing framework ====<br />
'''Summary:''' Design and implement an unit testing framework, write tests for kernel functions<br />
<br />
'''Details:'''<br />
* Primary goal: Design and implement a framework, write tests for kernel functions<br />
* Additional goal: Write tests for system libraries (libio, libini)<br />
* Language: Assembler/FASM (preferrable), any other working in KolibriOS<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks list of unit testing frameworks]<br />
<br />
==== QR-code in boot log ====<br />
'''Summary:''' Add a [http://en.wikipedia.org/wiki/QR_code QR-code] (containing the debug log) at the end of boot process<br />
<br />
[[File:QR-code.png]]<br />
<br />
'''Details:'''<br />
* Description: Sometimes KolibriOS cannot boot on a certain hardware configuration (gets stuck during or after boot process). In such cases, we request the user having this problem to enable debug log at boot time, take a photo of the screen and show it to us (in the forum). However, sometimes taking a good quality photo can be quite challenging (bad camera, shaking hands etc.) and the attached photo is so blurry to the point the debug log cannot be even read. The idea suggested hereby is to simultaneously encode the debug log which is outputted on the screen, to the form of QR-code, and [http://wiki.kolibrios.org/wiki/File:QR-code.png show the resulting QR-code on empty space on the screen]. In such way, any user possessing a smartphone with a camera and QR-code scanner, could scan the QR-code and submit the encoded text directly on our forums (without having a need to take a photo), and our developers, in turn, would get the debug log text immediately and won't have to unscramble a blurry photo.<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Mentor: dunkaist<br />
<br />
<!--<br />
=== Open Ideas (without appointed mentor) ===<br />
<br />
==== One core for graphics ====<br />
'''Summary:''' On multi-core systems, dedicate one core for graphics rendering ONLY<br />
<br />
'''Details:'''<br />
* Goal: Move graphics subsystem to a single, dedicated core if multicore machine detected<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Serge(?)<br />
<br />
==== Partition editor ====<br />
'''Summary:''' Add a partition/HDD editor utility<br />
<br />
'''Details:'''<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Mario(?)<br />
<br />
==== Rewrite "Table" in Assembler ====<br />
'''Summary:''' Rewrite a great Kolibri spreadsheet application [[Table]] from C++ to FASM<br />
<br />
'''Details:'''<br />
* Goal: Port Table (C++) to Assembler/FASM<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Mentor: ???<br />
<br />
==== Kernel vulnerabilities ====<br />
'''Summary:''' Find and fix as many kernel vulnerabilities as you can<br />
<br />
'''Details:'''<br />
* Goal: Check the list of kernel API functions versus their actual implementation in KolibriOS kernel (for example, check that the function doesn't destroy register values if it declares in description that it doesn't). If you find a vulnerability, try to fix it so that it works according to API. If you cannot fix it yourself, document the vulnerability and describe the problem.<br />
* Language: Assembler/FASM<br />
* Skill level: Intermediate/Expert<br />
* Mentor: Serge '''(Is not always available to answer questions, so select this task only if you can work fairly independently.)'''<br />
<br />
==== Web browser in FASM ====<br />
'''Summary:''' Write a proper HTML web browser for KolibriOS<br />
<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Mentor: SoUrcerer<br />
<br />
<br />
==== Printing/scanning API ====<br />
'''Summary:''' Add a printing and scanning API and drivers.<br />
<br />
'''Details:'''<br />
* Primary goal: Design and code infrastructure for printing and scanning devices.<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: SoUrcerer<br />
--><br />
<br />
[[Category:Misc]]</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Google_Summer_of_Code_2016&diff=5131Google Summer of Code 20162016-01-15T18:13:36Z<p>Punk Joker: /* System wide tasks */</p>
<hr />
<div><!-- [[Image:GSoC2015.png|right]] --><br />
== Introduction ==<br />
KolibriOS is going to apply as a mentoring organization for [https://developers.google.com/open-source/gsoc/ Google Summer of Code 2016]. This page contains our ideas list and some additional information for students and mentors.<br />
<br />
We have previously participated as a Mentoring Organization in [http://www.google-melange.com/gsoc/homepage/google/gsoc2014 Google Summer of Code 2014]. The [[Google Summer of Code 2014|ideas page for 2014]] is available for your reference. Our organization page for GSoC 2014 and successfully completed projects for that year can be accessed [https://www.google-melange.com/gsoc/org2/google/gsoc2014/kolibrios via this link]. To our great delight, both successful students of GSoC2014 stayed with the project and continue contributing to KolibriOS voluntarily in their spare time.<br />
<br />
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.<br />
<br />
== Student Requirements ==<br />
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] (25 March 19:00 UTC).'''<br><br><br />
In addition, students need to answer the following questions when applying:<br />
# Full Name (First + Last Name).<br />
# E-mail address.<br />
# Phone (home or mobile).<br />
# Another phone '''for emergency cases''' (if we cannot contact you) - parents, boy/girlfriend, husband/wife etc.<br />
# Nickname you plan to use on our forums, SVN repository or IRC chat.<br />
# Age.<br />
# Country + city of residence.<br />
# Human languages you speak (state all languages and knowledge level - basic/intermediate/expert/mother tongue).<br />
# Name of college or university you are accepted into or enrolled in + link to their website.<br />
# Name of program (or faculty, or department) in that college/university you are accepted into or enrolled in.<br />
# Your current timezone in UTC/GMT terms (for example, Paris is UTC/GMT +1 hours right now).<br />
# Have you been involved with any open-source project in the past? If yes, which one, and what have you done for that project?<br />
# 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.<br />
# The task you are willing to work on from our list of Summer of Code 2016 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.<br />
# 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.''<br />
<br />
== Organization ==<br />
<br />
You can find the organizers on the IRC channel (#kolibrios @ irc.freenode.net) or at our forum: http://board.kolibrios.org/<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
| vacant<br />
| vacant<br />
|Organization Administrator<br />
|-<br />
|Jeffrey Amelynck<br />
|[[User:Hidnplayr|hidnplayr]]<br />
|Mentor, Backup Administrator<br />
|-<br />
|Ivan Baravy<br />
|[[User:dunkaist|dunkaist]]<br />
|Mentor<br />
|-<br />
|Sergey Sakhno<br />
|[[User:Punk Joker|punk_joker]]<br />
|Mentor<br />
|-<br />
|}<br />
We have discussed "Google Summer of Code 2016" application with all active members of the KolibriOS Project Team, and selected only those 3 (three) people who have both the knowledge, the dedication, and the 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.<br />
<br />
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 GSoC2014.<br />
<br />
== Ideas for Google Summer of Code 2016 ==<br />
The below list contains ideas suggested by KolibriOS team members. '''It is neither complete nor final.'''<br><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.<br />
<br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Required Skill Level<br />
! Importance for KolibriOS<br />
! Programming Language<br />
! Mentor<br />
|-<br />
| [[#XDXF_dictionary|XDXF dictionary]]<br />
| Application<br />
| Basic<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#CPUID_tool|CPUID tool]]<br />
| Application<br />
| Beginner<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#FTP_client|FTP client]]<br />
| Application<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Torrent_client|Torrent client]]<br />
| Application<br />
| Advanced<br />
| High<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#XMPP.2FJabber_client|XMPP/Jabber client]]<br />
| Application<br />
| Intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| dunkaist/hidnplayr<br />
|-<br />
| [[#Music_player|Music player]]<br />
| Application<br />
| Advanced<br />
| Medium<br />
| Assembler(FASM)/C/C++<br />
| dunkaist/hidnplayr<br />
|-<br />
| [[#Web_browser:_WebView|Web browser: WebView]]<br />
| Application<br />
| intermediate<br />
| Standard<br />
| [http://www.dev0.de/cmm/indexe.htm Sphinx C--]<br />
| punk_joker<br />
|-<br />
| [[#Ethernet_driver.28s.29|Ethernet driver(s)]]<br />
| Driver<br />
| Advanced<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#SD_Host_Controller|SD Host Controller driver]]<br />
| Driver<br />
| Advanced<br />
| Low<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#USB_devices|USB device drivers]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Filesystem_support|Filesystem support]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide task<br />
| intermediate<br />
| Standard<br />
| Assembler(FASM)<br />
| dunkaist<br />
|-<br />
| [[#Unit_testing_framework|Unit testing framework]]<br />
| System wide task<br />
| intermediate<br />
| High<br />
| Any<br />
| dunkaist<br />
|-<br />
| [[#QR-code_in_boot_log|QR-code in boot log]]<br />
| Kernel/Library<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| dunkaist<br />
|}<br />
Explanation of required skill level:<br />
* Beginner: No knowledge at all of the topic,<br />
* Basic: A very basic knowledge of the topic but no professional usage,<br />
* Intermediate: A basic knowledge of the topic but no regular professional usage,<br />
* Advanced: A good knowledge of the topic and a regular professional usage,<br />
* Expert: a perfect knowledge of the topic and a daily professional usage.<br />
<br />
Explanation of importance for the project:<br />
* Low: For sure it doesn't hurt to implement, but if nobody does it, no one will even notice.<br />
* Medium: Nice-to-have feature. Will improve everyday life of users and developers.<br />
* High: This feature is needed for the project to start being adopted by masses.<br />
* Critical: This functionality is vital for the project to become useful.<br />
<br />
=== Applications ===<br />
These are userspace tasks. They often require only basic knowledge of algorithms and data structures.<br><br />
No specific experience is required but welcome.<br />
<br />
==== XDXF dictionary ====<br />
'''Summary:''' Write dictionary application with support of XDXF (XML Dictionary eXchange Format)<br />
<br />
'''Details:'''<br />
* Primary goal: Write library and corresponding dictionary application<br />
* Additional goal: Support of other dictioinary formats<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate<br />
* Importance: Standard<br />
* Mentor: dunkaist<br />
* Links: [http://tibleiz.net/asm-xml/ fasm xml library], [https://en.wikipedia.org/wiki/XDXF XDXF format]<br />
<br />
<br />
==== CPUID tool ====<br />
'''Summary:''' Update existing CPUID application to be aware of new CPUs and their features<br />
<br />
'''Details:'''<br />
* Primary goal: Write code to detect and report new CPUs and features + size detection for caches<br />
* Additional goal: Refactor code as to use system libraries (libimg, box_lib, etc.)<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: Standard<br />
* Mentor: dunkaist / Wildwest<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fprograms%2Fsystem%2Fcpuid%2Ftrunk%2F&#aec5d374b78ae8f08110b3327c3ba5f56 CPUID program], [http://bochs.sourceforge.net/techspec/24161821.pdf Intel cpuid], [http://support.amd.com/TechDocs/25481.pdf AMD cpuid]<br />
<br />
<br />
==== FTP client ====<br />
'''Summary:''' Create a GUI based FTP client or add FTP support to one of the existing file managers<br />
<br />
'''Details:'''<br />
* Primary goal: FTP access (download/upload/etc.)<br />
* Additional goal: Create an FTP client library<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [https://www.ietf.org/rfc/rfc959.txt File Transfer Protocol (RFC959)], [http://board.kolibrios.org/viewtopic.php?f=40&t=2360 CLI FTP client (demo)]<br />
<br />
==== Torrent client ====<br />
'''Summary:''' Write a (bit-)torrent client for KolibriOS, or port an existing one<br />
<br />
'''Details:'''<br />
* Primary goal: Implement a torrent client similar to [http://www.utorrent.com/ µTorrent Free edition]<br />
* Alternative goal (less preferred, but still possible): Port an existing torrent client to KolibriOS<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://www.bittorrent.org Information about the protocol]<br />
<br />
==== XMPP/Jabber client ====<br />
'''Summary:''' Write a XMPP/Jabber library and client for KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Write basic xmpp library/client<br />
* Additional goal: Implement some xmpp extentions<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist/hidnplayr<br />
* 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]<br />
<br />
==== Music player ====<br />
'''Summary:''' Improve the current music player in Kolibri<br />
<br />
'''Details:'''<br />
* Primary goal: Rewrite the current music player (ac97snd), in FASM, and improve its functionality<br />
: * Support for file formats wav, mp3 and xm (using available external libraries)<br />
: * Support for playlists (m3u)<br />
: * A time display<br />
* Additional goal:<br />
: * Use of system wide hotkeys to control player<br />
: * Support for metadata (ID3, ...)<br />
: * More codecs (flac, vorbis, ...)<br />
: * Audio indication (oscillograph, bar graph, ...)<br />
: * Show cover art from files or album folder<br />
: * Fade in/out and/or crossover<br />
: * Streaming radio (at least mp3 over http stream)<br />
: * Skins<br />
: * Media library<br />
* Language: Assembler/FASM (C/C++ to port codec)<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: hidnplayr / dunkaist<br />
* Links: [http://board.kolibrios.org/viewtopic.php?f=38&t=1596 AC97SND (MP3 player in C)], [http://board.kolibrios.org/viewtopic.php?f=28&t=317 Sound drivers and architecture], [http://board.kolibrios.org/viewtopic.php?f=38&t=3003 Flac decoder],[http://board.kolibrios.org/viewtopic.php?f=38&t=2220 Minimp3 (minimalistic mp3 decoding library)], [http://board.kolibrios.org/viewtopic.php?f=38&t=161 SuperMP3 (IDv3 tag demo)]<br />
<br />
==== Web browser: WebView ====<br />
'''Summary:''' Improve existing text-only web browser WebView - add more functionality and compatibility<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: [http://www.dev0.de/cmm/indexe.htm Sphinx C--]. May require writing a few lines in FASM though<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: punk_joker<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
* [http://board.kolibrios.org/viewtopic.php?f=40&t=1075 Work done so far on WebView (mostly in Russian)]. If you don't know Russian, you can read [http://translate.google.com/translate?hl=en&sl=ru&tl=en&u=http%3A%2F%2Fboard.kolibrios.org%2Fviewtopic.php%3Ff%3D40%26t%3D1075 English translation using Google-Translate]<br />
<br />
=== Drivers ===<br />
Writing drivers is about new hardware and filesystems.<br><br />
Knowledge of specifications and previous experience are ''not'' required but surely desirable.<br />
<br />
==== Ethernet driver(s) ====<br />
'''Summary:''' Write an Ethernet driver<br />
<br />
'''Details:'''<br />
* Primary goal: Support for popular Broadcom, Atheros or Marvell Yukon ethernet cards<br />
* Additional goal: A second driver for another card family, PPPoE support in kernel, ...<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: Medium<br />
* Mentor: hidnplayr<br />
* Links: [https://www.broadcom.com/collateral/pg/57XX-PG105-R.pdf BCM57xx programmers guide], [[Writing network drivers for KolibriOS]], [https://github.com/UDOOboard/U-Boot_Unico/blob/master/drivers/net/bcm570x.c BCM570x driver for u-boot (in C)], [http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fdrivers%2Funfinished%2Fbcm57xx.asm Stub for BCM57xx driver]<br />
<br />
==== SD Host Controller ====<br />
'''Summary:''' Add support for SD Host Controller<br />
<br />
'''Details:'''<br />
* Primary goal: Write driver for particular controller<br />
* Additional goal: Test and update driver to work for all controllers<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [https://www.sdcard.org/downloads/pls/simplified_specs/index.html SD specifications]<br />
<br />
<br />
==== USB devices ====<br />
'''Summary:''' Add USB drivers for the new USB stack (webcams, gamepads, joysticks, tablets, etc.)<br />
<br />
'''Details:'''<br />
* Primary goal: Write USB driver for currently unsupported device (you should have one)<br />
* Additional goal: Adopt code to work with all devices of the same class<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://en.wikipedia.org/wiki/USB#Device_classes USB device classes]<br />
<br />
==== Filesystem support ====<br />
'''Summary:''' Improve filesystem support in KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Update/fix read-write support for EXT2/3/4 filesystems (partially done)<br />
* Alternative goal: Add write support for the NTFS filesystem (read-only support already exists)<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Ffs%2F&#a0aa5cede7308db82d4bae78266ed8462 Filesystems in KolibriOS]<br />
<br />
<br />
=== System wide tasks ===<br />
These tasks comprise both user space and kernel space work. Some developers consider them as of most importance for KolibriOS.<br><br />
Architecture and algorithm design skills are highly desirable.<br />
<br />
==== Kolibri-A ====<br />
'''Summary:''' Porting Kolibri-A to Intel Atom<br />
<br />
'''Details:'''<br />
* Primary goal: Porting to Intel Atom and sync with the trunk<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Importance: art_zh<br />
* Mentor: art_zh<br />
* Links:<br />
<br />
<br />
==== Widget toolkit ====<br />
'''Summary:''' Extend Box_lib (a set of separate widgets) to create a full-featured widget toolkit<br />
<br />
'''Details:'''<br />
* Primary goal: Design architecture and implement focus handling, callbacks and other core ideas<br />
* Additional goal: Integrate box_lib widgets to this framework<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Importance: Vital<br />
* Mentor: dunkaist<br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
<br />
==== Unit testing framework ====<br />
'''Summary:''' Design and implement an unit testing framework, write tests for kernel functions<br />
<br />
'''Details:'''<br />
* Primary goal: Design and implement a framework, write tests for kernel functions<br />
* Additional goal: Write tests for system libraries (libio, libini)<br />
* Language: Assembler/FASM (preferrable), any other working in KolibriOS<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks list of unit testing frameworks]<br />
<br />
==== QR-code in boot log ====<br />
'''Summary:''' Add a [http://en.wikipedia.org/wiki/QR_code QR-code] (containing the debug log) at the end of boot process<br />
<br />
[[File:QR-code.png]]<br />
<br />
'''Details:'''<br />
* Description: Sometimes KolibriOS cannot boot on a certain hardware configuration (gets stuck during or after boot process). In such cases, we request the user having this problem to enable debug log at boot time, take a photo of the screen and show it to us (in the forum). However, sometimes taking a good quality photo can be quite challenging (bad camera, shaking hands etc.) and the attached photo is so blurry to the point the debug log cannot be even read. The idea suggested hereby is to simultaneously encode the debug log which is outputted on the screen, to the form of QR-code, and [http://wiki.kolibrios.org/wiki/File:QR-code.png show the resulting QR-code on empty space on the screen]. In such way, any user possessing a smartphone with a camera and QR-code scanner, could scan the QR-code and submit the encoded text directly on our forums (without having a need to take a photo), and our developers, in turn, would get the debug log text immediately and won't have to unscramble a blurry photo.<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Mentor: dunkaist<br />
<br />
<!--<br />
=== Open Ideas (without appointed mentor) ===<br />
<br />
==== One core for graphics ====<br />
'''Summary:''' On multi-core systems, dedicate one core for graphics rendering ONLY<br />
<br />
'''Details:'''<br />
* Goal: Move graphics subsystem to a single, dedicated core if multicore machine detected<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Serge(?)<br />
<br />
==== Partition editor ====<br />
'''Summary:''' Add a partition/HDD editor utility<br />
<br />
'''Details:'''<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Mario(?)<br />
<br />
==== Rewrite "Table" in Assembler ====<br />
'''Summary:''' Rewrite a great Kolibri spreadsheet application [[Table]] from C++ to FASM<br />
<br />
'''Details:'''<br />
* Goal: Port Table (C++) to Assembler/FASM<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Mentor: ???<br />
<br />
==== Kernel vulnerabilities ====<br />
'''Summary:''' Find and fix as many kernel vulnerabilities as you can<br />
<br />
'''Details:'''<br />
* Goal: Check the list of kernel API functions versus their actual implementation in KolibriOS kernel (for example, check that the function doesn't destroy register values if it declares in description that it doesn't). If you find a vulnerability, try to fix it so that it works according to API. If you cannot fix it yourself, document the vulnerability and describe the problem.<br />
* Language: Assembler/FASM<br />
* Skill level: Intermediate/Expert<br />
* Mentor: Serge '''(Is not always available to answer questions, so select this task only if you can work fairly independently.)'''<br />
<br />
==== Web browser in FASM ====<br />
'''Summary:''' Write a proper HTML web browser for KolibriOS<br />
<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Mentor: SoUrcerer<br />
<br />
<br />
==== Printing/scanning API ====<br />
'''Summary:''' Add a printing and scanning API and drivers.<br />
<br />
'''Details:'''<br />
* Primary goal: Design and code infrastructure for printing and scanning devices.<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: SoUrcerer<br />
--><br />
<br />
[[Category:Misc]]</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Embedded_Hardware/ru&diff=5072Embedded Hardware/ru2015-06-16T11:28:31Z<p>Punk Joker: </p>
<hr />
<div>Для встраиваимых версий КолибриОС важнейшим является выбор аппаратной платформы.<br />
Обсуждение возможных вариантов, плюсов и минусов ведется здесь[http://board.kolibrios.org/viewtopic.php?f=25&t=1683&p=32843#p32843]; <br />
дискуссионные материалы и таблицы вынесены на отдельную страницу [[Embedded_Platforms/ru|Вики]]. <br />
<br />
Что касается пилотной встраиваемой версии [[EmbeddedKOS/ru|Колибри-А]], то она разрабатывается под платформу AMD 780 и не претендует на универсальность.<br />
<br />
Необходимые системные ресурсы:<br />
*ЦП: AMD-NPT gen.0F+ (тестируется на Athlon64x2/AM2, Sempron140/AM3 и Fusion E350)<br />
*NB: AMD690+ (соответственно 770G, 760G; на Fusion NB спрятан в чип APU )<br />
*SB: SB700+ (SB710, SB710 и Hudson_A55)<br />
*встроенная в чипсет графика<br />
*монитор с разрешением не менее 800х600<br />
<br />
<br />
<br />
Не поддерживаемые ресурсы:<br />
*ЦП без поддержки HT-канала и внутреннего контроллера памяти<br />
*чипсеты, не имеющие полноценной открытой документации<br />
*платформы без инициализированного BIOSом расширенного конфигурационного пространства PCIexpress (присутствие самой шины PCIe не обязательно)<br />
*COM-мышь<br />
*FDD-дисковод и CD-ROM<br />
*EGA и VGA мониторы<br />
*Файловые системы NTFS и EXT2/3<br />
<br />
[[Category:Системная документация]]</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Main_Page/ru&diff=4924Main Page/ru2014-10-24T02:14:10Z<p>Punk Joker: /* Активные проекты */</p>
<hr />
<div>{{DISPLAYTITLE:Wiki по KolibriOS}}<br />
{{Карточка ОС<br />
|name=KolibriOS<br />
|logo=[[Image:KolibriOS logo.jpg|Логотип KolibriOS]]<br />
|screenshot=[[Image:KolibriOS.png|250px]]<br />
|caption=Рабочий стол KolibriOS ночная сборка<br />
|developer=[http://www.kolibrios.org/?p=ContactUs KolibriOS Project Team]<br />
|family=<br />
|source_model=[[wikipediaru:Open_source|Открытый]]<br />
|latest_release_version=0.7.7.0 / [[wikipediaru:SVN|SVN]]<br />
|latest_release_date=декабрь 2009 года<br />
|kernel_type=[[wikipediaru:Монолитное_ядро|Монолитное ядро]]<br />
|license=[[GNU General Public License|GNU GPL]]<br />
|working_state=Актуальное<br />
|website=[http://www.kolibrios.org/ www.kolibrios.org]<br />
}}<br />
'''KolibriOS''' — любительская [[wikipediaru:Операционная_система| операционная система]] для [[wikipediaru:X86|x86-совместимых компьютеров]], ядро которой полностью написано на языке [[wikipediaru:ассемблер| ассемблер]]. KolibriOS распространяется на условиях [[wikipediaru:GPL|GPL]]. Создана на основе [[wikipediaru:MenuetOS| MenuetOS]], использует собственные стандарты и не является [[wikipediaru:POSIX| POSIX]] или [[wikipediaru:UNIX| UNIX]] совместимой. На данный момент преимущественное большинство разработчиков живут на территории стран СНГ.<br />
==Оглавление Wiki==<br />
<center><br />
{| align="center" class="wikitable"<br />
<br />
![[For_developers/ru|Для разработчиков]]<br />
![[Applications/ru|Программы]]<br />
|-<br />
![[For_users/ru|Для пользователей]]<br />
![[History/ru|История системы]]<br />
|-<br />
![http://www.kolibrios.org/?lang=ru Официальный сайт]<br />
![[Links and publications/ru|Ссылки]]<br />
|-<br />
![http://builds.kolibrios.org/ Ночные сборки]<br />
![http://board.kolibrios.org/ Форум]<br />
|-<br />
![[Special:AllPages|Все страницы wiki]] <br />
![http://bugs.kolibrios.org/ Баг-трекер]<br />
|-<br />
![[Help:Contents|Как создать статью]]<br />
![[Special:Categories|Все категории wiki]]<br />
|-<br />
|}<br />
</center><br />
<br />
== Возможности KolibriOS ==<br />
* Множество вариантов загрузки, в том числе с [[wikipediaru:NTFS| NTFS]] раздела. Так же возможна загрузка непосредственно из [[wikipediaru:Windows| Windows]] (при этом Windows, конечно, завершается), не требующая установки системы. <br />
* [[wikipediaru:графический_интерфейс_пользователя| Графический интерфейс]] на основе [[wikipediaru:VESA| VESA]]. Возможность увеличения частоты монитора за счет уменьшения разрешения. <br />
* Среда разработки: редактор, макро-ассемблер ([[wikipediaru:fasm|FASM]]) для сборки [[wikipediaru:ядро_операционной_системы| ядра]] и приложений. <br />
<!--* Поддержка [[wikipediaru:TCP/IP TCP/IP]-стека для некоторых [[wikipediaru:сетевая_карта| сетевых карт]]. --><br />
* Основной дистрибутив помещается на одной дискете.<br />
* Для запуска достаточно 8 МБ оперативной памяти. Для запуска "ночной" сборки достаточно 6 МБ.<br />
* Вытесняющая [[wikipediaru:многозадачность| многозадачность]], возможность создания потоков, параллельное исполнение системных вызовов. <br />
<!--* Страничная адресация. --><br />
* Поддержка [[wikipediaru:файловая_система| файловых систем]] [[wikipediaru:FAT12| FAT12]], [[wikipediaru:FAT16| FAT16]], [[wikipediaru:FAT32| FAT32]], [[wikipediaru:NTFS| NTFS]] (частичная, только чтение), [[wikipediaru:ext2| ext2]]/[[wikipediaru:ext3 | ext3]]/[[wikipediaru:ext4 | ext4]] (частичная, только чтение), [[wikipediaru:ISO_9660| ISO 9660]] (в том числе мультисессию). <br />
* Поддержка звуковых кодеков [[wikipediaru:AC'97|AC'97]] и [[wikipediaru:High Definition Audio|Intel HD Audio]] для большинства популярных чипсетов.<br />
* Поддержка [[USB]] (OHCI, UHCI, EHCI).<br />
<!--* Уже портированы такие программы как [http://diamondz.land.ru/dosbox.7z DosBox], [http://www.kolibri.hut1.ru/download.htm Quake], [http://www.kolibri.hut1.ru/download.htm Doom] и другие, что означает высокую степень развития системы.<br />
--><br />
<br />
Система рассчитана на использование ассемблера для написания приложений, но есть и программы, написанные на языках высокого уровня.<br />
* [[:Category:Программы на ассемблере|Программы на ассемблере]]<br />
* [[:Category:Программы на Си|Программы на Си]]<br />
* [[:Category:Программы на Си++|Программы на Си++]]<br />
* [[:Category:Программы на Си--|Программы на Си--]]<br />
* [[:Category:Программы на FreePascal|Программы на FreePascal]]<br />
<br />
== Активные проекты ==<br />
<br />
* [[EmbeddedKOS|Kolibri-A]] - встраиваемая версия KolibriOS<br />
* [http://kolibri-n.org/index.php KolibriN] - максимальная сборка всех программ, не вошедших в основной дистрибутив<br />
<br />
<!--<br />
{{Портал|Свободное программное обеспечение|Floss draft.png}}<br />
[[uk:KolibriOS]]<br />
[[pl:KolibriOS]]<br />
[[en:KolibriOS]]<br />
[[es:KolibriOS]]<br />
[[et:KolibriOS]]<br />
--><br />
<br />
[[Category:Операционные системы]]</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Library/ru&diff=4914Library/ru2014-10-20T02:30:58Z<p>Punk Joker: </p>
<hr />
<div>{| class="wikitable" border="1" <br />
! Имя библиотеки<br />
! Краткое описание<br />
! Тема на форуме<br />
|-<br />
| '''[[Box lib/ru|Box lib]]'''<br />
| Библиотека box_lib.obj содержит разные элементы управления, которые можно использовать при написании приложений.<br />
| http://board.kolibrios.org/viewtopic.php?f=24&t=1220<br />
|-<br />
| '''[[OpenDialog/ru|OpenDialog]]'''<br />
| Является подобием Windows компонента Microsoft Common Dialog Control или его аналогов в Linux (там их вообще несколько разных присутствует), и служит для выбор пути.<br />
| <br />
|-<br />
| '''[[Libs-dev/libio/ru|libio]]'''<br />
| Библиотека предоставляет средства для выполнения основных операций ввода-вывода, таких как открытие, закрытие, чтение, изменение, урезание файлов, получение и установка позиции файлового указателя. Также присутствуют методы для перебора файлов в пределах определённой директории с именами, соответствующими маске.<br />
<br />
Ею должны, в общем случае, пользоваться программы, которым необходимо производить низкоуровневые файловые операции.<br />
|<br />
|-<br />
| '''[[Libs-dev/libini/ru|libini]]'''<br />
| Библиотека предоставляет средства для работы с INI файлами, представляющими собой текстовые файлы с набором ключей и значений, которые пользователь имеет возможность изменять вручную в любом внешнем редакторе.<br />
<br />
Ею должны, в общем случае, пользоваться программы, которым необходимо сохранять и загружать свои настройки платформо-независимым образом.<br />
| http://board.kolibrios.org/viewtopic.php?f=24&t=1114<br />
|-<br />
| '''[[Libs-dev/libimg/ru|libimg]]'''<br />
| Библиотека предоставляет средства для работы с графическими файлами и контейнерами. Она расширяема и может прозрачным образом декодировать изображения в разных форматах, идентифицируя их по файловым сигнатурам и другими эвристическими способами.<br />
<br />
Ею должны, в общем случае, пользоваться программы, которым необходимо отображать картинки в их пользовательском интерфейсе (например, иконки на кнопках).<br />
| http://board.kolibrios.org/viewtopic.php?f=24&t=1728<br />
|-<br />
| '''[[Libs-dev/libgfx/ru|libgfx]]'''<br />
| Библиотека предоставляет средства для рисования различных графических примитивов, таких как точки, линии, простые и закрашенные прямоугольники, круги и т.п. Она использует абстракцию холста, чтобы иметь возможность буферизированной отрисовки.<br />
<br />
Ею должны, в общем случае, пользоваться программы, которым необходимо рисовать графику на экране (что, в принципе, относится ко всем существующим программам, так как Kolibri является полностью графической операционной системой).<br />
| <br />
|-<br />
| '''xml'''<br />
| Библиотека для разбора xml<br />
| http://board.kolibrios.org/viewtopic.php?f=24&t=1701<br />
|-<br />
| '''exif'''<br />
| Просмотр данных EXIF изображений<br />
| http://board.kolibrios.org/viewtopic.php?f=24&t=1701<br />
|-<br />
| '''libcrash'''<br />
| Криптографические хэш функции и проч.<br />
| http://board.kolibrios.org/viewtopic.php?f=24&t=2189<br />
|-<br />
| '''console'''<br />
| Работа с консолью<br />
| http://board.kolibrios.org/viewtopic.php?f=24&t=930<br />
|}<br />
<br />
=Тестирование библиотек=<br />
В исходных кодах присутствует директория <tt>.test</tt>, содержащая различные тесты библиотек. Они спроектированы независимыми друг от друга и должны генерировать (или содержать заранее сгенерированные) тестовые данные, которые приводят к одинаковым результатам независимо от порядка их выполнения.<br />
<br />
Программа [[Kiv/ru|KIV]] была изначально основана на одном из таких тестов (002), использующем библиотеки '''libio''' и '''libimg''', чтобы показать их возможности в небольшой графической программе, способной отображать картинку по пути, переданному в качестве параметра командной строки.<br />
<br />
=Стиль кодирования=<br />
Все публичные функции содержатся в файле <tt><имя библиотеки>.asm</tt>, вспомогательные публичные определения &mdash; в файле <tt><имя библиотеки>.inc</tt>. Все остальные специфичные для библиотеки (приватные и вспомогательные) основные функции и определения отделены в файлы <tt><имя библиотеки>_p.asm</tt> и <tt><имя библиотеки>_p.inc</tt>. Также могут присутствовать отдельные файлы с говорящими именами, предоставляющие дополнительную функциональность.<br />
<br />
Функции, находящиеся в публичных файлах, используют соглашение об именовании <tt><имя области функции>.<имя функции></tt>. Функции, содержащиеся в приватных файлах, используют соглашение об именовании <tt><имя библиотеки>._.<имя функции></tt>. Это позволяет разделить код библиотек при статической сборке.<br />
<br />
Используется специфический тип описательных комментариев к функциям, что позволит в будущем генерировать документацию автоматически.<br />
<br />
=Смотрите также=<br />
* [[Libraries|Разъяснения по библиотекам KolibriOS]]<br />
<br />
[[Category:Кодинг]][[Category:Руководства]]<br />
[[Category:Библиотеки]]</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Library/ru&diff=4913Library/ru2014-10-20T02:22:09Z<p>Punk Joker: </p>
<hr />
<div>{| class="wikitable" border="1" <br />
! Имя библиотеки<br />
! Краткое описание<br />
! Тема на форуме<br />
|-<br />
| '''[[Box lib/ru|Box lib]]'''<br />
| Библиотека box_lib.obj содержит разные элементы управления, которые можно использовать при написании приложений.<br />
| ссылка<br />
|-<br />
| '''[[OpenDialog/ru|OpenDialog]]'''<br />
| Является подобием Windows компонента Microsoft Common Dialog Control или его аналогов в Linux (там их вообще несколько разных присутствует), и служит для выбор пути.<br />
| <br />
|-<br />
| '''[[Libs-dev/libio/ru|libio]]'''<br />
| Библиотека предоставляет средства для выполнения основных операций ввода-вывода, таких как открытие, закрытие, чтение, изменение, урезание файлов, получение и установка позиции файлового указателя. Также присутствуют методы для перебора файлов в пределах определённой директории с именами, соответствующими маске.<br />
<br />
Ею должны, в общем случае, пользоваться программы, которым необходимо производить низкоуровневые файловые операции.<br />
|<br />
|-<br />
| '''[[Libs-dev/libini/ru|libini]]'''<br />
| Библиотека предоставляет средства для работы с INI файлами, представляющими собой текстовые файлы с набором ключей и значений, которые пользователь имеет возможность изменять вручную в любом внешнем редакторе.<br />
<br />
Ею должны, в общем случае, пользоваться программы, которым необходимо сохранять и загружать свои настройки платформо-независимым образом.<br />
| <br />
|-<br />
| '''[[Libs-dev/libimg/ru|libimg]]'''<br />
| Библиотека предоставляет средства для работы с графическими файлами и контейнерами. Она расширяема и может прозрачным образом декодировать изображения в разных форматах, идентифицируя их по файловым сигнатурам и другими эвристическими способами.<br />
<br />
Ею должны, в общем случае, пользоваться программы, которым необходимо отображать картинки в их пользовательском интерфейсе (например, иконки на кнопках).<br />
| <br />
|-<br />
| '''[[Libs-dev/libgfx/ru|libgfx]]'''<br />
| Библиотека предоставляет средства для рисования различных графических примитивов, таких как точки, линии, простые и закрашенные прямоугольники, круги и т.п. Она использует абстракцию холста, чтобы иметь возможность буферизированной отрисовки.<br />
<br />
Ею должны, в общем случае, пользоваться программы, которым необходимо рисовать графику на экране (что, в принципе, относится ко всем существующим программам, так как Kolibri является полностью графической операционной системой).<br />
| <br />
|}<br />
<br />
=Тестирование библиотек=<br />
В исходных кодах присутствует директория <tt>.test</tt>, содержащая различные тесты библиотек. Они спроектированы независимыми друг от друга и должны генерировать (или содержать заранее сгенерированные) тестовые данные, которые приводят к одинаковым результатам независимо от порядка их выполнения.<br />
<br />
Программа [[Kiv/ru|KIV]] была изначально основана на одном из таких тестов (002), использующем библиотеки '''libio''' и '''libimg''', чтобы показать их возможности в небольшой графической программе, способной отображать картинку по пути, переданному в качестве параметра командной строки.<br />
<br />
=Стиль кодирования=<br />
Все публичные функции содержатся в файле <tt><имя библиотеки>.asm</tt>, вспомогательные публичные определения &mdash; в файле <tt><имя библиотеки>.inc</tt>. Все остальные специфичные для библиотеки (приватные и вспомогательные) основные функции и определения отделены в файлы <tt><имя библиотеки>_p.asm</tt> и <tt><имя библиотеки>_p.inc</tt>. Также могут присутствовать отдельные файлы с говорящими именами, предоставляющие дополнительную функциональность.<br />
<br />
Функции, находящиеся в публичных файлах, используют соглашение об именовании <tt><имя области функции>.<имя функции></tt>. Функции, содержащиеся в приватных файлах, используют соглашение об именовании <tt><имя библиотеки>._.<имя функции></tt>. Это позволяет разделить код библиотек при статической сборке.<br />
<br />
Используется специфический тип описательных комментариев к функциям, что позволит в будущем генерировать документацию автоматически.<br />
<br />
=Смотрите также=<br />
* [[Libraries|Разъяснения по библиотекам KolibriOS]]<br />
<br />
[[Category:Кодинг]][[Category:Руководства]]<br />
[[Category:Библиотеки]]</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=For_developers/ru&diff=4912For developers/ru2014-10-20T02:07:05Z<p>Punk Joker: </p>
<hr />
<div><!-- Table stuff --><br />
{| style="width: 100%; margin: 0; padding: 0; border: 0; border-collapse: collapse;"<br />
| style="padding: 0; width: 25%; vertical-align: top;" |<br />
<br />
'''Общее'''<br />
* [[How to use the KolibriOS Team SVN server/ru|Как работать с SVN сервером Kolibri]]<br />
* [http://diamond.kolibrios.org/hll/hll.htm Использование различных компиляторов в Колибри]<br />
* [[How to create image of KolibriOS for virtual PC/ru|Cоздание образа Колибри ОС]]<br />
* [[Style/ru|Рекомендации по оформлению кода]]<br />
* [[Hardware_Support/ru|Список поддерживаемого оборудования]]<br />
<br />
'''Ядро и драйвера'''<br />
* [[How to modify the kernel/ru|Как вносить изменения в ядро]] <!-- кто может предложить лучшее название? :) --><br />
* [[How to debug KolibriOS kernel/ru|Отладка ядра Колибри ОС]]<br />
* [[kernel/ru|Ядро ОС]]<br />
* [[Ru/api/kernel|API ядра]]<br />
* [[Kernel Event/ru|Подсистема событий ядра]]<br />
* [[USB API/ru|USB API]] <br />
* [[Writing drivers for KolibriOS/ru|Пишем драйвер для Колибри]]<br />
* [[ACPI/ru|ACPI]]<br />
* [[Sound/ru|Infinity - звуковая подсистема]]<br />
<!-- First column --><br />
| style="padding: 0 0 0 10px; width: 25%; vertical-align: top;" |<br />
<br />
'''Прикладное программирование'''<br />
* [[How to port applications to KolibriOS/ru|Как портировать приложения для Колибри ОС]]<br />
* [[library/ru|Библиотеки]]<br />
<br />
'''Разное'''<br />
* [[Boot loader/ru|Начальный загрузчик системы]]<br />
* [[SL/ru|Secondary Loader - Перспективный загрузчик]]<br />
* [[EmbeddedKOS/ru|KolibriOS во встраиваемых системах]]<br />
<!-- Second column --><br />
<br />
|}<br />
<br />
[[Category:Manuals]]</div>Punk Jokerhttp://wiki.kolibrios.org/index.php?title=Hardware_Support/ru&diff=4911Hardware Support/ru2014-10-19T22:37:55Z<p>Punk Joker: Информация о поддержке принтеров</p>
<hr />
<div>KolibriOS частично обеспечивает поддержку оборудования персонального компьютера. Часть оборудования поддерживается ядром ОС, часть динамически загружаемыми драйверами, мало того система предоставляет возможность прямого доступа к оборудованию прямо из пользовательского режима! Т.е. вы можете написать программу, которая сможет работать с оборудованием используя соответствующий системный сервис. Правда этот подход лучше использовать исключительно в отладочных или исследовательских целях, а для "нормальной" поддержки оборудования всё-таки писать драйвера. Также нужно понимать, что существуют два вида драйверов: <br />
* Драйвер являющейся частью ядра, т.е. весь его код может находиться в отдельном модуле, но после компиляции ядра он станет частью кода ядра системы (например: hd_drv.inc).<br />
* Драйвер динамически подгружаемый в адресное пространство ядра уже после загрузки системы (например: sound.asm), эти драйвера находятся в специальной системной директории (/rd/1/drivers/).<br />
<br />
== Состав аппаратного обеспечения ПК ==<br />
<br />
Итак из чего же состоит компьютер? Большинство пользователей, вспомнив уроки информатики, тут же назовут: системный блок, монитор, клавиатура, мышь. Многие подумав добавят HDD, CD/DVD, Floppy приводы, видео, аудио и сетевую карты. А если заглянуть поглубже? <br />
<br />
В системном блоке основным элементом является материнская плата, а на ней находится сердце компьютера - центральный процессор (ЦПУ) и оперативная память (ОП). Программиста же решившего написать драйвер для поддержки какого-то устройства в KolibriOS, больше всего заинтересует Южный Мост, чип где сходятся большинство ниточек, контролирующих оборудование. <br />
Существует также Северный Мост, посредством которого Южный Мост и связан с ЦПУ и ОП (ср. [http://ru.wikipedia.org/wiki/Северный_интерфейс Северный и Южный интерфейс]), но его мы пока подробно рассматривать не будем ввиду его небольшой функциональности с точки зрения программиста.<br />
<br />
== Компоненты южного моста ==<br />
<br />
Большинство устройств представлены в Южном Мосту в качестве так называемых ''контроллеров'' - программно-доступных электронных блоков, управляющих работой конкретного оборудования. Из-за огромного разнообразия, многофункциональности и слабой стандартизации современного компьютерного "железа", каждому такому контроллеру требуется уникальный ''драйвер'' - специальная системная программа, обеспечивающая инициализацию, конфигурирование, эффективное управление оборудованием в реальной системной среде, и (самое главное!-) быстрый и надежный ввод/вывод потоков информации через данное устройство. <br />
<br />
<!-- Asper: This information mainly from http://ru.wikipedia.org/wiki/Southbridge page.--><br />
Функционально южный мост включает в себя:<br />
* стандартный контроллер шины [[PCI/ru|PCI]];<br />
* контроллер шины [[PCI_Express/ru|PCI Express]];<br />
* шина [[ISA/ru|ISA]], которая используется достаточно редко, но тем не менее остается неотъемлемой частью любого южного моста. <br />
* контроллер шины SMBus или [[I2C]] для связи с другими устройствами на материнской плате (например, для управления вентиляторами);<br />
* [[DMA/ru|DMA]] контроллер с поддержкой древних [[ISA/ru|ISA]] и [[LPC/ru|LPC]]-протоколов прямого доступа к [[RAM/ru|оперативной памяти]] без участия ЦПУ;<br />
* контроллеры прерываний: старый [[PIC/ru|PIC]] и "продвинутый" [[APIC/ru|APIC]];<br />
* [[ATA/ru|ATA]] (IDE) и [[SATA/ru|SATA]] контроллеры;<br />
* контроллер шины LPC для передачи данных и управления [[SIO/ru|SIO]] (это такие устройства, как клавиатура, мышь, [[параллельный порт|параллельный]], [[последовательный порт]], [[инфракрасный порт]] и флоппи-контроллер) и [[BIOS/ru|BIOS]] ROM ([[FlashROM/ru|флэш]]);<br />
* [[RTC/ru|часы реального времени]] (Real Time Clock);<br />
* управление питанием (Power management ([[APM/ru|APM]] и [[ACPI/ru|ACPI]]) позволяющие переводить компьютер в «спящий режим» или выключать его;<br />
* энергонезависимую память [[BIOS/ru|BIOS]] ([[CMOS/ru|CMOS]]) с независимым электропитанием от батареи, включающая небольшую по область памяти для хранения системных настроек;<br />
* звуковой контроллер (обычно [[AC97/ru|AC97]] или [[Intel_High_Definition_Audio/ru|Intel HDA]]).<br />
<br />
Опционально южный мост также может включать в себя контроллер Ethernet, RAID-контроллеры, контроллеры [[USB/ru|USB]], [[FireWire/ru|FireWire]] и [[Audio/ru|аудио-кодек]].<br />
<br />
Некоторые южные мосты также включают поддержку [[Keyboard/ru|клавиатуры]], [[Mouse/ru|мыши]] и [[Serial/ru|последовательных портов]]. Однако, на многих системных платах эти устройства подключены через другой чип — [[Super_IO/ru|Super I/O]] (контроллер ввода-вывода).<br />
<br />
Возникает резонный вопрос: если все эти электронные фишки такие разные, как вообще возможен нормальный старт компьютера и загрузка операционной системы - ведь никаких драйверов в этот момент еще нет, а каждое устройство по-своему уникально и нестандартно?<br />
<br />
Во-первых, кое-какая стандартизация всё-таки имеется. Пожалуй, главный и наиболее последовательный стандарт, общий для всех современных ПК-платформ - спецификация шины PCI, включающая единообразные средства идентификации, конфигурации и (в определенных рамках) диагностики устройств. Кроме него, имеется де-факто стандарт древней (legacy) архитектуры IBM PC/AT, низкоуровневая совместимость с которой до сих пор требуется от всех х86-платформ. <br />
<br />
Во-вторых, существует ряд спецификаций базовой системы ввода-вывода [[BIOS/ru|BIOS]], определяющих основные протоколы и структуры данных для работы с контроллерами устройств. После включения питания специальная программа POST (power-on self test) диагностирует и конфигурирует конкретное "железо" в соответствии с их требованиями; по завершении своей работы BIOS осуществляет загрузку операционной системы согласно ''BIOS Boot Specification''. <br />
<br />
Примитивный и медленный (но - надёжный и универсальный!) сервис BIOS в той или иной мере используется всеми операционными системами. Особенно велика его роль на этапе загрузки, пока ядро не успело обрасти драйверами и сконфигурировать свои собственные, быстрые и эффективные процедуры взаимодействия с имеющимся оборудованием. <br />
<br />
Зависимость КолибриОС от сервиса BIOS очень высока, а специализированные системные драйверы - пока очень немногочисленны.<br />
<br />
== Поддержка аппаратного обеспечения в KolibriOS ==<br />
<br />
Рассмотрим как же работает с оборудованием KolibriOS.<br />
<br />
=== Список оборудования ===<br />
'''Системные шины и интерфейсы передачи данных'''<br />
{| class="wikitable" border="1" <br />
! Шина/Интерфейс<br />
! Поддержка в KolibriOS<br />
! Примечания<br />
|-<br />
| PCI<br />
| Поддерживается ядром ОС<br />
(''/kernel/bus/pci32.inc'')<br />
| <br />
* пользователь имеет доступ к конфигурационному пространству PCI-устройств (в последующих версиях ОС этот небезопасный сервис будет ограничен) <br />
* есть возможность доступа к портам и "бортовой" MMIO-памяти устройств из пользовательского приложения (требуется перекомпиляция с раскомментированной первой строчкой в ''/kernel/bus/pci32.inc'' ) <br />
|-<br />
| PCI Express<br />
| В официальном ядре по умолчанию не поддерживается<br />
<br />
| <br />
* Настраивается BIOSом в режиме совместимости как обычная шина PCI.<br />
* Для AMD-процессоров реализовано автоопределение адреса расширенного конфигурационного пространства PCIe. Для других процессоров этот адрес можно установить вручную. В любом случае для активации сервиса требуется перекомпилировать ядро, включив в сборку ''kernel/bus/PCIe.inc'' и добавив в ядро (в восьмисотых-девятисотых строках ''kernel.asm'') вызов ''call pcie_ext_config''. <br />
* В экспериментальном ядре [[EmbeddedKOS/ru|Kolibri-A]] взаимодействие со всеми устройствами реализуется через PCIe-механизм, старый PCI-сервис эмулируется для совместимости.<br />
|-<br />
| PCI-X<br />
| Не поддерживается<br />
| Работает в режиме совместимости как шина PCI.<br />
|-<br />
| AGP<br />
| ограниченная поддержка<br />
| см. драйвер AGP, а также видеодрайвер ATIKMS<br />
|-<br />
| ISA<br />
| ?<br />
| <br />
|-<br />
| EISA<br />
| ?<br />
| <br />
|-<br />
| ASUS Media Bus<br />
| Не поддерживается<br />
| <br />
|-<br />
| SMBus или I2C<br />
| Не поддерживается<br />
| <br />
|-<br />
| LPC<br />
| Не поддерживается<br />
| <br />
|-<br />
| USB<br />
| Поддерживается ядром и драйверами<br />
| Работа с UHCI/OHCI/EHCI. В настоящее время поддерживает клавиатуру, мышь, запоминающие устройства (mass storage). (До этого были только драйвера для UHCI, USB клавиатуры и мыши.)<br />
|-<br />
| FireWire<br />
| Не поддерживается<br />
| <br />
|-<br />
| HyperTransport<br />
| Официальным ядром не поддерживается<br />
| ограниченная поддержка в [[EmbeddedKOS/ru|Kolibri-A]]<br />
|-<br />
| InfiniBand<br />
| Не поддерживается<br />
| <br />
|-<br />
| RapidIO<br />
| Не поддерживается<br />
| <br />
|-<br />
| Fibre Channel<br />
| Не поддерживается<br />
| <br />
|-<br />
| BlueTooth<br />
| Не поддерживается<br />
| <br />
|-<br />
| IrDA<br />
| Не поддерживается<br />
| <br />
|-<br />
| Wi-Fi<br />
| Не поддерживается<br />
| <br />
|-<br />
| WiGig<br />
| Не поддерживается<br />
| <br />
|-<br />
| Light Peak<br />
| Не поддерживается<br />
| <br />
|-<br />
| Digital Visual Interface<br />
| Не поддерживается<br />
| <br />
|-<br />
| DisplayPort<br />
| Не поддерживается<br />
| <br />
|-<br />
| HDMI<br />
| ограниченная поддержка<br />
| см. видеодрайвера ATIKMS и i915<br />
|}<br />
<br />
'''Порты'''<br />
{| class="wikitable" border="1" <br />
! Порт<br />
! Поддержка в KolibriOS<br />
|-<br />
| PS2<br />
| Поддерживается ядром ОС<br />
|-<br />
| COM<br />
| Поддерживается ядром ОС<br />
|-<br />
| LPT<br />
| Поддерживается ядром ОС<br />
|-<br />
| SPI<br />
| Не поддерживается<br />
|-<br />
| Game port<br />
| Не поддерживается<br />
|-<br />
| UHCI<br />
| Поддерживается ядром и драйвером. (см. http://board.kolibrios.org/viewtopic.php?f=30&t=1785, http://board.kolibrios.org/viewtopic.php?f=30&t=2305)<br />
|-<br />
| OHCI<br />
| Поддерживается ядром и драйвером. (см. http://board.kolibrios.org/viewtopic.php?f=30&t=1785, http://board.kolibrios.org/viewtopic.php?f=30&t=2305)<br />
|-<br />
| EHCI<br />
| Поддерживается ядром и драйвером. (см. http://board.kolibrios.org/viewtopic.php?f=30&t=1785, http://board.kolibrios.org/viewtopic.php?f=30&t=2305)<br />
|-<br />
| XHCI<br />
| Не поддерживается<br />
|}<br />
<br />
'''Устройства хранения информации'''<br />
{| class="wikitable" border="1" <br />
! Контроллер<br />
! Устройство<br />
! Поддержка в KolibriOS<br />
! Примечания<br />
|-<br />
|rowspan="4" | IDE (ATA)<br />
| FDD<br />
| Поддерживается ядром ОС<br />
| (см. /kernel/blkdev/flp_drv.inc)<br />
|-<br />
| CD/DVD<br />
| Поддерживается ядром ОС<br />
| (см. /kernel/blkdev/cd_drv.inc)<br />
|-<br />
| HDD<br />
| Поддерживается ядром ОС<br />
| (см. /kernel/blkdev/hd_drv.inc)<br />
|-<br />
| SSD<br />
| ?<br />
|-<br />
|rowspan="2" | SATA<br />
| CD/DVD<br />
| Поддерживается ядром чтение в режиме IDE (ATAPI в PIO режиме) (http://board.kolibrios.org/viewtopic.php?f=1&t=2343).<br />
|rowspan="7" | В ряде случаев система может работать с SATA- и USB-дисками через BIOS Fn13h в виртуальном V86-режиме (скорость чтения/записи при этом оставляет желать лучшего).<br />
|-<br />
| HDD<br />
| Поддерживается ядром чтение и запись в режиме IDE (http://board.kolibrios.org/viewtopic.php?f=1&t=2343). Поддерживается драйвером чтение в режиме AHCI (см. http://board.kolibrios.org/viewtopic.php?f=31&t=2152)<br />
|-<br />
|rowspan="6" | USB<br />
| FDD<br />
| ?<br />
|-<br />
| CD/DVD<br />
| Не поддерживается<br />
|-<br />
| HDD<br />
| Поддерживается ядром и драйвером. (см. http://board.kolibrios.org/viewtopic.php?f=30&t=1785, http://board.kolibrios.org/viewtopic.php?f=30&t=2305)<br />
|-<br />
| SSD<br />
| ?<br />
|-<br />
| FlashDrive<br />
| Поддерживается ядром и драйвером. (см. http://board.kolibrios.org/viewtopic.php?f=30&t=1785, http://board.kolibrios.org/viewtopic.php?f=30&t=2305)<br />
|-<br />
| FlashCard<br />
| Поддерживается ядром и драйвером. (см. http://board.kolibrios.org/viewtopic.php?f=30&t=1785, http://board.kolibrios.org/viewtopic.php?f=30&t=2305)<br />
|-<br />
| RAID<br />
| HDD<br />
| ?<br />
|<br />
|}<br />
<br />
'''Системные устройства'''<br />
{| class="wikitable" border="1" <br />
! Устройство<br />
! Поддержка в KolibriOS<br />
|-<br />
| Контроллер прерываний PIC<br />
| Поддерживается ядром ОС<br />
|-<br />
| Контроллер прерываний APIC<br />
| Поддерживается ядром ОС (по умолчанию код включен только в ветке Kolibri-ACPI)<br />
|-<br />
| Контроллер DMA<br />
| Поддерживается ядром ОС<br />
|-<br />
| Часы реального времени (Real Time Clock)<br />
| Поддерживается ядром ОС<br />
|-<br />
| Энергонезависимая память BIOS (CMOS)<br />
| Поддерживается ядром ОС<br />
|}<br />
<br />
'''Управление питанием'''<br />
{| class="wikitable" border="1" <br />
! Стандарт<br />
! Поддержка в KolibriOS<br />
|-<br />
| APM<br />
| Поддерживается ядром ОС<br />
|-<br />
| ACPI<br />
| Драйвером ACPICA (по умолчанию код включен в ветке Kolibri-ACPI)<br />
|}<br />
<br />
'''Аудио'''<br />
<br />
Поддерживается только аудио перечисленное в данной таблице.<br />
{| class="wikitable" border="1" <br />
! Стандарт<br />
! Производитель<br />
! Чипсет<br />
! Примечание<br />
|-<br />
|rowspan="23" | AC97<br />
|rowspan="7" | Intel Corporation<br />
| ICH0<br />
|rowspan="22" | Звуковой контроллер AC97 - поддерживается драйверами соответствующих устройств. Поскольку AC97 стандарт стандартизует только функции кодека и AC-Link, отвечающего за взаимодействие контроллера и кодека, то для различных контроллеров AC97 требуются разные драйвера.<br />
|-<br />
| ICH1<br />
|-<br />
| ICH2<br />
|-<br />
| ICH3<br />
|-<br />
| ICH4<br />
|-<br />
| ICH5<br />
|-<br />
| ICH6<br />
|-<br />
|rowspan="5" | NVidia<br />
| NForce<br />
|-<br />
| NForce2<br />
|-<br />
| NForce3<br />
|-<br />
| NForce4<br />
|-<br />
| NForce500<br />
|-<br />
| Silicon Integrated Systems<br />
| SIS7012<br />
|-<br />
| AMD<br />
| CS5536<br />
|-<br />
| ForteMedia<br />
| FM801<br />
|-<br />
|rowspan="7" | VIA Technologies<br />
| VT8231<br />
|-<br />
| VT8233<br />
|-<br />
| VT8233C<br />
|-<br />
| VT8235<br />
|-<br />
| VT8237<br />
|-<br />
| VT8237R<br />
|-<br />
| VT8237R Plus<br />
|-<br />
|-<br />
| Creative<br />
| EMU10K1X<br />
| Находится не на материнской плате компьютера, а на отдельной аудиокарте, которая вставляется в слот расширения PCI<br />
|-<br />
| HDA<br />
| <br />
| <br />
| Работа над драйвером ведётся в настоящее время (см. [[Intel_High_Definition_Audio/ru|HDA]]). Драйвер работает на большинстве тестовых систем.<br />
|-<br />
|rowspan="3" | SB16<br />
|rowspan="3" | Creative<br />
| SoundBlaster16<br />
|rowspan="3" | Находится не на материнской плате компьютера, а на отдельной аудиокарте, которая вставляется в слот расширения ISA<br />
|-<br />
| SoundBlaster16 ASP<br />
|-<br />
| SoundBlaster16 PnP<br />
|}<br />
<br />
'''Видео'''<br />
{| class="wikitable" border="1" <br />
! Производитель(Стандарт)<br />
! Поддержка в KolibriOS<br />
! Примечания<br />
|-<br />
| VESA<br />
| Поддерживается ядром ОС<br />
| Поддерживается абсолютным большинством современных компьютеров.<br />
|-<br />
| VGA<br />
| Поддерживается ядром ОС<br />
| <br />
|-<br />
| AMD<br />
| Драйвером для всех моделей ATI Radeon.<br />
| Поддерживаются аппаратный курсор мыши, смена видеорежимов и акселерация двумерной графики.<br />
|-<br />
| NVidia<br />
| Не поддерживается<br />
| <br />
|-<br />
| Intel<br />
| Драйвером i915.<br />
| Поддерживаются аппаратный курсор мыши, смена видеорежимов и акселерация двумерной графики. Также есть драйвер для установки "родного" разрешения для ноутбуков.<br />
|-<br />
| VIA<br />
| Не поддерживается<br />
| <br />
|}<br />
<br />
'''Сетевые контроллеры'''<br />
В настоящее время контроллеры Ethernet поддерживаются драйверами в составе ядра ОС,<br> но ведётся активная работа по выносу кода в динамически подгружаемые драйвера<br> и созданию нового сетевого стека в рамках Net ветки KolibriOS.<br />
В данной таблице перечислены сетевые контроллеры, поддерживаемые системой в настоящее время.<br />
{| class="wikitable" border="1" <br />
! Производитель<br />
! Устройство<br />
! Примечания<br />
|-<br />
|rowspan="13" | 3Com Corporation<br />
| 3c59x<br />
|<br />
|-<br />
| 3c900 <br />
|<br />
|-<br />
| 3c905<br />
|<br />
|-<br />
| 3c980<br />
|<br />
|-<br />
| 3cSOHO100<br />
|<br />
|-<br />
| 3c555<br />
|<br />
|-<br />
| 3c556<br />
|<br />
|-<br />
| 3c595<br />
|<br />
|-<br />
| 3c575<br />
|<br />
|-<br />
| 3cCFE575BT<br />
|<br />
|-<br />
| 3cCFE575CT<br />
|<br />
|-<br />
| 3cCFE656<br />
|<br />
|-<br />
| 3c450<br />
|<br />
|-<br />
|rowspan="1" | RDC Semiconductor Co.<br />
| r6040<br />
| 10/100 Mbit PCI controller<br />
|-<br />
|rowspan="4" | Realtek Semiconductor Co., Ltd.<br />
| rtl8029 <br />
| RTL-8029(AS)<br />
|-<br />
| rtl8139 <br />
| RTL-8139/8139C/8139C+, RT8139 (B/C) Cardbus Fast Ethernet Adapter<br />
|-<br />
| rtl8168 <br />
| RTL8111/8168B PCI Express Gigabit Ethernet controller (rtl8169) <br />
|-<br />
| rtl8169 <br />
| RTL-8169 Gigabit Ethernet, RTL-8110SC/8169SC Gigabit Ethernet<br />
|-<br />
| Accton Technology Corporation<br />
| SMC2-1211TX <br />
| (rtl8139)<br />
|-<br />
| DELTA Electronics, Inc<br />
| RTL81xx <br />
| RealTek Ethernet (rtl8139)<br />
|-<br />
| Addtron Technology Co, Inc.<br />
| RTL8139 <br />
| Ethernet (rtl8139)<br />
|-<br />
|rowspan="3" | D-Link System Inc<br />
| RTL8139 Ethernet <br />
| (rtl8139)<br />
|-<br />
| DGE-528T <br />
| Gigabit Ethernet Adapter (rtl8169)<br />
|-<br />
| DFE-690TXD <br />
| CardBus PC Card (rtl8139)<br />
|-<br />
| Abocom Systems Inc<br />
| RTL8139 (FE2000VX) <br />
| CardBus Fast Ethernet Attached Port Adapter (rtl8139)<br />
|-<br />
| Allied Telesyn International<br />
| RTL81xx <br />
| Fast Ethernet (rtl8139)<br />
|-<br />
|rowspan="2" | Planex Communications, Inc<br />
| FNW-3603-TX <br />
| CardBus Fast Ethernet (rtl8139)<br />
|-<br />
| RTL81xx <br />
| RealTek Ethernet (rtl8139)<br />
|-<br />
| Sega Enterprises Ltd<br />
| RTL81xx <br />
| Fast Ethernet (rtl8139)<br />
|-<br />
| Edimax Computer Co.<br />
| RTL81xx <br />
| Fast Ethernet (rtl8139)<br />
|-<br />
| SpeedStream<br />
| 1012 PCMCIA 10/100 Ethernet Card (RTL81xx) <br />
| (rtl8139)<br />
|-<br />
| LevelOne<br />
| FPC-0106TX misprogrammed (RTL81xx) <br />
| (rtl8139)<br />
|-<br />
| Northern Telecom<br />
| 10/100BaseTX (RTL81xx) <br />
| (rtl8139)<br />
|-<br />
| Peppercon AG<br />
| ROL/F-100 Fast Ethernet Adapter with ROL <br />
| (rtl8139)<br />
|-<br />
| Compaq Computer Corporation<br />
| HNE-300 <br />
| (RealTek RTL8139c) (iPaq Networking) (rtl8139)<br />
|-<br />
| U.S. Robotics<br />
| USR997902 <br />
| 10/100/1000 Mbps PCI Network Card (rtl8169)<br />
|-<br />
|rowspan="3" | Intel Corporation<br />
| i8255x<br />
|<br />
|-<br />
| i82562<br />
|<br />
|-<br />
| i82801<br />
| <br />
|-<br />
|rowspan="2" | Silicon Integrated Systems <br />
| SIS900<br />
| <br />
|-<br />
| SIS7016<br />
|<br />
|-<br />
|rowspan="2" | AMD<br />
| 79c970<br />
| pcnet32 (PCnet32 LANCE)<br />
|-<br />
| 79c978 <br />
| pcnet32 (HomePNA)<br />
|-<br />
|rowspan="16" | NVidia<br />
| NForce<br />
| <br />
|-<br />
| NForce2<br />
| <br />
|-<br />
| NForce3<br />
| <br />
|-<br />
| MCP2A<br />
| <br />
|-<br />
| CK8S<br />
| <br />
|-<br />
| CK804<br />
| <br />
|-<br />
| MCP04<br />
| <br />
|-<br />
| MCP51<br />
| <br />
|-<br />
| MCP55<br />
| <br />
|-<br />
| MCP61<br />
| <br />
|-<br />
| MCP65<br />
| <br />
|-<br />
| MCP67<br />
| <br />
|-<br />
| MCP73<br />
| <br />
|-<br />
| MCP77<br />
| <br />
|-<br />
| MCP79<br />
| <br />
|-<br />
| MCP89<br />
| <br />
|-<br />
|}<br />
<br />
<br />
'''Устройства ввода'''<br />
{| class="wikitable" border="1" <br />
! Тип устройства<br />
! Устройство<br />
! Поддержка в KolibriOS<br />
|-<br />
|rowspan="4" | Устройства ввода графической информации<br />
| Сканер <br />
| Не поддерживается<br />
|-<br />
| Видео- и Веб-камера <br />
| Не поддерживается<br />
|-<br />
| Цифровой фотоаппарат<br />
| Не поддерживается<br />
|-<br />
| Плата видеозахвата<br />
| Не поддерживается<br />
|-<br />
|rowspan="3" | Устройства ввода звука<br />
| Микрофон<br />
| Не поддерживается<br />
|-<br />
| Цифровой диктофон<br />
| Не поддерживается<br />
|-<br />
| Модем <br />
| Поддерживается ядром ОС<br />
|-<br />
|rowspan="2" | Устройства ввода текстовой информации<br />
| Клавиатура (PS/2) <br />
| Поддерживается ядром ОС<br />
|-<br />
| Клавиатура (USB)<br />
| Поддерживается ядром и драйвером. (см. http://board.kolibrios.org/viewtopic.php?f=30&t=1785, http://board.kolibrios.org/viewtopic.php?f=30&t=2305)<br />
|-<br />
|rowspan="8" | Указательные (координатные) устройства с относительным указанием позиции (перемещения)<br />
| Мышь (PS/2)<br />
| Поддерживается ядром ОС<br />
|-<br />
| Мышь (Com)<br />
| Поддерживается драйвером<br />
|-<br />
| Мышь (USB)<br />
| Поддерживается ядром и драйвером. (см. http://board.kolibrios.org/viewtopic.php?f=30&t=1785, http://board.kolibrios.org/viewtopic.php?f=30&t=2305)<br />
|-<br />
| Тачпад <br />
| Поддерживается ядром ОС в режиме эмуляции мыши (PS/2)<br />
|-<br />
| Трекбол<br />
| ?<br />
|-<br />
| Трекпоинт <br />
| Поддерживается ядром ОС<br />
|-<br />
| Джойстик (LPT) <br />
| Поддерживается драйвером<br />
|-<br />
| Джойстик (USB) <br />
| Не поддерживается<br />
|-<br />
|rowspan="2" | Указательные (координатные) устройства с возможностью указания абсолютной позиции<br />
| Графический планшет<br />
| Не поддерживается<br />
|-<br />
| Световое перо<br />
| Не поддерживается<br />
|-<br />
|rowspan="4" | Игровые устройства ввода<br />
| Педаль<br />
| Не поддерживается<br />
|-<br />
| Геймпад<br />
| Не поддерживается<br />
|-<br />
| Руль<br />
| Не поддерживается<br />
|-<br />
| Рычаг для симуляторов полёта<br />
| Не поддерживается<br />
|-<br />
| Устройства ввода общего назначения<br />
| Сенсорный экран <br />
| Не поддерживается<br />
|}<br />
<br />
'''Устройства вывода'''<br />
{| class="wikitable" border="1" <br />
! Тип устройства<br />
! Устройство<br />
! Поддержка в KolibriOS<br />
|-<br />
|rowspan="4" | Устройства вывода графической информации<br />
| Монитор (дисплей)<br />
| Поддерживаются видеодрайверами<br />
|-<br />
| Проектор <br />
| Не поддерживается<br />
|-<br />
| Принтер <br />
| Тестовая поддержка (см. http://board.kolibrios.org/viewtopic.php?f=30&t=2285)<br />
|-<br />
| Графопостроитель <br />
| Не поддерживается<br />
|-<br />
|rowspan="3" | Устройства для вывода звука<br />
| Встроенный динамик <br />
| Поддерживается ядром ОС, также есть драйвер работающий с [[HAL]] - драйвером [[Infinity]].<br />
|-<br />
| Колонки <br />
| Поддерживаются аудиодрайверами<br />
|-<br />
| Наушники <br />
| Поддерживаются аудиодрайверами.<br />
|}<br />
<br />
=== Ресурсы предоставляемые системой для контроля оборудования ===<br />
<br />
<!--Asper: Write in this section about mmio, memory range, IRQ etc. resources that are used to control hardware and how it can be accessed in KolibriOS --><br />
<br />
Для контроля оборудования используются обработчики аппаратных прерываний ('''IRQ'''), '''порты''' ввода/вывода и '''MMIO''' (memory-mapped IO или "отображённые на память зоны ввода-вывода"), которые BIOS выделил для конкретного оборудования. Поскольку у каждого системного устройства имеется свой уникальный адрес на шине PCI, то и доступ к ним разумно осуществлять через эту шину. Следует заметить, что новый стандарт системной шины ''PCI Express'' совместим "с верху вниз" с PCI, что позволяет проводить детектирование и базовый контроль ввода-вывода PCIe-устройств помощью стандартного сервиса PCI КолибриОС.<br />
<br />
Как уже отмечалось, PCI устройства могут существенно отличаться друг от друга по используемым ресурсам и методам инициализации оборудования. Тем не менее, часть программно-доступных ресурсов является стандартной для всех устройств, что и позволяет точно идентифицировать имеющееся оборудование на шине. Прежде всего PCI устройство необходимо найти на шине, зайти в его [[PCI_config/ru|конфигурационное пространство]] и обязательно проверить совпадение его вендора/версии с имеющимся шаблоном (иначе наш драйвер начнёт рулить каким-то совсем другим железом!), после чего можно приступать к диагностике и тонкой настройке режимов работы, подготавливая устройство для дальнейшей работы. Пример поиска оборудования на шине PCI см. в файле /drivers/sceleton.asm, этот файл является базой для многих новых драйверов.<br />
<br />
Системой пока поддерживается только древний контроллер прерываний PIC, имеющий всего 16 линий запроса, при этом многие линии уже зарезервированы ядром. Важно, что на один IRQ-запрос в текущей версии Колибри можно повесить только один обработчик. Таким образом, если прерывание уже используется каким-то другим устройством, то для обеспечения корректной работы нужно либо разработать общий драйвер для конфликтующих устройств(!!), либо вручную переназначить номер IRQ, использовав ещё не занятую линию (обычно BIOS позволяет это разрулить через setup-меню).<br />
<br />
Адреса портов ввода-вывода и диапазонов MMIO содержатся в регистрах BAR0-BAR5 конфигурационного пространства PCI-устройства. Системный программист может узнать эти адреса только прочитав BAR-регистры: из драйвера - с помощью ''pci_read_reg'' (bus/pci/pci32.inc), из пользовательской программы - вызвав подфункцию 6 сисфункции 62. <br />
Чем отличаются порты от MMIO-памяти? Принципиально - ничем. И то, и другое служит для доступа к информационным шлюзам, связывающим ЦП с внешним миром. Есть некоторые нюансы электронной организации таких шлюзов (однотипные регистровые блоки имеет смысл упаковывать в MMIO, а уникальные - хранить в отдельных портах), но программисту можно этим не заморачиваться: с точки зрения программирования вся разница между этими ресурсами - в способе чтения и записи данных '''in/out''' для портов и '''mov''' для '''mmio'''.<br />
<br />
== Что необходимо для того, чтобы написать драйвер ==<br />
<br />
Больше всего потребуется непреклонное желание добиться поставленной цели не смотря ни на какие сложности возникающие по ходу работы, это может быть основное, что вам понадобиться, как в принципе и при решении любой другой задачи.<br />
Кроме этого вам необходимо:<br />
* Прочитать статью [[Writing_drivers_for_KolibriOS/ru|"Пишем драйвер для КолибриОС"]]. В статье говорится о написании драйверов в формате MS COFF.<br> Кроме этого система позволяет писать драйвера в формате PE. Также для сведения, в рамках ветки Kolibri-ACPI создается новая драйверная архитектура ([http://board.kolibrios.org/viewtopic.php?f=3&t=1571 тема на форуме]).<br />
* Достать спецификацию (datasheet) на конкретный Южный Мост и/или конкретное устройство на которое пишется драйвер.<br> Например [http://board.kolibrios.org/viewtopic.php?f=3&t=1545 на форуме KolibriOS].<br />
* Если уже существуют в Колибри драйвера аналогичных устройств, то неплохо было бы почитать их код (посмотреть "как это делается")<br />
* Очень желательно смотреть исходный код драйверов нужного устройства для других ОС для понимания в общем и целом способов управления устройством<br />
* Уметь искать необходимую для разработки информацию, чем больше полезной информации тем лучше<br />
* Не будет лишним также общаться с другими разработчиками драйверов, в случае возникновения сложных вопросов<br />
* Для просмотра списка устройств и их параметров на шине PCI, в Колибри есть специальное приложение '''pcidev'''. К примеру если устройство на которое вы пишете драйвер не может получить IRQ в своё монопольное распоряжение, то можно посмотреть какое ещё устройство получило это прерывание, чтобы исправить ситуацию.<br />
<br />
[[Category:Системная документация]]</div>Punk Joker