Flag Bearer Charms (application)

Registered by Antonio Rosales

[GOAL]
Develop a list of flag bearer charms. Develop a list of reference charms.

[RATIONALE]
Folks interested in charms would like to know which charms we would recommend as an example of deploying an interesting technology into the cloud. We also need examples of reference charms new contributors can look at as an example of how to charm up a service.

Blueprint information

Status:
Not started
Approver:
Antonio Rosales
Priority:
Medium
Drafter:
None
Direction:
Needs approval
Assignee:
Mark Mims
Definition:
New
Series goal:
Accepted for saucy
Implementation:
Unknown
Milestone target:
None

Related branches

Whiteboard

[USER STORIES]

James is a seasoned Rails admin and he's sick of repeating his deployments when his site needs to scale or be redeployed.

Kirk is a shiny new CS grad and wants to get involved with node.js. He knows how to code, but wants a "node stack out of the box" so he can get up and running so he can concentrate on learning the platform instead of metawork.

Robert wants to convince his company to move to the cloud, but his boss isn't convinced that the tools/stacks they depend on for their application isn't provided in Ubuntu.

[ASSUMPTIONS]
[RISKS]
[IN SCOPE]
[OUT OF SCOPE]
[USER ACCEPTANCE]
[RELEASE NOTE/BLOG]

[notes from cloudsprint 2013-05]

What makes a reference charm
Would you recommend this charm to a new contributor to look at
What makes a rock star charm
Charms we want to highlight and show as getting interesting tech deployed

Rock-star/ Flag Bearer charms:
Not necessarily an educational charms
Charms we want to highlight

Reference Charms
Apache2
Node-app
Puppet Example
Chef Example

Flag Bearer Candidates:
Postgres
MongoDB
Cassandra
Hadoop
Ceph
RabbitMQ
WordPress
GUI
Ganglia
Apache2
MySQL
Percona XtraBackup - Charm to be created
Get feedback from downloads: http://store-charts.labix.org/#precise-downloads-last-week

Differences between Charms

- Reference - Something to learn from, an ideal starting point.
- Flagbearer - The Best of the Best; sophisticated, mature, and shows off advanced features. Charm may be more complex to follow for an initial getting started charm.

Charm Quality Rating: https://juju.ubuntu.com/docs/charm-quality.html

Criteria:

... for Reference Charms:

- Actively maintained
- Maybe target all the commonly use languages for charms in order to have examples in each lang?
    - We'll pick one reference charm in popular languages?
- _Very well_ documented, to teach people things, not just normal inline comments.
    - Closer to an inline tutorial than normal comments
   -Follows good software engineering practices
- Relatively simple, should be straightforward. Easy to read and follow structure
- Passing all the tests, has it's own tests.

... for Flagbearer Charms:

- Actively maintained
- High charm quality rating
- Ideally being used in production. (Production quality)
- Passing all the tests, has it's own tests.
- Ideally working with the project or company upstream on the charm?
-longer term we can always further subdivide flag bearer charms by being features and _highest_ quality rating.

Risks:

- New awesome feature lands in Juju and flagbearer charms don't use it.
- New awesome feature lands in Juju and reference charms don't use it.
- We should prune flagbearers over time, as a community, and each pruning should be discussed on the mailing list and peer reviewed. Depenent on maintainer feedback
    -Before pruning a bug should be submitteda against the charm, and give the maintainer an appropriate time to triage the bug report. Continuing to demonstrate the charm is actively maintained.

[NOTES]
vUDS 1305 Notes: http://pad.ubuntu.com/uds-1305-servercloud-s-juju-flag-bearer-charms
vUDS 1308 Notes: http://pad.ubuntu.com/uds-1308-servercloud-s-juju-flag-bearer-charms

(?)

Work Items

Work items:
[marcoceppi] Create tests for flagbearer charms: INPROGRESS
[mark-mims] : Improve testing in flagbearer charms: TODO
[mark-mims] : Implement a list of "Reference" charms that would be awesome to learn from and market them: TODO
[mark-mims] : Promote Rails as our first flagbearer charm: TODO
[mattgriffin] Develop Percona XtraBackup flag bearer charm: TODO
[jorge] Move criteria of flagbearer and reference to charm docs/best practices: TODO
[jorge] Discuss flagbearer charms on mailing list: TODO
[jorge] Sync with GUI team to see if it's appropriate to mark flagbearers in the GUI: TODO
[marcoceppi] Document how to implement the mysql interface in the mysql README as an example: TODO
[evilnick] Ensure reference charms are being used as examples in the docs: TODO
[jorge] Ensure READMEs of reference and flagbearer charms explain what they are so people know the charms are good examples of learning: TODO

This blueprint contains Public information 
Everyone can see this information.