The evolution of connection setup in DC++
October 20, 2012 Leave a comment
You might already know that there was yet another connection setup change in the latest release of DC++. Instead of writing a few sentences only about the current changes I thought I’d rather show you the best part of the evolution of DC++ regarding to the connection setup.
In the beginning and for a very long time the connection setup was the most hated part of DC++ for many people. But with the success of the Automatic connectivity setup implementation setting up the connection manually has become an advanced feature in DC++; in the majority of cases an average user should not modify or even check these settings.
The connection setup layout, labeling and the number of active mode options are often changed over the history of DC++, especially in last couple of years. The four available active mode options that has been part of the setup page during the recent years are debuted back in DC++ 0.68. That time they were expanded compared to the eariler releases and the options has become more descriptive for the sake of better understanding. However, the need of manual setup of active mode still remained a problematic task for many users for many more years, until the first incarnation of automatic connection setup function has introduced in DC++ 0.780.
At the time of writing the last change in the connection setup GUI is that with DC++ 0.800, the number of active mode options shrinked from four to three. As two of the existing manual active mode setup options actually had identical function now they are simply merged: you should use the same option for direct connection and manually port forwarded active modes from now.
Here’s some history in pictures showing how the setup functions and layout has been changing over the years. More of them can be found by Google.
This is something from the ancient times. There’s even no separate Connections page yet.
This one’s from around cca. version 0.670. Settings moved to a new page but no change in the layout. In active mode DC++ automatically tried UPnP port mapping if the ports input boxes were empty and automatically went for passive mode in case of a mapping failure. UPnP implementations were pretty unreliable that time (both in DC++ and in the routers) so there were many non-working and passive setups. But most people still loved it because it often gave some sort of working connectivity without playing with the settings.
The layout we had for many years. Introduced in 0.68 and people really hated it because #1 old settings were not converted on upgrade #2 in most cases it isn’t worked without touching the settings and it threw various error messages #3 the options and error messages were confusing (eg. most people couldn’t quite understood what “Firewall” means here). This layout had lasted until DC++ 0.75.
Here’s the first attempt to have more meaningful labels for the options. It is from the era when DC++ rapidly started to become more user friendly (version 0.76x). Still no automatic setup yet.
First incarnation of automatic setup in version 0.78x. Manual settings are still on the same page as the automatic ones and they getting greyed out when autoconfig is selected. The first time when DC++ has some indication of what happens during the connection setup so problems were lot easier to solve using the log. By this time DC++ already used MiniUPnP for port mapping which resulted a lot more successful port mapping attempts, really. This release was an overall success throughout the community.
This is DC++ 0.79x. Manual config moved to a separate page and you can copy and edit autodetected settings in the manual page. This version introduces NAT-PMP as an alternative way for automatic port mapping. At last, bind address setting is placed at where it should be.
…and finally the current relabeled and optimized manual options in 0.800. Mind that while they’re lot more versatile, due to the last optimization the options are also more simple and a bit similar to the very old layout.
Will connection setup evolve more with time in DC++? That I don’t know but I am sure that DC++ already in par with other recent P2P applications in this regard.