Changes between Version 75 and Version 76 of GoogleSummerOfCodeIdeas


Ignore:
Timestamp:
Jan 19, 2013 5:54:46 PM (6 years ago)
Author:
mmadia
Comment:

Initial 2013 page.

Legend:

Unmodified
Added
Removed
Modified
  • GoogleSummerOfCodeIdeas

    v75 v76  
    11----
    22= Info =
    3 '''Google has announced plans for Google Summer of Code™ 2012'''. Haiku is applying as a Mentoring Organization.
     3
     4'''Google has not (yet?) announced plans for Google Summer of Code™ 2013.'''  Be sure to check [http://google-opensource.blogspot.com/ Google Open Source Blog] for announcements and related information.
     5
     6This page collects ideas on acceptable projects for students to undertake
    47----
    5 == This page is now being migrated to Drupal. ==
    6  * http://www.haiku-os.org/community/gsoc/2012/ideas
    7  * [http://dev.haiku-os.org/wiki/GoogleSummerOfCodeIdeas?version=74 Last work-in-progress page for 2012]
     8
     9= Work-in-Progress: 2013 =
     10The contents of this page are for brainstorming of suggested project ideas for Google Summer of Code. See http://www.haiku-os.org/gsoc for more information on participating with Haiku in Google Summer of Code.
     11
     12== Project Areas ==
     13
     14 * [#apps Applications]
     15 * [#drivers Drivers]
     16 * [#kernel Kernel/Filesystems]
     17 * [#media Media]
     18 * [#network Network]
     19 * [#ui User interface]
     20 * [#other Other]
     21
     22[=#apps]
     23=== Applications ===
     24
     25==== Updating AbiWord ====
     26   
     27    Even though an [http://www.abisource.com/ older AbiWord port] is being hosted at [http://dev.osdrawer.net OSDrawer : AbiWord Project Page (2.0)], the AbiWord project would prefer the port to use their current sources (2.8.x).  The student is responsible for determining which aspects of this project to pursue.  AbiWord/AbiSource has participated in past GSoCs and we expect that they will again this year.  This could be a possible cross project with a co-mentor from each org, so if interested in this one you may want to apply to both orgs.
     28
     29    AbiWord: Official 2012 ideas page http://www.abisource.com/wiki/Google_Summer_of_Code_2012
     30    http://www.abisource.com/wiki/Google_Summer_of_Code_2012#Haiku_Port_for_AbiWord
     31   
     32    Skill set: userland development, usability basics
     33
     34==== Updating and Extending WebPositive ====
     35       
     36        Haiku uses a WebKit based browser called WebPositive. This task would involve:
     37            * Native network backend. Currently we use the Curl backend, which is slow and has some other problems. Use the (unfinished) "Services Kit" instead.
     38                * various webpositive tickets.
     39           
     40    Skill set: userland development, kernel development, possibly x86 assembly
     41       
     42==== VirtualBox port to Haiku ====
     43
     44    A port of VirtualBox to Haiku, would allow developers and users to run another operating system within Haiku. [http://article.gmane.org/gmane.comp.emulators.virtualbox.devel/3384 Preliminary VirtualBox port to Haiku]
     45
     46    Skill set: userland development
     47 
     48==== Other applications ====
     49  * Caya
     50  * More ?
     51
     52[=#kernel]
     53=== Kernel/Filesystems ===
     54
     55==== Filesystems: general improvements (BIG) ====
     56
     57    Haiku has great support for its own filesystem, but most others are only available read-only, or not at all. It is way better for interoperability with other systems to be able to read and write to these disks.
     58
     59        * ReiserFS, BTRFS, exFAT: write support
     60        * UFS2, ZFS: Read (& Write) support
     61        * SMB, Windows shares: Read (& Write) support
     62        * HAMMER FS: Read (& Write) support
     63        * SquashFS: To support booting Haiku off SquashFS on a CD/DVD
     64
     65    Skill set: kernel and driver development
     66
     67==== IMAP FS: File system access to an IMAP account ====
     68    In Haiku emails are stored as individual file with extended attributes. Mounting an IMAP account as a local file system is therefore a natural fit. The file system should have full read and write support (deleting mails (files), creating folders, and moving mails between folders, etc.) with local caching for better performance.
     69
     70    Skill set: kernel and file system (driver) development, network development
     71
     72
     73[=#drivers]
     74=== Drivers ===
     75
     76
     77==== ACPI Video Extensions ====
     78        ACPI Video Extensions, as specified in ACPI Spec 4.0a Appendix B, adds special support to handle multiple output devices such as panels and TV-out capabilities, brightness control as well as special power management features.
     79
     80        Suggested work: Detect attached devices for display adapters, implement a basic driver for a display, allow display switching and brightness control.
     81
     82        Requirements: computer with ACPI that has Acpi Video Extentions (_DOS _DOD and so on)
     83
     84        Skill set: kernel development, general C/C++, userland development
     85
     86==== AV/1394 support ====
     87   
     88    Our Firewire stack supports DV receiving, but not controlling the A/V device (ie play/stop). This requires to modify the Firewire stack for FCP frame support. See AV/C Digital Interface Command Set General Specification for reference.
     89   
     90        Requirements: a DV camera, a machine with a Firewire port.   
     91       
     92        Skill set: kernel development, API design, general C/C++, userland development
     93
     94==== TTY Layer ====
     95
     96    The TTY layer is needed for proper serial port support in Haiku.
     97    Until now the serial port was reserved for kernel debugging,
     98    but it is now time for proper userland support.
     99    Rewrite the API that was available in BeOS R5,
     100    and make sure it can be used with a real serial port.
     101    USB to serial converter may or may not be included.
     102
     103    Currently, the TTY layer is written mostly with the usb_serial
     104    in mind, so it uses stuff that might not be easy or possible at all to
     105    use in more low-level drivers (like pc_serial).
     106    The API could use improvements. Locking issues exist.
     107    Also the generic module is not yet in the image due to these.
     108
     109    Note: This task could include finishing phoudoin's libusb port, which would help to make the driver more feature complete.
     110       
     111        Skill set: kernel, and driver development
     112       
     113        Tickets: #35 #3232
     114
     115[=#network]
     116=== Network ===
     117
     118==== Bluetooth Stack Improvements ====
     119
     120    Haiku Bluetooth Stack implements basic functionality on lower and middle layers, this functionality needs to be completed and Bluetooth 2.X possibilities explored.
     121   
     122    Requirements: Bluetooth enabled Haiku system
     123   
     124    Skill set: C++, kernel development, userland development, global bluetooth stack knowledge(optional)
     125   
     126    Tasks: RemoteDevices Database, UserLand tools(Preferences), Pairing/Auth/Encryption use cases, etc.   
     127
     128==== Integrate our PPP implementation ====
     129
     130    Port the PPP implementation to our new network stack. Add phone-line modem support, including HDLC framing and VJC compression (porting both algorithms is sufficient, but make sure the license is compatible to MIT). Implement CHAP authentication. Find and fix bugs.
     131
     132    Tickets: #812, #869, #873, #922, #923, #1059, maybe: #1057, #1058
     133   
     134    Skill set: multi-threading basics, maybe network protocols and some kernel/drivers development, maybe userland development
     135
     136==== IPv6 Polish ====
     137
     138    GSOC 2010 added the base framework for IPv6 support. There is a lot of smaller cleanup/polish projects left however!
     139
     140    * #8293  -- BNetworkAddress needs to check if there is an available IPv6 connection.
     141    * #7228  -- RFC: BNetworkInterfaceAddress needs to store auto-configuration flags
     142    * #6489  -- ifconfig needs to validate availability of ipv6 module prior to utilization
     143    * #2632  -- Possible redefinition for struct sockaddr_in, related to IPv6
     144    * ~~#8316  -- Haiku needs IPv6 link scope Auto Configuration~~
     145    * #8319  -- Haiku needs IPv6 duplicate address detection during link scope ip configuration.
     146    * #8317  -- Haiku needs IPv6 global scope Auto Configuration (router advertisement + DHCPv6)
     147
     148    Skill set: IPv4 and IPv6 protocols, kernel and network stack development
     149
     150[=#ui]
     151=== User Interface ===
     152
     153==== Preflet GUI refactoring ====
     154
     155    Several preference applications (aka preflets) could be redesigned. This includes (but not limited to)
     156        * combining Keymap and Keyboard
     157        * #6983 Printer
     158        * Shortcuts & Notifications
     159        * Network (todo, link to work-in-progress preflet)
     160        * ...,
     161
     162    Skill set: c++, userland development
     163
     164
     165==== Modular edit view (BIG) ====
     166    Many Haiku applications are using their own edit view to provide basic editor functionalities. All these implementations work a little bit different and create an inconsistent user experience.
     167    One solution is to provide a modular and powerful editor view that could be used in various Haiku applications.
     168
     169    The edit view design should be modular and extensible to make it easy to implement e.g. following features:
     170
     171        * syntax highlighting
     172        * spell checker
     173        * code completion, word completion
     174        * line numbers, ruler, 80 character limit line, hyper links
     175        * working on an input stream rather than on a input file e.g. to be able to open files ~100Mb without loading them into memory in one go.
     176        * interface to external applications e.g. to jump from a compiler error to the according line in the code
     177
     178    Skill set: C++, userland development
     179
     180[=#media]
     181=== Media ===
     182
     183==== Merge CDPlayer into MediaPlayer ====
     184
     185    The functionality of CDPlayer could be migrated into MediaPlayer, allowing the play back of audio cd's. An alternative to CDPlayer's way of controlling the device in a low-level fashion would be to make it use the wave files as presented by the cdda-fs, subscribe to volume mounts via BVolumeRoster, present a menuitem for the CD similar to one for DVDs in the VLC Media Player, having this option populate a playlist and start playing.
     186   
     187    Skill set: general C/C++, userland development
     188   
     189==== Streaming support for Media Kit and applications ====
     190The media kit and related applications in Haiku relies a lot on the BMediaFile being seekable. This makes it difficult to use with non-seekable media sources such as internet streams or DVD media. Rework what's needed to get them working properly.
     191
     192[=#other]
     193=== Others ===
     194
     195==== Fix and improve Haiku's mail system ====
     196
     197    Haiku features an integrated mail management system allowing to manage your mail using Tracker, the file explorer. This system needs some improvements and updates. '''See this [http://www.freelists.org/post/haiku-commits/r40398-in-haikutrunksrc-addonsmail-daemon-addonsmail-daemoninbound-filters-addonsmail-daemoninbound-filtersmatch-header-addonsmail-daemoninbound-filtersnotifier-addonsmail-daemoninbound-filtersspam-filter,2 mailing list post] for a list of TODO and related ideas'''
     198
     199==== Trac Plugin: "Test and Commit Patch" functionality ====
     200   
     201    Several developers have requested the ability to simply press a button that would trigger an automatic system to test and (conditionally commit) a supplied patch.
     202
     203        Skill set: Python
     204
     205==== Add Haiku support to Allegro 5.0 ====
     206   
     207    Allegro is a gaming library, it has support for BeOS/Zeta/Haiku in the 4.4 branch, but they dropped BeOS from the 5.x branch.  Now that Haiku is in a usable state it would be nice to get the latest builds of Allegro 5.0 working on Haiku.  It's still unclear if Allegro will be applying for GSoC but they do have a developer who'd be willing to co-mentor this with a Haiku mentor.
     208   
     209==== Tracker add-on for source control ====
     210Windows has TortoiseSVN and TortoiseGIT. Do something similar with Haiku Tracker.
     211  * Write a Tracker add-on that has the functionality
     212  * Extend support in Tracker itself where needed : icon overlays, ...
     213 
     214==== Modify the app_server to support compositing ====
     215
     216
     217    This would be a step towards faster/smoother scrolling, window positioning and drawing. Once compositing is in place, it would also be possible to create Compiz-like effects in Haiku, eg. drop shadows and window animations. There's lots of info on what would need to be done and how to go about it in this article: https://www.haiku-os.org/articles/2011-06-15_how_transform_app_server_code_use_compositing
     218
     219    Skill set: C++, graphics development
     220 
     221==== Evaluate Qt as a potential Haiku R2 API ====
     222
     223    While in comparison with other frameworks the BeOS API was quite nice back in the day, save for a few additions (like layout management, an improved archiving mechanism, tool tips) very little has changed since. Particularly the interface kit leaves a lot to be desired these days, both in general design and completeness. The Qt toolkit on the other hand has evolved quite nicely over time and now presents a very complete and well designed API. This project shall evaluate Qt as a potential native Haiku R2 API, replacing partially or even completely the previous BeOS/Haiku API.
     224
     225    * Analyze the current state of the Qt port and add/complete what is missing/incomplete.
     226    * Add extension in or on top of the Qt API to provide access to Haiku specific functionality (attributes, entry_refs, resources, translators, etc.)
     227    * As a proof of concept port an existing Haiku application (e.g. StyledEdit) over to the extended Qt API.
     228
     229    Skill set: C++, API development
    8230----
    9231= Previous Years =
     232== 2012 ==
     233See official page here: [http://www.haiku-os.org/community/gsoc/2012/ideas]
     234[http://dev.haiku-os.org/wiki/GoogleSummerOfCodeIdeas?version=74 Last work-in-progress page for 2012 ]
     235
    10236== 2011 ==
    11  * [http://www.haiku-os.org/community/gsoc/2011/ideas official page for 2011]
    12  * [http://dev.haiku-os.org/wiki/GoogleSummerOfCodeIdeas?version=59 Last work-in-progress page for 2011 ]
     237See official page here: [http://www.haiku-os.org/community/gsoc/2011/ideas]
     238[http://dev.haiku-os.org/wiki/GoogleSummerOfCodeIdeas?version=59 Last work-in-progress page for 2011 ]
    13239== 2010 ==
    14  * [http://www.haiku-os.org/community/gsoc/2010/ideas  official page for 2010]
     240See official page here: [http://www.haiku-os.org/community/gsoc/2010/ideas]
    15241[http://dev.haiku-os.org/wiki/GoogleSummerOfCodeIdeas?version=26 Last work-in-progress page for 2010 ]
    16242== 2009 ==
    17  * [http://www.haiku-os.org/community/gsoc/2009/ideas  official page for 2009]
    18  * [http://dev.haiku-os.org/wiki/GoogleSummerOfCodeIdeas?version=7 Last work-in-progress page for 2009]
     243See official page here: [http://www.haiku-os.org/community/gsoc/2009/ideas]
     244[http://dev.haiku-os.org/wiki/GoogleSummerOfCodeIdeas?version=7 Last work-in-progress page for 2009]