Welcome text to Juju


Looking at the intro to Juju on its README, I don’t think the project explains what the benefits of Juju are for developers/teams clearly.

Juju enables you to use Charms to deploy your application architectures to EC2, OpenStack, Azure, GCE, your data center, and even your own Ubuntu based laptop. Moving between models is simple giving you the flexibility to switch hosts whenever you want — for free.

If you don’t understand what a “Charm” is, then it looks like the only benefit that you would get from Juju is the ability to migrate hosts. And that assumes that you are comfortable with the term “application architectures”. A smaller point is that Juju can be driven from anywhere, not just an Ubuntu-based laptop.

Here’s an alternative introduction that’s hopefully better at explaining how Juju helps (although it’s far far longer :confused: ):

Juju is a devops system that is ideal for complex software stacks. It is a configuration management system that allows you to focus on your application by freeing you from details. Instead of deploying single applications and wiring them together manually, you work with sets of applications that work as a cohesive whole. We call this working with charms.

As an example, let’s consider deploying a “simple” LAMP stack application: MediaWiki. Traditionally you would need to configure a web server, PHP and a database, plus manage their ports and security. Adding a load balancer adds more complexity. With Juju, the story is much simpler:

juju bootstrap ec2
juju deploy wiki-scalable 
juju expose loadbalancer

With these 3 lines, you would have provisioned 5 virtual machines and deployed inter-connected services running on each of them. The only VM exposed to the internet is your correctly-configured HAProxy instanced, that we’re calling loadbalancer.

Juju allows you to use the same tool to deploy to your preferred hosting environment, whether that’s bare metal, virtual machines or containers. Juju is supported by Canonical, the company that delivers Ubuntu. Charms have been developed by Canonical, its partners such as HPE & IBM, and the wider devops community.


Sounds like an improvement to me. Though I’d like @pmatulis and @rick_h to have another look over it. I’d say go ahead and put up a PR suggesting the change.


I agree the README isn’t great. In my opinion it’s job would be to get folks to jujucharms.com where we’ve got a much more rich set of information about what it is/does/intro and the like.

If you don’t mind sticking the text into a document and sharing it out I’m sure we can collaborate, edit, and come up with something that’s a nice improvement from where it stands atm.


We should probably rationalise this with what the snap says about Juju (snap info juju). It’s too wordy for that purpose IMO but some of it can be recycled.

  Juju is an open source modelling tool for operating software in the cloud.  Juju allows you to
  deploy, configure, manage, maintain, and scale cloud applications quickly and efficiently on
  public clouds, as well as on physical servers, OpenStack, and in containers. You can use Juju from
  the command line or through its GUI.
  In modern environments, applications are rarely deployed in isolation. Even simple applications
  may require several other applications in order to function - like a database and a web server,
  for example. For modeling a more complex system, e.g. OpenStack, many more applications need to be
  installed, configured and connected to each other. Juju's application modelling provides tools to
  express the intent of how to deploy such applications and to subsequently scale and manage them.
  At the lowest level, traditional configuration management tools like Chef and Puppet, or even
  general scripting languages such as Python or bash, automate the configuration of machines to a
  particular specification. With Juju, you create a model of the relationships between applications
  that make up your solution and you have a mapping of the parts of that model to machines. Juju
  then applies the necessary configuration management scripts to each machine in the model.
  Application-specific knowledge such as dependencies, scale-out practices, operational events like
  backups and updates, and integration options with other pieces of software are encapsulated in
  Juju's 'charms'. This knowledge can then be shared between team members, reused everywhere from
  laptops to virtual machines and cloud, and shared with other organizations.
  The charm defines everything you all collaboratively know about deploying that particular
  application brilliantly. All you have to do is use any available charm (or write your own), and
  the corresponding application will be deployed in seconds, on any cloud or server or virtual


Good call +1 (and more characters to make discourse happy)


From juju help basics:

Juju is model & application management software designed to leverage the power
of existing resource pools, particularly cloud-based ones. It has built-in
support for cloud providers such as Amazon EC2, Google GCE, Microsoft
Azure, OpenStack, and Rackspace. It also works very well with MAAS and
LXD. Juju allows for easy installation and management of workloads on a
chosen resource pool.

See https://jujucharms.com/docs/stable for documentation.