Request for DCDev archives

There used to be a mailing list for the developers of Direct Connect, where people discussed protocol and feature implementations. The mailing list resided at http://3jane.ashpool.org/pipermail/dcdev/ but is no longer accessible. I have been able to traverse the Internet Archive Wayback Machine’s storage, although I haven’t been able to get everything.

I have been able to acquire the pages marked 42-43, 92-99 and 101-113.

Does anyone have the other pages or old mail logs? I think gathering these files can prove to be a very useful, as they describe why things are the way they are. For instance, what spawned ADC and the discussions immediately after.

 

Addendum: I have acquired logs and will shortly be publishing them.

Old interviews with Jon Hess, the creator of Direct Connect

The creator of Direct Connect, Jon Hess, made at least two interviews during the years when he was active. These are shown here below, together with their original link. I’m rehashing the posts here in the (unlikely) event that both sites will disappear…


Sharing the Data
by Annalee Newitz

NINETEEN-YEAR-OLD Jon Hess, inventor of the sensational, underground file-sharing program Direct Connect (www.neo-modus.com), is an old-school geek in a cyberpunk world. Unlike many of his peers in UC-Berkeley’s computer science program, Hess doesn’t wear his geekhood like a badge of pride. For him, working with computers isn’t about hacking. It isn’t about being a guru or wearing Matrix-style sunglasses. It’s just something he does for fun–and to make a little pocket change.

Hess talks about writing computer programs in the same way old-time mainframe tweakers talk about their punch-card days back in the late 1960s and ’70s. Those guys weren’t in it for the fame or the IPOs. They were just glad to be allowed to code for a living. When Hess first got into coding as a high school student in the tiny Northern California town of Redding, he had never heard of the Slashdot community or the see-and-be-seen geek event DefCon. “I wasn’t a geek really,” he confessed to me over the phone. “Programming was something I liked to do and I didn’t know anyone else like me.”

So how did an isolated programmer like Hess wind up developing Direct Connect (DC), which is fast becoming a word-of-mouth hit among data-sharing dorks everywhere? “The people I talked to most were folks in my high school calculus class who used the program,” said Hess, who dreamed up DC when he was 17, after getting frustrated with the file-sharing capabilities of Internet Relay Chat (IRC). “I wasn’t hanging out on IRC to chat, but to get files,” Hess recalled. He needed a file-sharing program similar to Napster, but which would work more easily with IRC. Hess also wanted to share more than music files.

Without access to any formal computer science education, Hess picked up the most widely available development tool: Microsoft’s Visual Basic (VB). Sure, Java might have been a better choice, but at 17, Hess didn’t know anything but VB. After I groused at Hess for several minutes about how his program couldn’t be ported to Linux, Hess sighed in a way that made me realize that he’s probably received a zillion flame-saturated emails full of my very same gripe. “This was a pragmatic decision,” he explained. “I hadn’t heard about open source when I started the program in high school. It just wasn’t a thought to me. VB was easy, I could spit something out really fast that worked, and debugging is great. That’s why I picked VB.” (And just for the record, turbo-geeks: he does want to port DC to another operating system. So why don’t you shut up and help out?)

After Hess posted the DC prototype on betanews.com last year, the program got 1,000 downloads in one day. He knew he was on to something and decided to devote himself to the program full time. These days, he has thousands of users who contribute and share everything from MP3s to movies and E-books. Although Hess isn’t advocating piracy, it’s worth noting that DC is a pirate’s dream. Hess wants users to put as much data as possible online so that he can claim DC has a “petabyte” of data (1,000,000 gigabytes). The system currently has an average of 100 terabytes, and a lot of that stuff is not usually available for free.

Some users on DC like to carry on the IRC “no leechers” rule, meaning that they won’t allow you to delve into their data troves unless you can demonstrate that you have 10 gigabytes (or some other huge amount) of data to share with them. Luckily, one of the documents available on DC is called “how to cheat on DC” and teaches you how to make it appear that your hard drive is packed with tons of freely shared data when it isn’t. Hess isn’t worried about that. “I want open distribution of data,” he said emphatically. “People should be able to skip out on rules that are too strict.”

