Archive for October, 2007

Managing releases of DC++

October 29, 2007

While I’m sure arne could’ve posted here as well (as he did in the dev-mailing list, but didn’t here), I’ll just go ahead and do that.

Given the recent fuss over unstable release being uhm…unstable, here’s a possible way to ensure minimal release testing…

Instead of releasing, I create a branch in svn named something like 0.701-rc. The release manager (yet to be appointed, not me) builds this branch, offers it to a group of dedicated testers (or on the web in some obscure place where whiners do not go) and then releases the version to the public (as unstable) adding a tag in the tags svn folder as is done now. If there are problems with the release, the problems may either be solved in trunk and then merged to the branch by the release manager, or fixed in the branch if they no longer apply to trunk because of further developments.

This of course requires that someone becomes release manager (something that I’m not willing to do), so if anyone feels inspired and wants to help out, this is the golden chance.

I’m also open to other suggestions that require little management effort on my part.

/J

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

Public DC Dev hub changes domain

October 26, 2007

The public DC dev hub has been using no-ip.com for its domain. However, a few days ago they removed the domain because someone had reported that it was being used for “sharing illicit material” or “being part of a botnet or being the host of an IRC server” (none of which are of course true). (I’m also confused as to why, as they don’t even seem to know the reason they terminated the domain.) Since then, I’ve been in contact with them and they’re refusing to let go of the domain.

So instead, we’ve switched the domain from adc://dcdev.no-ip.org:16591 to adc://devpublic.myhub.org:16591. (Note that it’s the same port.)

Sorry for the switch, but there isn’t anything more we can do.

I hope people update their bookmarks/favorites, and that hub list owners can fix this nicely.

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

Why you won’t need 0.702

October 24, 2007

As you may already noticed, DC++ 0.702 has already released. And I’m just writing a new post which cause Arne to kill me. But I have to inform you that DC++ 0.702 is still inappropriate for using. Or anything.

However, instead of blaming, I post here some bugs, which could be already known if we knew what the word “testing” means.

Take a look at your client. Open Public Hubs. Ah.. there’s a “Video” column. No problem, try to enter a hub with some videos (users) in it.. Let’s see the userlist: “350 Users, 9,46 Time“. So that 350 Users are sharing more than 9 “Time”? Ok, it can be solved easily: it seems the strings has some offset, which can be easily fixed in the upcoming version.

Go further. Close the Public Hubs window. Open it again. There’s no hubs in it. You need to refresh it to get the hublist again.

Do you have a fresh client? Enter to an ADC-hub then try to chat. You will fail. You can’t enter anything to the chat. Close your client then restart it. It will work. The trick? Delete DCPlusPlus.xml then start your client again. Enter some nick then connect to an ADC hub. Chatting will fail again.

Try to enable timestamps.. /ts.. the answer: [11:21] *** More data was sent than was expected.. Two characters is more than expected? Ok, just kidding, this is the same string-offset-bug which probably will be fixed soon.

As you may remember, the toolbar was quite ugly in previous versions of DC++ 0.7x. Now it’s pretty cool, which is definitely an improvement. However, some other windows looks ugly.. See this screenshot:

Open Finished Downloads or Finished Uploads. There are two files in it. file1.txt, file2.txt.

As an improvement, you can order the public hubs and the userlist now, however, there are no little triangles on the column headers, so you won’t see the direction of ordering and you will have no idea which column is it ordered from.

And still, the tooltips on the toolbar won’t work for you, neither the userlist or public hub filtering.

You don’t have to agree with me, but I found all those bugs just with a 10-15 minutes testing process. Everyone could done the same before releasing.

ADC 0.13

October 23, 2007

I just posted what I expect to become the final version of ADC 1.0. If you have anything to add, now is the time and the DC++ devel mailing list and this blog are the places.

Changes that I remember:

  • DSC removed (use usercommands if you want to disconnect your users)
  • Bytes instead of bits everywhere
  • Token in CTM/RCM is mandatory and therefore unnamed
  • Reserved SID 0 for the hub. This  is rarely needed since the hub sends most messages with type I, but there are a few corner cases are easier to solve when the hub is assigned 0 (hub-implemented group chat for example). I might have forgotten some good argument against this, so refresh my memory if you feel this is unneeded.
  • PAS hash generation no longer includes CID
  • Reformatted using asciidoc

Since the spec is now essentially a fancy text file, please don’t hesitate to send in patches for typos etc in patch format.

You’ll find previous versions of the specs by adding -0.xx to the link above (ADC-0.12.html for example).

