-
Notifications
You must be signed in to change notification settings - Fork 2
GSoC:2007 Proposed projects
The accepted projects can be found on the Summer of Code 2007 page!
Also check leftovers from Summer of Code 2006/Proposed projects. And the long term wishlist in Bug 520.
Currently, the C client library and the bindings (Python, Ruby, etc) have to be manually updated whenever a new function is introduced on the server. This work is tedious and mechanical, and the whole client API could in fact be automatically generated from a high-level description of the functions. The goal is therefore to determine the semantics of these descriptions (possibly using XML), and then use them to generate the different API source files. There is already some proof of concept.
- Language: Python / XML
- Level: Advanced
- Mentor: Anders Gustafsson
Port Visualization to transforms API and extend it to give PCM data and use SHM
Currently visualization in XMMS2's devel branch is disabled with the transition to Transforms. This project would be to implement a shared memory mechanism to give clients access to visualization data, such as FFT and PCM data. See visualisation for details.
- Language: C
- Level: Medium to Advanced
- Mentor: Anders Gustafsson
New formats can be supported by writing decoder modules for the server using our Transforms plugin interface, coupled with existing decoding libraries. Possible formats include, for instance:
- Amiga format (subtunes support)
- Shorten
- MTP Bug 1330
Just implementing one new format which already has a library might not be a task that will give a full summer of code
- Language: C
- Level: Medium to Advanced
- Mentor: Tobias Rundström
A specialized type of client that is designed to accept commands from other clients to do specialized tasks like tag a file, or lookup certain types of metadata like data from MusicBrainz.org. This project would be to implement the mechanism for registering service clients and their commands, as well as implementing a service client to demonstrate the API.
- Language: C, any language a client can be written in
- Level: Medium to Advanced
- Mentor: Sébastien Cevey, Alexander Botero-Lowry
XMMS2 has a few GUI clients that are maturing towards real usability but are not quite there yet. Rather then try and develop yet another client, this project would be to jump on the development of a pre-existing client and get it in a really useable state. Tasks might include integrating collections with the client, or finishing various unimplemented features. Some of the potential clients for this are Esperanza, Insanity, and Euphoria
- Language: C++ (Esperanza), Python (Insanity), Ruby (Euphoria)
- Level: Easy to Medium
- Mentor: Tobias Rundström, Alexander Botero-Lowry, Tilman Sauerbeck
XMMS2 provides a client library which is bound to a number of popular languages (C++, Python, Java, Ruby, Perl, Objective C). This project would be to develop bindings for another language. Possible candidates include Common Lisp, Lua, or Io.
- Language: C and whatever language the bindings are for
- Level: Easy to Medium
- Mentor: Tobias Rundström, Alexander Botero-Lowry
Currently only one output plugin can playback sound at a time. This project would consider the implications of supporting multiple output plugins and find the best way to implement support for them.
- Language: C
- Level: Hard to Flametory
- Mentor: Anders Gustafsson
Since XMMS2's client-server design and emphasis on implementing most features as clients, there are a large number of smaller projects developed around XMMS2. We currently provide development frameworks for some of these projects including git repositories, and occasionally bug trackers. XMMS2Forge is a project to implement an automated web system for setting up these sub projects and providing administrative abilities to the project leaders.
- Language: Pick one
- Level: Easy to Medium
- Mentor: Alexander Botero-Lowry, Sébastien Cevey
Currently XMMS2 does not have a complete testing framework. A number of attempts have been made in the past including some work on unit tests by Sham Chukory, and a failed SoC project last year to develop a testing system for XMMS2.
- Language: tests probably in C
- Level: ??
- Mentor: Anders Gustafsson, Alexander Botero-Lowry
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 for one of the popular toolkits. The study of existing music players and 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: Tobias Rundström, Alexander Botero-Lowry
XMMS2 uses sqlite as the backend for its media library. Since XMMS2 basically maps a key-value pairing, it has been aruged that using an sql database in this case is suboptimal. This project would be to take advantage of the abstraction provided by Collections, and look into implementing other backends for the XMMS2 media library. This project would include performance testing of the various potential databases.
- Language: C
- Level: Hard
- Mentor: User:Anders Gustafsson
Collection operators are hard coded in the daemon. By putting a lisp interpreter in the daemon and rewriting them in lisp it would be possible to add new ones runtime. And when lisp is there it might even be allowed to spill over into other areas of xmms2d for even more possibilities of customization.
- Language: C, lisp
- Level: Hard to impossible
- Mentor: Anders Gustafsson and Sébastien Cevey
New formats like AC3 and DTS supports multiple channels. XMMS2 is kind of 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 alsa and oss output (bonus if coreaudio also supports it!)
- Language: C
- Level: Medium to hard
- Mentor: Tobias Rundström
XMMS2 Mediacenter edition! Client designed to run on a TV (also see: http://wiki.neurostechnology.com/index.php/Summer_of_Code#XMMS2_Frontend )
- Language: c/python/c++/ruby/perl
- Level: Easy to medium
- Mentor: Alexander Botero-Lowry
Currently XMMS2 works great on FreeBSD, Linux, Solaris, Mac OS X, and even to some degree on windows, but there is a general lack of (working) support for NetBSD and OpenBSD. NetBSD encounters problems with attempting to override the medialib when it should be blocking, which renders XMMS2 useless on NetBSD; it is likely this problem would also be the case on OpenBSD. Aside from fixing the medialib corruption bug, the student should be prepared to write a sun audio plugin, preferably one that works on Solaris as well, and also package the latest release of XMMS2 for pkgsrc or OpenBSD ports (or maybe even both!). If there is extra time, the student should port and package a few popular XMMS2 clients as well.
- Language: c/makefile/python (for waf)
- Level: Medium
- Mentor: Alexander Botero-Lowry
Content is available under GNU Free Documentation License 1.2 unless otherwise noted.
- Community
- Development