But the best part of all this, for Hess, is that he’s finally making some money at a thing he loves to do. By selling banner ads on DC, he’s able to earn enough to pay for all his expenses outside his college tuition. Hess isn’t interested in selling DC to anyone–he just wants to run his small business so he can go out for pizza or buy CDs. He said, “People flame me for trying to commercialize DC, but I’m still giving out the product for free. I just want to be compensated for the work I’m doing.”


Interview With DirectConnect’s Jon Hess
by Thomas Mennecke

DirectConnect, briefly dubbed FileShare, arrived to the P2P scene in November 1999. Since then, DirectConnect has quickly become an important aspect of the file-sharing community. Although this community uses an older networking architecture, the DirectConnect network continues to expand, as its resources exceed FastTrack. We would like to thank Jon Hess, the sole programmer of DirectConnect, for taking the time to participate in this interview.

Slyck.Com: How do you feel about third party clients such as DC++? Do you feel they have enhanced or diminished the Direct Connect network? What, if anything, have you learned from them?

Jon Hess: At first I was very angry. But now I realize clients like DC++ are good for the network. They encourage competition and are the reason I was able to release so many updates of my version 2.0 client this year. At this point I’m flattered by their presence – the anger is gone.

Slyck.Com: Third party clients such as DC++ have included features that many would like to see in the official client such as: single window interface, bandwidth management, less memory usage and a streamlined GUI. Will we see such features implemented into the official client?

Jon Hess: “Single window interface” and “streamlined GUI” have always been features of Direct Connect 2.0. If the last release of Direct Connect that a user has tried was 1.0, they really need to give the 2.2 client a shot.

We briefly had a bandwidth management feature that allowed users to cap their upload bandwidth. Their download bandwidth would be capped at a multiple of the upload cap (8x). I’ve never received so many heated emails about a feature. Many users were upset over it, so we quickly removed it. There is no technical reason the feature isn’t included – the code is written.

Less memory usage is something the other clients are going to beat us on. It’s a trade off, and it’s worth it. Direct Connect is really split cleanly in two sections. We’ve got a c++ back-end and, on windows, a c# front end. The back-end, which is everything direct connect, isn’t actually using much data – usually about 512 kilobytes. The .NET Framework is however a ton of code that has to get loaded into our application’s address space and we can’t avoid that. But we feel all of this is completely worth it. The .NET Framework is best way to program windows applications. It lets us add features much faster than if we were coding to Win32 or MFC.

If there is a feature a user is missing in Direct Connect, we want to know – we aren’t clairvoyant. The best thing users can do is tell us how they feel about the program/ I love reading user reviews of Direct Connect, even the bad ones, as long as they say what is bad.

Slyck.Com: Many feel the Direct Connect network architecture is, by comparison to newer communities, a bit out dated. Is there any chance of introducing multi-source swarming, hashing or connectivity of servers (more like eDonkey2000)?

Jon Hess: There are other more technically advanced networks. And while those network structures may be different and more adept to certain tasks, I think they miss the point. They forget about the user experience and are after files-files-files. Direct Connect is about the user joining communities, not overlay networks. Now, Direct Connect was developed before the concept of swarming was popular. We shouldn’t forget that Direct Connect is probably the oldest file-sharing program on the scene. Swarming is something that we’ve been eying. We may end up implementing the Tiger Tree Hash found in other clients.

Slyck.Com: MetaMachine has introduced Overnet, a decentralized version of the eDonkey2000 network. Are there any prospects of introducing a decentralized Direct Connect network?

Jon Hess: No. That is counter to the nature of Direct Connect. Direct Connect is about hubs. However, Direct Connect shouldn’t be called centralized. There is no one machine that is required for the operation of Direct Connect. Direct Connect is a decentralized network. A hub may seem ‘centralized’ but the fact that there are thousands of them with users bridging all of them makes the network decentralized.

Slyck.Com: What kind of communications, if any, exist between you and the DC++ developers?

