GSoC:2009 Proposed projects - nesciens/xmms2-wiki GitHub Wiki
The following ideas are hints at possible projects that we would like to see in XMMS2. We also welcome new ideas warmly, so please feel free to suggest your own! If you are interested in working on GSoC 2009 with us, please drop by the IRC channel to ask any questions or details, we'd be glad to discuss the projects with you before you even start writing your proposal!
Your idea
This is where you get the chance to implement that really cool music-player related idea that has been brewing in your mind. It may be some funny interface, a crazy effect, a revolutionary way to handle collections, or something different. Surprise us! We love new ideas!
- Language: Depends
- Level: Depends
- Mentor: Depends
New Media Library Database Backend (S4)
XMMS2 uses SQLite as the backend for its media library. Since XMMS2 basically maps a key-value pairing, it has been argued that using an SQL database in this case is suboptimal, especially with regards to some SQLite limitations. In this project, the student have to take advantage of the abstraction provided by Collections, and look into implementing a new backend for the XMMS2 media library. This project would include performance testing to showcase the differences with the current backend in various contexts of use.
- Language: C
- Level: Hard
- Mentor: N/A
XMMS2-specific GUI toolkit widgets (GTK+ or Qt)
XMMS2 clients developed for GTK+ or Qt often implement the same widgets for displaying playlists, media status, and the media library. This project would be to implement a set of widgets for developing an xmms2 client with one of the popular toolkits. The study of existing music players and an interest in HCI would be required. Advanced examples include: a rich medialib display (scriptable, see foobar2000), a graphical editor for Collections, cover art manager, preferences panel for changing configvals, etc.
- Language: probably C or C++
- Level: Medium to Hard
- Mentor: N/A
Effect chain clean-up and crossfade plugin
One of the most requested features is a cross-fade plugin. Right now cross-fade is not possible since effects (and all xform elements) are re-created for each song. Also the interface for enable and manage effect xforms is very clumsy. This SoC task is divided in three tasks. 1) create persistent xforms 2) revisit the effect configuration and 3) create a crossfade plugin. This project could also investigate passing data in frequency domain in xform chain (see this ml thread). The following bugs are related: 908 820 2008
- Language: C
- Level: Medium
- Mentor: N/A
High-level clientlib (xmmsclient-easy)
Development of a higher-level client library, that would include features many clients have in common. Current ideas for xmmsclient-easy modules include: server state caching (playlist, metadata, playback status, etc), a new modular collection pattern parser, etc.
- Language: C
- Level: Medium to Hard
- Mentor: N/A
The official awesome client
This is the legendary official client, it's finally time to get it rolling. So far there are only rough ideas, so we want this student to work with the community and get this going, it's probably more about prototypes than actual coding.
- Language: C++/Qt/JavaScript
- Level: Hard
- Mentor: N/A
Your cool experimental client
Go crazy, experimental clients for iPhone, Android, maemo or maybe a fullscreen karaoke client.
- Language: Any
- Level: Medium
- Mentor: N/A
maybes
Multiple channel support
New formats like AC3 and DTS supports multiple channels. XMMS2 is technically prepared for this but without any decent support in the output plugins. The task will be to get full multiple channel support in XMMS2 for the PulseAudio, alsa and oss output (bonus if CoreAudio also supports it!)
- Language: C
- Level: Medium to Hard
- Mentor: N/A
Mergestatus
We currently have multiple loosely coupled tools: our Mantis bug tracker, the merge page, Gitweb, the official wiki. We envision a new tool that would replace the merge page by transforming it into a more powerful review tool for new code in Git tree (on our server or any other), patches in mantis, etc. It would be tied to the bug tracker and allow inline commenting, à la Review Board but adapted to and optimized for the heterogeneity of DVCS and loose patches.
- Language: Python
- Level: Hard
- Mentor: N/A
Spotify xform
Stream and browse spotify songs (probably worth taking a look at Despotify).
- Language: C
- Level: Medium
- Mentor: N/A
Logtable
We miss the log table, let's bring it back, maybe as a service client.
- Language: C
- Level: Medium
- Mentor: N/A
Rockbox sync
http://www.rockbox.org Rockbox is the super cool F/OSS firmware for your music player. It stores its metadata in an ondisk format called TagCache. This project would be to split the TagCache code from Rockbox out into a library, and then write a service client that given the mount point of a rockbox device and the name of a collection would merge that collection to the player. It should hopefully support updating the TagCache on the device, but that can also be done by having the device sync itself. It should also support removing all songs from an arbitrary collection from the device.
- Language: C
- Level: Medium
- Mentor: N/A
emacs Client library
Emacs supports everything, and is a magical land where things are still amazing and special. XMMS2 also fits some of that description, so clearly one should be able to control and program clients for xmms2 from emacs! This project would be to implement the client library in ELisp as well as a small client, or better still EMMS integration.
- Language: elisp
- Level: Easy to Medium
- Mentor: N/A
maybe nots
MPD Bridge
An XMMS2 client that can act as an MPD server, thus allowing to control an XMMS2 server with MPD clients. There is one such attempt in Perl by rafl and another less advanced implementation in Python by danderson, that can be used as reference (missing some parts of the MPD protocol). Not a proposed project anymore, blame danderson who's doing it on his spare time free of charge!
- Language: Any (Python would be a good choice)
- Level: Easy
- Mentor: N/A