~evilnick/juju-core/docs-redesign

« back to all changes in this revision

Viewing changes to htmldocs/authors-charm-store.html

  • Committer: Nick Veitch
  • Date: 2013-06-25 19:16:03 UTC
  • Revision ID: nick.veitch@canonical.com-20130625191603-d7s7z57ihbr44awu
First HTML5-only version

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<!DOCTYPE html>
 
2
<html>
 
3
  <head>
 
4
    <meta charset="utf-8">
 
5
    <title>Juju Documentation - Authoring Charms</title>
 
6
    <link href="//fonts.googleapis.com/css?family=Ubuntu:400,400italic" rel="stylesheet" type="text/css"/>
 
7
    <link href="//fonts.googleapis.com/css?family=Ubuntu+Mono:400" rel="stylesheet" type="text/css"/>
 
8
    <link href="https://juju.ubuntu.com/wp-content/themes/juju-website/css/reset.css" rel="stylesheet" type="text/css"/>
 
9
    <link href="https://juju.ubuntu.com/wp-content/themes/juju-website/css/960.css" rel="stylesheet" type="text/css"/>
 
10
    <link href="https://juju.ubuntu.com/wp-content/themes/juju-website/css/base.css" rel="stylesheet" type="text/css"/>
 
11
    <link href="https://juju.ubuntu.com/wp-content/themes/juju-website/css/resources.css" rel="stylesheet" type="text/css"/>
 
12
    <link href="css/main.css" rel="stylesheet" type="text/css"/>
 
13
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
 
14
    <script src="http://app.stacktack.com/jquery.stacktack.min.js"></script>
 
15
    <script type="text/javascript">
 
16
      $(document).ready(function() {
 
17
            $(document).stacktack();
 
18
      });
 
19
    </script><!--[if lt IE 9]>
 
20
    <script type="text/javascript" src="//html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
 
21
  </head>
 
22
  <body class="resources">
 
23
    <header>
 
24
      <div class="header-login">
 
25
        <ul>
 
26
          <li>&nbsp;</li>
 
27
        </ul>
 
28
      </div>
 
29
      <div class="header-navigation">
 
30
        <div>
 
31
          <nav role="navigation">
 
32
            <ul>
 
33
              <li class="page_item"><a href="https://juju.ubuntu.com/">Home</a></li>
 
34
              <li class="page_item current_page_item"><a href="https://juju.ubuntu.com/">Resources</a></li>
 
35
              <li class="page_item"><a href="https://juju.ubuntu.com/">Community</a></li>
 
36
              <li class="page_item"><a href="https://juju.ubuntu.com/">Charm Store</a></li>
 
37
              <li class="page_item"><a href="https://juju.ubuntu.com/">Events</a></li>
 
38
              <li class="page_item"><a href="https://juju.ubuntu.com/">Survey</a></li>
 
39
              <li>
 
40
                <form id="form-search" method="get" action="/">
 
41
                  <fieldset>
 
42
                    <input id="input-search" type="text" name="s" value="Search">
 
43
                  </fieldset>
 
44
                </form>
 
45
              </li>
 
46
            </ul>
 
47
          </nav><a href="https://juju.ubuntu.com/" class="logo-ubuntu"><img src="https://juju.ubuntu.com/wp-content/themes/juju-website/img/logo-ubuntu.png"></a>
 
48
        </div>
 
49
      </div>
 
50
      <div class="header-content">
 
51
        <div class="clearfix"><img src="https://juju.ubuntu.com/wp-content/themes/juju-website/img/arrow-nav.png" width="9" height="5" style="left:894px; display: block;" class="arrow-nav">
 
52
          <div class="header-navigation-secondary"></div>
 
53
          <div class="header-image"></div>
 
54
          <h1>Resources</h1>
 
55
          <h2>A collection of some of the most important online references for Juju users and developers.</h2>
 
56
        </div>
 
57
      </div>
 
58
    </header>
 
59
    <section id="content" class="container-12">
 
60
      <div class="grid-12 doc-container">
 
61
        <div class="grid-3 doc-navigation">
 
62
          <nav role="navigation">
 
