Google Summer of Code 2015: Difference between revisions

From KolibriOS wiki
Jump to navigation Jump to search
m (add easy task: Update CPUID application)
(feel free to rollback if there are objections, fix FIXMEs)
Line 1: Line 1:
== Introduction ==
== Introduction ==
KolibriOS is going to apply as a mentoring organization for [http://www.google-melange.com/gsoc/homepage/google/gsoc2015 Google Summer of Code 2015]. This page contains our ideas list and some additional information for students and mentors.
KolibriOS is going to apply as a mentoring organization for [http://www.google-melange.com/gsoc/homepage/google/gsoc2015 Google Summer of Code 2015].
This page contains our ideas list and some additional information for students and mentors.


== Student Requirements ==
== Student Requirements ==
Line 51: Line 52:
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.
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.


=== CPUID application ===
 
'''Summary:''' Update existing CPUID application to be familiar with new CPUs and their features.
=== Applications ===
These are userspace tasks. They often require only basic knowledge of algorithms and data structures.<br>
No specific experience is required but welcome.
 
==== XDXF dictionary ====
'''Summary:''' Write dictionary application with support of XDXF (XML Dictionary eXchange Format)
 
'''Details:'''
* Primary goal: Write library and corresponding dictionary application
* Additional goal: Support of other dictioinary formats
* Language: Assembler/FASM
* Skill level: intermediate
* Importance: Standard
* Suggested by: dunkaist
* Mentor: dunkaist
* Links: [http://tibleiz.net/asm-xml/ fasm xml library], [https://en.wikipedia.org/wiki/XDXF XDXF format]
 
 
==== CPUID tool ====
'''Summary:''' Update existing CPUID application to be aware of new CPUs and their features


'''Details:'''
'''Details:'''
* Primary goal: Write code to detect and report new CPUs and features.
* Primary goal: Write code to detect and report new CPUs and features
* Additional goals: Refactor code as to use system libraries (libimg, box_lib, etc).
* Additional goal: Refactor code as to use system libraries (libimg, box_lib, etc.)
* Language: Assembler/FASM
* Language: Assembler/FASM
* Skill level: beginner/intermediate
* Skill level: beginner/intermediate
* Importance: Low
* Importance: Standard
* Suggested by: dunkaist
* Suggested by: dunkaist
* Mentor: dunkaist
* Mentor: dunkaist
* 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]
* 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]


=== QR-code in boot log ===
'''Summary:''' Add a [http://en.wikipedia.org/wiki/QR_code QR-code] (containing the debug log) at the end of boot process


[[File:QR-code.png]]
==== FTP client ====
'''Summary:''' Create a GUI based FTP client or add FTP support to one of the existing file managers


'''Details:'''
'''Details:'''
* 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.
* Primary goal: FTP access (download/upload/etc.)
* Additional goal: Create an FTP client library
* Language: Assembler/FASM
* Language: Assembler/FASM
* Skill level: beginner/intermediate
* Skill level: beginner/intermediate
* Suggested by: People on [http://habrahabr.ru/company/kolibrios/blog/ habrahabr.ru]
* Importance: High
* Mentor: dunkaist
* Suggested by: hidnplayr
* Mentor: hidnplayr
* Links: [https://www.ietf.org/rfc/rfc959.txt File Transfer Protocol (RFC959)]
 


=== Torrent client ===
==== Torrent client ====
'''Summary:''' Write a (bit-)torrent client for KolibriOS
'''Summary:''' Write a (bit-)torrent client for KolibriOS


Line 83: Line 106:
* Language: Assembler/FASM
* Language: Assembler/FASM
* Skill level: intermediate/advanced
* Skill level: intermediate/advanced
* Importance: High
* Suggested by: People on IRC
* Suggested by: People on IRC
* Mentor: hidnplayr
* Mentor: hidnplayr
* Links: FIXME


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


'''Details:'''
'''Details:'''
* Primary goal: Write basic xmpp library/client.
* Primary goal: Write basic xmpp library/client
* Additional goals: Implement some xmpp extentions.
* Additional goal: Implement some xmpp extentions
* Language: Assembler/FASM
* Language: Assembler/FASM
* Skill level: intermediate/advanced
* Skill level: intermediate/advanced
* Importance: Standard.
* Importance: High
* Suggested by: People on IRC
* Suggested by: People on IRC
* Mentor: dunkaist
* Mentor: dunkaist
* Links: [http://xmpp.org/xmpp-protocols/rfcs/ XMPP spec], [http://xmpp.org/xmpp-protocols/xmpp-extensions/ XMPP extentions]
* Links: [http://xmpp.org/xmpp-protocols/rfcs/ XMPP spec], [http://xmpp.org/xmpp-protocols/xmpp-extensions/ XMPP extentions]


=== Filesystem support ===
 
'''Summary:''' Improve filesystem support in KolibriOS
==== Music player ====
'''Summary:''' Improve the current music player in Kolibri


'''Details:'''
'''Details:'''
* Primary goal: Add Read-only support for the UDF filesystem.
* Primary goal: Rewrite the current music player (ac97snd), in FASM, and improve its functionality
* Additional goal #1: Add Write support for the UDF filesystem
: * Support for file formats wav, mp3 and xm (using available external libraries)
* Additional goal #2: Add Write support for the NTFS filesystem (read-only support already exists)
: * Support for playlists (m3u)
* Language: Assembler/FASM
: * 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
* Language: Assembler/FASM (C/C++ to port codec)
* Skill level: intermediate/advanced
* Skill level: intermediate/advanced
* Suggested by: dunkaist
* Importance: High
* Mentor: dunkaist
* Suggested by: hidnplayr
* Mentors: hidnplayr / dunkaist
* Links: FIXME
 


=== FTP client ===
==== Web browser: WebView ====
'''Summary:''' Create a GUI based FTP client or add FTP support to one of the existing file managers
'''Summary:''' Improve existing text-only web browser WebView - add more functionality and compatibility


'''Details:'''
'''Details:'''
* Primary goal: FTP access (download/upload/etc.)
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites
* Additional goal: Create an FTP client library.
* Secondary goal: Add certain elements of CSS, speed optimizations
* Language: Assembler/FASM
* Language: [http://c--sphinx.narod.ru/indexe.htm Sphinx C--]. May require writing a few lines in FASM though
* Skill level: beginner/intermediate
* Skill level: intermediate/advanced
* Suggested by: hidnplayr
* Importance: High
* Mentor: hidnplayr
* Suggested by: Leency / hidnplayr
* Mentors: punk_joker / hidnplayr
'''Links:'''
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]
* [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]
 
 
=== Drivers ===
Writing drivers is about new hardware and filesystems.<br>
Knowledge of specifications and previous experience are ''not'' required but surely desirable.


=== Improve Ethernet support ===
==== Improve Ethernet support ====
'''Summary:''' Write an Ethernet driver.
'''Summary:''' Write an Ethernet driver


'''Details:'''
'''Details:'''
* Primary goal: Support for popular Broadcom, Atheros or Marvell Yukon ethernet cards.
* Primary goal: Support for popular Broadcom, Atheros or Marvell Yukon ethernet cards
* Additional goals: A second driver / Improve documentation / ...
* Additional goal: A second driver / Improve documentation / ...
* Language: Assembler/FASM
* Language: Assembler/FASM
* Skill level: intermediate/advanced
* Skill level: intermediate/advanced
* Importance: High
* Suggested by: hidnplayr
* Suggested by: hidnplayr
* Mentor: hidnplayr
* Mentor: hidnplayr
* Links: FIXME


=== Unicode support ===
==== SD Host Controller ====
'''Summary:''' Write userspace library and font server to handle unicode strings and fonts.
'''Summary:''' Add support for SD Host Controller


'''Details:'''
'''Details:'''
* Primary goal: Write library to decode/encode UTF-8 and sort/compare/etc unicode strings.
* Primary goal: Write driver for particular controller
* Additional goals: Write basic font server.
* Additional goal: Test and update driver to work for all controllers
* Language: Assembler/FASM
* Language: Assembler/FASM
* Skill level: intermediate
* Skill level: intermediate/advanced
* Importance: Vital
* Importance: High
* Suggested by: dunkaist
* Suggested by: dunkaist
* Mentor: dunkaist
* Mentor: dunkaist
* Links: [http://git.suckless.org/libutf/log/ small utf-8 library], [http://grub.gibibit.com/New_font_format good raster font format]
* Links: [https://www.sdcard.org/downloads/pls/simplified_specs/index.html SD specifications]
 


=== Dictionary application ===
==== USB devices ====
'''Summary:''' Write dictionary application with support of XDXF (XML Dictionary eXchange Format).
'''Summary:''' Add USB drivers for the new USB stack (webcams, gamepads, joysticks, tablets, etc.)


'''Details:'''
'''Details:'''
* Primary goal: Write library and corresponding dictionary application.
* Primary goal: Write USB driver for currently unsupported device (you should have one)
* Additional goals: Support of other dictioinary formats.
* Additional goal: Adopt code to work with all devices of the same class
* Language: Assembler/FASM
* Language: Assembler/FASM
* Skill level: intermediate
* Skill level: intermediate/advanced
* Importance: Low
* Importance: High
* Suggested by: dunkaist
* Suggested by: hidnplayr/Asper
* Mentor: dunkaist
* Mentor: XVilka
* Links: [http://tibleiz.net/asm-xml/ fasm xml library], [https://en.wikipedia.org/wiki/XDXF XDXF format]
* Links: [http://en.wikipedia.org/wiki/USB#Device_classes USB device classes]
 


=== SD/MMC controller driver ===
==== Filesystem support ====
'''Summary:''' Write driver for SD/MMC controllers.
'''Summary:''' Improve filesystem support in KolibriOS


'''Details:'''
'''Details:'''
* Primary goal: Write driver for particular controller.
* Primary goal: Update/fix read-write support for EXT2/3/4 filesystems (partially done)
* Additional goals: Test and update driver to work for all controllers.
* Alternative goal: Add write support for the NTFS filesystem (read-only support already exists)
* Language: Assembler/FASM
* Language: Assembler/FASM
* Skill level: intermediate/advanced
* Skill level: intermediate/advanced
* Importance: Important.
* Importance: High
* Suggested by: dunkaist
* Suggested by: dunkaist
* Mentor: dunkaist
* Mentor: dunkaist
* Links: [https://www.sdcard.org/downloads/pls/simplified_specs/partA2_300.pdf SDHCI specification]
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Ffs%2F&#a0aa5cede7308db82d4bae78266ed8462 Filesystems in KolibriOS]


=== Music player ===