-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Conversation
Not final or worded well, just noting down a few things in my head. Will update...
|
Here is my first draft with things that come to mind:
A lot of these KRs are half baked, we should only consider them finished once they are tested and verified on CI, always. |
Also just some thoughts:
|
Just small notes that I had in my head. Improve error handlingStability of the system, as well as performance and reliability are crucial for the developers' productivity and community engagement. Reference: Improve developer experience, builds and testingMainly improve browser related tooling/configs, decrease bundle size, decrease the time needed for running tests, mitigate timeouts during CI and consider the usage a more strict linter. Reference: Service worker running IPFSThis topic is something that I have been discussing with @hugomrdias for a while. As service workers are becoming more and more used across the web, we should have a "pluggable" service worker. Basically, an application cannot have more than one service worker per scope. This way, and taking into consideration the service-worker-gateway, as well as a service worker that @hugomrdias has implemented for fetching files, we should provide a way for users to wrap several service workers in a single one. Maybe we should open an issue for discussing this further. Ease onboardingDecrease the size of the mountain that a new contributor has to climb for being ready to understand and contribute to the project seems an important challenge to achieve. |
A bit dup of libp2p/js-libp2p#207 (comment), but here it goes as it is important for this team as well.
If I were to name the most important objective I would say right away that is getting Connectivity Magic for js-ipfs. And this doesn't mean only DHT + IPNS, there are a lot of creative things we can do with Relay, Infra discovery, Local Discovery (get MDNS from go and js to be friends), Rendezvous and more. The return to an |
@@ -2,6 +2,30 @@ | |||
|
|||
We try to frame our ongoing work using a process based on quarterly Objectives and Key Results (OKRs). Objectives reflect outcomes that are challenging, but realistic. Results are tangible and measurable. | |||
|
|||
## 2018 Q3 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's continue discussing the OKRs over the markdown, taking inspiration from the notes already shared in this thread.
I've defined 3 main objectives (rewording is welcome if you see the need) for this quarter which capture the most requested and needed features and bug fixes.
Let's shoot to get the final list of KRs by Wednesday, final review on Thursday and ship it on Friday.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@alanshaw @hugomrdias @achingbrain. I went again through your list of suggestions and completed the list of KRs. Please review:
- Check if wording makes sense.
- Check if they are achievable this quarter.
- Check the ones you will want to take the lead.
I've assigned some KRs already, given that they are a continuation of previous work.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do you think it's worth having a 'technical debt' section for things similar to the CI testing time item?
Feature parity with the go API would also be a good thing to shoot for.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
CI testing time is contemplated in the third objective.
What features (APIs) do you feel js-ipfs urgently needs that go-ipfs has that are not captured by the current OKRs?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What features (APIs) do you feel js-ipfs urgently needs
The biggest pain for me at the moment is the DAG API being incomplete.
Also npm-on-ipfs
needs ipfs.name.resolve
and ipfs.name.publish
which I don't think are implemented yet although I guess that would be captured by the 'make npm-on-ipfs a thing' OKR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@achingbrain IPNS is landing this quarter by the libp2p team. Note that publishing and resolving names is for sharing the registry only, all the rest should work without it which is the bulk of the challenge.
OKR.md
Outdated
- npm on IPFS over js-ipfs is a sound way to install deps and gets used for CI | ||
- ... MOAR :D | ||
|
||
**New user/contributor experience is extraordinary** |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@hugomrdias I've a few questions based on your suggestions:
- Why codesandbox.io and not codepen?
- Why is it hard to use bundlers with js-ipfs? More than the two examples we have already (browserify + webpack)?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
codesandbox gives the developer an environment very similar to a local dev environment but inside a browser. You can require/import, bundle, lint, etc. It has integration with github and deploy providers like Now. Even the UI/UX is very similar to popular editors.
This enables a developer to quickly go from a prototype to a github repo ready to build the next awesome dapp in secs, and the other way around enables us to build examples on github synchronised to a static url on codesandbox from where users can fork and play around.
some references:
- https://hackernoon.com/the-future-of-codesandbox-d1ccc5aebf59
- https://twitter.com/mlthuret/status/1012266345529073664
- https://twitter.com/CompuIves/status/1012396990800564225
About bundlers, it's not about being hard to use, it's more about being as easy as possible. Both webpack and parcel provide zero config functionality and we need to make sure ipfs is supported by those default configs. Another thing is, the community is starting to run their bundlers through the complete dependency tree and not use the pre-bundled files from packages, we need to make sure ppl can run webpack/babel through ipfs complete deps tree and still work without errors. An example of this was the work i did to make ipfs work with create-react-app 2.0.
Another topic is size, do we have the best require patterns to enable the best bundle sizes from these bundlers? ex. #1414
Do all of these bundlers include node api polyfills that work as expected ?
There are a couple of suggestions that I didn't include as KRs (e.g. Bundle Size, conventions) because I didn't feel that they should be a full KR but they do support other KRs, so add them as issues on the project. |
OKR.md
Outdated
- A js-ipfs node (Browser & Desktop) always finds files that are on the Gateways | ||
- The rendezvous protocol is a sound solution for DApps (e.g. PeerPad & others) | ||
- The DHT is enabled by default in js-ipfs | ||
- Handles correctly a scenario where the number of Connections grows (through Conn Management Strategy) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In this KR, the implicit things are:
- js-ipfs should have a good Conn Mgmt defaults
- Conn Mgmt should be part of the docs of js-ipfs
- There should be instructions (i.e. Tutorial) on how to apply Conn Mgmt
- This needs to be severely tested
- No browser shall crash from too many connections.
OKR.md
Outdated
- A js-ipfs Daemon will always find other IPFS Daemons (js & go) in the LAN | ||
- A js-ipfs node (Browser & Desktop) always finds files that are on the Gateways | ||
- The rendezvous protocol is a sound solution for DApps (e.g. PeerPad & others) | ||
- The DHT is enabled by default in js-ipfs |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In this KR, the implicit things are:
- To enable the DHT by default, a lot of testing needs to happen. Essentially, finish Awesome Endeavour: DHT Part II #856.
OKR.md
Outdated
|
||
**Daemon is as reliable as it can be** | ||
|
||
- A Daemon runs for 10 days without a crash |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In this KR, the implicit things are:
- Setting up a daemon that gets monitored should be easily reproducible
- It should be tested on our IPFS Infra
- The daemon should be exposed to the "elements" (rest of the network)
OKR.md
Outdated
**The Connectivity Magic story is figured out and solved** | ||
|
||
- A js-ipfs Daemon will always find other IPFS Daemons (js & go) in the LAN | ||
- A js-ipfs node (Browser & Desktop) always finds files that are on the Gateways |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In this KR, the implicit things are:
- The node should be able to get them either by directly connecting and/or Relay through the bootstrappers.
OKR.md
Outdated
- js.ipfs.io is finished and published - @diasdavid | ||
- Onboard 2 new full time contributors - @diasdavid | ||
- Complete the Awesome Endeavour, Documentation | ||
- Cut CI testing time in js-ipfs and js-ipfs-api by 50% (2x) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm all for this, but I think a precursor to this is application/library code stability and test quality, which would also contribute to the reliability objective.
In some cases, the tests are not flakey, the application/library code is flakey and the tests fail because of it.
In other cases the test assertions are false positives or false negatives or are not adequately testing responses or interactions.
Tests should fail when a code contribution causes an error, not when unrelated parts of our application/library code cause errors.
We're making good progress towards addressing those problems already but the important thing to note here is that we're not going to get a daemon running for 10 days without addressing the "flakey tests" problem.
I'd like to put my name down for "A Daemon runs for 10 days without a crash" and "Cut CI testing time in js-ipfs and js-ipfs-api by 50% (2x)".
I feel these are super difficult to achieve given that they're dependent on a moving target (the codebase is constantly changing) but I'm willing to give them a shot.
What you guys think about formalising a bit more these definitions, add the " implicit things" as sub-topics defining the scope and an extra label indicating what would be a good output to validate the sub-topics. let me give a example:
This can be done in any other away, the main thing here is define scope and expected output that will validate each KR. After assignment this can be further improved in other places. |
@hugomrdias we will add the notes to the "Notes on writing" section so that we don't loose it. |
OKR.md
Outdated
- `P0` - @diasdavid - Onboard 2 new full time contributors | ||
- `P2` - ??? - Complete the Awesome Endeavour, Documentation | ||
- `P2` - @alanshaw - Cut CI testing time in js-ipfs and js-ipfs-api by 50% (2x) | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's time to wrap this up.
@alanshaw @achingbrain @hugomrdias, ideally, each should have at least 4 KRs with two of them being a P0. Right now the KR distribution is kind of unbalanced and it is not giving you a set of problems to focus.
Also, I'm not confident that the list is as polished as it can be for the Objectives we have. Now that the Dev Meetings happened and your understanding of the whole project expanded vastly, I want you to go through these again and come up with new proposal. Please put this as your top priority until we freeze KRs next Wednesday.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I didn't appreciate the time frame on the switch to base32 until the developer meetings. I'm happy to spearhead the development work that needs to happen on the JS side of things for this. BTW this is a P0 for In Web Browsers OKRs. I'm also going to continue to be involved with the WebUI rebuild as part of the GUI WG.
OKR.md
Outdated
- `P1` - @diasdavid - A js-ipfs Daemon will always find other IPFS Daemons (js & go) in the LAN (MulticastDNS) | ||
- `P0` - @diasdavid - The DHT is enabled by default in js-ipfs | ||
- `P1` - @diasdavid - Circuit Relay Interop tests are finalized and merged (depends on go-ipfs 0.4.16) | ||
- `P0` - ??? - A js-ipfs node (Browser & Desktop) always finds files that are on the Gateways |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@hugomrdias can I tag you on this one?
OKR.md
Outdated
- `P2` - ??? - One or more js-ipfs daemons are part of the Bootsrapper nodes | ||
- `P0` - @hugomrdias - js-ipfs can handle 1TB of data, both Node.js and Browser | ||
- `P1` - @achingbrain - npm on IPFS over js-ipfs is a sound way to install deps and gets used for CI | ||
- `P?` - ??? - <Something on integration testing between Desktop, Browser and go-ipfs nodes with multiple network configs> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We desperately need a Interop Champion. See what's happening on ipfs/interop#28 (again)
@achingbrain can I task you to get the interop test harness with iptb off the ground?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Now that you contribute bits to go-ipfs and all :D + you have been catching a ton of interop bugs. I believe this makes most sense.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sure, sounds good 👍
OKR.md
Outdated
- `P1` - @diasdavid - A js-ipfs Daemon will always find other IPFS Daemons (js & go) in the LAN (MulticastDNS) | ||
- `P0` - @diasdavid - The DHT is enabled by default in js-ipfs | ||
- `P1` - @diasdavid - Circuit Relay Interop tests are finalized and merged (depends on go-ipfs 0.4.16) | ||
- `P0` - ??? - A js-ipfs node (Browser & Desktop) always finds files that are on the Gateways |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@hugomrdias are you down to take this KR?
OKR.md
Outdated
**Daemon is as reliable as it can be** | ||
|
||
- `P0` - @alanshaw - A Daemon runs for 10 days without a crash | ||
- `P2` - ??? - One or more js-ipfs daemons are part of the Bootsrapper nodes |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@hugomrdias are you down to take this KR?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes
OKR.md
Outdated
|
||
- `P0` - @diasdavid - js.ipfs.io is finished and published | ||
- `P0` - @diasdavid - Onboard 2 new full time contributors | ||
- `P2` - ??? - Complete the Awesome Endeavour, Documentation |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Seems that this will get dropped.
OKR.md
Outdated
- `P0` - @diasdavid - The DHT is enabled by default in js-ipfs | ||
- `P1` - @diasdavid - A js-ipfs Daemon will always find other IPFS Daemons (js & go) in the LAN (MulticastDNS) | ||
- `P1` - @diasdavid - Circuit Relay Interop tests are finalized and merged (depends on go-ipfs 0.4.16) | ||
- `P0` - ??? - A js-ipfs node (Browser & Desktop) always finds files that are on the Gateways |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@hugomrdias are you down to take this KR?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes
OKRs for 2018 Q3 are set! Godspeed team! And may the dag be with you 🌐 |
IPFS: