Added some docs

This commit is contained in:
jeluard 2019-04-19 13:41:30 +02:00
parent 21e48f29d5
commit 7aa469c3b7
4 changed files with 218 additions and 0 deletions

30
docs/discoverability.md Normal file
View File

@ -0,0 +1,30 @@
How can an end user discover and install an extension?
Lets explore different options.
##Serendipity
Extensions can be installed via a universal link that can be embedded in a QR code. So it can be as simple as finding a link or a QR code in the wild.
## Browsing a DApp
Extensions references can be added via a status specific API. When browsing a DApp user could be informed that some extensions can be installed. See https://github.com/estebanmino/EIPs/blob/master/EIPS/eip-747.md 1
## Status discovery
Status discovery might relay users extensions. Extensions would then be available via the discovery UI.
## Joining a chat
A list of extensions could be associated to a chat. Once joining, a user would then be proposed to install those extensions to have a better experience. Those extensions would only be active in that specific chat.
Private groups admin could manage this list of extensions.
How can we have extensions associated to public chats?
## Chat command recipient call to action
A chat command might be sent to a recipient who didnt install the extension. It should be trivial for them to install the extension.
## ENS username
Some well know key/value pair associated to a ENS username name could point to a set of extensions. Those extensions could be used during account creation/restoration.

105
docs/editor.md Normal file
View File