63
            <h1>User Guide</h1>
 
64
            <ul>
 
65
              <li class=""><a href="getting-started.html">Getting Started</a></li>
 
66
              <li class=" sub"><a href="getting-started.html#intro">Introduction</a></li>
 
67
              <li class=" sub"><a href="getting-started.html#install">Installation</a></li>
 
68
              <li class=" sub"><a href="config-aws.html">AWS Configuration</a></li>
 
69
              <li class=" sub"><a href="config-hpcloud.html">HP Cloud Configuration</a></li>
 
70
              <li class=" sub"><a href="">OpenStack Configuration</a></li>
 
71
              <li class=" sub"><a href="config-maas.html">MAAS Configuration</a></li>
 
72
              <li class=" sub"><a href="getting-started.html#test">Testing your setup</a></li>
 
73
              <li class=""><a href="charms.html">Using Charms</a></li>
 
74
              <li class=" sub"><a href="charms.html#intro">What are Charms?</a></li>
 
75
              <li class=" sub"><a href="charms-deploying.html">Deploying Services</a></li>
 
76
              <li class=" sub"><a href="charms-constraints.html">Using constraints</a></li>
 
77
              <li class=" sub"><a href="charms-config.html">Service Configuration</a></li>
 
78
              <li class=" sub"><a href="charms-relations.html">Service Relationships</a></li>
 
79
              <li class=" sub"><a href="charms-exposing.html">Exposing Services</a></li>
 
80
              <li class=" sub"><a href="charms-scaling.html">Scaling Services</a></li>
 
81
              <li class=" sub"><a href="charms-destroy.html">Destroying Services</a></li>
 
82
            </ul>
 
83
            <h1>Charm Authors</h1>
 
84
            <ul></ul>
 
85
            <li class=""><a href="authors-charm-writing.html">Writing a charm</a></li>
 
86
            <li class=" sub"><a href="authors-subordinate-services.html">Subordinate services</a></li>
 
87
            <li class=" sub"><a href="authors-implicit-relations.html">Implicit Relations</a></li>
 
88
            <li class=" sub"><a href="authors-testing.html">Charm Testing</a></li>
 
89
            <li class=" sub"><a href="authors-hooks.html">Hook debugging</a></li>
 
90
            <li class=""><a href="authors-charm-store.html">The Juju Charm Store</a></li>
 
91
            <li class=" sub"><a href="authors-charm-policy.html">Charm store policy</a></li>
 
92
            <li class=" sub"><a href="authors-charm-best-practice.html">Best practices</a></li>
 
93
            <li class=" sub"><a href="authors-charm-quality.html">Charm Quality Rating</a></li>
 
94
            <h1>Reference</h1>
 
95
            <ul>
 
96
              <li class="sub"><a href="commands.html">Juju commands</a></li>
 
97
              <li class="sub"><a href="glossary.html">Glossary</a></li>
 
98
              <li class="sub"><a href="contributing.html">Contribute to the Docs!</a></li>
 
99
            </ul>
 
100
          </nav>
 
101
        </div>
 
102
        <div class="grid-9 doc-content">
 
103
          <article>
 
104
            <section id ="upgrading">
 
105
            <h1>The Juju Charm Store</h1>
 
106
               <p>Juju includes a collection of what we call '''Charms''' that let you deploy whatever services you want in Juju. Since charms are open and worked on by the community, they represent a distilled set of best practices for deploying these services.</p>
 
107
               <ul class="simple">
 
108
               <li>The main distro page is here: <a class="reference external" href="https://launchpad.net/charms">https://launchpad.net/charms</a></li>
 
109
               <li>There are useful tools for downloading, modifying, and contributing here: <a class="reference external" href="https://launchpad.net/charm-tools">https://launchpad.net/charm-tools</a></li>
 
110
               <li>Here is the official tutorial for charm writing: <a class="reference external" href="https://juju.ubuntu.com/docs/write-charm.html">https://juju.ubuntu.com/docs/write-charm.html</a></li>
 
111
               </ul>
 
112
               <h2>Charm Store Process</h2>
 
