All about SuperPipe
Isn't SuperPipe just another download manager?
Not really. A lot of the others concentrate on Torrents. Others are more about uploading rather than downloading. Plus, every existing download manager fights with other programs for bandwidth.
So how would SuperPipe solve the bandwidth conflict issue?
Imagine for a moment that programs like Firefox could let a download manager, like SuperPipe, handle all their downloads. Now the download manager knows about those other downloads and can give them priority. It can also keep the caller up to date.
The plan is provide an open API that those programs could use and other download managers (like Orbit) implement for themselves. Actually, there would be two APIs, each interchangeable. One would support .NET clients and download managers (SuperPipe) would use. The other would provide a C interface. A system would be implemented to allow programs to not deal with which API the other side is using. Another bridge might later allow for Java interfaces.
We would also provide a Windows control panel applet a way for users to specify which downloader to use. The C interface would be portable, so non-Windows users would need a counterpart.
How did SuperPipe come about?
Well, I used to use Reget Pro, a paid download manager. But they had bugs that they never fixed. In fact, they stopped coming out with new releases several years ago. Plus, I had troubles filing new problem reports.
So I replaced Reget with Orbit. But I don't like it either. Here is why:
- Unlike Reget, Orbit doesn't provide a quick way to control how much bandwidth it uses. Reget provides handy Red, Yellow, Green buttons for that. (Green is unlimited bandwidth. Red is really stingy.)
- Orbit doesn't have a true queue system. In Reget, moving items up the list moves them up in priority. However, Orbit insists on sorting the entries somehow.
Orbit insists on checking tons of programs for updates. Basically, if you have it installed, Orbit might claim you need to update it. However, I checked on a lot of its claims. It was telling me I needed to update programs that were up to date.
To me, this is a feature a downloader doesn't really need. I have no plans to shove this onto users. As for Orbit, I don't think you can turn its upgrade notifications off. There is a way to disable checking for upgrades to Orbit itself, but not other programs.
- Reget provides a handy way to delete completed downloads. Not Orbit. Now Orbit does allow you to provide an instant mirror to other Internet users for anything you download. But keeping those records in the list of completed downloads doesn't make sense.
- Orbit seems to ignore the directory I set at times. I am certain I set the folder, but the files once in a while end up elsewhere. I have also seen the default folder isn't always the correct default.
- Reget can show the progress for each download inside the row. Orbit makes you select the download.
How did the UI for SuperPipe come about?
So far, I have been mostly copying the UI for Reget. I don't know how much more of that I will copy. That remains to be seen.
Will there be any projects created to support SuperPipe?
Well, there is the API system. After that, I don't know. I have already coded some specialist controls for SuperPipe that ask for the size of something and the unit of measure for that value. (The UOM would be things like bytes versus gigabytes.)
I also started coding a control that looks a lot like a combobox. However, the drop list would show history. It would also have a browse button with just an ellipse (…) for text. That would bring up a file or folder browser.
Some of those controls could end up in their own SourceForge project.
Why are you using the SourceForge beta website?
Well, I wanted to try it out. However, as of now, I am already regretting it. They haven't implemented enough yet. Sorry. The good news is that they have fixed the problem that was preventing our forum pages from loading.
The project listing doesn't state which version of the GPL license is in use. Which version did you pick?
I went with GPL v3.0. Please note it is different from older versions of the GPL. The rights involved have changed and the new version isn't compatible with older versions. As for why the version isn't listed, please vote for it on SourceForge's IdeaTorrent. In my book, the designers of the beta website were a little shortsighted.
What back end are you using?
For now, all data is being stored in XML files. If SuperPipe later provides mirrors for downloaded files (like the above mentioned Orbit feature), that might be stored in SQLite or something similar.
What is the logo supposed to be?
Well, I am no artist. I was attempting to draw an cable to the Internet with data coming out of it. I am open to replacements, especially in the smaller sizes where it doesn't do that well.
What is required to existing builds of SuperPipe?
- Microsoft Windows Vista or newer
- Microsoft .NET 4.0+
Why did you use .NET as the platform?
I was expecting to do most of the coding myself. .NET happens to be the only modern platform I know how to code for. That rules out GTK (think Inkscape and GIMP), JAVA, XUL (Mozilla), and more.
Why did you code in C# rather than VB?
Well in part, see the previous question. Until I learned C#, most of my coding experience was with MFC/C++. C# was closer to C++. As for why not C++ .NET, VC++ 2010 Express is missing too many features.
Why is XML back end for the project?
I learned long ago to be careful of binary formats. If you change the format, you trash all existing data that your users have. As for why not a RDBMS, we may need that later, but for the queues and preferences, it is simplier to store them in XML.
What do I need to compile the project?
- Microsoft Windows Vista or newer
- Microsoft .NET 4.0+
- Microsoft Visual C# 2010 or newer. The Express version is sufficient and happens to be what I use at this time. It lacks plugin support (which means no integral SVN), a breakpoint manager, install generator, and a few other things.
- Object List View
- A SVN client. If you use the Express version of VC#, I suggest using TortioseSVN. It integrates into Windows Explorer.
How about some screenshots?
Where can I download the official logo?
If I link to your site, which page should the link go to?
How can I help?
- Testing the project and website—As the project grows, it will become more important.
- Assisting me with coding—While I can do most of the UI coding myself and would prefer to do so, most of the data transmission code will be something I at least need advice on. A large part of the code will be in background threads which I have never understand well.
- Coming up with improvements to the logo—While the one I have looks more or less like what I want, it could use fine tuning. Also, at smaller sizes, it doesn't do well. Notice the favicon for this page.
How can I join the project?
Go to our Join the project forum and post there. Please propose how you would fit in the project and provide eitehr a skill set or a link to a public skill set.