Jon Hess: None. However we do speak with users who have switched from DC++ to Direct Connect 2.0 frequently and always want to know how we can make their experience better. We were often viewed as a closed shop in terms of user input, but now users overwhelmingly influence the client’s development. We have an entire section of neo-modus.com devoted to user control over the development process (http://www.neo-modus.com/?page=Weekly&subPage=WhatIs).

Slyck.Com: Tell us a little bit about the future of Direct Connect. What features will be implemented to this network/client? Any radical departures from the current Direct Connect philosophy planned?

Jon Hess: Right now the focus is on iterating the development of Direct Connect 2.0. I’d like to see a point release happening bi/tri-monthly. The focus will be on this until users find our client clearly ahead of other Direct Connect implementations. We’d also like to implement the extensions to the network that other developers have included in their applications. I’ve also always wanted to explore more decentralized hubs where multiple hubs can run on many machines and appear to users as a large virtual hub. Honestly though, the road-map isn’t set in stone, and all I can assure users of is that the development will be fast-paced for the rest of the year.

Slyck.Com: Lets talk about the size of the Direct Connect network. The Neo-modus homepage usually states around 200,000 users and 9,000 Terabytes of information (DC++ typically reports more.) How are these numbers calculated, and are they indicative of the entire network?

Jon Hess: We have a tool that profiles the network by periodically visiting the hubs and looking at the user lists of the hubs visited. However, it’s possible that users get counted more than once due to multiple hub connections, and also possible that hubs are never visited due to firewalls or simply being private.

Slyck.Com: Direct Connect development has, at least in the eyes of the P2P community, been slow. How often do you work on Direct Connect? Will the development pace pick up or will maintain the course?

Jon Hess: Direct Connect’s development appeared slow from the summer of 2001 to the summer of 2003 because we dropped Direct Connect 1.0 completely and focused on a rewrite of the core application – Direct Connect 2.0. We released a Mac OS X version, a great operating system if you’re thinking of switching, and ported the Mac code to windows. Now, as a testament to the .NET Framework which many users are unjustly afraid of, I was able to build the Direct Connect 2.0 GUI in 4 months, including the time taken to learn C#. This simply would not have been possible with MFC. Now we have a vastly improved code base and anything is possible.

We may have paid a high start up cost to move to Direct Connect 2.0, but now that we’re here, development is steaming right along. We released more than 20 ‘beta’ builds of the 2.20 client between July and January and there is no plan to slow down.

Like many open source projects, we’ve also split our development into two paths. We have the standard stable build of Direct Connect 2.0 available on the download section along with what we call the latest ‘Weekly Build’. The weekly build is frequently updated, and has all the new features. As the weekly build matures, we slowly roll it over to a stable release and continue the cycle again.


If anyone comes across Hess, I’d like to add an additional interview, with the following questions;

  • What were your goals or ambitions with Direct Connect?
  • What can you say to those who think that the NeoModus protocol is bad or ill formed?
  • What would you have done different, protocol, application or just in general, if you were given the chance?
  • You haven’t been involved in Direct Connect for a number of years, will you ever again?
  • What was the most difficult thing you did with Direct Connect?
  • What was the most important thing you did with Direct Connect?
  • What was the most fun thing you did with Direct Connect?
  • The lock/key combination in the protocol isn’t particularly used in today’s implementations, why did you feel it was necessary?
  • What were your initial thought and response when other implementations of NMDC arose?
  • What do you know of ADC and feel you want to comment on?
  • Why did you not open source the NMDC software?
  • What made you think of the name “NeoModus Direct Connect”?
  • Is there anybody “on the street” that know you wrote Direct Connect?

(And any other questions I might have missed or asked to the others I’ve ‘interviewed’.)


Don’t forget that you can make topic suggestions for blog posts in our “Blog Topic Suggestion Box!”

Statistics for DC++

I recently built a small application, WLPfS, that parses the web log files from SourceForge (where DC++ is hosted). The application can parse the log files and will display the client and the number of times that client attempted to grab a file on the website.

In DC++’s case, this file will always be version.xml that is updated on every new stable release of DC++.  This file is accessed each time DC++ is started or if the “About” dialog is opened. The statistics are slightly skewed in DC++’s case since Coral may be used (if the user has it on), and as such will cache the information on their servers. That means the stats presented here are NOT representative of the actual DC++ user count. However, it may be of interest that there are many old versions still in use, and it’s interesting to see users on “boundary versions” (probably based on feature changes, such as inclusion or requirement of hashes).

I can supply log files upon demand, so you can have a perusing through them yourselves.

In WLPfS, I set the filter to “^DC\+\+ v0.\d*$” (without the quotes). This will mean the application will only display the clients named “DC++ v0.” followed by a number, which is how all DC++ clients to date have identified themselves as. Note that modifications of DC++ may change their name (and will as such show up in such a listing) but keep “version.xml” grabbing.

The list below are the stats files grabbed from SourceForge. They span the days 2012-07-01 to 2012-07-10.

Version Count
DC++ v0.172 18
DC++ v0.18 4
DC++ v0.181 39
DC++ v0.20 6
DC++ v0.22 2
DC++ v0.232 5
DC++ v0.233 16
DC++ v0.24 12
DC++ v0.242 53
DC++ v0.251 7
DC++ v0.261 146
DC++ v0.263 13
DC++ v0.301 70
DC++ v0.302 3
DC++ v0.303 25
DC++ v0.304 515
DC++ v0.305 210
DC++ v0.306 5892
DC++ v0.307 1967
DC++ v0.400 5
DC++ v0.401 4567
DC++ v0.402 5
DC++ v0.403 596
DC++ v0.4032 36
DC++ v0.4033 52
DC++ v0.4034 302
DC++ v0.666 12
DC++ v0.667 103
DC++ v0.668 1589
DC++ v0.670 4401
DC++ v0.671 14
DC++ v0.672 19
DC++ v0.673 716
DC++ v0.674 44406
DC++ v0.68 396
DC++ v0.680 5
DC++ v0.6811 732
DC++ v0.686 142
DC++ v0.687 178
DC++ v0.688 404
DC++ v0.689 1780
DC++ v0.69 370
DC++ v0.691 2188
DC++ v0.693 12
DC++ v0.694 725
DC++ v0.695 197
DC++ v0.696 172
DC++ v0.697 453
DC++ v0.698 8766
DC++ v0.699 19517
DC++ v0.700 26
DC++ v0.702 162
DC++ v0.703 84
DC++ v0.704 527
DC++ v0.705 25
DC++ v0.707 242
DC++ v0.708 187
DC++ v0.709 1
DC++ v0.7091 419
DC++ v0.75 1625
DC++ v0.760 19
DC++ v0.761 245
DC++ v0.762 271
DC++ v0.770 1442
DC++ v0.780 6
DC++ v0.781 1194
DC++ v0.782 12980
DC++ v0.785 1
DC++ v0.790 403
DC++ v0.791 9252
DC++ v0.797 255
DC++ v0.799 19224

Specified class – we’ve found it

It is a quite embarassing situation for a developer if users keep coming up with bugs producing pointless error messages without any good reason and without any obivous way to reproduce. So in this case you’re at a complete loss.

That’s just had been happening to us since the release of DC++ 0.791 as several people reported that they get the infamous ‘Specified class not found’ error message printed to the main chat when they tried to connect to specific hubs. This one is actually a socket error message and it can sign some host resolving problems. But those addresses that reportedly gave this message for the users have always worked for us.

We had a suspicion that this problem has to do with the new IPv6 code but it wasn’t the case afterall. Today it turned out that the problem is because of the new address parser that was improved to support IPv6 addresses. It does support them well but it apparently also became slightly more strict and doesn’t love whitespaces anymore…

So people out there, if you get this message connecting your favorite hub, go the properties of that favorite hub and check the beginning and the end of the hub address so it does not contain any spaces… It’s often happens that if you copy/paste the address from another application it contains spaces which – especially if it is at the end – is really hard to spot.

Adding spaces to the hub address box will of course be prevented in the next version as well as existing saved addresses with whitespaces in them will be correctly handled…  amen.

DC++ 0.799

A new bugfix release of DC++ is out today, this time it’s really meant to be the next stable one. Along with two important stability fixes and another fix for a problem with locales the changes include only small fixes, improvements and library updates. If you’re already using 0.797 then it’s worth to head over the download page and get the update right away.

If everything goes well this new release will be marked stable within a few days.

DC++ 0.797

A new DC++ release is out and it has a rather uncommon leap in the versioning. There’s no any special reason of choosing 0.797 – maybe we’re approaching 0.800 faster this way :)  The current offering mainly focuses on style improvements and reliability fixes but there’s no shortage of the usual smaller developments, either.

