MUTE Developer FAQ

From Planet Peer Wiki

(Redirected from MuteDevFaq)
Jump to: navigation, search

Contents

MUTE Programmer / Developer FAQ

(Feel free to ask a question on the *Mailing List* and then post the answer here for future reference, please follow the format already created here)

Where's all the Developer Documentation?

All the technical details are here:
http://mute-net.sourceforge.net/technicalDetails.shtml

The Sourceforge project page is here:
http://sourceforge.net/projects/mute-net/

A direct link to the current *Protocol* documentation:
http://mute-net.cvs.sourceforge.net/mute-net/MUTE/doc/

Where can I chat or ask questions about development?

The Mailing List is the best place for Developers to chat because you can do so on your own schedule. Many of the developers are subscribed. The link is:
http://lists.sourceforge.net/lists/listinfo/mute-net-discuss

X-Chat is one for Linux) it would be a good idea to have the software set up, tested and ready ahead of time: http://www.invisiblenet.net/iip/aboutMain.php

Where do I start?

The MUTE system is a layered architecture with very clean APIs separating each layer. You should always look in the header files for each section, they are pretty well documented in that file.

For example, take a look at MUTE/layers/messageRouting/messageRouter.h

That is the API for MUTE message routing. You could possibly use the function calls in messageRouter.h (the API) to start a MUTE node and route messages through it.

How do I compile MUTE from source?

Project Page and download the latest source code, "MUTE_fileSharing-0.X.X_~UnixSource.tar.gz" (change "0.X.X" to whatever version is current).

This gives you the files needed to compile the GUI version of MUTE. At a console, cd into your working directory and do the following:

tar -xzvf MUTE_fileSharing-0.X.X_~UnixSource.tar.gz

cd MUTE_fileSharing-0.X.X_~UnixSource

./runToBuild

If all went well (normally with some warnings but no ERRORs) you should find the completed program in:

MUTE_fileSharing-0.X.X_~UnixSource/MUTE_GUI_fileSharing/

You should check the date of the compiled program to make sure it just compiled (it will be a old date if the compile failed) and use the settings in the "settings" directory with this new version.

Compiling the console text only version of MUTE is the same, you can find the compiled program in:

MUTE_fileSharing-0.X.X_~UnixSource/MUTE_text_fileSharing/

More info on compiling on specific platforms may be found on these pages: Mandrake Linux - MandrakeFaq, Windows - WindowsFaq.

HERE

How do I compile the latest CVS version ?

See the section below on downloading CVS

Always do a "cvs update" command to get the latest source.

The rest is about the same as above except you need to copy the "minorGems" directory and the ~"runToBuild" shell script from the "MUTE_fileSharing-0.X.X_~UnixSource" directory and place them into the directory below the CVS directory and then run the "runToBuild" script from there.

This Page and follow the directions to checkout the latest CVS version of minorGems. (don't checkout "minorgems", note the capital "G")

If CVS got messed up (it happens), you can always go back a few days and get that version with the shell command:

cvs update -D "2 days ago"

That should change things back to the way they were just a few days ago (except for extreme situations with lots of changes, then just checkout a new copy).

Project Page

How can I get the latest CVS version, and how do I send you a diff file?

CVS Page and follow the instructions to download (anon) the latest CVS version. Update it often to keep up with the latest changes.

Once you get a copy from anon CVS, and you make some modifications, from a shell make sure you cd into the root directory you created for this CVS copy, type "cvs update -A" and fix any conflicts so you have a current cvs version plus your changes, then type "cvs diff -uD "now" > diff-TODAY.patch" (replace "TODAY" with month-day) and a patch file will be created, referencing the current CVS version.

You can then upload this file so others can patch their version with your changes. We use the "unified" format for patches, thus the "-u". It will create a diff of all your changes across the whole project, any and all changed source files. This in turn can be used by anyone to patch their CVS version using the "patch" program. It's all automatic and very easy once you get used to it.

If your patch requires other patches, you should include them also. (this happens automatically if you patched your own code already)

Before starting a big project, you may want to ask the list if anyone else is working on that fix so you don't duplicate work.

Please use the patch manager found on the main development page to post any patches you may have come up with. It allows you to upload the patch file as a binary. Posting a patch to the email list usually wraps lines and messes up a patch file. You should let everyone on the mail list know that you posted a patch to the patch manager.

I want to write a MUTE client using "XYZ" language, how can I do that?

See the protocol documentation links above, or interface to the existing MUTE code through the API layers.

Also, someone started a MuteDevelopment wiki page here but you should try the mailing list first.

When do you ask for a fresh route on downloads?

For each retry, it freshroutes with a 1/4 probability, but this probability can be set by the user in the settings folder.

Does MUTE give out a list of IPs to connect to?

The initial connection from a "cold boot" comes from a static web based cache system called a Gwebcache. After that MUTE will exchange a host list when a connection is made and also sends a host list before rejecting a connection (busy).

Those makefiles are quite complicated, are they generated somewhere?

Take a look at "MUTE/configure".

That script builds Makefiles by combining the appropriate "Makfile.___" parts in each directory for the various platforms.

What format are the comments in?

The standards that are used for comments (@param, etc) are borrowed from the Java commenting style, which ~JavaDoc can read to auto-generate HTML docs.

Doxygen can read the C++ files and generate HTML developer docs from the comments, since it supports comments that are in ~JavaDoc format.

How do I "make clean" ?

From the command line, where you are running "./runToBuild" (one level below the "MUTE" directory is assumed), you can issue this command:

cd MUTE; make clean; cd ..

MUTE isn't totally anonymous and perfect, what gives?

Yes, MUTE isn't completely anonymous, there will always be possible attacks.

The home page talks about how "MUTE protects your privacy", but not about how "MUTE guarantees your privacy".

MUTE Website and the MuteAttackFaq describe several attacks and how MUTE makes these attacks difficult.

Why Anonymity?

You may want to look for text on many of the anonymity sites out there, there's lots of very good reasons to always protect your privacy.

Good Reading Link to start with.

What are you working on now so I don't duplicate effort?

Please watch the Mailing list for info on what is being worked on for the next release or ask if anyone is working on what you want to do.

Jason keeps good notes, you may want to also check CVS for his notes file and the change log:

http://cvs.sourceforge.net/viewcvs.py/mute-net/MUTE/doc/notes/notes.txt?view=markup
http://cvs.sourceforge.net/viewcvs.py/mute-net/MUTE/doc/changeLog.txt?view=markup

(if those links don't work, look for the correct link by going to the Project page "Browse CVS" link)

Personal tools