mirror of
https://github.com/status-im/pluto.git
synced 2025-02-22 07:28:15 +00:00
Added some docs
This commit is contained in:
parent
21e48f29d5
commit
7aa469c3b7
30
docs/discoverability.md
Normal file
30
docs/discoverability.md
Normal file
@ -0,0 +1,30 @@
|
||||
How can an end user discover and install an extension?
|
||||
|
||||
Let’s 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 didn’t 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
105
docs/editor.md
Normal 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
62
docs/ideas.md
Normal 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
21
docs/integration.md
Normal 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.
|
Loading…
x
Reference in New Issue
Block a user