Let’s see the important areas affected by this release:

Partial file lists

Capability of getting only parts of a user’s file list instead of the whole one is included in DC++ for quite a while (jeez it’s been more than 6 years – time surely flies).  The function is available using the ‘Browse file list’ item in the context menu of user lists. Even if browsing file list capability is there for a while, still not too many users are actually faced it, at least not in DC++. The reason is that partial lists are defined in the ADC protocol only, thus DC++ has supported this feature on ADC hubs only.

Partial file lists are displayed in a similar window as the old, well known complete ones. However, functions like startup restoration and ADL Search haven’t been available for the partial list windows until now. As an improvement, file list windows now introduce a new button called “Download full list” which is primarily made for an easy upgrade from a partial list to a full one in case of you decide that you need the full list of the user. The button is even useful for fully downloaded lists as well: you can easily refresh the file list when eg. you suspect that the user may modified it since the last download.

File list window

File list window

The code responsible for partial file requests between peers (what makes browsing of others’ file lists possible) has also received a nice improvement. Until now the browse function was able to receive the content of only one folder in one go. If you clicked a folder in the list you got its contents – but only the files and in one level deep only in the folder structure. No more no less, not even the content of the subdirectories. That needed another click (and another partial list request).

This has changed with 0.797 as we introduced heuristics for sending additional levels of information with partial file lists requests. What does this mean? If you give it a try you’ll understand right away: you should get much more contents of the surrounding folder structure in one request. All of this was done the way that only an acceptable amount of additional data are transferred in a particular request – which means that it does not slow down the browsing experience at all.

