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,...)