mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
[Specs] Ideas for linkability in Sky apps.
TBR=abarth Review URL: https://codereview.chromium.org/1148123002
This commit is contained in:
parent
67109ce3e1
commit
5c864ec91c
89
specs/linkability.md
Normal file
89
specs/linkability.md
Normal file
@ -0,0 +1,89 @@
|
||||
Linkability
|
||||
===========
|
||||
|
||||
This file has ideas only, so far. Comments welcome.
|
||||
|
||||
Scenarios
|
||||
---------
|
||||
|
||||
* soduku app:
|
||||
* want to share the board layout, but not my progress so far
|
||||
* want to transfer my progress to another device
|
||||
* a wikipedia-like app:
|
||||
* follow links to other topics
|
||||
* have links from other apps (e.g. search) to a specific subsection of a topic
|
||||
* an instant-messenger app:
|
||||
* bookmark specific group conversations
|
||||
* a social network app:
|
||||
* link to specific posts
|
||||
* link to social network constructs like user lists (twitter), communities (g+), walls (fb), users…
|
||||
* an IDE
|
||||
* want to save a particular state of open windows, maybe to share with other developers
|
||||
* Navigation app
|
||||
* want to link to different modes of the app: nav mode, search page, personal profile, settings, etc
|
||||
* want to link to specific points of interest, either public (restaurant) or private (home, work, saved locations)
|
||||
* want to link to a specific map location, zoom level, direction, angle, time of day (for shadows), route (for navigation)
|
||||
* want to link to a destination in nav mode (without a route)
|
||||
* Podcast app
|
||||
* want to link to a specific view (e.g. in doggcatcher, feeds, audio, video, news...)
|
||||
* want to link to a specific podcast (maybe independently of the app)
|
||||
* want to link to a specific time in a specific episode of a specific podcast
|
||||
* save ui state (e.g. size of ui area vs podcast list in doggcatcher, scroll position in a list, specific settings window being on top of specific tab at a specific scroll position, etc)
|
||||
* News app
|
||||
* categories
|
||||
* articles
|
||||
* sets of categories
|
||||
* sets of categories + a selected category + a scroll position
|
||||
* app sections (e.g. Newsstand’s Explore vs Read Now vs My Library)
|
||||
* specific settings in the settings section of the app
|
||||
* Code Review Tools
|
||||
* a specific code review
|
||||
* a specific file in a specific code review
|
||||
* code review plus scroll position
|
||||
* specific comment
|
||||
* the state of the UI, such as which changes are visible, which comments are expanded, sort settings, filter settings, etc; whether the settings window is open, what tab it’s open to, what field is focused…
|
||||
|
||||
UI
|
||||
--
|
||||
|
||||
* Sharing current state to another device using NFC: just put the phones together, the active app(s?) serialise their state to a “URL” and that is sent to the other device
|
||||
* App exposes a “permalink” or “get link” UI that exposes a string you can Share (a la Android’s Share intent) or copy and paste.
|
||||
* An accessibility tree should expose the URL of each part of the app so that a user with an accessibility tool can bookmark a particular location in the app to jump to it later.
|
||||
|
||||
Thoughts
|
||||
--------
|
||||
|
||||
* Seems like you link to three kinds of things:
|
||||
* different in-app concepts, which might be shared across apps
|
||||
* specific posts in a social network
|
||||
* users
|
||||
* particular game board starting configurations, game levels
|
||||
* wikipedia topics
|
||||
* search results
|
||||
* POIs in a map
|
||||
* videos on Vimeo, YouTube, etc
|
||||
* a code review / CL / pull request
|
||||
* a comment on a code review
|
||||
* a file in a code review
|
||||
* a comment in a blog post
|
||||
* telephone numbers
|
||||
* lat/long coordinates
|
||||
* podcasts
|
||||
* different top-level parts of the app (shallow state)
|
||||
* e.g. in Facebook, linking to the stream; in G+, linking to the communities landing page, etc
|
||||
* in a maps app, the mode (satellite, navigation, etc)
|
||||
* deep state
|
||||
* the current state of a particular game board, e.g. all the piece positions in chess, all the current choices in soduku...
|
||||
* what windows are open, what field is focused, what widgets are expanded, the precise view of a 3D map, etc
|
||||
* subsection of a topic in wikipedia (scroll position)
|
||||
* Since almost every app is going to have app-specific items, we need to make the item space trivially extensible (no registry, no fixed vocabulary). This means that common items (e.g. lat/long coordinates, podcasts) will probably evolve conventions organically within communities rather than in a centralised fashion
|
||||
* We don’t have to use URLs as they are known today, but doing so would leverage the existing infrastructure which might be valuable
|
||||
|
||||
Ideas
|
||||
-----
|
||||
|
||||
* Two kinds of URLs: application state, and “things”.
|
||||
* Application state URLs consist of an identifier for the app, plus a blob of data for how to open the app
|
||||
* Thing URLs identify a thing, either by string name, opaque identifier, or more structured data (e.g. two comma-separated floating point numbers for lat/long).
|
||||
* Thing URLs have a label saying what they are, e.g. “poi” or “geo” or “cl-comment” or something.
|
||||
* Maybe “apps” are just things, and going to an app is like picking that app thing from the system app, the same way you’d pick a post from a social network app.
|
||||
Loading…
x
Reference in New Issue
Block a user