Pretty useful improvement, the only drawback is that it’s obiviously not backward compatible (needs at least DC++ 0.797 or based client on the other side). This means that browsing lists of older clients will behave the same as like before.

Above all of the good news about partial lists, I saved probably the best for last: from now Browse file list is a available for NMDC hubs as well. This might come as a suprise given the fact that the DC++ author has annouced a feature freeze for NMDC related things a while ago. But actually this isn’t a protocol change, even not a feature update, it is the same hack as the one that other DC clients have successfully used for a long time: the NMDC “protocol” is so weak that it allows anything to send and receive in the state of an estabilished client-client connection. This means that the browse function simply uses the appropriate ADC command for partial list requests on NMDC and it’ll be accepted and served. Sounds dumb but it works…

As you learned above, partial list support in DC++ has been around since about 6 years ago, this means that older clients may appear on NMDC hubs won’t let you browse their lists (to be exact it’s core version 0.670 and above needed on the other side). Browsing lists of these ancient dinosaurs will result an error message in the transfer view.

Away mode

User status indication is an important part of instant messaging and we know that DC++ incorporates such feature. A typical IM system includes many status modes, like Busy, N/A, etc.., DC++ has only two: Online and Away. Until now away mode could have been set only in manual ways, either by directly switching it on or by minimizing the application (when the appropriate setting was enabled). Furthermore, in away mode a message was always sent as a reply to incoming private messages; either the default away message or a custom set one.

DC++ 0.797 now brings the bare minimum configurable options users expect these days in this regard:

Away mode settings

Away mode settings in Personal Information pane

First of all the away message sent as a reply to pm’s in away mode is made optional so you can avoid it completly if you want. Secondly you are able to switch the away mode on automatically after some time of user inactivity and of course back when a mouse or keyboard event happens. As a third and last improvement you can enable a similar automatic away mode on-off switch for when the Windows user account is become locked and unlocked.

GUI  & Styles

Link styles improvements

Connected hub with link styles improvements

The most obivious styles improvement is clear from the above screenshot; configurable link styles is a function that many people missed over the years. Also note the format of the magnet link in the last line of the chat shot above. Magnets are shown in a new standout style as well as in a new human readable format.

Another freely configurable option is the color and style of the displayed chat history in the pm windows.

Both new options are available in the Styles pane in the Settings window and both have a resonable default value, generated automatically by taking the current application color style in account.

Additionally, existing user matching definition styles that made for nicks in the userlist are now also applied to the nicknames appear in the chat windows. To stand out every nick in the chat you can even easily apply the same style for all nicks if you wish to. For easy configuration, DC++ is shipped with two predefined user matching definitions for favorite users (bold, more red) and operators (more blue).

Along with the configurable link styles the way of following the hub redirect requests has also changed. The ambigous Follow Redirects toolbar button is gone and now users can follow the redirect manually by clicking a link-like announcement in the main chat of the corresponding hub window. This is less confusing than having a global button in the toolbar which actually had no function most of the time.

