Google Summer of Code 2015: Difference between revisions

From KolibriOS wiki
Jump to navigation Jump to search
("Suggested by" field is completely irrelevant here)
Line 51: Line 51:
The below list contains ideas suggested by KolibriOS team members. '''It is neither complete nor final.'''<br>
The below list contains ideas suggested by KolibriOS team members. '''It is neither complete nor final.'''<br>
Students are welcome ('''and even encouraged''') to suggest their own ideas for GSoC, provided they can find a mentor amongst KolibriOS developers to guide them.
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.
=== Sortable list of ideas for easy navigation ===
=== Sortable list of ideas for easy navigation ===
How to define your level on a specific topic?
* 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.
Legend of project importance of the task
* Low: For sure it doesn't hurt to implement, but if nobody does it, no one will even notice.
* Medium: Nice-to-have feature.
* High: This feature is needed for the project to start being adopted by masses.
* Critical: This functionality is vital for the project to become useful.
{| class="wikitable sortable" border="1"
{| class="wikitable sortable" border="1"
|-
|-
Line 115: Line 128:
| Standard
| Standard
| Assembler/FASM
| Assembler/FASM
| dunkaist
| hidnplayr
|-
|-
| SD Host Controller driver
| SD Host Controller driver
Line 152: Line 165:
| dunkaist
| dunkaist
|}
|}
How to define your level on a specific topic?
* 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.
Legend of project importance of the task
* Low: For sure it doesn't hurt to implement, but if nobody does it, no one will even notice.
* Medium: Nice-to-have feature.
* High: This feature is needed for the project to start being adopted by masses.
* Critical: This functionality is vital for the project to become useful.


