Summer of Code 2015

From XiphWiki
Revision as of 01:16, 20 February 2015 by EPirat (talk | contribs) (→‎Mentors)
Jump to navigation Jump to search

This is our ideas page for Google Summer of Code 2015 projects with Xiph.org.

Students please use the template at Summer of Code Applications when applying for a GSoC position.

Mentors please visit Summer of Code Mentoring and help us prepare our application as a mentoring organization.

General Ideas

Streaming / Icecast

  • Configuration interface
  • Let's encrypt for Icecast
  • Improved video stream handling
  • Improved stream meta-data handling
  • Stream directory API
  • Client side for stream directory API

In addition Trac contains some tickets tagged GSoC that can serve as starting points for developing project ideas.

Xiph.org in general

Detailed Project Descriptions

These ideas were suggested by various members of the developer community as projects that would be beneficial and which we feel we can mentor. Students should feel free to select one of these, develop a variation, or propose their own ideas. Here, ideally.

Icecast configuration interface

Icecast is very flexible in its configuration and uses XML to store configuration.

Problem / Intro

While we do our best to document things and have a solid default configuration, many users fail at setting up Icecast by e.g. malforming the XML or misunderstanding options.

Solution / Task

The Icecast project should have its own reference configuration UI. It should expose all possible configuration options. It should have several detail levels to make it easier for users. Easy with only core items, up to Expert exposing all items. Either from scratch or by adopting existing open source code.

ticket on this topic

Requirements

The student should be familiar with XML, c programming and HTML.

Mentors

Thomas B. Rücker, tbr

Let's encrypt for Icecast

Icecast supports HTTPS through openSSL. The Let's encrypt project will offer automated and free certificates.

Problem / Intro

Configuring Icecast is challenging, doing it for SSL adds a layer of complexity. Problems like correct hostname configuration, certificate preparation become an additional deployment burden.

Solution / Task

Integrate with or create a derivative of the Let's encrypt agent. Take into account specific challenges, such as determining the correct and intended DNS name (hostname) of the Icecast server.

Requirements

The student should be familiar with Python. Familiar with and running Ubuntu (native or in a virtual machine), due to upstream development target.

Mentors

Thomas B. Rücker, tbr

Stream directory API

For live streams Xiph.org operates a directory, mainly used by Icecast. It lists tens of thousands of streams.

Problem / Intro

The old directory only exposes a XML export of most of the database as the closest thing to an API. A lot of listener software uses this XML, but would benefit from a server side search. We've been experimenting with exposing a feature rich JSON API, but then decided to rewrite the directory code from scratch.

Solution / Task

The rewritten directory needs a well designed API with a performance optimized and robust implementation that integrates with listener software, it has been set up in a way that will make this sufficiently easy. The API will need to be tested.

Requirements

The student should be familiar with nodejs, SQL (in particular Postgres) and JSON (both generating and consuming). API design knowledge would be appreciated, but we have that also in the core team.

Mentors

Thomas B. Rücker, tbr Marvin Scholz, ePirat

Client side for stream directory API

For live streams Xiph.org operates a directory, mainly used by Icecast. It lists tens of thousands of streams.

Problem / Intro

The old directory only exposes a XML export of most of the database as the closest thing to an API. A lot of listener software uses this XML, but would benefit from a server side search. We've been experimenting with exposing a feature rich JSON API, but then decided to rewrite the directory code from scratch. We are designing and implementing a JSON API (possibly also as part of GSoC), but will need client software to use it.

Solution / Task

To start the student will need to find as many open source consumers of the old XML API as possible and also open source players that don't have Icecast directory support yet, but would benefit from it. Then after agreeing with us on a short list of software, depending on the students knowledge of programming language used and client software popularity, implement new directory support for those players (at least one, possibly more if time and complexity allow).


Requirements

The student should be familiar with JSON, the HTTP protocol and at least one major programing language (preferably C; if other show, that there are possible target projects written in that language).

Mentors

Thomas B. Rücker, tbr

Investigate URL-Auth (D)DoS Mitigation Possibilities

Icecast is very flexible in its configuration and allows authentication to be delegated to a backend server. This server has to accept and answer connections in a fast and reliable manner.

Problem / Intro

While we do our best to test things and do quite a bit to harden the mentioned process there are certain risks to be evaluated in regard of:

  1. Server load - Icecast and Backend Server
  2. Timeouts - What happens when the Backend does not answer inside the timout window?
  3. Responsiveness - What happens if a Icecast server has to wait on many Backend requests to finish?
  4. (if implemented by then) TLS Client Cert Auth - TLS Client Auth gives us quite some more possibilities for URL-Auth

Solution / Task

To start the student should familiarize themselves with the URL-Auth system and then investigate the above problems. Patches for identified issues and improvements for optimizing and enhancing the default behaviour should be the primary output. As a side effect it should result in best practices for configuring url-auth reliably.

Requirements

The student should be familiar with the HTTP protocol, the C programming language and also with stress-testing.

Mentors

stephanj, tbr

See Also