Beside the bigger GUI improvements the newest version of DC++ comes with a few other less significant changes. They’re as follows:

  • Finally reduced the ugly flickering that happens in the chat window when it’s scrolling. You’ve been able to observe this problem since DC++ chat windows have switched to Richedits in order to be able to display styled text. The proper solution of the problem was borrowed from StrongDC++ and if you think this is something trivial and should have been easily fixed a long time ago then you’re wrong. Several (I mean, several) attempts has been made to fix this before. Welcome to the nightmare of Richedit.
  • Now you can see the last chat line in taskbar previews so you can easily manage to switch to the right chat window if you use Windows 7 and you chat in multiple hubs or with multiple people at the same time.
  • If you open up the Settings dialog and hover the mouse over the controls you’ll see the new context-sensitive help tooltips appear. Useful feature for the lazy ones as well as it provides fast way to discover unknown customization possibilities.
  • Multiple monitor support is also improved. From now when you start DC++ the main window will re-appear in exactly the same position as it was left before, regardless of number of monitors used.

Stability & reliability

As usual we introduce a few stability fixes as well, most notably the one which causes crash on startup/shutdown or when some content added or modified in the download queue. A possible memory leak was also fixed during the file list matching operations.

DC++ is also improved for Windows XP users as two bugs specific to this OS is fixed in 0.797:  one of them is messing up the favorite hubs window if you try to modify or move any entry in it. The other bug fixed keeps Win XP users from providing useful crash logs with the built- in crash logger function (probably this bug was the reason of  those many less useful crash logs reported as the Windows XP userbase is still quite large).

File reading operations also improved in general. Until now the most optimal method for file readings has been possible to use  for hashing only and it was optional – you had to manually disable it if problems encountered. From now the most optimal method is used by default for every file reads with automatic fallback to the old method in case of problems.

I believe the new features and fixes are discussed here in great detail but if you curious about every tiny bit of improvements then refer to the changelog as usual.

Have fun using the new version but also prepare for DC++ 0.800 which – if everything goes well – will be the version number of the next DC++ release. You might be suprised as it has to come with at least one brand new and interesting featrue :)

False virus alarm for DC++ 0.791 and recent nightly builds

As of today we found that a few anti virus software reports that the official DC++ 0.791 executable contains a malware called Gen:Variant.Kazy.63748 or similar. We believe that this is completly a false report and already contacted to the largest AV vendor affected, requesting a quick fix.

Until the problem is fixed you can either safely make an exception for DC++ 0.791 in your anti virus software (if such function is available) or as a temporary solution, you can revert to the still available 0.782 version.

As of today, the following AV solutions report malware in DC++0.791

  • F-Secure
  • BitDefender
  • GData

As malware detection signatures are known to be exchanged between vendors, you might experience this problem with another AV solutions in the near future.

Appearently only the official MinGW builds are reported as bad, executables built with Microsoft Visual C++ 10 seems to be unaffected.

We hope the problem will be resolved soon, oh well….

Update: the largest AV vendor very quickly responded so at least for the latest release of DC++ the issue seem to be resolved. Any other MinGW builds higher than bzr rev. 2614 are still produce the problem though…

Hello,

Thank you for your submission.

The file you submitted is indeed clean. A database update will be released to resolve this issue.

For the meantime, you may exclude this file from Real-time Scanning. Instructions for exclusions can be found here:

Internet Security 2010, Internet Security 2011, Client Security 9:

http://www.f-secure.com/en/web/home_global/support/article/kba/7423/k/7423/p/1

For the latest database updates please visit this page:

http://www.f-secure.com/en_EMEA/security/tools/definition-databases/

We apologize for any inconveniences that this may have brought you. Should you have further questions, please do not hesitate to email us again.

Best regards,
——–
F-Secure Security Labs http://www.f-secure.com/weblog/
F-Secure Corporation http://www.f-secure.com/

DC++ 0.791

As a result of a 9 month long development, we’re glad to introduce a new stable version of DC++ released to the public a few weeks ago. This time the development mainly focused to add new useful GUI elements as well as revamp some exitsing ones. Further improvement has been made on the automatic connectivity setup so from now it is equally efficient for the everyday user and for expert people. The changelog for version 0.790 counts exactly 60 different changes with many improvements and bug fixes. Version 0.791 is a package update only it contains the same code as 0.790 marks it as a stable release. DC++ 0.79x patches a currently undisclosed security vulnerability, too.