113
               <p>This process is designed to allow prospective developers to have their charms reviewed and updated in the <a class="reference external" href="http://jujucharms.com">Charm Store</a> in a timely manner that ensures peer reviews and quality.</p>
 
114
               
 
115
               
 
116
               <h2>Submitting a new Charm</h2>
 
117
               <ol class="arabic simple">
 
118
               <li>Install juju and charm-tools.</li>
 
119
               <li>Create a repository, something like <tt class="docutils literal"><span class="pre">mkdir</span> <span class="pre">-p</span> <span class="pre">~/charms/precise</span></tt>, precise is the release code name for the <a class="reference external" href="http://releases.ubuntu.com">release of Ubuntu</a> you wish to target your charm at.</li>
 
120
               <li>If you haven't created your charm yet, you can use <tt class="docutils literal"><span class="pre">charm</span> <span class="pre">create</span> <span class="pre">&lt;ubuntu-package-name&gt;</span></tt> which will fill in some basic metadata info for you. You can check to see if it already exists at <a class="reference external" href="http://jujucharms.com/">http://jujucharms.com/</a>. Also make sure to <a class="reference external" href="http://goo.gl/mvtPh">check the list of open charms</a> to see if anybody is already working on a charm for the service you want to work on. Bugs which have had no activity by the assignee for more than 30 days are fair game and should be unassigned.</li>
 
121
               <li>Once your charm is working and tested with any compatible charms, make sure it passes <tt class="docutils literal"><span class="pre">charm</span> <span class="pre">proof</span> <span class="pre">path/to/your/charm</span></tt></li>
 
122
               <li><tt class="docutils literal"><span class="pre">bzr</span> <span class="pre">init</span></tt> in your charm's root directory</li>
 
123
               <li><tt class="docutils literal"><span class="pre">bzr</span> <span class="pre">add</span></tt> to add all files.</li>
 
124
               <li><tt class="docutils literal"><span class="pre">bzr</span> <span class="pre">commit</span> <span class="pre">-m</span> <span class="pre">'Initial</span> <span class="pre">charm'</span></tt></li>
 
125
               <li><tt class="docutils literal"><span class="pre">bzr</span> <span class="pre">push</span> <span class="pre">lp:~your-launchpad-username/charms/precise/your-charms-name/trunk</span></tt></li>
 
126
               <li>File a bug against charms at <a class="reference external" href="https://launchpad.net/charms/+filebug">https://launchpad.net/charms/+filebug</a> This is used to track the progress of your charm.</li>
 
127
               <li>Subscribe the <tt class="docutils literal"><span class="pre">charmers</span></tt> team by clicking &quot;Subscribe someone else&quot; on the right side of the launchpad page. This is important as it gets your charm in the review queue!</li>
 
128
               </ol>
 
129
               <p>Your charm should then be looked at in a timely manner.</p>
 
130
               
 
131
               
 
132
               <h2>Submitting a fix to an existing Charm</h2>
 
133
               <ol class="arabic simple">
 
134
               <li>Grab the charm you want to fix, we'll use Nagios as an example: <tt class="docutils literal"><span class="pre">bzr</span> <span class="pre">branch</span> <span class="pre">lp:charms/precise/nagios</span></tt></li>
 
135
               <li>Modify it.</li>
 
136
               <li>Commit your fixes <tt class="docutils literal"><span class="pre">bzr</span> <span class="pre">commit</span> <span class="pre">-m</span> <span class="pre">'Your</span> <span class="pre">changelog</span> <span class="pre">entry'</span></tt></li>
 
137
               <li><tt class="docutils literal"><span class="pre">bzr</span> <span class="pre">push</span> <span class="pre">lp:~your-launchpad-username/charms/precise/nagios/fixed-charms-name</span></tt></li>
 
138
               <li>Submit a <a class="reference external" href="https://help.launchpad.net/BranchMergeProposals">merge proposal</a> by going to the charms code page:  <a class="reference external" href="https://code.launchpad.net/~charmers/charms/precise/nagios/trunk">https://code.launchpad.net/~charmers/charms/precise/nagios/trunk</a> and clicking &quot;Propose for merging&quot;</li>
 
