rs-ipfs/rust-ipfs

Release 0.2.0

koivunej opened this issue · 3 comments

It's been literally forever since the last release and we've been discussing this internally. Releasing the crates will allow us to jump into making the docs better through docs.rs visibility and hopefully make the project more accessible through that way as well.

Thinking it's probably best not to even attempt at many last minute polish since we still have a lot of work ahead of us.

  • update bootstrap list to match latest go-ipfs bootstrap peers #387
    • needs decision: resolve dnsaddr outside of libp2p, expand it manually or just not include /dnsaddr
  • use static bootstrap peers instead of reloading config file #387
  • ipfs-http: listening addresses from compat config file (see #173) #383
  • remove default random listening address, listen to no addresses by default (re: #173) #383
  • remove ipns insertion and cancellation features from ipfs::Ipfs (they are not implemented) #384
  • comment on resolve_ipns that it only supports dnslink was #385 but fused into #384
  • move README.md example as an example under examples/, stop polluting src/lib.rs docs #391
  • be on a look out for other half-way implemented features and update docs #392
  • crate level ipfs-http documentation (in #392)
  • update #6 regarding IPNS progress
  • go through remaining examples (removed the ipns one in #384) -- #390
  • simplify node creation #345 maybe? in #394
  • remove UninitializedIpfs::default, IpfsOptions::default and src/config.rs except for bootstrapper list, see comment, #393
  • add add example, discussed more in deferral #395
  • crates.io prep, me as ipfs owner
  • ipfs-unixfs changelog, bump ipfs-unixfs to 0.2.0, #396
  • ipfs-unixfs tag+publish
  • prepare to publish bitswap/ as ipfs-bitswap 0.1.0 #397 #398 (again)
  • tag+publish ipfs-bitswap
  • prepare to publish ipfs as 0.2.0 #399
  • tag+publish ipfs
  • create persistence tracking issue, current state #401
  • create gh release with release notes
  • begin a CHANGELOG for ipfs, update contributing guidelines, PR checklist cc: #171, #400

Updated the list. Expanding thoughts on a few here:

Resolving /dnsaddr/bootstrap.libp2p.io/p2p/$id outside of rust-libp2p: this would be recursive query to find the /ip4 or /ip6 by following TXT fields. The /dnsaddr/bootstrap... could be manually expanded, but the downside is that the ipfs infra team is likely using the dnsaddr to help them manage the system better, and manually expanding would actively work against their freedom to manage the bootstrap node cluster. Though, even at the moment the cluster includes a single peer which is not on the go-ipfs list, unsure why.

Perhaps the easiest is just to keep the single bootstrapper which has the static known ip address.

Rationale for not reloading the config file: We should be getting away from config file implementation in ipfs. While it was necessary in the beginning, library configuration is an application level concern which should be handled by the app. An app can provide which ever kind of nice runtime config reloading or whatnot, however as a library I think ipfs should not strive to support any kinds of concrete configuration persistence strategies.

Removal of public ipns functionality: The flatfs based persistent datastore has never supported ipns nor have ipns records ever been read from the network.

Edited the list again, adding the README.md example moving and simplification through that.

I also added the src/config.rs removal along with its only dependency IpfsOptions::default(). I've wanted to do this for a while know but forgot about it until it was actually needed in bootstrap_restore. I don't think libraries should ship with config file handling as the topic is too complicated. If some apps want to do bidirectional config file handling they are welcome to do that, but it shouldn't be the goal of ipfs as we already have quite a lot of on our hands.

Edited list once again, post starting to merge #392 and I had forgotten about #345, added it as a maybe, linked #393.