Let’s see some areas with important changes in detail:

GUI changes

First of all, the new release adds one brand new frame and removes two old ones. Don’t worry, nothing’s lost, it’s only some rationalization in the funcions. There is a future plan to merge distributed functions in DC++ as much as possible and you can consider this as a first step on the way. From now Favorite users frame becomes Users frame, shows all users and it is equipped with powerful filtering capabilities. Those filters allow you to display favorite or waiting users only, so the separate frames used for manage them become redundant.

Users frame

Users frame

The last major release showed a big overhaul on the searching capability of the file list windows, now there’s more:  the file list status bar buttons moved to the toolbar, and instead the progress of file list searches are shown in the status bar. Two useful things were also added as searches within file lists continue from the beginning after reaching the end while the window manager saves/restores the current directory position of the file lists – in other words when a file list window is restored you’ll be taken back to exactly where you’ve been last time.

If you open up the Settings window you’ll see a nice visual overhaul with new icons in the category view and perfectly aligned placement of the boxes.  And it’s not only been made nicer looking because of a call for better looking dialogs, there’s more: the window is resizable as you wish and at last the dialog remembers the last used pane after closal. Yeah, the hassle of  endless navigation to the same pane is gone in case you want to play with certain group of  settings. And there are even new settings panes for brand new functions as follows:

The former Colors and Sounds pane under the Apperarence settings are divided to Styles and Notifications and both  halves are greatly improved. As like before, you can still define the global visual style of the application and the file transfers (the former is now applied even more accuratley throughout the program) but you can do it in a much cleaner interface with an immediate preview of how the defined styles will look like. As a brand new function you’re able to define visual styles (various colors, font face and styles) for displaying certain nicks in the user list of the hub window. You can create user matching definitions that determine certain groups of users so you are able to set their appearence in the user list accordingly.

Style settings

Style settings

User matching itself is also a new function debuting in the 0.79x series of DC++.  It has its own new configuration pane in the Settings where you can define an unlimited number of rules determining certain groups of online users by filtering them out by their properties.  The user matching function is added to the core (dclib);  and not only because of the obivious reason that other clients can also benefit from it this way. Currently it is used only for stylize the user list, but there can be several other future ideas that can use this function as their base, like automatic operations on group of users that match certain criteria, etc…

User matching settings

User matching settings

Another good news is that DC++ 0.791 introduces two evident functions that p2p software can’t miss nowadays. Bandwidth limiting has already been added a few versions before but its configuration was rather complicated as the user always had to open the Settings dialog in order to modify the limiting values. The most obivious and quickest possible solution has been created, a menu interface that is avaliable from the tray menu or by clicking to the limiting value indicators in the status bar. This quick value change interface is well known and you might familiar with it from other p2p applications.

By upgrading to 0.791 you’ll also get a totally revamped notification system as well. It’s possible to configure balloon popup  and/or  sound notifications for different events. Another long time missing function that others implemented long ago…

Notifications' settings

Notifications’ settings

And at last but not least: list filters are greatly improved throughout the interface, even added a new one to for filtering search results. Just try them out to see how easy and effective it has become… you’re even able to use regular expressions to filter out your results!

Connectivity

Connectivity features are improved a lot in the last versions of DC++ and in fact it would worth to dedicate a separate post about the insights of the Automatic Connectivity Setup (formerly known as “Automatic Connection Detection”) which is one of the largest usability improvements in DC++ over the recent years.  You can learn the basics of the feature here (you’ve probably seen it working in the real world anyway).

0.791 brings some more fine tuning to the connectivity setup: there was a complete reorgainization both under the hood and in the settings GUI resulting simpler code and a total separation of basic (automatic) and advanced (manual) connectivity setup. While the former provides a foulproof automatic setup with zero configuration for the majority of users, the latter retains the flexibility of manual set up of each and every option.

This reorganization of the storage of the connectivity settings allowed to add an interesting new feature that makes connection between the automatic and the manual way of setup. Think of the situaton where the automatic connectivity setup fails because it is unable to detect one of the required parameters, while ot still detects many of them correctly. This is when the new “Edit Detected Settings” function comes to play:  it overwrites the manual settings with the automatically detected ones thus it allows you correct the wrongly detected setting(s) manually.  So when the automatic detection fails it may still worth to copy the detected set of settings and use them as a hint for the manual setup.

