ToDo
From MLDonkey
You always dreamed of a new feature, or are annoyed by the lack of a feature.
You have coding skills and want to help the MLdonkey project, but don't know where to start ?
Look no further!
Contents |
Bug reports
Bug reports should be submitted to bugtracker instead.
Current tasks
Check the internal TODO list.
However, it appears to no longer be used, and is most likely outdated. Instead, look at task manager.
Suggestions of improvements, the list
- Include more fine grained control over the download and upload rates, like uTorrent. For a start individual speed limits per download/upload would be very usefull, along with a configurable policy for completed downloads (should they be seeded after completion, up to what U/L ratio, with what maximum speed etc). In addition individual file selection within a multifile torrent is nice (has been mentioned before here), especially with the file priority system used by uTorrent. When and if this is included automatic filters for setting files' priority will be nice, like setting any *sample* file to high priority for preview purposes etc. Automatic filters (based on tracker, size, # of files, ip range (for discrimination between fast wan and not-so-fast internet with different speed limits, file type etc) for setting upload policy and speed limits, along with a scheduler like the one in uTorrent would make mlDonkey truly awesome!
- The Comment function from eMule: Helps to identify fakes and gives extra information.
- For M$-Windows XP/NT/2K allow mldonkey to be run as service (autostart at boot, no need to be logged in, just set and forget it.) I have boilerplate C / C++ code that i could donate / add to do this. contact me via \"mail (at) thomas (minus) vogler (dot) de\" if interested. // What's wrong with HowToRunAsWinService? // Cumbersome for the end-user. Ygrek 15:21, 21 April 2010 (UTC)
- Improve upload statistics (upstats): Keep track of total amount each file has been uploaded over all sessions, not just in the current session. (This would be useful in order to know whether a file has been re-shared adequately. This is a feature which eMule has but MLdonkey doesn't.)
- upload my shared file list to a web server. i'm behind firewall, so it cant be accessed from my.server:port. so, mldonkey (or some other addon) should make list of links to my files and upload the list to a webserver so everyone can now see what files i share
- connect to mnet, freenet, gnunet and grapevine networks for better privacy and security // Connecting to those networks and to another network (or even several of those secured networks), you'll lose most of the gained privacy (plausible deniability, for example). Unless people are very fond of MLdonkey interface, to connect to those networks you'll have to use the official client.
- connection through firewall / http proxy
- A Jigle search Interface in the web-interface would be nice, just as in maurice's webdonkey.
- What about the Fastrack Network? // IIRC discussions about Fastrack with b8_bavard on #mldonkey, he's waiting for specifications to settle a bit (=> not change every other day) before updating the current support implementation
- The mlsubmit.reg (mingw binaries) doesn't work look here how it should be.
- GUI: Rememer which top-tab was displayed before last exit, so that the same is showing on a new startup instead of always \"Servers\" as default.
- GUI: The various search-term fields could be combo boxes and hold # previous search terms. Thus it would be easy to redo a certain search.
- DirectConnect: Allow a setting to connect to most poular hubs instead of a random set of hubs. E.g. start trying with hub that has 500 users, then the other one with 500 users, then the one with 499 users etc.
- GUI: Add a preference to have the mlnet core automatically started at mlgui startup, if there is no mlnet running. Using a wrapper script for mlgui?
- GUI: Someone was kind and made the settings->plugins tabs sorted. Could the same be done for the menubar's \"Display\" and \"Network\" contents? That is A-Z (BitTorrent, Direct Connect, ..., Soulseek)
- Auto list download: Create a list where the user enters more than 1 file for download. These can then be automatically searched for, and according to some semi-intelligent rules, one can be automatically picked and downloaded. This way, the user can download a list of files, without having to select them one-by-one.
- GUI: file sizes should be right-aligned (or aligned to a imagined decimal point) rather than as currently left-aligned. Also, applying both to the gui and to the finished-notification-email - use local number format from glib (like 1,234,567 instead of 1234567)
- Mail-notification: could the messages be multipart with html also? If so, the filename could be a link so that you could start a preview right from the mail reader.
- Multi User: Create a separation between the different users logged in. Every user should have a different view of his downloads, with his own commit directory. If a user tries to download an already existing dowload, just copy the file to his commit directory (or link it). If the file is still downloading just add a reference to the download. A user should be allowed to manage (add/remove) his shared files, and view files shared by other users. Of course if a file is shared by more than one user there should be a reference count mechanism. It should also be important to check users against the OS authentication, so local users don't need to manage another password for mldonkey.
- Selection Stats: If you select multiple entries in the Downloads tab of mlgui, show the average resp. sum of the files stats, instead of displaying one arbitrary file info. e.g. the sum of downloaded data, the average percentage, etc. this would be helpful to estimate the progress in a collection of associated files.
- Downloads Filter: A quick filter (similar to the one in the bookmarks sidebar of mozilla 1.4) in the downloads tab. e.g. typing 'dark' shows only those downloads which have 'dark' in its name.
- When you select a lot of files to cancel, the confirm window becomes too high due to all the lines, so you can't reach the OK button. Make this instead as some sort of scrollable frame.
- Firewall checker: See if connections are ok, and warn if not.
- Web UI: In Transfers => Downloads. Show somewhere how much space is left in incoming directory disk (like df ~mldonkey/incoming).
- Neworks health monitor: Determine a "usefulness" value of each network by evaluating the average number of user connected, the # of file found when searching and the # of downloaded files. Let the user decide if a network needs some tweaking or is simply dead.
- MLDonkey server cluster: let some MLDonker instances running on diferent IPs work together searching and downloading a file requested by one of them.
- SSH user interface: obsoletes Telnet interface, wich is widely insecure. Use a SshTunnel
- Improve the internal command interpreter so that non-scalar options can be typed and displayed.
- eDonkey: Implement webcache to increase download speed [1] (however, we'll have to think ten times before we do that. Webcaching like this might be beneficial for ISP's incoming traffic (which, honestly, is not our problem), but on a bad side, it immediately puts the complete log of what and from where you're downloading into ISP's hands; they don't have to sniff traffic for eDonkey data anymore; they can simply sift through their cache logs.)
Mldonkey options naming convention project
i ve found this on pango's site at:
http://ftp.berlios.de/pub/mldonkey/pango/goodies/rename_settings.txt
i think it is a good idea!
todo for us: 1. put here all mldonkey options and rename them 2. code the mldonkey to upgrade options to this naming convention
client_name network:client_name
client_md4 network:client_md4
client_ip network:client_ip
force_client_ip network:force_client_ip
max_hard_upload_rate network:max_upload_rate
max_hard_download_rate network:max_download_rate
max_opened_connections network:max_opened_connections
max_upload_slots network:max_upload_slots
strict_bandwidth network:strict_bandwidth
tcpip_packet_size network:tcpip_packet_size
ip_cache_timeout network:ip_cache_timeout
black_list network:black_list
(edonkey specific ?)
enable_donkey donkey:enable
donkey_bind_addr donkey:bind_addr
port donkey:port
retry_delay donkey:retry_delay
features donkey:features
protocol_version donkey:protocol_version
sources_per_chunk donkey:sources_per_chunk
min_reask_delay donkey:peers:min_reask_delay
max_reask_delay donkey:peers:max_reask_delay
client_timeout donkey:peers:client_timeout
max_source_age donkey:peers:max_source_age
max_clients_per_second donkey:peers:max_connections_per_second
client_buffer_size donkey:peers:buffer_size
upload_quantum donkey:peers:upload_quantum (obsolete)
propagate_sources donkey:peers:propagate_sources
max_sources_per_file donkey:peers:max_sources_per_file
good_sources_threshold donkey:peers:good_sources_threshold
min_left_sources donkey:peers:min_left_sources
queued_timeout donkey:peers:queued_timeout
upload_timeout donkey:peers:upload_timeout
random_order_download donkey:peers:random_order_download
upload_power donkey:peers:upload_power
reward_power donkey:peers:reward_power (obsolete)
new_upload_system donkey:peers:new_upload_system
send_warning_messages donkey:peers:send_warning_messages
ban_queue_jumpers donkey:peers:ban_queue_jumpers
ban_period donkey:peers:ban_period
max_emule_slots donkey:peers:max_emule_slots
initial_score donkey:servers:initial_score
max_xs_packets donkey:servers:max_xs_packets
server_connection_timeout donkey:servers:connection_timeout
max_connected_servers donkey:servers:max_connected
max_udp_sends donkey:servers:max_udp_sends
max_server_age donkey:servers:max_age
master_server_min_users donkey:servers:master_server_min_users
force_high_id donkey:servers:force_high_id
update_server_list donkey:servers:update_server_list
network_update_url donkey:servers:network_update_url
redirector donkey:servers:redirector
connected_server_timeout donkey:servers:connected_server_timeout
propagate_servers donkey:servers:propagate_servers
files_queries_per_minute donkey:servers:files_queries_per_minute
files_queries_initial_delay donkey:servers:
files_queries_initial_delay
check_client_connections_delay donkey:servers:loc_queries_delay
check_connections_delay donkey:servers:check_connections_delay
min_left_servers donkey:servers:min_left_servers
overnet_store_size overnet:store_size
overnet_port overnet:port
overnet_max_known_peers overnet:max_known_peers
overnet_search_keyword overnet:search_keywords
overnet_search_timeout overnet:search_timeout
overnet_query_peer_period overnet:query_peers_period
(\"query_peers_delay\" ?)
overnet_max_search_hits overnet:max_search_hits
enable_server donkeyserver:enable
server-port donkeyserver:port
server-name donkeyserver:name
server-description donkeyserver:description
server-seedIP donkeyserver:servers:seed_ip
server-seedPort donkeyserver:servers:seed_port
server-maxClients donkeyserver:clients:max_clients
server-maxFiles donkeyserver:max_files
server-server_ip donkeyserver:server_ip
server-server_md4 donkeyserver:server_md4
server-save_log donkeyserver:save_log
server-log_time_out donkeyserver:log_timeout
server-change_log_file donkeyserver:change_log_file
server-send_server_stat_delay donkeyserver:clients:
send_server_stat_delay
server-ping_known_servers donkeyserver:servers:
ping_known_servers
server-limite_udp_received_sec donkeyserver:clients:
max_received_udp_per_sec
server-process_udp_loc donkeyserver:clients:process_udp_loc
server-process_udp_req donkeyserver:clients:process_udp_req
server-relais_cooperation_protocol donkeyserver:group:
relais_cooperation_protocol
(??)
server-relais_master donkeyserver:group:relais_master
server-max_servers donkeyserver:servers:max_servers
server-max_group_clients donkeyserver:group:max_clients
server-max_group_files donkeyserver:group:max_files
server-notify_time_out donkeyserver:notify_timeout
server-connect_time_out donkeyserver:clients:connect_timeout
server-server_dead_time_out donkeyserver:servers:dead_timeout
server-server_group_connection_timeout donkeyserver:group:connection_timeout
server-commit_in_subdir donkeyserver:commit_in_subdir
server-max_subs_lifetime donkeyserver:max_subs_lifetime
enable_opennap opennap:enable
OpenNap-client_port opennap:port
OpenNap-max_connected_servers opennap:servers:max_connected
OpenNap-client_password opennap:password
OpenNap-client_port (interesting, found twice!!)
OpenNap-client_info opennap:client_info
OpenNap-use_napigator opennap:use_napigator
OpenNap-servers_list_url opennap:servers:servers_list_url
OpenNap-server_connection_timeout opennap:servers:connection_timeout
OpenNap-commit_in_subdir opennap:commit_in_subdir
enable_soulseek soulseek:enable
slsk-max_connected_servers soulseek:servers:max_connected
slsk-ip_cache_timeout soulseek:ip_cache_timeout
(why not use network:ip_cache_timeout ?)
slsk-load_serverlist soulseek:servers:load_serverlist
slsk-main_server_name soulseek:servers:main_server_name
slsk-main_server_port soulseek:servers:main_server_port
slsk-client_port soulseek:port
slsk-login soulseek:login
slsk-password soulseek:password
slsk-query_serverlist_limit soulseek:query_serverlist_limit
slsk-commit_in_subdir soulseek:commit_in_subdir
slsk-next_token soulseek:next_token
enable_audiogalaxy audiogalaxy:enable
(the audiogalaxy support looks in bad shape, it even doesn't compile
out of the box in CVS head release)
enable_limewire limewire:enable
LW-max_ultrapeers limewire:ultrapeers:max_ultrapeers
LW-client_port limewire:port
LW-commit_in_subdir limewire:commit_in_subdir
LW-max_known_ultrapeers limewire:ultrapeers:max_known
(what's the difference with
LW-max_ultrapeers ?)
LW-max_known_peers limewire:peers:max_known_peers
LW-server_connection_timeout limewire:servers:connection_timeout
enable_directconnect directconnect:enable
DC-max_connected_servers directconnect:servers:max_connected
DC-search_timeout directconnect:search_timeout
DC-load_hublist directconnect:load_hublist
DC-shared_offset directconnect:shared_offset
DC-client_port directconnect:port
DC-login directconnect:login
DC-query_hublist_limit directconnect:query_hublist_limit
DC-commit_in_subdir directconnect:commit_in_subdir
DC-servers_list_url directconnect:servers:list_url
DC-client_description directconnect:client_description
DC-client_speed directconnect:client_speed
DC-client_keyinfo directconnect:client_keyinfo
enable_openft openft:enable
OpenFT-max_ultrapeers openft:ultrapeers:max_ultrapeers
OpenFT-client_port openft:port
OpenFT-http_port openft:http_port
OpenFT-commit_in_subdir openft:commit_in_subdir
OpenFT-max_known_ultrapeers openft:ultrapeers:max_known
OpenFT-max_known_peers openft:peers:max_known_peers
OpenFT-server_connection_timeout openft:servers:connection_timeout
interface_buffer interface:buffer
password interface:password
allowed_ips interface:allowed_ips
previewer interface:previewer
max_name_len interface:max_name_len
max_dialog_history interface:max_dialog_history
display_downloaded_results interface:display_downloaded_results
(?)
new_print_search interface:new_print_search
(?)
max_displayed_results interface:max_displayed_results
download_sample_rate interface:download_sample_rate
download_sample_size interface:download_sample_size
(are those used for anything
but interfaces ?)
gui_bind_addr interface:gui:bind_addr
gui_port interface:gui:port
ask_for_gui interface:gui:ask_for_gui
start_gui interface:gui:start_gui
update_gui_delay interface:gui:update_delay
http_bind_addr interface:http:bind_addr
http_port interface:http:port
http_login interface:http:login
http_password interface:http:password
http_realm interface:http:realm
use_html_frames interface:http:use_html_frames
commands_frame_height interface:http:commands_frame_height
html_checkbox_file_list interface:http:html_checkbox_file_list
vd_reload_delay interface:http:vd_reload_delay
telnet_bind_addr interface:telnet:bind_addr
telnet_port interface:telnet:port
chat_bind_addr interface:chat:bind_addr
chat_port interface:chat:port
chat_app_port interface:chat:app_port
chat_app_host interface:chat:app_host
chat_console_id interface:chat:console_id
chat_warning_for_downloaded interface:chat:warning_for_downloaded
(I really don't know where to put that...)
use_file_history index:use_file_history
save_file_history index:save_file_history
filters index:filters
filter_search index:filter_search
filter_search_delay index:filter_search_delay
filter_table_threshold index:filter_table_threshold
smtp_server smtp:server
smtp_port smtp:port
mail smtp:email
mldonkey_bin mldonkey_directory
temp_directory temp_directory
incoming_directory incoming_directory
commit_in_subdir commit_in_subdir
file_completed_cmd file_completed_cmd
local_index_find_cmd local_index_find_cmd
local_index_add_cmd local_index_add_cmd
mldonkey_gui mldonkey_gui_cmd
save_options_delay save_options_delay
compute_md4_delay compute_md4_delay
run_as_user run_as_user
options_version options_version
keep_cancelled_in_old_files cancelled_files_require_force_download
(edonkey specific ?)
initialized initialized
(obsolete ?)
options_prefix prefix:options
server-options_prefix prefix:donkeyserver
DC-network_options_prefix prefix:directconnect
slsk-options_prefix prefix:soulseek
OpenFT-options_prefix prefix:openft
LW-options_prefix prefix:limewire
OpenNap-options_prefix prefix:opennap
verbose debug:verbose
debug_net debug:net
verbose_overnet debug:overnet
slsk-verbose_clients debug:soulseek_clients
slsk-verbose_servers debug:soulseek_servers
OpenFT-verbose_clients debug:openft_clients
OpenFT-verbose_servers debug:openft_servers
LW-verbose_clients debug:limewire_clients
LW-verbose_servers debug:limewire_servers
compaction_overhead gc:compaction_overhead
minor_heap_size gc:minor_heap_size
compaction_delay gc:compaction_delay
(could have used \"memory\" instead of \"gc\", but using cryptic names
discourage tweaking, that may be better that way ;) )
(still missing: non scalar options, most GUI options,...)