Suggested Exherbo projects

Please contact Bryan Østergaard at kloeri@exherbo.org or kloeri in the #exherbo channel on irc.freenode.net for further information if you’re interested in any of these projects.

Sydbox

TODO list

REMOTE_IDS client

Develop a client using Paludis library to extract metadata from Exherbo packages and check for new upstream versions. The client should be able to deliver the reports using several different interfaces. At minimum it should be able to generate a text based report locally as well as be able to mail the report and show it using a web interface.

Furthermore it should be possible to configure the client to generate reports for a subset of package repositories, package categories or specific packages.

For bonus points the client should also be able to show related data such as ChangeLogs or Release Notes when Exherbo packages contain enough metadata for that.

Applicants should be familiar with Ruby, Python or C++ and have some knowledge of website development.

REMOTE_IDS client status

Ali Polatel has written a REMOTE_IDS client that works with pypi, freshmeat, cpan, vim and rubyforge hosted projects. Possible ideas includes expanding the script to cover more hosting sites and using public APIs where possible.

Exherbo image builder

Build an application that can create image files useful for installing Exherbo or testing it.

The application should be able to build a number of different formats such as:

Users should be able to specify the partition layout, which packages to install in the image as well as any needed configuration for boot loaders, kernel configuration etc.. The application should work for both x86 and amd64 based images and be designed in such a way that it’ll be possible to add further architecture support to it at a later point.

This project can be implemented in just about any language but the obvious choices would probably be scripting languages like Bash, Ruby or Python. Experience with partition and bootloaders would be an advantage but not a requirement.

Image builder Status

We’ve added a basic raw image building script called create-kvm-image written in bash. It works for most basic cases but needs a lot more features. It should be relatively easy to add most of these features to the script.

Features wanted

Exherbo package statistics

A client/server based application collecting and displaying a variety of statistics about package use on client machines.

The client part should gather information using the paludis library bindings and submit them to the server. The server part is responsible for receiving all the data and providing a web interface where users can show statistics from the collected data, filtering and sorting the data as needed.

Security is an important part of this project as all collected data must remain absolutely anonymous. If data is leaked that can identify either persons or machines this can harm our users as well as the Exherbo project.

The student is well advised to look at Debian Popularity Contest and Ubuntu Popularity Contest for existing implementations of this idea and inspiration.

This project is easiest to implement in Ruby or Python but can be implemented in C++ or a combination of these languages. The project doesn’t require too much prior knowledge of Paludis and should be reasonably easy.

Web Client

Something like Gentoo Packages or Debian Packages.

Use the Paludis API (probably the Ruby or Python bindings, rather than the C++ API) to extract information about available packages, and present it in the form of a website.

You will want to consider:

Prospective students should already be familiar with HTML, CSS and probably CGI, as well as one of Ruby, Python or C++.

Web Client Status

SUMMER is Statically Updated Metadata Manifestation for Exherbo Repositories. It’s a crude ruby script accessible from http://summer.exherbo.org .

The wishlist of feature can be found in the README

Gems Integration

Paludis is a multi-format package manager. So far we’ve mostly made use of this to deal with ‘special’ repository types like unwritten and unavailable. It would be good to integrate native Ruby Gems (or CPAN, or CTAN, or CRAN, or Hackage – you can pretend this idea is about one of those instead if you prefer) support into Paludis and Exherbo.

Full package manager integration for Gems isn’t something that’s been done by anyone on a production scale before. The Gems people seem interested, though: RubyGems integration

Attempts have been made at integrating Gems support into Paludis in the past. The idea has been shown to be implementable and sound; the main stumbling blocks have been:

Applicants will need a decent knowledge of C++.

Derestricted Version Formats

Version formats are currently limited to a fairly strict set of rules. These are mostly historical things we’ve inherited from Gentoo. For example, 1.2-3, 1.2B and 1.2-alpha3 are not valid versions, but 1.2.3, 1.2b and 1.2_alpha3 are; if upstreams use the former, packages have to jump through silly hoops to work around it. There’s no particular reason to keep these limitations.

This project would consist of:

Applicants would need either a decent knowledge of C++, or a basic knowledge of C++ and a willingness to put up with grouchy programmers who like to yell “needs more unit tests!” and “not enough error checking!”.

Support merging to tar files

Files installed by packages are merged to / (or a different ROOT). Paludis has a powerful and flexible merger framework.

One interesting extension is to make a merger that will, instead of copying files, create a tar file on the fly. This will help creating and handling binary packages.

The project can use libraries to create tar files or implement the required bits in Paludis itself.

Applicants will need some experience with C++.


Copyright 2009 Bryan Østergaard, Ciaran McCreesh and Fernando J. Pereda

This work is licensed under the Creative Commons Attribution Share Alike 3.0 License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/; or, (b) send a letter to Creative Commons, 171 2nd Street, Suite 300, San Francisco, California, 94105, USA.