Connectivity Settings

Connectivity Settings

Another improvement is that in a multi-network enviroment you can clearly set up what gateway should be used to create the automatic port mappings. It means that from now the port mapper will always use the network interface that all other connections bound to. For easier troubleshooting of MiniUPnP (which is the mapper used most times) the name of the device the mapper has bound to will be displayed as a part of the log message shown after a successful mapping operation.

The last but far not the least important improvement in the connectivity area is the introduction of  NAT-PMP support for port mappings as an alternative to UPnP. This quickly emerging protocol is known from its simplicity and there’s a growing number NAT-PMP supporting consumer router devices in the market as well. However, you must consider NAT-PMP support as beta at least for the time being.

More news from under the hood

Improvements in DC Library is always a nice thing since usually the large part of the DC community can benefit from them. It’s even better when old features are reintroduced, features that are existed before but have been temporarily disabled for a while for various reasons.

One of these features is the finished downloads log which has been missing since the introduction of segmented downloads. Altough aligning this function to log only the completed downloads instead of the individual finished segments sounds trivial in theory, actually it needed a complete rethink and replacement of the code. It wasn’t on the top priority list, either (hence the late fix) but certainly a welcomed feature for a few people.

Automatically generated crash logs is the other feature to be reintroduced and surely is the more important one. It has been missing since the development of DC++ switched to an open source compiler that has no native capability of providing crash logs. These logs, when reported back to the developers, are really useful and speed up the fixing of serious bugs. libdwarf has been added to generate human readable crash logs from the call stack using the debug symbols database (.pdb file, shipped in the release package again).

If you encounter a crash you can open the last crash log from within DC++ using the “Open crash log” item from the File menu (or find the log file itself in the Local Appdata folder in case of a startup crash – it’s called “Crashlog.txt”). To help the development you’re now able (and encouraged) to report any crash logs to the official DC++ bug tracker.

As you might read about the feature before, DC++ switched to binary GeoIP databases and added the IPv6 one as well. Moreover the country format shown beside the IP adresses can be highly customized (see the help for all the possible ways). DC++ 0.791 handles GeoIP database updates automatically from within the program so cases when wrong country information displayed for users should be greatly reduced as well as you can forget the hassle of manual updating of the database files from the GeoIP servers.

Stability, performance and  security

Here’s a short list of most important improvements in these areas:

  • You’ll experience a really faster startup when many tabs to be restored
  • File lists are loaded in a separate thread (no GUI freeze with large lists anymore)
  • A possible crash fixed when searching within too big file lists
  • Fixed a possible crash on removal of parital lists from the queue (details will be published later)
  • Fixed a problem that could cause freezes and unwanted behaviour on long time running
  • DC++ is explicitly shows that it supports and encourages the operating system to enable DEP and ASLR when executed (the latter is available for Vista and later)

That’s it for today, enjoy and prepare for a new release, it should arrive soon!

Running DC++ 0.790 on the Windows 8 preview

Hey,

When you try to run DC++ 0.790 on the Windows 8 preview, you will probably notice that network connections don’t work (they fail with the message: “An invalid argument was supplied.“).

We tried a few fixes but to no avail. It is not clear whether the blame is to be placed upon DC++ or Windows 8.

Fear not, for the fix is easy: just set the “Socket read buffer” option (in Settings > Experts only) to 0. Then enjoy!

We will be watching out for this problem when the next Windows 8 beta versions come out. Hopefully the issue is on their end. :P

Notice anything else that is out of place? Don’t hesitate to let us know!

Update (August 2012): This seems to no longer be required in the release version of Windows 8; looks like they fixed the bug! There is however a crash on startup that will be fixed in the next DC++.

The new DC++ release is approaching…

…and there’s a LOT of improvements and changes to come. As usual this means a lot of new strings and Help text waiting for localization.  As the release is expected during the holidays we ask all the volunteers to update their translations at Launchpad as soon as possible.  The procedure is open to anyone who wants to help, it’s recommended to use Launchpad’s easy-to-use web based translator but you can work with the conventional POEdit as well.

Thank you everyone for the effort!

Design a site like this with WordPress.com
Get started