Merge lp:~beuno/snappy/package-names-spec into lp:~snappy-dev/snappy/snappy-moved-to-github

Proposed by Martin Albisetti
Status: Merged
Approved by: John Lenton
Approved revision: 313
Merged at revision: 362
Proposed branch: lp:~beuno/snappy/package-names-spec
Merge into: lp:~snappy-dev/snappy/snappy-moved-to-github
Diff against target: 142 lines (+138/-0)
1 file modified
docs/package-names.md (+138/-0)
To merge this branch: bzr merge lp:~beuno/snappy/package-names-spec
Reviewer Review Type Date Requested Status
John Lenton (community) Approve
Alejandro J. Cura (community) Approve
Review via email: mp+255143@code.launchpad.net

Commit message

Initial spec for package naming and behavior.

Description of the change

Initial bootstrap for the package naming spec.

To post a comment you must log in.
Revision history for this message
Alejandro J. Cura (alecu) wrote :

Doc looks mostly fine. Some small corrections and some questions added.

review: Approve
Revision history for this message
John Lenton (chipaca) :
lp:~beuno/snappy/package-names-spec updated
308. By Martin Albisetti

Merge from trunk

309. By Martin Albisetti

Update to reflect Austin discussions

310. By Martin Albisetti

Review comments

311. By Martin Albisetti

Review comments

312. By Martin Albisetti

s/\/.

313. By Martin Albisetti

More examples

Revision history for this message
John Lenton (chipaca) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added file 'docs/package-names.md'
2--- docs/package-names.md 1970-01-01 00:00:00 +0000
3+++ docs/package-names.md 2015-04-15 22:04:11 +0000
4@@ -0,0 +1,138 @@
5+# Snap package naming convention
6+## Overview
7+A developer specifies the flat package name in the manifest file, only one of
8+the same package name can be active at any time, you have to switch between
9+them if you want to run different ones.
10+
11+We will deliver this feature in 2 phases:
12+
13+## Phase 1
14+
15+### User experience
16+
17+#### Search
18+
19+ $ snappy search vim
20+ vim.snappy A popular text editor
21+ vim.stevesh Vim + python plugins
22+ vim.matilda Vim with a pink batman themes
23+
24+
25+#### Installing packages
26+
27+ $ snappy install vim
28+ Installing vim.snappy
29+ 4.03 MB / 4.03 MB [==============================] 100.00 % 124.66 KB/s
30+ Done
31+
32+
33+ $ snappy install vim.matilda
34+ Installing vim.matilda
35+ Error: Cannot install vim.matilda, you already have a package called "vim" installed.
36+
37+
38+#### Running applications
39+ $ vim.edit
40+
41+
42+## Phase 2
43+
44+### User experience
45+
46+#### Search
47+
48+ $ snappy search vim
49+ vim A popular text editor
50+ 12 forks of "vim" not shown. Use --show-all to see all available forks.
51+
52+ $ snappy search vim --show-all
53+ vim A popular text editor
54+ vim.stevesh Vim + python plugins
55+ vim.matilda Vim with a pink batman themes
56+
57+ $ snappy search clock
58+ clock.asac Even a broken clock is right twice a day
59+ clock.stevesh Proper implementation of a clock
60+ clock.matilda A waltzing clock
61+
62+
63+#### Installing packages
64+ $ snappy install vim
65+ Installing vim.snappy
66+ 4.03 MB / 4.03 MB [==============================] 100.00 % 124.66 KB/s
67+ Done
68+
69+ $ snappy install vim.giuseppe
70+ Installing vim.giuseppe
71+ 6.33 MB / 6.33 MB [==============================] 100.00 % 114.01 KB/s
72+ Done
73+ Switch to vim.giuseppe from vim.snappy? (Y/n)
74+ $ Y
75+ Name Date Version Developer
76+ vim 2015-01-15 1.1 vimfoundation
77+ vim 2015-01-15 1.7 giuseppe*
78+
79+ $ snappy switch vim/vimfoundation
80+ Name Date Version Developer
81+ vim 2015-01-15 1.1 vimfoundation*
82+ vim 2015-01-15 1.7 giuseppe
83+
84+
85+#### Running applications
86+ $ vim.edit
87+
88+Notes:
89+ runtime does not need to remember that an alias was installed it just
90+ tracks what the alias resolved to maybe one can later ask "what is the
91+ current default of vim" or "what would it resolve to... maybe --dry run"
92+
93+#### Updates
94+When you update, you always update to the original package you installed,
95+regardless of whether the mapping for vim has changed.
96+
97+## Manifest & metadata
98+Package manifests will only contain the package name (`vim`), the origin of
99+the app will be fed by the store separately.
100+
101+## Filesystem
102+Apps will be installed on the filesystem with their package name and origin:
103+`/apps/vim.beuno/1.1/`
104+
105+## Garbage collection
106+No automatic garbage collection of installed forks.
107+
108+## Sideloading
109+You can only sideload one fork of an app, there is no switching on sideloads.
110+
111+## Touch & other GUIs
112+Snappy will provide the basic building blocks, each platform can decide how to
113+deal with it.
114+The store will guarantee the uniqueness of a package name and origin
115+combination, Snappy will allow packages with the same name to be co-installed
116+but will not be co-runnable.
117+How UIs will be mapped to the primitives described in this document is not yet
118+defined. As part of that effort new requirements and feature nuances for
119+snappy namespaces could arise that snappy will work with engineering teams to
120+realize the best solution.
121+(for instance it might be that touch design might deem the need to allow
122+co-installation and co-runnability of namespaced snap variants needed to
123+realize their UX/app story, but we explicitly leave that problem out for now).
124+
125+## Implementation details
126+The packages will continue to be accessed in the store using their full
127+namespaces (`/api/v1/vim.beuno`)
128+On install, Snappy will ask you to choose which vim to use on runtime
129+if you have more than one (defaults to what you are installing)
130+There will have to be a (secure) way of persisting the user’s selection
131+of which vim is active
132+
133+## Ecosystem details
134+Package names will now mean a specific piece of software. We will have to make
135+sure developers are aware on upload that if an existing piece of software
136+exists with that name, they are declaring themselves as an alternative to it
137+There are long-term consequences for picking a package name. If you choose
138+“unity” as your package name, meaning the GUI, but down the line “unity”
139+becomes the gaming engine, you will need to be pushed out to a different name.
140+
141+## Open questions
142+ * Must finalize what the `APP_ID` is going to be (composed? no devname? etc)

Subscribers

People subscribed via source and target branches