139
               <li>In the merge proposal form paste in the <tt class="docutils literal"><span class="pre">fixed-charms-name</span></tt> that you pushed to earlier.</li>
 
140
               <li>For the reviewer field put the <tt class="docutils literal"><span class="pre">charmers</span></tt> team, this will get your code into the review queue!</li>
 
141
               </ol>
 
142
               
 
143
               <h2>Getting Help</h2>
 
144
               <p>Inspired by <a class="reference external" href="http://wiki.bazaar.canonical.com/PatchPilot">Bazaar's Patch Pilot programme</a> there will be patch pilots in <cite>#juju</cite> who can help you get your patch accepted. Check the topic to see who's on duty.  Still need help? Poke us on <a class="reference external" href="https://lists.ubuntu.com/mailman/listinfo/juju">the mailing list</a> ; if you're from an upstream project who wants more detailed help/tutoring, then contact <a class="reference external" href="http://launchpad.net/~jorge">Jorge Castro</a> and we'd be more than happy to get a charm expert to help you out or help you run a Charm School.</p>
 
145
               <p>Some notes:</p>
 
146
               <ul>
 
147
               <li>Please respect that these people might have a few other charms in their queue already.</li>
 
148
               <li>The package you have a question have about might not necessarily be part of the patch pilot's area of expertise. They will still try to help you get your fix in and probably get you in touch with the 'right' people.</li>
 
149
               </ul>
 
150
               
 
151
               <h2>Reviewers</h2>
 
152
               <ol class="arabic">
 
153
               <li><p class="first">Modify the topic in #juju to put yourself down as the reviewer for your shift.</p>
 
154
               </li>
 
155
               <li><p class="first">Check out <a class="reference external" href="http://jujucharms.com/review-queue">the review queue</a> and be responsive on IRC for user questions.</p>
 
156
               </li>
 
157
               <li><p class="first">Review the items in the queue. If the queue is caught up and not on fire, consider the following tasks:</p>
 
158
               <blockquote>
 
159
               <ul class="simple">
 
160
               <li>Answer questions on IRC, the mailing list, and the <a class="reference external" href="http://askubuntu.com/questions/tagged/juju?sort=unanswered&amp;pagesize=50">juju tag</a></li>
 
161
               <li>Work on <a class="reference external" href="http://juju.ubuntu.com/docs|thedocumentation">the documentation</a></li>
 
162
               <li>Work on simple <a class="reference external" href="http://jujucharms.com/tools/proof-errors">proof errors</a></li>
 
163
               <li>Triage bugs in <tt class="docutils literal"><span class="pre">lp:charms</span></tt></li>
 
164
               </ul>
 
165
               </blockquote>
 
166
               </li>
 
167
               <li><p class="first">When your shift is over modify the topic in #juju to put <tt class="docutils literal"><span class="pre">~charmers</span></tt> as the reviewer. (When no one is specifically assigned to review we just default to ~charmers).</p>
 
168
               </li>
 
169
               <li><p class="first">(Optional) Send a mail to the juju list summarizing your shift, new charms you might have promulgated or updated, issues that might have been raised by the review, or anything else you feel you should share with the community.</p>
 
170
               </li>
 
171
               <li><p class="first">Here's the <a class="reference external" href="http://goo.gl/uK9HD">Calendar for reviewing</a> if you want to check what day you have.</p>
 
172
               </li>
 
173
               </ol>
 
174
               
 
175
               <h3>Review Tips and Criteria<a class="headerlink" href="#review-tips-and-criteria" title="Permalink to this headline">¶</a></h3>
 
176
               <dl class="docutils">
 
177
               <dt>Expectations:</dt>
 
178
               <dd><ul class="first simple">
 
179
               <li>The goal is to <em>welcome</em> the contributor and help them have a good experience getting fixes into Ubuntu; your first response should be to <em>thank them profusely</em>.  By making collaboration easier, we can hope to see more contributors and thus lighten the development workload on everyone. This is important for a number of reasons:</li>
 
180
               </ul>
 
181
               
 
182
               <ul>
 
183
               <li>We want to be a welcoming community.</li>
 
