Closed daviddias closed 6 years ago
Aye! Check my new entry, arr :)
Plan:
Where you can help during this week:
Update:
Next:
Notes:
npm i -g jsipfs
and use the already implemented commands, full list on project status https://github.com/ipfs/js-ipfs#project-statusfiles add
do the whole file/dir -> MerkleDAG thing, following the Data Importing spec https://github.com/ipfs/specs/pull/57In lots of places, check https://github.com/ipfs/js-ipfs/issues for descriptions, there is a huge amount of things that were unblocked once IPFS Repo and MerkleDAG were implemented and that can be done in parallel :) Once we get this all done, we will focus again on libp2p to get the networking stack ready for prime time!
Thank you!
We've been pretty busy working on the JavaScript implementation of IPFS. There are more things that you can use now and all of them interop with the Go implementation. Before starting with the formal update and next steps, I just wanted give a shout out to everyone that has been submitting patches or contributing with features to js-ipfs lately. Special thanks goes to:
Extra - @RichardLitt has been putting an incredible amount of work in documenting the HTTP-API of IPFS, giving us a clear path on how to implement those routes correctly. You can find this endeavour in the http-api-spec repo
Our short-term goals for js-ipfs is to have complete feature parity with go-ipfs, with the exception of the DHT (now known as Peer Routing and Record Store). What this means is that if this goal is obtained, we will be able to:
This will mark a very significant milestone on the track of the js-ipfs development, enabling other developers to start building apps and services using the JavaScript libraries.
Peer Routing and Record Store are the stretch goals, since it would require go-ipfs to learn about IPLD and IPRS.
We've invested a significant portion of time in making tests from the beginning of the development of this project. Tests makes the codebase less brittle and help contributors feel confident that their patches and features don't break any other feature.
js-ipfs is divided at the macro level into 'ipfs-core', 'http-api' and 'cli'. It all starts with core: this is where all the functionality that IPFS is composed of is exposed through a standardized interface (WIP). Each feature that gets implemented must be accompanied by tests and these must run in Node.js and the Browser. In addition, each time one of these features manipulates blobs of data that exit the memory of the program (e.g. when they are written to disk), they must be validated and compared to the ones that are produced by go-ipfs, ensuring interoperability and parity (example)
Then, the http-api is built, which uses core and exposes its features through a RPC like HTTP API, specified by the http-api-spec. Tests are built by testing the http-api directly and by using the js-ipfs-api, a module that is up do date with go-ipfs implemented http-api.
Finally, the CLI should come. This should be tested by running commands while a daemon is both online and offline.
Let's look at an example, the jsipfs id
feature
We’re close!™. That is right, we are indeed pretty close to get a workable JavaScript implementation of IPFS that can be ran on the browser. I want to thank first, everyone that has been actively contributing to js-ipfs, with features, tests, documentation and experimentation! This participation is key to get the js-ipfs implementation out the door as soon as possible.
We are now able to use Web Sockets with SPDY stream muxing, giving us the change to use js-ipfs on the browser and exchange blocks with any IPFS Node that is available through a public IP. Big ^5 to @dignifiedquire who fixed pako, the JavaScript implementation of zlib, the last mile to make this work completely.
@ngginever has been leading the charge on the files api
front, jsipfs files get
is almost in a ready state to be merged, powered by pifs-data-importing pipeline.
@noffle finished jsipfs init
now works and made it fully compatible with go-ipfs. While at it, some documentation for it was also created as a bonus.
Overall js-ipfs keeps getting more and more complete. @xicombd lead most of the charges on getting the http-api endpoints and cli commands implemented, using the same IPFS core codebase.
We’ve updated our ROADMAP to make it even more clear where we are and where he are headed.
We’ve set up a goal of getting js-ipfs
milestone 1 ready by the 25th of April. It is a ambitious and there might be some hiccups that delay this goal, but we feel confident as we are pretty close to be fulfil all the goals. Nevertheless, hitting milestone 1 is not just about getting something that works, it is about getting something that works and that people feel confident to use, that being said, one of the things we want to invest time in is on having good documentation of all the pieces that compose js-ipfs and test coverage.
There are a lot of things where everyone can help, I’ve opened a issue for each of them with a task list, some focused on ‘features’, others focused in ‘modules’.
Here is the list of issues with what we are looking for to ship before milestone 1:
You will always be able to find in this repo, a collection of issues tagged with help wanted
. This tag means that there is an action item that is currently not blocked by any other endeavour.
Aye! This is a short captain.log entry to update everyone on the state of things. It is a short entry because we are really close of having js-ipfs
ready and because of that, there is a set of very specific focus points we need to put our attention too. This entry enumerates those action items.
files API
add
, get
and cat
commands on `jsipfs cli. This includes through daemon (multipart messages) and directly calling core. @nginnever is tackling these. Follow on https://github.com/ipfs/js-ipfs/issues/60libp2p
bitswap
module quality
We are mostly done with our module quality improvements (code coverage, readme, etc), down to 5 modules, namely:
@noffle is helping getting these done. If you want to help, jump in into one of those issues as contribute with one of the items that is left, feel also welcome to post questions :)
core api
Arr! This is the last mile Captain.log for js-ipfs milestone 1. It contains the list of things that are missing in order to js-ipfs usable!
files API
add
, get
and cat
HTTP API endpoints. https://github.com/ipfs/js-ipfs/pull/205get
feature implemented https://github.com/ipfs/js-ipfs-api/issues/263libp2p
bitswap
module quality
We are mostly done with our module quality improvements (code coverage, readme, etc), down to 5 modules, namely:
core api
Aye mates! This log entry is full of exciting updates, writing it made me really happy. The IPFS community has worked pretty hard and there is a lot to talk about and a lot of people talking and checking IPFS, and that is amazing!
We now have two apps working on js-ipfs, in the browser, completely written in JavaScript! These are:
Distributed Chat Application using CRDT
Code at: https://github.com/haadcode/orbit
Collaboration tool for distribution of Open Access Scientific material.
Code at: https://github.com/ipfs/paperhub
Both of these apps use orbit-db
, a DB for P2P networks that uses a CRDT to synchronise the state between several peers. You can find [here] a fun demo and visualisation.
http://celebdil.benet.ai:8080/ipfs/Qmezm7g8mBpWyuPk6D84CNcfLKJwU6mpXuEN5GJZNkX3XK/
Huge thank you and lot’s of <3 <3 <3 to everyone that has been contributing so much to the project.
The IPFS project was present at the Decentralised Web Summit, hosted by the Internet Archive. Expect a lot of blog posts from us soon, meanwhile, you can check the lighting talks at https://archive.org/details/DecentralizedWeb20160609pt1
There is still a lot of fun things to tackle, specially when it comes to interop between go-ipfs and js-ipfs, me and @whyrusleeping have been inspecting the wire protocols and found some differences in the implementations, most of them have been fixed, missing now only the Identify one. You can find the list below of things that are on the plan for this month and where you can provide most help too.
node /test/test.js
(not needing mocha directly)Aye mates! Here is another exciting update on the js-ipfs project. This one contains: a new and extended Roadmap for the project; some really exciting feature updates; a description of where our attention is and a plug to our new project tracking process and as usual, a up to date list of items that you can tackle and contribute to js-ipfs!
The IPFS community has spent some quality time in July together (with in person + remote attendance) at the IPFS Workshop to come up with a plan for what are the new and exciting things coming up to the IPFS ecosystem. From those discussions, a new shiny roadmap emerged with very focused milestones, so that we can complete and make js-ipfs better incrementally, while keeping the focus in a subset of tasks at a time and ensure those are completed excellently.
You can find the Full Roadmap at this project repo, however, here is a tl;dr; for your reading pleasure:
Our current focus is now identified by the Milestone where the team is currently hacking on (Milestone 2). In addition to the ROADMAP.md, we've created a waffle board for the js-ipfs project, so that we (including you) can easily identify easily which issues are related with a certain Milestone.
Important to note that this new Project Management Process is still being finalised, you can follow it on the PM repo.
As always, issues that are tagged with 'help wanted' are open for contribution and that label means that they are unblocked, plus they are typically tagged with a difficulty level (let us know if we missed one).
Check our waffle board for a complete list across projects: https://waffle.io/ipfs/js-ipfs
If you are new to the project and want to get a better feeling of how are things, an always good way is to join our Monday hangouts. You can find all the details on the PM repo.
ipfsd-ctl
is being revamped to use bin-wrapper and with it, give a facelift to the documentation. A lot of developers (ourselves included) use this module to spawn go-ipfs instances, it is super handy for testing and electron apps and now it is getting better. Thank you @JGAntunes for leading that!Thank you for reading this entry of the captain.log and a bigger thank you to everyone that has been contributing, either through code, bug fixing, bug reporting, ideas, reviews and so on, you are awesome!!!
Hi everyone, this is your Captain speaking. I'm aware I haven't shared an update here in a while (mainly due we opened new channels like the waffle board, the roadmap, awesome endeavors and so on), but I didn't want to miss the opportunity to capture your attention to Issue https://github.com/ipfs/js-ipfs/issues/795#issue-214633515, the 0.23 release.
v0.23.0 brings a lot of exciting new things, including interop with go-ipfs which many of you waited (for so long!). Make sure to check it out :) Thank you.
I'm officially closing this edition of the Captain.log. It was fun times to write this update to you all but overtime it become a too large time sink and with very little impact given that we have now:
See you in the other channels!
Aye mates!
This is your captain speaking, the IPFS Node.js ship as been to set sail and good winds are blowing! Thank you for all the messages and enthusiasm shared so far, we truly appreciate your support and since some of you are eager to get their hands on code and help with the development, I'll keep this issue updated every week with what has been going on and where you can help the most. To make sure you don't miss any updates, click the 'watch' button on the repo.
LOG - Week of 21st of September
Plan:
Where you can help during this week: