Merge lp:~jorge/juju-core/bundle-docs into lp:juju-core/docs

Proposed by Jorge Castro
Status: Merged
Merged at revision: 189
Proposed branch: lp:~jorge/juju-core/bundle-docs
Merge into: lp:juju-core/docs
Diff against target: 216 lines (+69/-137)
1 file modified
htmldocs/authors-charm-quality.html (+69/-137)
To merge this branch: bzr merge lp:~jorge/juju-core/bundle-docs
Reviewer Review Type Date Requested Status
Marco Ceppi (community) Approve
Review via email: mp+197558@code.launchpad.net

Description of the change

New charm feature bullets.

To post a comment you must log in.
Revision history for this message
Jorge Castro (jorge) wrote :

These new bullets have been vetted through the juju mailing list.

Revision history for this message
Marco Ceppi (marcoceppi) wrote :

LGTM

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'htmldocs/authors-charm-quality.html'
2--- htmldocs/authors-charm-quality.html 2013-10-10 01:00:24 +0000
3+++ htmldocs/authors-charm-quality.html 2013-12-03 16:14:50 +0000
4@@ -71,143 +71,75 @@
5 <!--End-Preamble-->
6 <article>
7 <section id ="authors-charm-quality">
8- <h1>Charm Quality Rating</h1>
9- <p>People demand quality out of their tools, and the Charm Store is no different. So what does a good charm look like? These are some guidelines on what we think an ideal charm provides users. So we rate charms by the following criteria, and give them a score, up to 39.</p>
10- <p class="note"><strong>Note: </strong>This is an ideal list of what we'd like charms to be. No charm today comes close to getting all of these points; it's a target we set for ourselves so we can determine how we can improve individual charms. It also gives contributors a general idea of where they can spend their time to fix something.</p>
11-
12- <h2>Reliable</h2>
13- <p><strong>9</strong> Possible points</p>
14-
15- <ul class="simple">
16- <li>Deploy on every provider and pass provider tests<ul>
17- <li>+1 AWS</li>
18- <li>+1 HP Cloud</li>
19- <li>+1 OpenStack</li>
20- <li>+1 LXC</li>
21- <li>+1 MAAS</li>
22- <li>+1 Check for integrity from upstream source</li>
23- <li>+1 Fail gracefully if upstream source goes missing</li>
24- <li>+1 Contain a suite of tests with the charm that pass</li>
25- <li>+1 Passes tests from Jenkins on jujucharms.com</li>
26- </ul>
27- </li>
28- </ul>
29-
30-
31- <h2>Secure</h2>
32- <p><strong>4</strong> possible points</p>
33-
34- <ul class="simple">
35- <li>+1 Contain a well tested AppArmor profile</li>
36- <li>+1 Conform to security policies of the charm store<ul>
37- <li>Tight access control</li>
38- </ul>
39- </li>
40- <li>+1 Doesn't run as root</li>
41- <li>+1 Per instance or service access control</li>
42- </ul>
43-
44- <h2>Flexible</h2>
45- <p><strong>2</strong> possible points</p>
46-
47- <ul class="simple">
48- <li>+1 Contain opinionated tuning options<ul>
49- <li>Examples (depends on the service): &quot;safe&quot;, &quot;default&quot;, &quot;fast&quot;, &quot;real fast, not so safe&quot;</li>
50- <li>Don't expose every configuration, pick that reflect real world usage</li>
51- <li>Make it so I don't have to read the book.</li>
52- </ul>
53- </li>
54- <li>+1 Use existing interfaces with other charms<ul>
55- <li>Highly relatable.</li>
56- </ul>
57- </li>
58- </ul>
59-
60- <h2>Handle Data</h2>
61- <p><strong>3</strong> possible points</p>
62-
63- <ul>
64- <li>Integrate data storage best practices<ul>
65- <li>+1 Backups based on service usage</li>
66- </ul>
67- </li>
68- <li>Handle the service's user data<ul>
69- <li>+1 Version control</li>
70- <li>+1 Automated snapshots and backup</li>
71- </ul>
72- </li>
73- </ul>
74-
75- <h2>Scaleable</h2>
76- <p><strong>5</strong> possible points</p>
77-
78- <ul>
79- <li>+1 Responds to add-unit based on the service's needs<ul>
80- <li>Configuration should not require additional steps to scale horizontally</li>
81- </ul>
82- </li>
83- <li>+1 Be tested with a real workload, not just a synthetic benchmark</li>
84- <li>Encapsulate scalability best practices<ul>
85- <li>+1 From upstream and existing devops for that service</li>
86- <li>+1 Community peer reviewed</li>
87- <li>+1 Have a configure option for most performant configuration if not the default</li>
88- </ul>
89- </li>
90- </ul>
91-
92- <h2>Easy to Deploy</h2>
93- <p><strong>7</strong> possible points</p>
94-
95- <ul>
96- <li>Well documented README with examples of use<ul>
97- <li>+1 for a typical workload</li>
98- <li>+1 for workloads at scale</li>
99- <li>+1 Recommend best-practice relationships</li>
100- </ul>
101- </li>
102- <li>Allow installation of the service from ...<ul>
103- <li>+1 Pure upstream source</li>
104- <li>+1 Your local source</li>
105- <li>+1 PPA (if available)</li>
106- <li>+1 The Ubuntu repository</li>
107- </ul>
108- </li>
109- </ul>
110-
111- <h2>Responsive to DevOps Needs</h2>
112- <p><strong>4</strong> possible points</p>
113-
114-
115- <ul>
116- <li>+1 Allow for easy upgrade via juju upgrade-charm</li>
117- <li>+1 Allow upgrading the service itself.</li>
118- <li>Proper maintainership<ul>
119- <li>+1 Responsive to user bug reports and concerns</li>
120- <li>+1 Maintainable, easy to read and modify</li>
121- </ul>
122- </li>
123- </ul>
124-
125-
126- <h2>Upstream Friendly</h2>
127- <p><strong>4</strong> possible points</p>
128-
129-
130- <ul>
131- <li>Follow upstream best practices<ul>
132- <li>+1 Provide an option for a barebones &quot;pure upstream&quot; configuration</li>
133- </ul>
134- </li>
135- <li>Should go lock-step with deployment recommendations<ul>
136- <li>+1 Provide tip-of-trunk testing if feasible</li>
137- </ul>
138- </li>
139- <li>Be cognizant of their release schedule<ul>
140- <li>+1 Fresh charm on release day!</li>
141- <li>+1 Endeavour to be upstream's recommended way to deploy that service in the cloud (website mention or something)</li>
142- </ul>
143- </li>
144- </ul>
145+ <h1>Charm Features</h1>
146+ <p>People demand quality out of their tools, and the Charm Store is no different. So what does a good charm look like? These are some guidelines on what we think an ideal charm provides users. So we rate charms by the following criteria. These features are shown to users in the charm store so that they can see what features a charm provides at a glance.</p>
147+ <p class="note"><strong>Note: </strong>This is an ideal list of what we'd like charms to be. Most charms today do not offer every feature; it's a target we set for ourselves so we can determine how we can improve individual charms. It also gives contributors a general idea of where they can spend their time to fix something.</p>
148+
149+<h2>Data Handling</h2>
150+
151+<ul>
152+<li>Handles the service's user data - Gracefully handle the service's user data so that the user doesn't have to manage it seperately.</li>
153+<li>Provides backup mechanism - Provide a backup mechanism to the service's user data, such as a relationship to a backup subordinate charm, snapshots to a bucket, or other means of getting the data off of the instance.</li>
154+<li>Provides a restore mechanism - Provide a restore mechanism to the service's user data, such as a relationship to a backup subordinate charm, restoring from a bucket, or other means of getting data onto the instance.</li>
155+<li>Provides encryption - Provides encryption of service user data.</li>
156+</ul>
157+
158+<h2>Secure</h2>
159+
160+<ul>
161+<li>Contains a well tested <a href="https://help.ubuntu.com/12.04/serverguide/apparmor.html">AppArmor profile</a> - These can be provided by the package itself.</li>
162+<li>Doesn't run as root - the service should not run as root. Refer to the <a href="http://upstart.ubuntu.com/cookbook/#run-a-job-as-a-different-user">Upstart documentation</a> for tips on how to do this.</li>
163+<li>Per instance or service access control - Accept relationships only from trusted instances and/or services.</li>
164+<li>Defaults to secure communication - default to secure channels when communicating with other services and/or multiple units of the same service.</li>
165+</ul>
166+
167+<h2>Reliable</h2>
168+
169+<ul>
170+<li>Fails gracefully if upstream source goes missing - Sometimes URLs change or upstream services are not available.</li>
171+<li>Contains a suite of integration tests with the charm that pass - We provide <a href="howto-amulet.html">Amulet</a> to help you do this.</li>
172+<li>Configuration options have safe defaults</li>
173+</ul>
174+
175+<h2>Scaleable</h2>
176+
177+<ul>
178+<li>Responds to add-unit based on the service's needs - Users should be able to <tt>juju add-unit</tt> to your service and have it scale horizontally.</li>
179+<li>Responds to remove-unit based on the service's needs - Users should be able to <tt>juju remove-unit</tt> to your service and have it scale down.</li>
180+<li>Reuses existing charms for supporting services - If the service needs relationships to other services it should reuse existing charms from the charm store instead of bundling its own.</li>
181+</ul>
182+
183+<h2>Upstream Friendly</h2>
184+
185+<ul>
186+<li>Follow deployment recommendations from upstream best practices - Most services have a known-good recommendation from the project itself, these should be available for users</li>
187+<li>Provide up to date versions of the upstream release - Provide a config option to allow the user to run newer versions of the service.</li>
188+</ul>
189+
190+<h2>Flexible</h2>
191+
192+<ul>
193+<li>Exposes version of service as a config option to allow easy upgrades - this allows users to maintain their deployments without having to redeploy.</li>
194+<li>Adheres to the coding guidelines of the language your charm is written in</li>
195+<li>Exposed configurations are subsets of opinionated deployments - Don't expose every service option as config. Make sets of decisions and expose those as one config option. For example "fast" vs. "default" vs. "slow-and-safer".</li>
196+<li>Allow installation from the Ubuntu repository - this should be the default if the service is in Ubuntu.</li>
197+<li>Allow installation from pure upstream source - Sometimes people prefer to deploy from pure upstream</li>
198+<li>Allow installation from your local source - Sometimes people prefer to deploy from their vetted local source.</li>
199+<li>Allow installation from PPA or other repository - if available. Some upstreams run their own repositories that they gate and support, users should have an option of using these.</li>
200+</ul>
201+
202+<h2>Easy to Deploy</h2>
203+
204+<p>These will move to policy soon, so consider this a temporary category.</p>
205+
206+<ul>
207+<li>README with examples of use for a typical workload</li>
208+<li>README with examples of use for workloads at scale</li>
209+<li>README with examples of use recommend best-practice relationships</li>
210+</ul>
211+
212+
213+
214
215 </section>
216 </article>

Subscribers

People subscribed via source and target branches