This is an old revision of the document!
Google Summer of Code 2008 Ideas
Note: So, we didn't get accepted for 2008. That's a shame, but we did generate some great ideas below. I'll leave this page up for now, but it would probably be a good idea to copy/move any non-duplicate ideas to the wish list, or possibly file bugs/feature requests in Bugzilla for some of them.
Note: I've locked the page down to stop it from being flooded with “feature requests” that should really be filed in the bugtracker or discussed on the mailinglist. — Auke Kok 2008/04/25 17:17
Note: It's not really locked squisher This is a place to list possible project ideas for GSoC 2008. I'm in the process of applying (as of 10 Mar), and I'm not sure if we'll get accepted, but let's get the ball rolling and list some things that need improvement in Xfce that might be suitable for a project. The below list is just a breeding ground for ideas; it is up to potential student participants to submit and application with a project idea, whether from this list or of their own choosing. Students! If you'd like to participate, please add your name to the interested students list and note what kind of project you're interested in. Also have a look at our application guidelines. If you're not sure about a project, still feel free to add your name and get in touch with us. The Xfce development list would be the best place to start. We also have a confirmed mentor list, which is frozen as of 10 March. ==== Guidelines ==== - No pet bugs. We want substantial projects, not things like “fix how X doesn't work in Y”. - Think about the scope of the work. Students will have about 3.5 months to complete their projects. - Try to limit projects to one area or module. Learning more than one code base might be too time-consuming given the time constraints. ==== Project Ideas ==== === Implement Ruby Language support such as Python has now=== * Write full Ruby language support * Make Ruby/GTK+ apps modular and integratable into the Xfce environment * Create support libraries and interfaces to existing Xfce modules. === Xorg hotness === * Write a library and GUI for configuring monitors for XRandR 1.2. This should be designed so that code can be shared with an MCS plugin and xfconf. * Along with the above, add support for HDTV monitors and HDTV monitor resolutions (my Syntax Olevia LT27HV 27“ is 1280×720 dpi and was a NIGHTMARE to configure on xubuntu, for example). Full 720p and 1080p support would be awesome. * Write a configurator for input-hotplug * Make xfwm4 multi-pointer aware with MPX (This may be difficult) === xfconf === (see code here) * Write a read-only xfconf backend that migrates MCS settings to the new xfconf settings store. * Write an XSETTINGS daemon that proxies settings stored in xfconf (Stephan started working on this, so this project would be contingent on how much he really wants to do it ). * Write a test suite to test all xfconf operations. * Port all Xfce core modules to use xfconf instead of MCS. (This might be too much for one project; maybe just do three or four modules.) * Write an xfconf-client which allows users to configure their kb-layout, perhaps through libxklavier, or XKB. === xfdesktop === * Refactor (or rewrite) the desktop icon view widget to allow arbitrary positioning of icons on the screen. If rewriting, might want to use a canvas like HippoCanvas. This project might be too large, so we might want to limit the feature set to some subset of what's currently available, and someone can improve it after SoC is over. * Implement a new settings dialog (I have some design ideas already) and have it use xfconf to store settings. * Rework how icon view drag-and-drop is handled internally to be more encapsulated and less hacky. * Implement a way for a user directory to be added for the backdrops, in addition to the randomized list option. * Implement a backdrop slideshow module. * Add Drag and Drop from AppFinder to desktop menu/Edit Menu Utility. Add Drag and Drop from a Panel Launcher to the menu. === xfwm4 === * extend the compositor to work with openGL cards (and fallback to default render compositor if not available) * Implement a “decorator mode” that allows xfwm4 to act as a decorator for compiz. * More compositor options like a fades and shadow color * extend the window menu to directly interface with a “kill” and “killall” options (SHOULD) be an disabled additional option disabled by default, and require password authentication for the “killall”/“pkill” option * Implement a “copy contents to new window” module. === Thunar === * Integrate libfusi into Thunar so it can support sshfs, fusesmb, etc. natively. * Allow plugins to add to/modify/replace the folder view pane to be able to implement previews that don't make sense in Thunar core. * Add an auto Custom Action wizard/configurator that you can specify with Drag and Drop if there's a .desktop file for it and it shows up in the Xfce Appfinder. * Add an auto Send To wizard/configurator that just lets you Drag and Drop a .desktop file from the /usr/share/applications directory or Appfinder, or have AppFinder lookup service. * Shortcuts/treeview pane extensibility? * git plugin (similar to current svn plugin) * bazaar plugin (similar to svn plugin) * Mercurial plugin (similar to svn plugin) * CVS plugin (similar to svn plugin) * Add any other Content Management Plugins… * Handle the desktop icons to avoid the duplication of code with xfdesktop * Add sub-menu to the custom actions * Add Miller Colums Browser view widget * Add Toolbar button widget for changing views between “bookmarks/tree/“shelf”(like NeXTSTEP) (food for thought)” for the Side Pane (and make it relocatable to a toolbar like mode; and between “icon/details/compact list/“Miller Columns”(feature request) views. * arbitrary data-base plugin for fast researchs (something like in iTunes but for every kind of file) * management of iPods/iPod-like MP3-players by drag&drop === exo === * exo-mount (for thunar) could handle crypto-containers (usb token but files too, including the loop-device stuff). (this may look like a pet bug, but I think having crypto support in exo/Thunar would be really great) === xfburn === * Stabilize libburn and libisofs integration and add DVD support * Implement audio CD support, with the ability to decompress and write various audio file formats on the fly. * Make xfburn as capable as “brasero” * Implement a “backup system to DVD on the fly” module. * Check out Rubyripper for ideas on a secure ripper and implement in C or Python, or just add Ruby support to Xfce and make Rubyripper the default Audio Ripping application. === xfce4-session === * Allow the session manager to launch session-managed apps in parallel, and wait for their responses asynchronously. * Offer a D-Bus service for closing the session (log out, shut down, reboot, sleep, hibernate), and implement a way to tell the session manager to save the session on-demand without needing to quit Xfce (include this in the D-Bus service as well). * Add the option to require an admin and/or the root password authentication to: log out, lock the screen, restart, or shutdown. These should be OPTIONAL and DISABLED by default. It's really just something I want, because I accidently quit Xfce by mistake too often (it's too easy to kill the X server, etc.) Just an added security layer for those of us new to GNU/Linux/BSD bozos. === xfce4-panel === * Replace the current protocol between the libxfce4panel and the panel with a D-Bus implementation. (questionable) * Make it possible to select from available applications (provided by libxfce4menu) when creating new launcher items * Add a small preview of the window when rollover the task bar * Add a window organizer à la Mac (expose) * Add live preview to the alt-tab feature * Implement Drag and Drop support (i.e. copy from xfce appfinder to a panel launcher) * Implement a pop-out subpanel option (in addition to the “submenu” option for launchers, a la CubeDock or the NeXTSTEP dock extender utility * Add support for making the panel use modular tiles like NeXTSTEP * Add support for “container size” or “cell padding” for panel. i.e. be able to specify each launcher icon or plugin take up a 24x24px, 32x32px, 48x48px, or 64x64px area. * Add better support for those of us who like to use vertical panels on the side of the workspace to dock launchers and plugins and have them orient themselves correctly. Currently this does not happen and it is a MAJOR flaw. *Add the ability to password lock individual panels from modification. I've deleted the WRONG PANEL way too may times for it to be funny anymore. Make an optional “are you sure” nag panel dialog for deleting for us Noobs. === xfvnc === * Implement tight encoding (possibly use a different library for the vnc portions entirely, as gtk-vnc seems a bit limited and buggy). === Orage === * Build opensync interface. * Import/export/sync to and with iCal/Google servers * Add exclude rule handling into libical (and then to Orage also) * Build conversion script between os timezones and libical timezones. And if possible syncronize os timezones to libical so that Orage could utilize os timezones, which are far better upto date than libical. * Create a more modular plugin for the panel === xfce-power-manager === * it doesn't really exist yet, but the idea was there (some code here) * Implement a simple power manager daemon that uses HAL (via ghal) to: - Monitor battery status. Include a panel plugin to display battery status. - Watch for on-battery/on-ac changes, and implement power 'profiles' set up by the user - Handle CPU frequency setting (support Linux cpufreq governors; what about other OSes?) - For laptops, handle backlight brightness. Overall, handle DPMS, monitor standby/sleep/etc. === airconfig === (see here) (Most of these ideas probably aren't significant enough for an entire project.) * Store the list of preferred networks in wpa_supplicant's network list; this will allow auto-connecting to networks with SSID broadcast disabled. With this done, implement automatically connecting to networks in the preferred networks list based on priority order. * Better error handling – airconfig should not bother the user so much and should just reconnect when needed. Possibly require libnotify to make code paths cleaner. Perhaps implement some “hacks” to work around some weird driver behavior (e.g., if too many reconnects in a short period, bring the interface down, back up, then try again). * Either use async dbus calls in ACInterfaceManager when talking to airconfig's HAL addon, or fix the HAL methods (especially the DHCP stuff) to be non-blocking in some fashion. If using async calls, this will require infrastructure in ACInterfaceManager to notify callers (i.e., ACNetworkApplet) of async results. * Figure out the signal quality mess. Make airconfig report sane signal qual values for most if not all drivers. * The airconfig status icon is just a stock themed icon. It should be a dynamic icon that shows connection status and signal quality (when connected). Personally I like MacOS X's AirPort menu icon as a guide, but there's certainly room for creativity here. === Import / Export settings === * Build a system which can import and export settings from and to xfconf, this enables users to share things like their panel-configuration. And it makes it easy to distribute the same settings across several computers running xfce. === xfmedia === * implement gstreamer in xfmedia so we can drop xine. * afterall, should be better as a vlc interface… * Add engine support so MPlayer's MEncoder and ffmpeg can be used * implement a library * rewrite from scratch most likely to be able to implement the first 2 :) * can show subtitles (sub,srt,…) === settings manager === * Rewrite the settings manager and plugins to support the latest X features, like randr and multiple input devices. A bit of a start has been made here. * Add a “settings backup” utility to migrate settings to a new user or archive your settings to make a backup in case you must reinstall your os, etc. * Implement modules for a more fully featured configuration manager (such as the one in Wolvix Hunter 1.1.0 www.wolvix.org) === Screensaver Module === * Using AIGLX instead of XGL causes bootsplash modules such as “Mice” to go from a mouse on a field of blinking blue to a Mouse in a box of blue surrounded by ugly gray nothingness and no nice throbbing. (maybe this entry should be under Xorg Hotness… * Write a module to use .scr screensavers from the windows world (if that isn't too insecure) === Themability === * Create a facility to save entire desktop setups into a single archive like WinStep/NextSTART. A great feature for the GUI customizer. See www.winstep.net * Add any of the features from WinStep to Xfce. That's the only thing this “Switcher” misses from Windows. === Xfmpc / MPD === * Improve Xfmpc to be feature rival to Sonata. * Create Settings Module to generate a valid mpd.conf file with your machine's setup. * Integrate MPD/Xfmpc support into Xfce. * Create a software equalizer module to sit between MPD (Music Player Daemon) and Xfmpc (that would be a first for the MPD/MPC world!!! === Squeeze === * Better support for Squeeze in Xfce. * An Archive via Squeeze plugin for Thunar (replacing File Roller and Xarchiver) === Ristretto === * Release 0.18 is much better, much much better, but it could be extensible via plugins so we could do away with GQView, F-Spot, etc === Notes Panel Plugin vs. NoteCase === * It's great, but NoteCase is a better solution. I would love to see NoteCase become the default notetaking/outliner for the Xfce Desktop Environment (http://notecase.sourceforge.net/) === Firefox 3 support vs. Midori === * Now that it has native GTK+ widget support should this become the official browser of Xfce, or should it be Midori (http://software.twotoasts.de/?page=midori) with GTKWebKit (it IS lightweight, but it has issues) === Catfish === *Should catfish become the official Xfce search tool? (http://software.twotoasts.de/?page=catfish) 0.3 is good, but it could be better, and integrated via a plugin into Thunar.