=== Applications ===
=== Applications ===
Line 179: Line 179:
* Skill level: intermediate
* Skill level: intermediate
* Importance: Standard
* Importance: Standard
* Suggested by: dunkaist
* Mentor: dunkaist
* Mentor: dunkaist
* Links: [http://tibleiz.net/asm-xml/ fasm xml library], [https://en.wikipedia.org/wiki/XDXF XDXF format]
* Links: [http://tibleiz.net/asm-xml/ fasm xml library], [https://en.wikipedia.org/wiki/XDXF XDXF format]
Line 193: Line 192:
* Skill level: beginner/intermediate
* Skill level: beginner/intermediate
* Importance: Standard
* Importance: Standard
* 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]
Line 207: Line 205:
* Skill level: beginner/intermediate
* Skill level: beginner/intermediate
* Importance: High
* Importance: High
* Suggested by: hidnplayr
* Mentor: hidnplayr
* Mentor: hidnplayr
* 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)]
* 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)]
Line 219: Line 216:
* Skill level: intermediate/advanced
* Skill level: intermediate/advanced
* Importance: High
* Importance: High
* Suggested by: People on IRC
* Mentor: hidnplayr
* Mentor: hidnplayr
* Links: FIXME
* Links: FIXME
Line 233: Line 229:
* Skill level: intermediate/advanced
* Skill level: intermediate/advanced
* Importance: High
* Importance: High
* 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]
Line 259: Line 254:
* Skill level: intermediate/advanced
* Skill level: intermediate/advanced
* Importance: High
* Importance: High
* Suggested by: hidnplayr
* Mentors: hidnplayr / dunkaist
* Mentors: hidnplayr / dunkaist
* 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)]
* 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)]
Line 272: Line 266:
* Skill level: intermediate/advanced
* Skill level: intermediate/advanced
* Importance: High
* Importance: High
* Suggested by: Leency / hidnplayr
* Mentors: punk_joker / hidnplayr
* Mentors: punk_joker / hidnplayr
'''Links:'''
'''Links:'''
Line 292: Line 285:
* Skill level: intermediate/advanced
* Skill level: intermediate/advanced
* Importance: Medium
* Importance: Medium
* Suggested by: hidnplayr
* Mentor: hidnplayr
* Mentor: hidnplayr
* Links: [https://www.broadcom.com/collateral/pg/57XX-PG105-R.pdf BCM57XX programmers guide], [[Writing network drivers for KolibriOS]]
* Links: [https://www.broadcom.com/collateral/pg/57XX-PG105-R.pdf BCM57XX programmers guide], [[Writing network drivers for KolibriOS]]
Line 306: Line 298:
* Skill level: intermediate/advanced
* Skill level: intermediate/advanced
* Importance: High
* Importance: High
* Suggested by: dunkaist
* Mentor: dunkaist
* Mentor: dunkaist
* Links: [https://www.sdcard.org/downloads/pls/simplified_specs/index.html SD specifications]
* Links: [https://www.sdcard.org/downloads/pls/simplified_specs/index.html SD specifications]
Line 320: Line 311:
* Skill level: intermediate/advanced
* Skill level: intermediate/advanced
* Importance: High
* Importance: High
* Suggested by: hidnplayr/Asper
* Mentor: XVilka
* Mentor: XVilka
* Links: [http://en.wikipedia.org/wiki/USB#Device_classes USB device classes]
* Links: [http://en.wikipedia.org/wiki/USB#Device_classes USB device classes]
Line 334: Line 324:
* Skill level: intermediate/advanced
* Skill level: intermediate/advanced
* Importance: High
* Importance: High
* Suggested by: dunkaist
* Mentor: dunkaist
* Mentor: dunkaist
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Ffs%2F&#a0aa5cede7308db82d4bae78266ed8462 Filesystems in KolibriOS]
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Ffs%2F&#a0aa5cede7308db82d4bae78266ed8462 Filesystems in KolibriOS]
Line 352: Line 341:
* Skill level: intermediate
* Skill level: intermediate
* Importance: Vital
* Importance: Vital
* 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: [http://git.suckless.org/libutf/log/ small utf-8 library], [http://grub.gibibit.com/New_font_format good raster font format]
Line 366: Line 354:
* Skill level: beginner/intermediate/advanced
* Skill level: beginner/intermediate/advanced
* Importance: Vital
* Importance: Vital
* Suggested by: XVilka
* Mentor: dunkaist
* Mentor: dunkaist
* Links: FIXME
* Links: FIXME
Line 381: Line 368:
* Language: Assembler/FASM
* Language: Assembler/FASM
* Skill level: intermediate/advanced
* Skill level: intermediate/advanced
* Suggested by: Serge
* Mentor: Serge(?)
* Mentor: Serge(?)


Line 390: Line 376:
* Language: Assembler/FASM
* Language: Assembler/FASM
* Skill level: intermediate/advanced
* Skill level: intermediate/advanced
* Suggested by: hidnplayr
* Mentor: Mario(?)
* Mentor: Mario(?)


Line 400: Line 385:
* Language: Assembler/FASM
* Language: Assembler/FASM
* Skill level: beginner/intermediate/advanced
* Skill level: beginner/intermediate/advanced
* Suggested by: Wildwest/asiekierka
* Mentor: ???
* Mentor: ???


Line 410: Line 394:
* Language: Assembler/FASM
* Language: Assembler/FASM
* Skill level: Intermediate/Expert
* Skill level: Intermediate/Expert
* Suggested by: Serge
* Mentor: Serge '''(Is not always available to answer questions, so select this task only if you can work fairly independently.)'''
* Mentor: Serge '''(Is not always available to answer questions, so select this task only if you can work fairly independently.)'''


Line 424: Line 407:
* Language: Assembler/FASM
* Language: Assembler/FASM
* Skill level: Expert
* Skill level: Expert
* Suggested by: Pretty much everyone in Kolibri
* Mentor: SoUrcerer
* Mentor: SoUrcerer


Line 435: Line 417:
* Language: Assembler/FASM
* Language: Assembler/FASM
* Skill level: intermediate/advanced
* Skill level: intermediate/advanced
* Suggested by: hidnplayr
* Mentor: SoUrcerer
* Mentor: SoUrcerer
-->
-->


[[Category:Misc]]
[[Category:Misc]]

Revision as of 20:18, 18 February 2015

Introduction

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

Student Requirements

Prospective students are required to register on our developers forum, 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 @ irc.freenode.net). 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 (27 March 19:00 UTC).

In addition, students 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 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.
  8. Name of program (or faculty, or department) in that college/university you are accepted into or enrolled in.
  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 2015 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 19 and August 18?

Organization

You can find the organizers on the IRC channel (#kolibrios @ irc.freenode.net) or at our forum: http://board.kolibrios.org/

Name Nickname Role
Yogev Ezra yogev_ezra Organization Administrator
Jeffrey Amelynck hidnplayr Mentor, Backup Administrator
Ivan Baravy dunkaist Mentor
Sergey Sakhno punk_joker Mentor

We have discussed "Google Summer of Code 2015" 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.

Ideas for Google Summer of Code 2015

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.

Sortable list of ideas for easy navigation

How to define your level on a specific topic?

  • 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.

Legend of project importance of the task

  • Low: For sure it doesn't hurt to implement, but if nobody does it, no one will even notice.
  • Medium: Nice-to-have feature.
  • High: This feature is needed for the project to start being adopted by masses.
  • Critical: This functionality is vital for the project to become useful.
Idea Name Area Required Skill Level Importance for the project Programming Language Mentor
XDXF dictionary Application intermediate Standard Assembler/FASM dunkaist
CPUID tool Application intermediate Standard Assembler/FASM dunkaist
FTP client Application intermediate Standard Assembler/FASM dunkaist
Torrent client Application intermediate High Assembler/FASM dunkaist
XMPP/Jabber client Application intermediate Standard Assembler/FASM dunkaist
Music player Application intermediate Standard Assembler/FASM dunkaist
Web browser: WebView Application intermediate Standard Assembler/FASM dunkaist
Ethernet driver(s) Driver intermediate Standard Assembler/FASM hidnplayr
SD Host Controller driver Driver intermediate Standard Assembler/FASM dunkaist
USB device drivers Driver intermediate Standard Assembler/FASM dunkaist
Filesystem support Driver intermediate Standard Assembler/FASM dunkaist
Unicode support System wide task intermediate Critical Assembler/FASM dunkaist
Widget toolkit System wide task intermediate Standard Assembler/FASM dunkaist

Applications

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)

Details:

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


CPUID tool

Summary: Update existing CPUID application to be aware of new CPUs and their features

Details:

  • Primary goal: Write code to detect and report new CPUs and features
  • Additional goal: Refactor code as to use system libraries (libimg, box_lib, etc.)
  • Language: Assembler/FASM
  • Skill level: beginner/intermediate
  • Importance: Standard
  • Mentor: dunkaist
  • Links: CPUID program, Intel cpuid, AMD cpuid


FTP client

Summary: Create a GUI based FTP client or add FTP support to one of the existing file managers

Details:

Torrent client

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

Details:

  • Primary goal: Implement a torrent client similar to µTorrent Free edition
  • Language: Assembler/FASM
  • Skill level: intermediate/advanced
  • Importance: High
  • Mentor: hidnplayr
  • Links: FIXME


XMPP/Jabber client

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

Details:

  • Primary goal: Write basic xmpp library/client
  • Additional goal: Implement some xmpp extentions
  • Language: Assembler/FASM
  • Skill level: intermediate/advanced
  • Importance: High
  • Mentor: dunkaist
  • Links: XMPP spec, XMPP extentions


Music player

Summary: Improve the current music player in Kolibri

Details:

  • 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

Web browser: WebView

Summary: Improve existing text-only web browser WebView - add more functionality and compatibility

Details:

  • Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites
  • Secondary goal: Add certain elements of CSS, speed optimizations
  • Language: Sphinx C--. May require writing a few lines in FASM though
  • Skill level: intermediate/advanced
  • Importance: High
  • Mentors: punk_joker / hidnplayr

Links:


Drivers

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

Ethernet driver(s)

Summary: Write an Ethernet driver

Details:

  • Primary goal: Support for popular Broadcom, Atheros or Marvell Yukon ethernet cards
  • Additional goal: A second driver / Improve documentation / ...
  • Language: Assembler/FASM
  • Skill level: intermediate/advanced
  • Importance: Medium
  • Mentor: hidnplayr
  • Links: BCM57XX programmers guide, Writing network drivers for KolibriOS


SD Host Controller

Summary: Add support for SD Host Controller

Details:

  • Primary goal: Write driver for particular controller
  • Additional goal: Test and update driver to work for all controllers
  • Language: Assembler/FASM
  • Skill level: intermediate/advanced
  • Importance: High
  • Mentor: dunkaist
  • Links: SD specifications


USB devices

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

Details:

  • 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: intermediate/advanced
  • Importance: High
  • Mentor: XVilka
  • Links: USB device classes


Filesystem support

Summary: Improve filesystem support in KolibriOS

Details:

  • Primary goal: Update/fix read-write support for EXT2/3/4 filesystems (partially done)
  • Alternative goal: Add write support for the NTFS filesystem (read-only support already exists)
  • Language: Assembler/FASM
  • Skill level: intermediate/advanced
  • Importance: High
  • Mentor: dunkaist
  • Links: Filesystems in KolibriOS


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.

Unicode support

Summary: Write userspace library and font server to handle unicode strings and fonts

Details:

  • Primary goal: Write library to decode/encode UTF-8 and sort/compare/etc unicode strings
  • Additional goal: Write basic font server
  • Language: Assembler/FASM
  • Skill level: intermediate
  • Importance: Vital
  • Mentor: dunkaist
  • Links: small utf-8 library, good raster font format


Widget toolkit

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

Details:

  • 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: Vital
  • Mentor: dunkaist
  • Links: FIXME