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

docs: 2018 Q3 OKRs #1409

Merged
merged 15 commits into from
Jul 17, 2018
24 changes: 24 additions & 0 deletions OKR.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Copy link
Member Author

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.

Copy link
Member Author

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.

Copy link
Member

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.

Copy link
Member Author

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?

Copy link
Member

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.

Copy link
Member Author

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.


**The Connectivity Magic story is figured out and solved**

- A js-ipfs Daemon will always find other IPFS Daemons (js & go) in the LAN
- The rendezvous protocol is a sound solution for DApps (e.g. PeerPad & others)
- The DHT is enabled by default in js-ipfs
Copy link
Member Author

@daviddias daviddias Jul 4, 2018

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:

- Handles correctly a scenario where the number of Connections grows (through Conn Management Strategy)
Copy link
Member Author

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.

- ... MOAR :D

**Daemon is as reliable as it can be**

- A Daemon runs for 10 days without a crash
Copy link
Member Author

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)

- One or more js-ipfs daemons are part of the Bootsrapper nodes
- js-ipfs can handle 1TB of data, both Node.js and Browser.
- 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**
Copy link
Member Author

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)?

Copy link
Member

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:

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 ?

- js.ipfs.io is finished and published
- ... MOAR :D

Copy link
Member Author

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.

Copy link
Member

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.

Once these OKRs are finished, you will be able to find them on the [2018 Q3 IPFS OKRs Spreadsheet](https://docs.google.com/spreadsheets/d/19vjigg4locq4fO6JXyobS2yTx-k-fSzlFM5ngZDPDbQ/edit#gid=274358435)

## 2018 Q2

Find the **js-ipfs OKRs** for 2018 Q2 at the [2018 Q2 IPFS OKRs Spreadsheet](https://docs.google.com/spreadsheets/d/1xIhKROxFlsY9M9on37D5rkbSsm4YtjRQvG2unHScApA/edit#gid=274358435)
Expand Down