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

Subscribers

People subscribed via source and target branches