Charm Championship

What is Juju?

Juju is the best way to create, define and scale your services and their relationships within your ecosystem in seconds. Juju is designed for the cloud.

What is a Charm?

A charm tells juju how to manage a service. Examples of a service may be “mysql database” or “wordpress”. After a service is deployed, juju can define relations between them (“wordpress needs mysql”) and expose services to the outside world. A charm usually includes all the intelligence needed to scale the service horizontally. So, for example, the charm for clustered MySQL would know how to add machines to the cluster, preserving the relationships with all the services depending on that service. This lets you build out, and scale up and down, the service you want, especially on the cloud.

What is the Juju Charm Championship?

See: github.com/juju/charm-championship

The Juju Charm Championship is a competition in which contestants submit charmed applications or solutions to be judged by a panel of experts. Winners will be awarded cash prizes of $10,000 per category, as well as the option to participate in a joint marketing programme to promote the charmed solution to end users and customers.

Register here so we can keep you updated and contact you if you’re a finalist.

There are six categories into which contestants can submit bundles:

A bundle is a set of services expressed as charms.

  • Continuous deployment — a bundle of charms that allows startups to be immediately productive, continually launch new features, and scale effortlessly.
  • Media — a bundle of charms that brings value to media content providers, distributors, and associated mass medium technologies.
  • Telco — a bundle of charms that brings value to telecommunications service providers and telecommunications infrastructure.
  • High Availability — represents a full stack of HA-enabled services to accomplish a task.
  • Data Science — represents a full stack of data mining and “big data” analysis.
  • Monitoring — represents a full stack of monitoring solutions for existing services.

Full Charm Championship rules are available at:

Information about the marketing benefits to participants are available at:

Charm Championship Slides

How to get started

  • Registration is essential for contest entry, and updates on contest.
  • Install and configure Juju to use your cloud of choice (AWS, HP Cloud, or your own OpenStack).
  • Deploy the Juju GUI in your cloud to model your deployment.
  • Assemble your infrastructure using the available Juju Charms.
    • If a charm is missing for a service you use, you may need to write one.
    • If a charm lacks an integration feature you may need to implement it.
  • Export your bundle from the Juju GUI by hitting “Shift-D”. This will download a YAML file, which is your submission to the contest.
sudo pip install juju-deployer
juju bootstrap
juju-deployer -c your-gui-export.yaml

Baseline Rules

  • Communication:
  • Submission
    • Charms that are to be submitted for the charm maintainer prize must do so via the contribution steps. For help, contact us via the mailing list or #juju on Freenode.
    • All entries must be submitted for Ubuntu 12.04.
    • Each participant (or participant organisation) may submit as many bundles as they wish, but a maximum of two will be considered in the contest. All deployment bundles and charms must be the participant’s original work.
    • Optionally, submit an RFP to receive feedback. Feel free to mail jorge@ubuntu.com with your idea if you want the team to review it.
  • Work must endeavour to be production quality, not a cowboy script or proof of concept.
  • The judging panel will select the best bundle. The winner will be chosen at the judges’ discretion. Judges’ decision will be final and no correspondence will be entered into. Judges do not have to pick a winner for each category if the entries are deemed undeserving of a prize.

Judgement Criteria

  • Straightforward: It does what is says it does, and the README is detailed enough for any user to be able to deploy your bundle. Pretend you’ve hired a new sysadmin who needs to deploy your entire infrastructure in a new datacenter.
  • High Quality: Each charm in a bundle will be judged according to the charm quality guidelines:
    • Must include charm integration tests in the individual charms. The bundle itself will also be judged according to this criteria
    • Depth and breadth of the bundle’s included tests weight heavily.
    • Charm Quality Score of the entire bundle will be taken into heavy consideration to determine how robust the charms are.
    • 25 on the Charm Rating scale is the baseline, charms not meeting this baseline will be considered detrimental to the bundle’s overall quality.
  • Complexity: Are you solving an interesting infrastructure problem for a complex stack? Does it solve infrastructure “gunk”?
    • Extra points for going deep on identified problem area.
  • Completeness: The completeness of each bundle will be reviewed. Ideally a bundle exposes the configuration services via Juju so the user doesn’t have to remember where to set things by hand.
  • Integration with other services: A mature stack should include charms that integrate with other charms, and have hooks to enable them to be monitored, cached, and do whatever other things you can think of.
  • Robustness of the bundle: Does the combination of charms provide idempotent hooks, clean configuration, and upgrades that are effective and data-safe?
  • Innovative Design: Does the charm separate installation logic from relation logic in a way that provides seamless scalablity, upgradability, etc?
  • Novelty: Does the charm add to charm-helpers or do something in a way that hasn’t been done before?  Does it use Juju for something new and exciting?
  • Responsiveness: a review is necessary to getting the charm into the contest, so submit early and respond often! Failure to respond to feedback may jeopardise your chances of winning.