# π¦ Highlights
Smaller, faster, more reliable
js-IPFS@0.42.0
has been released, bringing a host of bug fixes and other small stability improvements.
It reduces the size of the minified bundle by 7.5% for faster downloads and more responsive web apps!
We've also merged some of our repos together which were logically intertwined. Our hope is that this will make contributing easier and encourage experimentation as there will be fewer PRs to juggle to land a piece of functionality!
# π€ Automated publishing of RCs
Release Candidate builds of js-ipfs
(opens new window) and js-ipfs-http-client
(opens new window) are now being published to npm with every build of master, so you can try out the very bleeding edge with:
$ npm install -g ipfs@next
or
$ npm install ipfs-http-client@next
This will download and install a version of js-ipfs
and/or js-ipfs-http-client
created from the last successful build (opens new window) of master with no GitHub URLs in the production dependency tree.
# π³οΈ Updated Docker containers
Publishing to Docker Hub has been restored so you can get a container running the latest and greatest js-ipfs
with:
$ docker pull ipfs/js-ipfs
You can also pull pre-releases at any time with:
$ docker pull ipfs/js-ipfs:next
Check out all the releases at: https://hub.docker.com/r/ipfs/js-ipfs
# β¨New features
The MFS (opens new window) CLI now supports nanosecond mtimes, use it with the following commands:
$ jsipfs mkdir /directory --mtime 1000 --mtime-nsecs 5
--mode
and --mtime
are now also supported when piping files to jsipfs add
:
$ cat ./file.txt | jsipfs add --mode 0500
# π¨ Breaking changes
- HAMT (opens new window) sharded directories are now reported as having a type of
'directory'
fromipfs.files.stat
in line withgo-ipfs
ipfs/js-ipfs#2811 (opens new window) - When specifying metadata and
--raw-leaves
toipfs.add
, if the file is small enough to fit into one block,--raw-leaves
is ignored and a UnixFS (opens new window) entry is created (previously the returned CID (opens new window) would have a codec ofraw
) ipfs/js-ipfs-unixfs#44 (opens new window)
# π¦ Bugs fixed
- WebRTC configuration is now passed to the libp2p WebRTC transport correctly ipfs/js-ipfs#2966 (opens new window)
- Unknown CLI commands now cause the process to exit with a non-zero exit code ipfs/js-ipfs#2916 (opens new window)
- Running Prometheus metrics in Docker containers no longer prevent the container from starting ipfs/js-ipfs#2952 (opens new window)
# π One PR to rule them all
A common observation made about IPFS development is that there are so many repos to gain knowledge of, itβs hard to know how everything fits together and where a problem might originate, all of which makes it hard to start contributing.
Contributors will sometimes spend precious time crafting one PR, only to be told they need to make additional PRs to repos they didn't even know existed in order to land their initial change. This often ends up being too much of a barrier for developers who have external time pressures or have other shiny PRs to push on.
Features must be staged across multiple releases from multiple repos, and any of these releases have the potential to block unrelated work streams in other repos & projects purely through human error - bugs may be introduced, or perhaps a follow up piece of work becomes necessary. With multiple releases from multiple repos it also becomes hard to roll back these changes; it's a last resort tactic but denying us it's use because our module release process is complicated is an artificial constraint of our own making.
To start to address this weβve consolidated js-ipfs
, js-ipfs-mfs
, js-ipfs-multipart
, js-ipfs-http-client
and interface-js-ipfs-core
into one repository (opens new window).
This made sense because a given IPFS feature is typically implemented in js-ipfs
, exposed over http by the http client and tests are added to the interface suite to ensure everything works together - now you will be able to make that sort of change in one PR instead of three!
Itβs our hope that this will go some way towards simplifying IPFS development and will encourage new contributors to pitch in and help us build the platform to power the distributed web.
# πΊοΈ What's next?
To get a better view on whatβs coming up in js-ipfs
releases, weβve put a Project Roadmap (opens new window) together that contains headline features organised in the order we hope them to land.
Only large features are called out in the roadmap, expect lots of small bugfix releases between the roadmapped items!
# π Huge thank you to everyone that made this release possible
- @achingbrain (opens new window) (149 commits, 44 PRs, 6 issues, 166 comments)
- @agustinmessina (opens new window) (3 comments)
- @alanshaw (opens new window) (8 commits, 6 PRs, 1 issue, 12 comments)
- @alexjc (opens new window) (1 issue, 1 comment)
- @andrew (opens new window) (7 commits, 14 PRs, 1 comment)
- @aphelionz (opens new window) (1 PR, 1 issue, 3 comments)
- @aquiladev (opens new window) (1 issue)
- @betamos (opens new window) (1 issue)
- @bluelovers (opens new window) (2 commits, 8 PRs, 14 issues, 26 comments)
- @calikevuche (opens new window) (2 issues, 1 comment)
- @carsonfarmer (opens new window) (3 comments)
- @chafey (opens new window) (2 commits, 4 PRs, 4 issues, 9 comments)
- @ChainSafeSystems (opens new window) (1 comment)
- @christopheSeeka (opens new window) (2 issues, 7 comments)
- @CLAassistant (opens new window) (1 comment)
- @codecov-io (opens new window) (4 comments)
- @daviddias (opens new window) (2 commits, 3 PRs, 1 issue, 7 comments)
- @dirkmc (opens new window) (1 PR, 5 comments)
- @Elvenisboy (opens new window) (1 comment)
- @emclab (opens new window) (3 comments)
- @Gudahtt (opens new window) (1 issue)
- @hacdias (opens new window) (2 commits)
- @happy-zhangbo (opens new window) (2 issues, 2 comments)
- @hazae41 (opens new window) (2 issues)
- @hsanjuan (opens new window) (3 comments)
- @hugomrdias (opens new window) (39 commits, 27 PRs, 6 issues, 35 comments)
- @icidasset (opens new window) (2 issues, 3 comments)
- @iRyanBell (opens new window) (1 PR)
- @jacobheun (opens new window) (45 commits, 3 PRs, 3 issues, 36 comments)
- @Jonybang (opens new window) (1 issue)
- @josselinchevalay (opens new window) (1 issue, 4 comments)
- @jsonsivar (opens new window) (2 issues)
- @kalmi (opens new window) (1 issue, 1 comment)
- @kanej (opens new window) (1 commit, 1 PR, 2 comments)
- @kawmaiparis (opens new window) (1 issue, 1 comment)
- @koivunej (opens new window) (1 issue)
- @kumavis (opens new window) (1 commit, 1 PR, 2 comments)
- @latenssi (opens new window) (1 issue, 2 comments)
- @lidel (opens new window) (1 PR, 2 issues, 4 comments)
- @MaduraRaj (opens new window) (1 issue)
- @MaxGraey (opens new window) (1 comment)
- @mcclure (opens new window) (1 issue)
- @mell-old (opens new window) (1 issue)
- @mfsoftworks (opens new window) (1 comment)
- @mikeal (opens new window) (1 issue, 12 comments)
- @mkg20001 (opens new window) (4 commits, 1 issue, 4 comments)
- @mmm8955405 (opens new window) (1 issue, 6 comments)
- @MonarthS (opens new window) (1 comment)
- @mpetrunic (opens new window) (1 PR)
- @nijynot (opens new window) (1 commit)
- @notsag-dev (opens new window) (1 PR)
- @npfoss (opens new window) (1 commit)
- @obo20 (opens new window) (1 issue, 3 comments)
- @olizilla (opens new window) (1 commit, 1 PR, 2 comments)
- @ottodevs (opens new window) (5 comments)
- @pcowgill (opens new window) (2 PRs, 8 issues, 43 comments)
- @ribasushi (opens new window) (1 issue, 1 comment)
- @rigwild (opens new window) (1 comment)
- @robertkiel (opens new window) (6 commits, 6 PRs, 1 comment)
- @rvagg (opens new window) (1 PR, 7 comments)
- @SahidMiller (opens new window) (1 comment)
- @sbhamad (opens new window) (1 issue)
- @Schwartz10 (opens new window) (1 comment)
- @sebastiendan (opens new window) (2 issues, 9 comments)
- @SignpostMarv (opens new window) (2 issues, 2 comments)
- @siman (opens new window) (2 comments)
- @sinkuu (opens new window) (1 comment)
- @stale (1 comment)
- @Stebalien (opens new window) (2 commits, 2 PRs, 1 issue, 9 comments)
- @svdo (opens new window) (1 PR, 1 comment)
- @tabcat (opens new window) (2 commits, 2 PRs, 1 issue)
- @tniessen (opens new window) (1 issue)
- @tuyennhv (opens new window) (1 PR, 1 comment)
- @uchetron (opens new window) (1 issue)
- @ulvus (opens new window) (1 comment)
- @vasco-santos (opens new window) (72 commits, 17 PRs, 17 issues, 78 comments)
- @vaultec81 (opens new window) (2 issues, 10 comments)
- @vmx (opens new window) (12 commits, 9 PRs, 11 comments)
- @warpfork (opens new window) (1 comment)
- @wemeetagain (opens new window) (1 commit, 1 comment)
- @whyrusleeping (opens new window) (1 comment)
- @wolfgang (opens new window) (1 comment)
- @woss (opens new window) (1 comment)
- @x5engine (opens new window) (1 comment)
- @Xmader (opens new window) (1 commit, 1 PR)
- @xmaysonnave (opens new window) (1 issue, 1 comment)
- @zebateira (opens new window) (1 PR)
- @zot (opens new window) (1 comment)
# ππ½ Want to contribute?
Would you like to contribute to the IPFS project and donβt know how? Well, there are a few places you can get started:
- Check the issues with the
help wanted
label in the js-ipfs repo (opens new window) - Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute: https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at https://discuss.ipfs.tech/ and help users finding their answers.
- Join the π IPFS Core Implementations Weekly Sync π° (opens new window) and be part of the action!
# βοΈ Do you have questions?
The best place to ask your questions about IPFS, how it works, and what you can do with it is at discuss.ipfs.tech (opens new window). We are also available at the #ipfs
channel on Freenode.