cratetorrent icon indicating copy to clipboard operation
cratetorrent copied to clipboard

Milestone tracking issue

Open vimpunk opened this issue 5 years ago • 1 comments
trafficstars

Pre-alpha

  • [x] Perform a single in-memory download of a file with a single peer connection if given the address of a seed and the path to the torrent metainfo. No multiple torrents, no seeding, no optimizations, or any other feature you might expect from a full-fledged BitTorrent library.
  • [x] Extend previous addition with actually saving the downloaded file to disk after verification.
  • [x] Download a directory of files using a single peer connection.
  • [x] Download a torrent using multiple connections.
  • [x] Optimize download performance to use self-adjusting optimal request queue sizes and slow start mode for ramping up download throughput (see #40).
    • [x] Add request timeouts (#18)
    • [x] Share a piece download (#45)

Alpha release: 0.1.0

  • [x] Seed a torrent (#50)
  • [x] Get peers from an HTTP tracker (#51)
  • [x] Torrent's peer management (#64)
  • [x] Simplified notification system + public API (#52)
  • [x] Improved API docs (#56)
  • [x] Update dependencies (tokio 0.3 in particular -- [update]: can't update tokio yet, see #76)
  • [x] Decide whether to use simplified 0.x.y semver or with pre-release tag. Former is simpler, latter more correct (though the semver spec covers the 0.x.y use case) while being more complicated for little gain: we don't have parallel releases that rely on strict semver.
  • [x] Fix inconsistencies (import stye, namings, etc) and clippy lints
  • [x] Read cache upper bound (#22) or remove entirely for mvp
  • [x] Basic TUI for CLI app (#74)
  • [x] Use simple non-tui CLI binary for tests as it breaks seeding
  • [x] Cargo release
  • [x] Remove unused benches
  • [x] Link to docsrs in readme, and other fancy badges

0.1.x

  • [ ] Make cross-platform (#88)
  • [ ] UDP tracker support (#97)
  • [ ] License files (#91)

Priority

  • DHT
  • magnet links

Future features not yet scheduled

  • persisting torrent metadata to continue them after restart
  • disk-network IO backpressure to optimize performance and stability
  • UPnP
  • Fast Extension
  • stream encryption
  • uTP sockets
  • file padding
  • BT2.0
  • rate limiting
  • file priorities
  • piece picking strategies (sequential, rarest first, other)
  • make storage backend system agnostic/generic

vimpunk avatar Apr 13 '20 17:04 vimpunk

Alpha (MVP) release scheduled

There is no point in developing this in hiding forever. Therefore, an MVP release is planned with a minimum feature set to make it remotely viable as a torrent engine.

This is likely going to be 1.0.0-alpha.x.

Updated milestones to reflect this.

vimpunk avatar Oct 23 '20 15:10 vimpunk