From Envy Wiki
Jump to: navigation, search
Dialog-warning 22px.png  Translation

Do not translate this page into other languages. It is either low priority, too specific or incomplete.


We often receive e-mails from students and other people who are willing to work on Envy.

If you want to work on one of the following projects please investigate the problem to assess how difficult it is. You might then go and announce on the Developer forum what you are working on. Please keep in mind that everyone involved with the Envy project is doing this in his/her spare time. So don't expect much guidance and initial support. If we see that you are making progress, you'll be very welcome in the Developer forum as an active developer.


Projects that don't require programming knowledge

Indeed there are things that don't require C++ skills


Is there already a translation of Envy for your language? Is it up-to date? Check out the SVN repository to find out. Is there a website translation for your language? You can check that by going to and finding your language in the right side bar of flags.

For more information see the Instructions for translating the website.

Artwork / Skins / Web design

For new releases we are always looking for a new logo / web design / skin etc. You can always do a new Envy skin. If it is good it might be considered as a new default skin. You can read about making skins in the skinning tutorial. It's also a good idea to read through the developer forum and the skin forum before doing such a project.

If you aren't up to a big job like that, or aren't very artistic, then you can always create a new Collection or collection template. Collections are little more then some html, and possibly some javascript and/or CSS. Once you have a working collection it is usually very easy to create a nice template from it.


The Envy documentation on this Wiki is always out of date. If you feel you have a good knowledge of Envy, feel free to update the information in here. You might also translate existing pages into your language.

Projects that require coding skills

First of all, everyone willing to work on the Envy codebase has to become familiar with the code. One good way to do that is trying to fix bugs from the Bugtracker (Trac Logo 512x512.pngTrac) or implement little features from the Feature request forums. You can find more bugs / feature requests on the Envy Forums.

Fix bugs / Implement little feature requests

As mentioned above, you are always welcome to fix bugs or implement feature requests from our forums and our bug report tracker. You might submit them via Trac Logo 512x512.pngTrac or in the code submission forum. This is a second (currently not officially used) feature request tracker with asorted feature requests.

Implement a website for submitting and downloading skins

If you have good PHP / MySQL and webdesign skills, this project is for you. This website should integrate well into the current Envy website and allow up- and downloading of skins for Envy. It should display a preview image for each skin. It should also have an admin interface where we can delete skins.

Implement a new transfer protocol

This a more sophisticated project suited for computer science students etc. There are some issues with the HTTP protocol currently in use.

  • It doesn't allow Firewall to Firewall transfers because it is TCP based.
  • It is not possible to cancel a transfer while while data is being transmitted without simply closing the connection.
  • Therefore it is necessary to request small chunks of data which is inefficient.

The goal of this project is to implement an UDP based protocol that fixes these issues. There is also a writeup by Mike on that topic. Unfortunately I can't access it at the moment because the forum is down. You might want to read the specifications of the gnutella F2F protocol (You need a yahoo account to access these files).

Update Envy's gnutella support

Envy's support for the original gnutella protocol is pretty much out of date. The goal of this project is to change that. In particular that means implementing all the features required to be a Gnutella Ultrapeer. As far as I know this is support for GUESS and Dynamic Querying. You can find specifications for these protocols at and in the Files section at the GDF yahoo site.

Rewrite the MediaPlayer plugin

The current MediaPlayer Plugin of v2.4 and previous versions had two problems:

  1. It seemed to be quite messy and was based a lot on Microsoft example code
  2. The first problem is probably the reason why Mike decided not to release the source for the current plugin.

So that's why it has been rewritten from scratch by Ryo-oh-ki/raspopov. But as he didn't have much time, he only coded the basics, so things like audio visualization and parts of the partial files preview mechanisms are still missing on the plugin. Your task is now to finish the rewrite the MediaPlayer plugin. Doing this requires some knowledge about Envy Plugins in general, as well as knowledge about Micosoft multimedia APIs (DirectShow).