Google Summer of Code 2017

From KolibriOS wiki
Revision as of 00:55, 26 January 2017 by Dunkaist (talk | contribs) (2016 -> 2017, update links, add short list of new ideas, delete ideas I don't like)
Jump to navigation Jump to search


KolibriOS is going to apply as a mentoring organization for Google Summer of Code 2017. This page contains our ideas list and some additional information for students and mentors.

Why we participate? Goals?

Why this application is distinct?

We have previously successfully participated as a Mentoring Organization in Google Summer of Code in 2014 and 2016. Historical links to these events are available for your reference:

We are optimistic and therefore always discovering oportunities for further development of KolibriOS. In 2013, we have run an independent Summer of Code using money we 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.

To our great delight, most successful students of GSoC stayed with the project and continue contributing to KolibriOS voluntarily in their spare time.

Student Requirements

Prospective students are required to register on our developers forum, register yourself as a student, join the developers chat and submit a small bugfix / improvement 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 @ This requirement is only to show us that you are able to work with our SVN and interact with our developers if you are selected. This task has to be completed before student application deadline (03 April 16:00 UTC).

In addition, students need to answer the following questions when applying:

  1. Full Name (First + Last Name).
  2. E-mail address.
  3. Phone (home or mobile).
  4. Another phone for emergency cases (if we cannot contact you) - parents, boy/girlfriend, husband/wife etc.
  5. Nickname you plan to use on our forums, SVN repository or IRC chat.
  6. Age.
  7. Country + city of residence.
  8. Human languages you speak (state all languages and knowledge level - basic/intermediate/expert/mother tongue).
  9. Name of college or university you are accepted into or enrolled in + link to their website.
  10. Name of program (or faculty, or department) in that college/university you are accepted into or enrolled in.
  11. Your current timezone in UTC/GMT terms (for example, Paris is UTC/GMT +1 hours right now).
  12. Have you been involved with any open-source project in the past? If yes, which one, and what have you done for that project?
  13. 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.
  14. The task you are willing to work on from our list of Summer of Code 2017 ideas (or suggest your own idea, if you don't like any of the proposed ideas). Please provide an approximate work plan for your task split to 1-week intervals, as well as expected outcome of your work. This point should be detailed as much as possible, as your application would be evaluated mainly based on what you write here. You are welcome (and even encouraged!) to collaborate with potential mentors on this paragraph.
  15. 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.


You can find the organizers on the IRC channel (#kolibrios @ or at our forum:

Name Nickname Role
Dmitriy Smirnov Pathoswithin Administrator for GSoC, mentor
Jeffrey Amelynck hidnplayr Mentor, backup administrator
Kiril Lipatov Leency Mentor
Ashish Gupta ashmew2 Mentor
Ivan Baravy dunkaist Mentor

We have discussed "Google Summer of Code 2017" 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 forum chat, and they will gladly answer any student questions that may arise, even if they haven't volunteered as Mentors themselves.

Most Mentors selected for this year are the same that were originally proposed for last year, and they have already proved to be responsible, helpful and knowledgeable during GSoC'2014 and GSoC'2016.

Ideas for Google Summer of Code 2017

The below list contains ideas suggested by KolibriOS team members. It is neither complete nor final.
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.

fuse driver + example, fasmg app and macros, tiny unicode library (NFC, NFD, sort, etc), AML interpreter, document viewer (zathura-like api), virt-io drivers, midi synthesizer and player, kolibri gui for fasmw text editor (has undo, supported by Tomasz Grysztar!), kfar plugin for tar, loop device driver (for iso, img, raw images, will help in partition manager development), squashfs, GIMP plugin for skin open/save (in C, Python or Scheme), brotli k(er)pack and kernel compression (+library), unit test framework (for kernel and libraries), OpenStreetMap client app,

Add info of benefits for students (per task).

Sortable list of ideas for easy navigation

Idea Name Area Required Skill Level Importance for KolibriOS Programming Language Mentor
XDXF dictionary Application Basic Low Assembler(FASM) Pathoswithin
XMPP/Jabber client Application Intermediate Medium Assembler(FASM) hidnplayr
Music player Application Advanced Medium Assembler(FASM)/C/C++ hidnplayr
Ethernet driver(s) Driver Advanced High Assembler(FASM) hidnplayr
USB device drivers Driver Expert High Assembler(FASM) hidnplayr
Widget toolkit System wide task Intermediate High Assembler(FASM) Pathoswithin
Port ScummVM Library Intermediate / Advanced Medium C / FASM hidnplayr / ashmew2

Explanation of required skill level:

  • Beginner: No knowledge at all of the topic,
  • Basic: A very basic knowledge of the topic but no professional usage,
  • Intermediate: A basic knowledge of the topic but no regular professional usage,
  • Advanced: A good knowledge of the topic and a regular professional usage,
  • Expert: a perfect knowledge of the topic and a daily professional usage.

Explanation of importance for the project:

  • Low: For sure it doesn't hurt to implement, but if nobody does it, no one will even notice.
  • Medium: Nice-to-have feature. Will improve everyday life of users and developers.
  • High: This feature is needed for the project to start being adopted by masses.


These are userspace tasks. They often require only basic knowledge of algorithms and data structures.
No specific experience is required but welcome.

XDXF dictionary

Summary: Write dictionary application with support of XDXF (XML Dictionary eXchange Format)


  • Primary goal: Write library and corresponding dictionary application
  • Additional goal: Support of other dictioinary formats
  • Language: Assembler/FASM
  • Skill level: basic
  • Importance: low
  • Mentor: Pathoswithin
  • Links: fasm xml library, XDXF format

XMPP/Jabber client

Summary: Write a XMPP/Jabber library and client for KolibriOS


Music player

Summary: Improve the current music player in Kolibri


  • Primary goal: Rewrite the current music player (ac97snd), in FASM, and improve its functionality
  • Support for file formats wav, mp3 and xm (using available external libraries)
  • Support for playlists (m3u)
  • A time display
  • Additional goal:
  • Use of system wide hotkeys to control player
  • Support for metadata (ID3, ...)
  • More codecs (flac, vorbis, ...)
  • Audio indication (oscillograph, bar graph, ...)
  • Show cover art from files or album folder
  • Fade in/out and/or crossover
  • Streaming radio (at least mp3 over http stream)
  • Skins
  • Media library

Port ScummVM

Summary: Port ScummVM to KolibriOS.


  • Primary goal: Port ScummVM to KolibriOS so that users can enjoy a wide range of already available software that runs on it.
  • Secondary goal: Optimize for KolibriOS
  • Language: C / FASM
  • Skill level: intermediate / advanced
  • Importance: Medium
  • Mentors: hidnplayr / ashmew2



Writing drivers is about supporting new hardware and filesystems.
Knowledge of specifications and previous experience are not required but surely desirable.

Ethernet driver(s)

Summary: Write an Ethernet driver


USB devices

Summary: Add USB drivers for the new USB stack (webcams, gamepads, joysticks, tablets, etc.)


  • Primary goal: Write USB driver for currently unsupported device (you should have one)
  • Additional goal: Adopt code to work with all devices of the same class
  • Language: Assembler/FASM
  • Skill level: Expert
  • Importance: High
  • Mentor: hidnplayr
  • Links: USB device classes

System wide tasks

These tasks comprise both user space and kernel space work. Some developers consider them as of most importance for KolibriOS.
Architecture and algorithm design skills are highly desirable.

Widget toolkit

Summary: Extend Box_lib (a set of separate widgets) to create a full-featured widget toolkit


  • Primary goal: Design architecture and implement focus handling, callbacks and other core ideas
  • Additional goal: Integrate box_lib widgets to this framework
  • Language: Assembler/FASM
  • Skill level: beginner/intermediate/advanced
  • Importance: High
  • Mentor: Pathoswithin
  • Links: basic idea, list of toolkits

Miscellanous / Crazy Ideas

These ideas are not necessarily suited for a GSoC project but I think would be good to have.

Rough Guide for Prospective Students

  • 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 Freenode's #kolibriOS , and our Chat (accessible through -> Forum -> Chat) are where developers mostly hang out.
  • Languages used for communication are Russian and English (although most developers are bilingual, and you can always ask someone for help)
  • Get in touch with other developers via IRC / Chat / Forums and enjoy your stay!

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

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

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

Regarding the test mentioned above, it is for assessing your current skill set and their relevance regarding the project that you want to eventually work on. In most cases, your potential mentor will assign you a task via IRC / Forum Chat but another developer can do this as well . Meanwhile, In case you are waiting for a test task, you can go through our 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:

All the ideas seem interesting, But..

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

Great Guide! But I still don't understand X

Please read Documentation / Development pages on this Wiki. If you have any doubts, feel free to connect with other KolibriOS users and developers through Forum Chat or #kolibrios on Freenode. Please ask developers / mentors on Forum Chat or IRC . Please be patient on IRC and Forum Chat as developers are on different time zones and it might take a few hours to get back to you. You can also start a Forum thread if it is about something you feel is a general issue.

Most importantly...Have Fun!