SourceForge.net Logo

Overview
  Introduction
  Project's Goal
  Related Projects
Design/Impl
  Basic Ideas
  Tasks
Documentation
  Quick Start
  Screen Shots
  FAQs
 
 
 
Project's Requirements

1. Cross Platform: We should support Windows platform, Unix-like systems (such as Solaris, RH Linux and etc) and Macintosh. By using Java, we achieve this goal.

2. Multi-threaded Downloader.

  1)GUI interface for the multi-threaded downloader. Show the users the latest information for the downloading process by status bar control and some customized gui widgets.

  2)Support for start / stop / restart capabilities for the tasks.

  3)Support for download speed constraints.

  4)Support for Http and Ftp protocol at the first round. Support for MMS and other stream protocols in the future release.

  5)Add the capability for batch downloading. For example, we should support for adding the download tasks for file01.rar, file02.rar, ... in a single operation.

  6)Supply command line interface

3. Support proxies capabilities

  1)Support for Http proxy (with authentication), socks4 proxy and socks5 proxy.

  2)Support for multi-threaded downloading by multiple threads. This function will remove some server IP constraints for the http/ftp servers.

4. Support for P2P functionalities (in the future)

Http/Ftp protocols are legency protocols and the servers will suffer great performance issues when hundreds of clients try to download objects in the same time. And it is the right time for P2P. By an intermidiate server to cordinate the clients, quickget client can know which peer has the parts it desired and get those parts from the peers instead the webserver. It will greatly help the distribution of big softwares.

What we can learn from quickget?

1. J2SE and Swing library. We may port the GUI to Swt when we see the needs.

2. I18n support. By using resource bundles, we can support varies languages.

3. Design patterns. Lots of patterns can be used in this project to make the code much reusable.

  1) Abstract Factory pattern: to make series of objects (http, ftp, mms protocol-related objects).

  2) Factory pattern: to make the creation objects process hidden from the object's user

  3) Adapter pattern: to use the existing library

  4) MVC pattern: to isolate the model and presentation layer

  Lots of other patterns such as singleton pattern...

  We will experience the use of design patterns. And we will do refactor periodically to make the design flexiable.

4 Extreme programming

We may use the methodologies in XP to trigger our development. The core for XP is TDD and peer programming. We may use these ideas to make our product much stable.