Encryption matters

October 19, 2007

Now that DC++ by default encrypts ADC transfers, it’s worth noting that such capability is a useful hedge against mounting evidence that at least one major US ISP is interfering not only with BitTorrent traffic, but with Lotus Notes traffic.

I expect that the ability to encrypt (though, at the moment there’s no out-of-band key exchange to avoid man-in-the-middle attacks, that ought to change eventually) will become increasingly important for DC in the near future; university ResNet networks already tend to block or heavily throttle it.

Encryption matters.

DC++ 0.701 crashes on startup?

October 18, 2007

It may happen that your freshly installed/downloaded DC++ 0.701 crashes as soon as you start it (or die without any error message, just it simply doesn’t start). This is caused by an unhandled exception which is going to be handled in the upcoming releases. To workaround this problem, create a Certificates folder in your DC++ installation directory.

Note that this workaround also won’t let your System Stability Index to drop :P

Encrypting DC++ 0.701

October 18, 2007

Following the release of DC++ 0.700, comes 0.701.

Some release notes, where it’s noted that some errors from 0.700 has been corrected. Also, DC++ will now automatically generate the certifications for you, and all ADC transfers are encrypted by default.

0.700 from the users’ point-of-view

October 18, 2007

Want your System Stability Index to fall? Then start using DC++ 0.700 :)

First.. What System Stability Index (SSI) is?

Windows Vista includes a great tool called Reliability and Performance Monitor. This collects data and creates reports about your system. Also, it has a so-called System Stability Index which is a number between 1 and 10 to show your system stability. This index is based on software and hardware failures occurs during the run of the operating system.

How DC++ comes to SSI?

When DC++ 0.700 released, I thought I was going to test it then write some blog posts on some sites about it, but lately I discovered Reliability and Performance Monitor and I thought this was going to tell everything about the stability of release.

Just check this graph:

Reliability and Performance Monitor

The highlighted date (10. 11. 2007.) is the day I tested DC++ 0.700 for 20 minutes.

Hm?

I know most bugs are discovered when a lot of users testing the software, but it has so many that it’s even unusable for using it as a secondary, testing client and they could be discovered by trying it out by a very small group of users (rather developers/testers).

I also know that this post may irritate some other people, but I think when releasing a software, we must ensure a minimal usability, since something which is called a “release” is intended for the users, not for testers.

0.700

October 11, 2007

Ok, so 0.700 took a while longer than I had planned but well, here we are. It’s more of a preview of what’s to come, right now it’s pretty unstable (it’ll crash pretty often), I don’t trust the new queue code (so it might corrupt your downloads) and it’s compiled with a technology preview compiler (so it might actually be someone else’s fault that it crashes =)

Segmented downloads and multi-source

October 7, 2007

In the beginning there were only one part.

In the beginning there were only one source.

Then, after a while, clients started to include features called “segmented downloading” and “multi-source”. The former is required for the latter. So, what are these things?

A segmented download is exactly what it sounds like. When a client without segmented downloading request a file, it requests the file in its entirety. This scheme mean that a file can only be downloaded from one person at any given time. If the user goes offline or breaks the connection, the client will (given additional searching and queuing capabilities) try and continue the download from another user. With segmented downloading powers, the client will not consider a file as one thing; instead it will break the file up in parts (“segments”) and download them, and when they are all downloaded, the multiple parts are put together and you have your file. In the beginning when this feature made its way on DC, which I believe was pioneered by Valknut (then known as DCGUI), the clients would requests parts in an arbitrary position. This technique is quite unsafe, as you can’t verify that you have gotten everything; with TTHs, the parts are downloaded per TTH leaf (“sub TTH”) and can be computed, when they’re downloaded, to be accurate. (Today’s clients with segmented downloads use the TTH-approach, I believe, and the old way is discarded by virtually all clients.)

While the “multi-source” definition may be that a file can be queued from multiple people (the original NMDC client didn’t allow for this), it isn’t in this context. In this context, a multi-source download is a file that is being downloaded, in parts, from multiple users at the same time. The multi-source client can choose the segment randomly and assemble the file parts when the file is complete, or when a larger ’section’ is complete.

You may have seen a segment capable client when a user has downloaded “the same file” over and over from you. It isn’t that their client like that file very much, it’s just that it’s requesting the file in segments.

Note that there’s not a set amount of leaves for all files, so it’s not “oh, I’ve downloaded three parts, and it’s only two left”. Instead, the amount of leaves are proportional against the size of the file; The larger the files, the more leaves.

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