Skip to content
This repository has been archived by the owner on Feb 8, 2023. It is now read-only.

Sprint: Browser accesses go-ipfs content #310

Closed
26 of 50 tasks
daviddias opened this issue Jan 13, 2017 · 40 comments
Closed
26 of 50 tasks

Sprint: Browser accesses go-ipfs content #310

daviddias opened this issue Jan 13, 2017 · 40 comments
Assignees

Comments

@daviddias
Copy link
Member

daviddias commented Jan 13, 2017

Hi! If you are coming to this issue for the first time, this might be new to you. We are going to try something new, instead of having milestones and tackling through them during the quarter, we are going to have teams focused for 2 week periods on getting some parts of IPFS that fulfill a user story, so that things can be completed incrementally and in a discrete way instead of continuously spreading our attention too thin.

What is this sprint going to achieve

Browser accesses go-ipfs content

  • As a user, be able to cat files from a browser ipfs node that the user added through go-ipfs CLI
  • User story:
      1. User follows an example on js-ipfs README and spawns a node in the browser
      1. User sees that node has already some peers (bootstrappers)
      1. User adds a file with go-ipfs CLI
      1. User cats the file in the browser node and sees the file

Tasks

Outside of the sprint (Time on this should not be invested unless all the above is done

  • Improving Init endeavour @haad

Timeline

We will be running this sprint for 2 weeks, starting on Week 3 (15 Jan) and ending on the final day of Week 4 (22 Jan). During these period, we know that:

We will be using this issue to do daily check in, please avoid commenting if you are not check in in, if you have a question, consider opening another issue or asking through the #IPFS channel in freenode.

@daviddias
Copy link
Member Author

daviddias commented Jan 16, 2017

David's check in Mon 16

  • Flying out to Lisbon today during the morning ✈️
  • Available for the calls later
  • Will use the remaining available time to focus on working on:
    • Update js-multiaddr to support this new transport
    • Update js-mafmt to support this new transport
    • complete libp2p-webrtc-direct
    • Integrate webrtc-direct in webrtc-star
    • test behind https
    • deploy it as a new signalling server

PS: #first :D

Update: Mon 16: got some hiccups with webpacking libp2p-webrtc-direct (random segfaults, similat to ones seen in js-ipfs-api), not a blocker, should haven't invested so much time trying to solve them, will compensate tomorrow.

@haadcode
Copy link
Member

haadcode commented Jan 16, 2017

I'll be working on the following today:

  • Design the interop examples
  • Implement skeletons for the examples
  • Open issues and PRs for tracking the work
  • Weekly calls
  • Update Waffle

I don't have any blockers atm. Will need feedback for examples soon.

@victorb
Copy link
Member

victorb commented Jan 16, 2017

2016-01-16

Gonna be working on finishing @dignifiedquire's implementation of multiplex. To track: libp2p/js-libp2p-mplex#44

Update end-day: Still working on getting the .destroy stuff to work correctly, looking at spdy implementation for inspiration and making the interface-stream-muxer tests to pass.

2016-01-17

Starting from where I left off yesterday, getting .destroy to work in js-libp2p-multiplex branch pull-streams

Update end-day: Ended up having a call with Friedel and David about what to do with pull-streams not establishing connections unless reading, adding test case for closing connections if read/not read.

2016-01-18

Following the todo at https://hackmd.io/KYdmGMAYQVgTgLQgMwCYAcCAsJ2PQGzgBmCAhsQIyXhbCqRwAmMQA===?view#

Update end-day: Managed to get tons of help from our dear and beloved @diasdavid and we made lots of progress on getting streams to close properly in multiplex. Fork here: https://github.com/diasdavid/multiplex/tree/fix/close-muxed-streams

2016-01-19

Continuing with the todos at https://hackmd.io/KYdmGMAYQVgTgLQgMwCYAcCAsJ2PQGzgBmCAhsQIyXhbCqRwAmMQA===?view#

Update end-day: Got all the tests from interface-stream-muxer to pass, including the mega-stress test (even though it takes ~20 minutes to finish) with Davids help to close the streams probably. Gonna continue today with the two items of testing with go-ipfs for interop.

2016-01-20

Gonna look into getting interop to work between js-libp2p and go-libp2p, identify any issues and make it easy to reproduce, probably gonna spend some time talking to the go-ipfs team as well.

Update middle-day: Got a new TODO list on what I'm working on.

Update end-of-day: Got stuck when node-webrtc doesn't work properly on Ubuntu 16.04 systems, leading to segfaults.

2016-01-23

Catching up with notifications of stuff happening during the weekend, continuing with the todo-list above and making sure ipfs/js-ipfs#721 gets solved.

2016-01-24

Got stuck at .identify not working in .swarm because of multiplex. David submitted a fix today libp2p/js-libp2p-mplex#55 and I'll continue with the todo items above, basing my work of that branch.

Update end-of-day: Not the most productive day, needed lots of help but lots of help was not available to me. Enabled some more testing and continued to test the interop between go-libp2p and js-libp2p.

2016-01-25

Plan for today is to finish the multistream-select tests and continue to debug the problems with interop between go-libp2p and js-libp2p

2016-01-26

Two remaining issues for interop, hangup doesn't work properly in swarm and somehow the streams closes before finishing when using the echo example.

Also, probably gonna have to spend some time these last two days on helping data.gov sprint with setting up kubernetes/test-cluster.

Middle of the day: Switching to take over the documentation/examples effort and David moving to focusing on the muxers compatibility.

@ghost
Copy link

ghost commented Jan 16, 2017

Damn I was pretty sure I posted earlier.

  • No blockers
  • Current: looking into relay in go-ipfs, what needs fixing, and how to actually make use of it.
  • Next: /wss prespec

@victor
Copy link

victor commented Jan 16, 2017 via email

@ghost
Copy link

ghost commented Jan 16, 2017

@victor uhm, are you trying to tell use anything related to this sprint?

@daviddias
Copy link
Member Author

@victor my apologies for bothering you, apparently we tagged you instead of @victorbjelkholm. Fixed now, you can unsubscribe to this issue.

@ghost
Copy link

ghost commented Jan 16, 2017

Ah that makes sense, sorry victor!

@daviddias
Copy link
Member Author

daviddias commented Jan 17, 2017

David's check in Mon 17

  • Integrate webrtc-direct in webrtc-star
  • test behind https
  • deploy it as a new signalling server
  • review haads first example
  • fix interop tests in js-ipfs
  • fix http-api tests in js-ipfs
  • release 0.21 release 0.21 js-ipfs#712 (comment)

Update:

  • Unfortunately my idea to bypass wss is not viable, the browser will block HTTP GET requests to non https if a page is loaded through https. The only thing that passes through are things like CSS and images, but it does gives warnings. It would probably still be doable if I hacked around an <img> tag, but that is at the level of XSS injection to make a thing work. What we really need is https and wss.
  • @lgierth I've updated with the list of tasks with a https://signal.libp2p.io @lgierth + @diasdavid section. This has become one of the priorities, since the webrtc-direct hack won't do the trick :(

@haadcode
Copy link
Member

Yesterday:

  • Implemented the browser side of things for the first example ("basic"), and with it you can .cat pictures between browser nodes (try it from tutorial: Transfer Files  js-ipfs#714).
  • Drafted a skeleton for a tutorial for the basic example.

Today:

  • Implement first version of the second example ("advanced")
  • Continue writing the tutorial
  • Test the actual interop with the basic example (if available today in js-ipfs).

Blockers:
none

@daviddias
Copy link
Member Author

Notes from pull-multiplex extravaganza discussion: https://hackmd.io/KYdmGMAYQVgTgLQgMwCYAcCAsJ2PQGzgBmCAhsQIyXhbCqRwAmMQA===?edit

@ghost
Copy link

ghost commented Jan 17, 2017

Yesterday I examined the relay impl in go-ipfs. It's not wired up with anything and doesn't provide end-to-end encryption. I've described a way forward in libp2p/go-libp2p#82

  • Blockers: feedback on relay-as-a-transport (see above).
  • Current: adding multiaddr codes for /relay, /wss, /dns to go-ipfs
  • Next: implement relay-as-a-transport and wire it up

@daviddias
Copy link
Member Author

daviddias commented Jan 18, 2017

David's check in Wed 18

@haadcode
Copy link
Member

End of the day check in:

Tomorrow:

  • Make the interop work
  • Continue writing the tutorials

Blockers:

  • I couldn't find documentation on how do I connect js-ipfs (node.js) and js-ipfs (browser) nodes, so I need instructions on links to documentation to get started. cc @diasdavid

@daviddias
Copy link
Member Author

I couldn't find documentation on how do I connect js-ipfs (node.js) and js-ipfs (browser) nodes, so I need instructions on links to documentation to get started. cc @diasdavid

@haadcode by using webrtc-star, they will find each other automatically, however it would be good, since go-ipfs won't have that feature, that you use websockets addr in the js-ipfs node and that in the demo page, you have a box saying "multiaddr to dial". Which reminds me, it would be ideal to have a list of peers connected visual in the webdemo

@ghost
Copy link

ghost commented Jan 18, 2017

@daviddias
Copy link
Member Author

David's check in Thu 19

@haadcode
Copy link
Member

After yesterday's check in:

  • Tried js-ipfs(nodejs) and js-ipfs(browser) interop without success. Getting segfaults sometimes and .cat is not working either way, but I do get the peers connected. I need to discuss this in sync today, will ping relevant people on IRC:
  • Added a list of connected peers to the UI of the second example (file manager)

Today:

  • Will add the missing UI elements for manually connecting to peers ("Connect to multiaddr" inputs)
  • Continue figuring out how to make the interop work
  • Document the interop steps as I discover what is needed

Blockers:
I have 2 days left for this sprint and while the browser side of things should be good to go in terms of finishing them, leaving them for others to work, I'm running low on time for writing the tutorials and documentation. I'm not convinced I can finish all of that in 2 days (and I'll be gone next week). I know you're not in this sprint @RichardLitt, but would you be able to help out next week with the tutorials (I can work with you on those).

I'll bring these up in our sync today so we can discuss the steps forward.

@daviddias
Copy link
Member Author

I've noticed that folks aren't giving love to the waffle board, what's up?

@daviddias
Copy link
Member Author

daviddias commented Jan 19, 2017

Group Check In Jan 19, Thu

Notes: https://hackmd.io/GYTgJmCMDsDMwFoBMBTJAOBAWADAI0gTwGMwkF0A2LMSnYPdYaEIA===?both

Top priorities before the weekend:

@daviddias
Copy link
Member Author

daviddias commented Jan 23, 2017

David's check in Mon 23

Plan:

@ghost
Copy link

ghost commented Jan 24, 2017

Lars monday

  • Blockers
    • CR, but no real "blocker" blockers
  • Last
    • Deployed two hosts running go-ipfs with /ws listeners (not wired to nginx yet)
    • SSL cert for star-signal.cloud.ipfs.team
  • Today
    • Circuit relay proposal for review before implementation

@daviddias
Copy link
Member Author

daviddias commented Jan 24, 2017

David's check in Tue 24

  • Continue speeding up Pedro on things
  • Continue helping @victorbjelkholm with the Stream Muxer situation (made a lot of progress yesterday, still ongoing)
    • Fix multiplex 'clean itself out' tests
    • Understand why the heck go-multiplex limits to 1024

Update:

@ghost
Copy link

ghost commented Jan 24, 2017

Lars tuesday

  • Blockers
    • no real "blocker" blockers
  • Yesterday
    • circuit-relay prespec and ethereum meetup
  • Today
    • circuit-relay prespec
    • /ws bootstrappers

@daviddias
Copy link
Member Author

daviddias commented Jan 25, 2017

David's check in Wed 25

  • Focus of this day will be doing an last pass on the examples and doing the 'documentation from 0 to hero'

@RichardLitt
Copy link
Member

@RichardLitt today:

@ghost
Copy link

ghost commented Jan 26, 2017

Lars wednesday

  • No blockers
  • Yesterday
    • Wanted to get circuit-relay prespec done, but got distracted by 0.4.5 release prep and pinbot/gateway debugging.
  • Today
    • circuit-relay prespec
    • Provisioned a host for the 300TB sprint

@ghost
Copy link

ghost commented Jan 26, 2017

circuit-relay prespec: libp2p/go-libp2p-circuit#1 -- feedback much appreciated, sorry this document gets written so late in the sprint.

@daviddias
Copy link
Member Author

daviddias commented Jan 26, 2017

David's check in Thu 26

  • Review circuit-relay prespec from @lgierth
  • Continue working on the examples
  • last sync with Pedro before he leaves Lisbon
  • Group check in
  • Prep session for next sprint

@daviddias daviddias reopened this Jan 26, 2017
@ghost
Copy link

ghost commented Jan 26, 2017

Lars thursday

@daviddias
Copy link
Member Author

daviddias commented Jan 26, 2017

The last mile 🏃🏽💨

We just had the second group check in to discuss the state of tasks and decide what are the things which we should spend our time for the last day and showcase Monday. Notes: https://hackmd.io/GYEwxiCMkBwKwFowENgAYEBYBsAjbCyAnGogKYy5lFjC65EBMYQA?edit

@ghost
Copy link

ghost commented Jan 30, 2017

Here are two /ws bootstrappers which also have the gateway on the same port:

/ip4/159.203.166.189/tcp/80/ws/ipfs/QmWyLSnMHW2H6bmCG9e9PQq4ARve94JduvGjbutUuzx4a8
/ip4/178.62.215.134/tcp/80/ws/ipfs/QmVcj9MATxGTAFoQSbrJvZ9Fbs4Jzvrxy9hyJeRwbW8NeA

These should also work on /tcp/443/wss but I haven't tested it, as I have yet to patch /dns and /wss support into go-ipfs. So I'm not yet able to dial the same with go-ipfs.

peers graph

@ghost
Copy link

ghost commented Jan 30, 2017

The respective /dns+/wss addresses:

/dns4/strawberry.i.ipfs.io/tcp/443/wss/ipfs/QmWyLSnMHW2H6bmCG9e9PQq4ARve94JduvGjbutUuzx4a8
/dns4/blueberry.i.ipfs.io/tcp/443/wss/ipfs/QmVcj9MATxGTAFoQSbrJvZ9Fbs4Jzvrxy9hyJeRwbW8NeA

and https://strawberry.i.ipfs.io + https://blueberry.i.ipfs.io for the gateway.

@ghost
Copy link

ghost commented Jan 30, 2017

For deferring routing to the gateway:

And you can use api/v0/refs?r=true to warm up the /ws bootstrapper/gateway with a stuff added on other go-ipfs nodes. That way we cheat our way around the lack of relaying.

@daviddias
Copy link
Member Author

You know something cool, now we have multiplex working woooo \o/ :D Once go-ipfs 0.4.7 is release, no user will have to worry about it again :D

@flyingzumwalt
Copy link
Contributor

@diasdavid can we call this "done"?

@daviddias
Copy link
Member Author

Yes! :D

@daviddias daviddias removed the Week 3 label Jul 3, 2017
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants