# go-ipfs Q2 roadmap
Note: no specific order is implied in this list

- [ ] fix random test failures
  - check issues for label 'test_failure'
- [ ] Improve memory usage 
  - [ ] Goal: ipfs doesnt run out of memory on mars for 1 month
  - [ ] identify where most memory usage comes from
  - [ ] find and fix leaks
  - [ ] add more IPFS_LOW_MEM knobs
    - [ ] dht query parallelism
	- [ ] libp2p dial concurrency
- [ ] unixfs sharding 
  - [ ] revive old branch for this
- [ ] go-iprs
  - [ ] ipld?
- [ ] gateway code in its own repo
  - [ ] move ipfs/go-ipfs/commands to ipfs/commands
  - [ ] move ipfs/go-ipfs/core/corehttp to ipfs/gateway
  - [ ] vendor all back in with gx
- [ ] fix progress bars
  - [ ] no negative infinity! (before total size is computed)
  - [ ] 'ipfs get' progress bar working
- [ ] Reduce idle bandwidth usage 
  - [ ] Goal: idle < 100kbps
    - [ ] measure current idle BW loads to make sure this is reasonable
  - [ ] investigate why dht is so chatty
    - watch ipfs log tail
  - [ ] make fewer calls to findpeer and findprovs
    - [ ] identify where all these calls are made
  - [ ] fix 'ipfs stats bw' discrepancy
  - [ ] have test (using mocknet?) that tests bandwidth usage
- [ ] Make bitswap waste less bandwidth
  - [ ] Goal: 50% reduction in duplicate block sends
    - [ ] Test to measure this
  - [ ] reintroduce pluggable strategy
- [ ] Fix Providers Problem 
  - [ ] Goal: 10x bandwidth reduction from providing
  - [ ] provide-many redo
- [ ] Reduce bitswap RTT 
  - [ ] decide on pathing language
- [ ] Improve Disk performance 
  - [ ] Goal: 1TB repo working nicely
  - [ ] Goal: 2x improvement in 'ipfs-whatever' ops/s
  - [ ] large repo perf #2405
  - [ ] investigate flatfs calls
    - [ ] reduce number of useless calls
  - [ ] dagservice lru caching
    - [ ] configurable size
  - [ ] blockstore 'has block' bloom filter cache
  - [ ] improve query perf
  - [ ] different datastore backends
    - [ ] datastore config PR
	- [ ] introduce sql-datastore
- [ ] NAT Traversal (go-ipfs side)
  - [ ] DHT FindPeers only returns first result
- Misc Issues (great place to start contibuting!)
  - [ ] user friendly dht output #2494
  - [ ] config file validations #2491
  - [ ] object patch error bug #2473
  - [ ] 'hash only' for ipfs files stat #2461
  - [ ] ipfs repo fsck #2457
  - [ ] command to list all logging subsystems #2434
  - [ ] offline mode for daemon #2393
  - [ ] fix dial filters for ipv6 #2329
  - [ ] 'ipfs object diff'
    - using code from merkledag/utils/diff.go