184
               <li>With every word of thanks you encourage new contributors and give them more confidence, which is very important, as our part of the community is sometimes hard to understand or look into.</li>
 
185
               <li>We want to make our whole development experience social. We not only want contributors, but team mates.</li>
 
186
               <li>Tips:</li>
 
187
               </ul>
 
188
               
 
189
               <ul>
 
190
               <li>Start your review by saying &quot;Thanks&quot;, no matter what the outcome of the review is going to be.</li>
 
191
               <li>If you recognise somebody you've worked with on IRC, thank them.</li>
 
192
               <li>Consider blogging about a particularly nice contribution. This will not only make the contributor feel valued, but also inspire others with a good example of great work.</li>
 
193
               <li>Encourage contributors to apply for ~charmers if you think they're ready.</li>
 
194
               </ul>
 
195
               
 
196
               
 
197
               <ul class="last simple">
 
198
               <li>If the merge proposal or patch requires more work, encourage the contributor to join <cite>#juju</cite> and discuss the solution there.</li>
 
199
               <li>Follow <a class="reference external" href="http://wiki.bazaar.canonical.com/PatchPilot">these instructions</a> as well as you can.</li>
 
200
               </ul>
 
201
               </dd>
 
202
               <dt>Good tips:</dt>
 
203
               <dd><ul class="first last simple">
 
204
               <li>If this is your first time patch piloting, you may feel more comfortable being a co-pilot your first few runs.  Find a pilot in your timezone and reschedule your time to coincide with theirs.</li>
 
205
               <li>''Optional:'' Send a brief mail after your stint, to say what you did and how it worked out. If you have feedback on the review system or the process, speak up.</li>
 
206
               <li>You're not obliged to deal with all the open patches. We appreciate what you do do.</li>
 
207
               <li>You can prioritize whichever you think best achieves the goal of helping people enjoy getting things done in Juju. That might be the newest ones, neglected patches, easy patches, or those from new contributors.  The <a class="reference external" href="http://jujucharms.com/review-queue">Review Queue</a> sorts by age.</li>
 
208
               <li>If you are unfamiliar with the package, make sure you review everything you can, it's not necessarily your job to merge/promulgate it. If, after you did your review, you can get the contributor in touch with somebody who knows the codebase better, you already helped out a lot.</li>
 
209
               </ul>
 
210
               </dd>
 
211
               </dl>
 
212
               <p>Sponsorship is organized into</p>
 
213
               
 
214
               <ul>
 
215
               <li><a class="reference external" href="https://launchpad.net/~charmers">https://launchpad.net/~charmers</a>:</li>
 
216
               </ul>
 
217
               
 
218
               <p>If something needs review, subscribe ~charmers.</p>
 
219
               <p>You can see the currently pending requests at:</p>
 
220
               
 
221
               <ul class="simple">
 
222
               <li><a class="reference external" href="https://bugs.launchpad.net/charms/+bugs?field.subscriber=charmers">https://bugs.launchpad.net/charms/+bugs?field.subscriber=charmers</a></li>
 
223
               <li><a class="reference external" href="https://bugs.launchpad.net/charms/+bugs?field.subscriber=charmers&amp;field.component=3&amp;field.component=4">https://bugs.launchpad.net/charms/+bugs?field.subscriber=charmers&amp;field.component=3&amp;field.component=4</a></li>
 
224
               <li><a class="reference external" href="http://jujucharms.com/review-queue">http://jujucharms.com/review-queue</a></li>
 
225
               </ul>
 
226
               
 
227
               
 
228
               <h2>Charm Inclusion Policy for Reviewers</h2>
 
229
               <p>Please see the official <a class="reference external" href="policy.html"><em>Charm Store Policy</em></a> document.</p>
 
230
               
 
231
               <h2>Join Us!</h2>
 
232
               <p>We also need help reviewing and testing charms. The Charmers team is granted write access to the Charm Collection and charm-tools. If you'd like to join that group, here are some tips:</p>
 
233
               
 
234
               <ul>
 
235
               <li>Join <a class="reference external" href="https://launchpad.net/~charm-contributors">charm-contributors</a> ! You will immediately be able to help out with bug prioritization.</li>
 
