Ideas Page: Difference between revisions

From KolibriOS wiki
Jump to navigation Jump to search
No edit summary
Line 1: Line 1:
== Introduction ==
== Introduction ==
This is our ideas page for new developers.
This is our ideas page for new developers who want to participate in the Google Summer of Code event by contributing to KolibriOS. It also contains a description of the process and requirements to participate.<br>
A general information about Google Summer of Code can be found here: [https://summerofcode.withgoogle.com/ Google Summer of Code]


== Google Summer of Code'23 Contributor Requirements ==
== Google Summer of Code'23 Contributor Requirements ==
Prospective contributors are required to register [https://board.kolibrios.org on our developers forum] and submit a small bugfix / improvement [[Get_source_code|to our SVN or GIT]] in order for their application to be considered. Examples of such tasks can be obtained by asking on the developers forum or on our IRC channel (#kolibrios @ irc.libera.chat). This requirement is only to show us that you are able to work with [[Get_source_code|our SVN or GIT]] and interact with our developers if you are selected. '''This task has to be completed before contributor application deadline (4 April 18:00 UTC).'''<br><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.<br>
'''This task has to be completed before contributor application deadline (4 April 18:00 UTC).'''<br>
In addition, contributors need to answer the following questions when applying:
In addition, contributors need to answer the following questions when applying:
# Full Name (First + Last Name).
# Full Name (First + Last Name).
Line 219: Line 221:


=== RSS/Atom news reader ===
=== RSS/Atom news reader ===
RSS and Atom are standards for web feeds. They are XML based and easily processed via AsmXml library. Corresponding user application would be a big plus to usability of KolibriOS.
===== General Description =====
* Primary goal: Write RSS news reader as a standalone KolibriOS application.
RSS and Atom are web feeds that allow users and applications to access updates of websites in a standardized, computer-readable format. For the average user, it can be used primarily as a news/update feed, where the user can subscribe to channels of interest and receive news or other updates from different sources in one place. They are based on XML and can easily be processed using AsmXml library. User application for reading RSS/Atom feeds would be a good addition to usability of KolibriOS, as it will allow users to read news feeds from different sources without need to manually open news websites.
* Additional goal: Add Atom support to the app.
===== What it gives us =====
* Language: Assembler/FASM
RCC/Atom feed can be a great addition to the KolibriOS functionality, as it allows users to conveniently receive updates from different sources, including even on very weak devices, where opening the source of interest in the browser is impossible or problematic.
* Links: [http://tibleiz.net/asm-xml/ AsmXml library], [https://en.wikipedia.org/wiki/RSS RSS], [https://en.wikipedia.org/wiki/Atom_(standard) Atom]
===== Other information =====
* '''Primary goals''': Write RSS news reader as a standalone KolibriOS application.
* '''Additional goals''': Also add Atom standart support to the app.
* '''Language''': Any, Assembly/FASM is preffarable.
* '''Difficulty''': Medium, you need to be familiar with XML processing and http requests, as well as general app development for KolibriOS.
* '''Time/Size''': 100 hours.
* '''Links''': [https://en.wikipedia.org/wiki/RSS RSS on Wikipedia], [https://en.wikipedia.org/wiki/Atom_(web_standard) Atom on Wikipedia], [https://github.com/AboutRSS/ALL-about-RSS Big amont of information and implementation examples], [https://www.rssboard.org/rss-specification RSS specification], [https://www.ietf.org/rfc/rfc4287.txt Atom specification], [http://tibleiz.net/asm-xml/ AsmXml library]


=== Port SDL2 ===
=== Port SDL2 ===

Revision as of 18:10, 30 January 2024

Introduction

This is our ideas page for new developers who want to participate in the Google Summer of Code event by contributing to KolibriOS. It also contains a description of the process and requirements to participate.
A general information about Google Summer of Code can be found here: Google Summer of Code

Google Summer of Code'23 Contributor Requirements

Prospective contributors are required to register on our developers forum and submit a small bugfix / improvement to our SVN or GIT in order for their application to be considered. Examples of such tasks can be obtained by asking on the developers forum or on our IRC channel (#kolibrios @ irc.libera.chat). This requirement is only to show us that you are able to work with our SVN or GIT and interact with our developers if you are selected.
This task has to be completed before contributor application deadline (4 April 18:00 UTC).
In addition, contributors need to answer the following questions when applying:

  1. Full Name (First + Last Name).
  2. E-mail address.
  3. Nickname you plan to use on our forums, SVN/GIT repository or IRC chat.
  4. Age.
  5. Country + city of residence.
  6. Human languages you speak (write all languages and knowledge level - basic/intermediate/expert/mother tongue).
  7. Name of college or university you are accepted into or enrolled in + link to their website (if applicable).
  8. Name of program (or faculty, or department) in that college/university you are accepted into or enrolled in (if applicable).
  9. Your current timezone in UTC/GMT terms (for example, Paris is UTC/GMT +1 hours right now).
  10. Have you been involved with any open-source project in the past? If yes, which one, and what have you done for that project?
  11. 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.
  12. 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).
  13. What other time commitments, such as school work, another job, planned vacation, etc., will you have between May 29 and August 28?

Organization

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

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

Ideas

Sortable list of ideas for easy navigation

Idea Name Area Programming Language Mentors
OpenBios in Loader Kernel/Application Forth, FASM (Assembler), C KPG
File system Kernel/Application FASM (Assembler) Pathoswithin
Widget toolkit System wide FASM (Assembler), C dunkaist
Finish Mbed TLS port Library C/FASM Punk_Joker
Port FLTK Library C++ Punk_Joker
Fasmg port Application FASM/FASMG (Assembler) dunkaist
Unicode library Library/Application FASM (Assembler) dunkaist
Virt-IO driver Kernel FASM (Assembler) dunkaist
Loop device driver Kernel FASM (Assembler) dunkaist
NVMe driver Kernel FASM (Assembler) Punk_Joker
RSS/Atom news reader Application FASM (Assembler) dunkaist
Port SDL2 Library C rgimad
Add forms to WebView Application C-- rgimad
J2ME Emulator Application C, Java rgimad
Screen Ruler Application FASM (Assembler) rgimad

OpenBios in Loader

OpenBIOS is a free, portable implementation of IEEE 1275-1994 (Open Firmware). Find detailed information about OpenBIOS OpenBIOS can replace your system firmware (BIOS) partly or completely. It can also be used as a bootloader to create an Open Firmware compatible interface between legacy firmware and an operating system. This is achieved by a modular concept that consists of a portable Forth kernel and three interfaces for user interaction, device initialization and client (operating system) control in command line like shell in Linux. OpenBios implentation Fcode [1] - Bytecode is small, hardware independent and efficient. And an evaluator (bytecode virtual machine) is almost trivial to implement or/and with possible an uses JIT technology.

  • Primary goal: Add OpenBios ("Forth") support to the system bootloader.
  • Additional goal: Create simple interactive more device drivers
  • Language: Forth, FASM (Assembler), C
  • Links: Openbios Firmware in Github

File system

  • Primary goal: Add write support for ext4 file system (ext4 reading and ext2 writing are already supported).
  • Additional goal: Improve write support for NTFS file system.
  • Language: FASM (Assembler)
  • Links: Ext4 Disk Layout

Widget toolkit

  • Primary goal: Extend Box_lib (a set of separate widgets) to create a full-featured widget toolkit, design architecture and implement focus handling, callbacks and other core ideas.
  • Additional goal: Integrate created box_lib widgets to the C-framework, extend framework with font handling, layout manager
  • Language: FASM (Assembler), C (framework)
  • Links: basic idea, list of toolkits

Finish Mbed TLS port

  • Primary goal: Finish MbedTLS port (headers for FASM, get ceritificates working) (TODOs)
  • Additional goal: Update HTTP library (written in FASM) to support HTTPS by using mbedtls.obj
  • Language: C/FASM
  • Links: MbedTLS port thread

Port FLTK

  • Primary goal: Make a working port of FLTK (widget library) and add it to the automatic build-system.
  • Additional goal: port Scintilla (minimum working version)
  • Language: C++
  • Links: Official site

Language: C--, Assembler/FASM

Fasmg port

Tomasz Grysztar (creator of FASM) introduced FASMG, a new assembler engine. It would be nice to support its new syntax in KolibriOS.

  • Primary goal: Write FASMG application like FASM one. Port standard KolibriOS macros to FASMG syntax.
  • Additional goal: Implement macros for compatibility with FASM.
  • Language: Assembler/FASM/FASMG
  • Links: FASMG overview, FASMG manual

Unicode library

Unicode is a huge and sophisticated standard. Nevertheless modern OS should provide libraries with Unicode related routines like NFC, NFD, sorting, comparing, etc.

  • Primary goal: Write a tiny Unicode library with core Unicode algorithms and example application.
  • Additional goal: Upgrade existing applications to use the new library.
  • Language: Assembler/FASM
  • Links: libutf

Virt-IO driver

Virtio is a virtualization standard for network and disk device drivers where just the guest's device driver "knows" it is running in a virtual environment, and cooperates with the hypervisor. This enables guests to get high performance network and disk operations, and gives most of the performance benefits of paravirtualization.

  • Primary goal: Write kernel driver for, say, virt-io Ethernet card.
  • Additional goal: Write more drivers.
  • Language: Assembler/FASM
  • Links: Virt-IO wiki

Loop device driver

  • Primary goal: Write loop device driver and example application to manage loop devices.
  • Additional goal: Prepare a set of disk images to be used in filesystem unit tests.
  • Language: Assembler/FASM
  • Links: loop device overview

NVMe driver

  • Primary goal: Write basic NVMe device driver to support NVMe SSD
  • Additional goal: Support namespaces
  • Language: Assembler/FASM
  • Links: NVMe Base Specification

RSS/Atom news reader

General Description

RSS and Atom are web feeds that allow users and applications to access updates of websites in a standardized, computer-readable format. For the average user, it can be used primarily as a news/update feed, where the user can subscribe to channels of interest and receive news or other updates from different sources in one place. They are based on XML and can easily be processed using AsmXml library. User application for reading RSS/Atom feeds would be a good addition to usability of KolibriOS, as it will allow users to read news feeds from different sources without need to manually open news websites.

What it gives us

RCC/Atom feed can be a great addition to the KolibriOS functionality, as it allows users to conveniently receive updates from different sources, including even on very weak devices, where opening the source of interest in the browser is impossible or problematic.

Other information

Port SDL2

SDL1.2 is already ported to KolibriOS, but there is no SDL2 port.

  • Primary goal: Make a working port of SDL2.
  • Additional goal: Port additional SDL2 libraries: SDL2_image, SDL2_mixer, SDL2_ttf, etc.
  • Language: C
  • Links: libsdl.org

Add forms to WebView

Currently WebView browser doesn't support support html forms (<form>, <input>, etc.)

  • Primary goal: Add support for <form>, <input> for types that was prior to HTML5
  • Additional goal: Add input types that was introduced in HTML5
  • Language: C--
  • Links: WebView on svn

J2ME Emulator

Thousands of games and programs have been created for the j2me platform. It would be cool to be able to run them in KolibriOS.

  • Primary goal: Port JVM and java.microedition.* runtime
  • Additional goal: Make it run most of popular j2me games
  • Language: C, Java
  • Links: miniJVM

Screen Ruler

Program for conveniently measuring the distance between selected points on the screen.

  • Primary goal: measure distance by X, Y, diagonal.
  • Additional goal: Also with a built-in magnifier and aim to see which pixel you choose.
  • Language: FASM
  • Links: for additional goal it would be useful to see: sources of Magnify

Rough Guide for Prospective Contributors

  • As the kernel is written in FASM, ability to write and understand i386-assembly code is very useful.
  • C is also a plus as some applications/libraries and components are written in C. Also, C is useful to interface with assembly at times.
  • Familiarity with the GNU landscape like Autotools, GCC etc are also a plus to have (especially for porting software)
  • The desire to take challenging problems and solve them is also required as several parts of the code base require thought for design and implementation. (The mentors can help you with that :) )
  • Hanging out on LiberaChat's #kolibriOS and our forum where developers mostly hang out.
  • Languages used for communication are English and Russian (although most developers are bilingual, and you can always ask someone for help)
  • Get in touch with other developers via IRC / Forums and enjoy your stay!

I'm a potential GSoC contributor. I'm scared of all the assembly and docs here! Where should I start?! :'(

Start here : http://wiki.kolibrios.org/wiki/HowTo This will help you set up KolibriOS. Easiest will be to use either Qemu or VirtualBox as most developers use it and thus will be able to help you with eventual problems. Feel free however to try something else and let us know how it goes!

I'm a potential GSoC contributor. What is this test task?!

Regarding the test mentioned above, it is for assessing your current skill set and their relevance regarding the project that you want to eventually work on. In most cases, your potential mentor will assign you a task via IRC / Forum but another developer can do this as well . Meanwhile, In case you are waiting for a test task, you can go through our bug tracker and find a small task to work on yourself, or learn about KolibriOS by going through example code.

I want to play with the code but my college blocks SVN

If you are have trouble accessing, please do mention it on the forums. You can temporarily use this backup git repository: http://repo.or.cz/w/kolibrios.git

All the ideas seem interesting, But..

Feel free to suggest your own idea! This is encouraged largely both in GSoC and KolibriOS. The mentors will be glad to such an idea and assess it's feasibility / usability for Kolibri.

Great Guide! But I still don't understand X

Please read Documentation / Development pages on this Wiki. If you have any doubts, feel free to connect with other KolibriOS users and developers through Forum Chat or #kolibrios on LiberaChat. 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.

Most importantly...Have Fun!