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.
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.
- 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.
- 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.
- Write a configurator for input-hotplug
- Make xfwm4 multi-pointer aware with MPX (This may be difficult)
(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.
- 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.
- 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
- 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.
- Shortcuts/treeview pane extensibility?
- git plugin (similar to current svn plugin)
- Handle the desktop icons to avoid the duplication of code with xfdesktop
- Add sub-menu to the custom actions
- 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)
- 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.
- 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).
- 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 tight encoding (possibly use a different library for the vnc portions entirely, as gtk-vnc seems a bit limited and buggy).
- 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.
- 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.
(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.
- implement gstreamer in xfmedia so we can drop xine.
- implement a library
- rewrite from scratch most likely to be able to implement the first 2 :)
- can show subtitles (sub,srt,…)
- 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.