236
               <li>Join the discussion on IRC (Freenode) in #juju and on <a class="reference external" href="https://lists.ubuntu.com/mailman/listinfo/juju">https://lists.ubuntu.com/mailman/listinfo/juju</a></li>
 
237
               <li>Test charms and report your successes or file bugs.</li>
 
238
               <li>Write charms - pick a web app or a backend technology and write a charm.</li>
 
239
               <li>Review new charms <a class="reference external" href="https://bugs.launchpad.net/charms/+bugs?field.tag=new-charm">https://bugs.launchpad.net/charms/+bugs?field.tag=new-charm</a></li>
 
240
               </ul>
 
241
               
 
242
               <p>Upon getting involved with these activities, we'll probably ask you if you'd like to join charmers. If not, go ahead and apply for membership to the team, and <em>send an email to the list letting us know about your reasons for wanting to be a member of charmers</em>.</p>
 
243
               
 
244
               
 
245
                     </section>
 
246
          </article>
 
247
        </div>
 
248
      </div>
 
249
    </section>
 
250
    <div class="shadow"></div>
 
251
    <footer>
 
252
      <div>
 
253
        <nav role="navigation" class="clearfix">
 
254
          <ul>
 
255
            <li><a href="https://juju.ubuntu.com/get-started">Get started</a></li>
 
256
            <li class="page_item"><a href="https://juju.ubuntu.com/get-started/local/">Local</a></li>
 
257
            <li class="page_item"><a href="https://juju.ubuntu.com/get-started/amazon/">Amazon Web Services</a></li>
 
258
            <li class="page_item"><a href="https://juju.ubuntu.com/get-started/hp-cloud/">HP Cloud</a></li>
 
259
            <li class="page_item"><a href="https://juju.ubuntu.com/get-started/rackspace/">Rackspace</a></li>
 
260
            <li class="page_item"><a href="https://juju.ubuntu.com/get-started/openstack/">Openstack</a></li>
 
261
            <li class="page_item"><a href="https://juju.ubuntu.com/get-started/maas/">MAAS</a></li>
 
262
          </ul>
 
263
          <ul>
 
264
            <li><a href="https://juju.ubuntu.com/resources">Resources</a></li>
 
265
            <li><a href="https://juju.ubuntu.com/docs">Documentation</a></li>
 
266
            <li><a href="https://juju.ubuntu.com/resources/videos">Videos</a></li>
 
267
            <li><a href="http://uistage.jujucharms.com:8080/">Juju GUI Demo</a></li>
 
268
          </ul>
 
269
          <ul>
 
270
            <li><a href="https://juju.ubuntu.com/community">Community</a></li>
 
271
            <li class="page_item"><a href="https://juju.ubuntu.com/community/juju-blog/">Blog</a></li>
 
272
            <li class="page_item"><a href="https://juju.ubuntu.com/community/weekly-charm-meeting/">Charm Meetings</a></li>
 
273
            <li class="page_item"><a href="https://juju.ubuntu.com/community/charmers/">Charmers</a></li>
 
274
            <li class="page_item"><a href="https://lists.ubuntu.com/mailman/listinfo/juju">Mailing List</a></li>
 
275
            <li class="page_item"><a href="http://webchat.freenode.net/?channels=juju">Chat</a></li>
 
276
            <li class="page_item"><a href="http://askubuntu.com/questions/tagged/juju?sort=faq&amp;amp;pagesize=50">FAQ</a></li>
 
277
          </ul>
 
278
          <ul class="last">
 
279
            <li><a href="https://launchpad.net/juju">Code</a></li>
 
280
            <li><a href="https://launchpad.net/juju-core">Juju Core</a></li>
 
281
            <li><a href="https://launchpad.net/charms">Charms</a></li>
 
282
          </ul>
 
283
        </nav>
 
284
      </div>
 
285
    </footer>
 
286
    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
 
287
    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.14/jquery-ui.min.js"></script>
 
288
    <script type="text/javascript" src="js/main.js"></script>
 
289
  </body>
 
290
</html>
 
 
b'\\ No newline at end of file'