Changes between Version 88 and Version 89 of GoogleSummerOfCodeIdeas


Ignore:
Timestamp:
Mar 18, 2013, 8:37:04 PM (7 years ago)
Author:
mmadia
Comment:

setting read-only, for the migration to drupal

Legend:

Unmodified
Added
Removed
Modified
  • GoogleSummerOfCodeIdeas

    v88 v89  
    1 ----
    2 = Info =
     1= This page is now being migrated to Drupal. =
    32
    4 Google has announced [http://google-opensource.blogspot.com/2013/02/flip-bits-not-burgers-google-summer-of.html Google Summer of Code™ 2013!]
    5 This page collects ideas on acceptable projects for students to undertake
     3 * ​http://www.haiku-os.org/community/gsoc/2013/ideas
     4 * [https://dev.haiku-os.org/wiki/GoogleSummerOfCodeIdeas?version=88 Last work-in-progress page for 2013]
     5
    66----
    77
    8 = Work-in-Progress: 2013 =
    9 The 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.
    10 
    11 == Project Areas ==
    12 
    13  * [#apps Applications]
    14  * [#drivers Drivers]
    15  * [#kernel Kernel/Filesystems]
    16  * [#media Media]
    17  * [#network Network]
    18  * [#ui User interface]
    19  * [#other Other]
    20 
    21 [=#apps]
    22 === Applications ===
    23 
    24 ==== Updating AbiWord ====
    25    
    26     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.
    27 
    28     AbiWord: Official 2012 ideas page http://www.abisource.com/wiki/Google_Summer_of_Code_2012
    29     http://www.abisource.com/wiki/Google_Summer_of_Code_2012#Haiku_Port_for_AbiWord
    30    
    31     Skill set: userland development, usability basics
    32 
    33 ==== Updating and Extending WebPositive ====
    34        
    35         Haiku uses a WebKit based browser called WebPositive. This task would involve:
    36             * Native network backend. Currently we use the Curl backend, which is slow and has some other problems. Use the (unfinished) "Services Kit" instead.
    37                 * various webpositive tickets.
    38            
    39     Skill set: userland development, kernel development, possibly x86 assembly
    40        
    41 ==== VirtualBox port to Haiku ====
    42 
    43     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]
    44 
    45     Skill set: userland development, kernel development, possibly x86 assembly
    46 
    47 ==== Calendar application ====
    48 
    49     Create a native calendar application or port an existing calendar application to Haiku. The app should support creating events and saving them to event files augmented with attributes similar to how People file work for contacts. Additional features of the calendar app might also include support for recurring events, integration with other calendaring software such as Google Calendar or Microsoft Outlook™, and vCalendar support
    50 
    51     Skill set: userland development
    52 
    53     Some applications to look at for inspiration/examples:
    54   * http://www.pulkomandy.tk/~beosarchive/?file=archive/source/utils/Organizer.zip
    55   * http://haikuware.com/directory/view-details/info-management/personal-information-managers/a-book
    56 
    57 ==== Updating Mail ====
    58 
    59 Haiku's built in Mail application is in need of various improvements.
    60 Some of the issues include from re-writing code to adhere to style guidelines, utilizing the Layout API, utilizing proper object oriented programming concepts, addressing race conditions, and GUI improvements
    61 
    62  * [#1431 Mail codebase needs a cleanup to fix several issues]
    63  * [#5140 Mail GUI enhancements]
    64  * [#5141 Generating queries for related mails in Mail]
    65            
    66     Skill set: userland development
    67 
    68 ==== Other applications ====
    69 
    70     There are many open source 3rd party applications for Haiku that coud use improvements. Whether it is resolving bugs, adding features, updating the coding style, updating them to use the Locale Kit and Layout API, or anything else imaginable!
    71 
    72   * [http://dev.osdrawer.net/projects/caya Caya]
    73   * [http://haikuware.com/directory/view-details/internet-network/clients/torrentor Torrentor!] ([https://github.com/Prodito/Torrentor source])
    74   * http://dev.osdrawer.net/projects
    75   * http://pulkomandy.lexinfo.fr/projects
    76   * http://haikuware.com
    77 
    78 
    79 [=#kernel]
    80 === Kernel/File Systems ===
    81 
    82 ==== File Systems: general improvements (BIG) ====
    83 
    84     Haiku has great support for its own file system, 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.
    85 
    86         * ReiserFS, BTRFS, exFAT: write support
    87         * UFS2, ZFS: Read (& Write) support
    88         * SMB, Windows shares: Read (& Write) support
    89         * HAMMER FS: Read (& Write) support
    90         * SquashFS: To support booting Haiku off SquashFS on a CD/DVD
    91 
    92     Skill set: kernel and driver development
    93 
    94 ==== IMAP FS: File system access to an IMAP account ====
    95     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.
    96 
    97     Skill set: kernel and file system (driver) development, network development
    98 
    99 ==== x86-64: Support for 32 bit userland ====
    100 
    101 Since GSoC 2012 there's a x86-64 port of Haiku. The kernel only supports a 64 bit userland, though. A compatibility mode should be added, so that 32 bit programs can be run as well.
    102 
    103 Skill set: kernel development, x86 architecture/assembly
    104 
    105 ==== Unify File System Caches ====
    106 
    107 The Haiku kernel provides two kinds of caches for use by file system implementations: the file cache and the block cache. The file cache uses physical memory pages directly and it is linked with the VM subsystem, so that pages used for caching are freed automatically (in a least recently used order) when running low on free memory. The block cache, however, uses mapped memory (via the slab allocator) and freeing memory in low memory situations is handled via the low resource manager. Using different mechanisms to deal with low free memory situations leads to a caching imbalance in favor of the block cache. Furthermore the block cache uses large amounts of kernel address space, which can be problematic on 32 bit architectures. The goal is to create a common underlying mechanism (using `VMCache`) to unify both caches. Solutions must be found to interesting problems like how to deal with different block sizes (not necessarily matching the page size) and how to map support for transactions to `VMCache` hierarchies.
    108 
    109 Skill set: kernel development
    110 
    111 
    112 [=#drivers]
    113 === Drivers ===
    114 
    115 
    116 ==== ACPI Video Extensions ====
    117         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.
    118 
    119         Suggested work: Detect attached devices for display adapters, implement a basic driver for a display, allow display switching and brightness control.
    120 
    121         Requirements: computer with ACPI that has Acpi Video Extentions (_DOS _DOD and so on)
    122 
    123         Skill set: kernel development, general C/C++, userland development
    124 
    125 ==== AV/1394 support ====
    126    
    127     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.
    128    
    129         Requirements: a DV camera, a machine with a Firewire port.   
    130        
    131         Skill set: kernel development, API design, general C/C++, userland development
    132 
    133 ==== TTY Layer ====
    134 
    135     The TTY layer is needed for proper serial port support in Haiku.
    136     Until now the serial port was reserved for kernel debugging,
    137     but it is now time for proper userland support.
    138     Rewrite the API that was available in BeOS R5,
    139     and make sure it can be used with a real serial port.
    140     USB to serial converter may or may not be included.
    141 
    142     Currently, the TTY layer is written mostly with the usb_serial
    143     in mind, so it uses stuff that might not be easy or possible at all to
    144     use in more low-level drivers (like pc_serial).
    145     The API could use improvements. Locking issues exist.
    146     Also the generic module is not yet in the image due to these.
    147        
    148         Skill set: kernel, and driver development
    149        
    150         Tickets: #35 #3232
    151 
    152 ==== LibUSB port ====
    153 
    154 LibUSB is a portable library to access USB devices from userland.
    155 Make it work on Haiku and port applications such as sane, avrdude, and more to test the port.
    156 
    157 ==== Nouveau / PSCNV port ====
    158 Nouveau is a graphics driver for NVidia video cards. There is a fork called PSCNV which might have less dependencies on Linux.
    159 cf. https://github.com/pathscale/pscnv/wiki
    160 
    161         Skill set: kernel, and driver development
    162 
    163 
    164 [=#network]
    165 === Network ===
    166 
    167 ==== Bluetooth Stack Improvements ====
    168 
    169     Haiku Bluetooth Stack implements basic functionality on lower and middle layers, this functionality needs to be completed and Bluetooth 2.X possibilities explored.
    170    
    171     Requirements: Bluetooth enabled Haiku system
    172    
    173     Skill set: C++, kernel development, userland development, global bluetooth stack knowledge(optional)
    174    
    175     Tasks: RemoteDevices Database, UserLand tools(Preferences), Pairing/Auth/Encryption use cases, etc.   
    176 
    177 ==== Integrate our PPP implementation ====
    178 
    179     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.
    180 
    181     Tickets: #812, #869, #873, #922, #923, #1059, maybe: #1057, #1058
    182    
    183     Skill set: multi-threading basics, maybe network protocols and some kernel/drivers development, maybe userland development
    184 
    185 ==== IPv6 Polish ====
    186 
    187     GSOC 2010 added the base framework for IPv6 support. There is a lot of smaller cleanup/polish projects left however!
    188 
    189     * #8293  -- BNetworkAddress needs to check if there is an available IPv6 connection.
    190     * #7228  -- RFC: BNetworkInterfaceAddress needs to store auto-configuration flags
    191     * #6489  -- ifconfig needs to validate availability of ipv6 module prior to utilization
    192     * #2632  -- Possible redefinition for struct sockaddr_in, related to IPv6
    193     * ~~#8316  -- Haiku needs IPv6 link scope Auto Configuration~~
    194     * #8319  -- Haiku needs IPv6 duplicate address detection during link scope ip configuration.
    195     * #8317  -- Haiku needs IPv6 global scope Auto Configuration (router advertisement + DHCPv6)
    196 
    197     Skill set: IPv4 and IPv6 protocols, kernel and network stack development
    198 
    199 [=#ui]
    200 === User Interface ===
    201 
    202 ==== Preflet GUI refactoring ====
    203 
    204     Several preference applications (aka preflets) could be redesigned. This includes (but not limited to)
    205         * combining Keymap and Keyboard
    206         * #6983 Printer
    207         * Shortcuts & Notifications
    208         * Network (todo, link to work-in-progress preflet)
    209         * ...,
    210 
    211     Skill set: c++, userland development
    212 
    213 
    214 ==== Modular edit view (BIG) ====
    215     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.
    216     One solution is to provide a modular and powerful editor view that could be used in various Haiku applications.
    217 
    218     The edit view design should be modular and extensible to make it easy to implement e.g. following features:
    219 
    220         * syntax highlighting
    221         * spell checker
    222         * code completion, word completion
    223         * line numbers, ruler, 80 character limit line, hyper links
    224         * 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.
    225         * interface to external applications e.g. to jump from a compiler error to the according line in the code
    226 
    227     Skill set: C++, userland development
    228 
    229 [=#media]
    230 === Media ===
    231 
    232 ==== Merge CDPlayer into MediaPlayer ====
    233 
    234     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.
    235    
    236     Skill set: general C/C++, userland development
    237    
    238 ==== Streaming support for Media Kit and applications ====
    239 The 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.
    240 
    241 [=#other]
    242 === Others ===
    243 
    244 ==== Fix and improve Haiku's mail system ====
    245 
    246     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'''
    247 
    248 ==== Trac Plugin: "Test and Commit Patch" functionality ====
    249    
    250     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.
    251 
    252         Skill set: Python
    253 
    254 ==== Add Haiku support to Allegro 5.0 ====
    255    
    256     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.
    257    
    258 ==== Tracker add-on for source control ====
    259 Windows has TortoiseSVN and TortoiseGIT. Do something similar with Haiku Tracker.
    260   * Write a Tracker add-on that has the functionality
    261   * Extend support in Tracker itself where needed : icon overlays, ...
    262  
    263 ==== Modify the app_server to support compositing ====
    264 
    265 
    266     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
    267 
    268     Skill set: C++, graphics development
    269  
    270 ==== Evaluate Qt as a potential Haiku R2 API ====
    271 
    272     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.
    273 
    274     * Analyze the current state of the Qt port and add/complete what is missing/incomplete.
    275     * Add extension in or on top of the Qt API to provide access to Haiku specific functionality (attributes, entry_refs, resources, translators, etc.)
    276     * As a proof of concept port an existing Haiku application (e.g. StyledEdit) over to the extended Qt API.
    277 
    278     Skill set: C++, API development
    279 ----
    2808= Previous Years =
    2819== 2012 ==