@ -0,0 +1,105 @@
# Extension editor
Extension editor is the one tool used to create and permissionlessly publish an extension.
As extension do not rely on existing languages or frameworks barrier to entry is significant.
The following points are considered to improve the developer experience:
- guidance to initiate an extension
- cues to easily build bit by bit
- feedback to make sure it will work as expected
## From zero to hero
Add more examples, templates and one click option to create an extension skeleton.
## A feature complete editor
Improve the editor basic features to match common expectations.
### Never loose work
It should not be possible to loose the result of a work session.
Indivual extensions are saved locally. All extensions ever edited can be retrieved via a workspace style panel.
### Improve syntax navigation
Matching parens and nesting level are visualized using colors.
Easily identify when a block syntax is correct.
### Semantic highlighting
Semantic highlighting: each variable is identifyed by a unique color (https://medium.com/@evnbr/coding-in-color-3a6db2743a1e)
References (events, views) are colored and can be navigated.
### Documentation
Completion and easy doc access is provided for all supported primitives.
### Navigation
A reference can be navigated on user clicks. A query can be listened to (data show inline) (LightTable watch https://www.youtube.com/watch?v=d8-b6QEN-rk)
An event can be triggered with user provided data.
Destructuring is facilitated.
## Prevent creation of invalid extension
The editor is not a regular text editor. Users can't randomly edit extension, making it mostly read-only.
Changes can only be introduced semantically, via custom actions.
New pimitives can only be added via a custom editor action. Primitives children can be added. Text element and properties can be edited.
Renaming a custom primitive will rename all its usages.
### Resources
https://www.timmclean.net/json-editor/
https://github.com/projectional-haskell/structured-haskell-mode
https://www.greenfoot.org/frames/
https://www.jetbrains.com/mps/
http://concrete-editor.org/
# Further improvments
## Time navigation
Triple time axis (navigation)
git history
data changes (query changes, track events)
extension changes (visual undo https://www.youtube.com/watch?v=UDTSyWA31XI https://vimsical.com)
Time travelling
## Illiterate programming
# Resources
- https://harc.ycr.org/project/
- https://fr.wikipedia.org/wiki/Dynabook
- https://history-computer.com/ModernComputer/Personal/Dynabook.html
- https://github.com/reduxjs/redux-devtools
- http://lighttable.com/archive/
- https://github.com/darwin/plastic
- https://harc.ycr.org/project/
- http://cirru.org/
- https://mkremins.github.io/riffle/
- https://glitch.com/culture/an-intro-to-webvr/
- https://github.com/mkremins/flense
- https://developer.apple.com/xcode/interface-builder/
- https://vimeo.com/62618532
- https://www.youtube.com/watch?v=dl0CbKYUFTY
- https://www.levenez.com/NeXTSTEP/
- http://unisonweb.org/posts/
- https://groups.google.com/forum/#!forum/augmented-programming
- https://blog.isomorf.io/
- http://witheve.com/ https://github.com/witheve/Eve https://github.com/witheve/eve-experiments
- https://observablehq.com/@jashkenas/against-the-current-what-we-learned-from-eve-transcript
- https://github.com/witheve/eve-native/blob/master/examples/counter.eve
- http://play.witheve.com/#/examples/editor.eve
- http://play.witheve.com/#/examples/CRM.eve
- http://incidentalcomplexity.com/
- http://mech-lang.org/ https://github.com/mech-lang/mech/blob/master/examples/tutorial.mec
- https://github.com/mech-lang/mech
- https://github.com/mozilla/mentat
- https://dynamicland.org/
- http://incidentalcomplexity.com/
- https://lively-next.org/
- https://observablehq.com/
- https://glitch.com/
- https://observablehq.com/@jashkenas/against-the-current-what-we-learned-from-eve-transcript

62
docs/ideas.md Normal file
View File

@ -0,0 +1,62 @@
## Easy token onboarding
https://medium.com/connext/introducing-the-dai-card-fc46520078d3
https://media.consensys.net/introducing-streaming-payments-for-ujo-with-connext-payment-channels-and-dai-16725929fe38
https://daicard.io/redeem?secret=0x66091135e3c54d1d02bf28cd754bb2c209fc0895dc5f47bad5fa43a1a2923d78&amountToken=1000000000000000000&amountWei=0
https://cash.cryptostaw.com/ (https://medium.com/matic-network/tackling-the-adoption-issue-one-dapp-at-a-time-e756fbabfea0)
https://qrtoken.io
https://medium.com/linkdrop-protocol/introducing-linkdrop-protocol-f612ae181e31
https://twitter.com/rampnetwork/status/1113441698938589185 (buy using a credit card)
## Other exchange integration
Similar to the Kyber extension
https://uniswap.io/
https://twitter.com/uniswapexchange/status/1104658818741477376
https://0x.org/instant
## Price oracle
https://medium.com/@mykelp/introducing-polaris-ced195dd798e (based on Uniswap)
## Easy interface to provide liquidity
https://compound.finance/
https://bzx.network/
https://uniswap.io/
https://makerdao.com/en/
xDai integration
aka Burner wallet
xdai.io
https://twitter.com/uegabs/status/1103011155679870976
## Voting DApp extension
MakerDAO CDP UI
0x integration ideas
https://blog.0xproject.com/22-ideas-to-explore-with-0x-4d551c10dd4e
https://blog.0xproject.com/0x-extensions-enabling-new-types-of-exchange-1db0bf6125b6
## Bloom integration (credit)
bloom.co
https://bloom.co/blog/introducing-bloom-starter/
https://bloom.co/blog/built-on-bloom-doxa-uses-bloom-to-build-more-efficient-lottery-system
Discover local groups based on location
https://www.foam.space/
## Lend money
http://trustlines.network/ (from your contacts)
https://nuo.network/
https://dharma.io/
https://twitter.com/kermankohli/status/1103571081573486592
https://twitter.com/joemccann/status/1103413202052833280
https://dharmalytics.io/
https://medium.com/marbleorg/introducing-marble-a-smart-contract-bank-c9c438a12890
## Secure file exchange
https://blog.datafund.net/fairdrop-secure-private-unstoppable-file-transfer-for-the-free-world-f1a39adbdeab

21
docs/integration.md Normal file
View File

@ -0,0 +1,21 @@
`stateofus.eth` allows anyone to associate an address to a logical name.
On top of that, extra meta information can be stored using the `text` dictionary.
This capacity can be used to link extensions to a name and leveraged by status in various ways.
# An extension can be installed by name
The `status.extension` property is associated to an ENS name. An extension can then easily be installed via its name e.g. `kyber`.
Once installed, the user is automatically notified of updates and can easily install them.
Older versions are still accessible and usable.
# An account restoration triggers an extension activation
An extension can be associated to a regular ENS name representing a user address via `status.account.extension`.
Upon restoration, this extension is triggered allowing to perform restorative actions (e.g. adding contacts, groups, DApps, tokens, ..)
# A public channel with bells and whistles
When opening a public channel for the first time, a ENS lookup is performed on this channel name.
The associated `status.channel.extension` is discovered and proposed for installation.
e.g. Opening `#kyber` triggers a lookup on `kyber.stateofus.eth`. User is proposed to load associated `status.channel.extension`, if defined. This extension installs a `chat.command` in the `#kyber` channel and the kyber `wallet.settings` exchange.