ARTICLE

Simplifying App Websites With Juju

by | Mon 17 Jun 2013

Last week I had a neat idea. Well, at least *I* think it is a neat idea. Let me share it with you folks to get your take.

We have been spending a lot of time refining every aspect of the application development process for writing Ubuntu phone/tablet/desktop applications. This has included:

* Building a simple, and powerful [Ubuntu SDK](https://developer.ubuntu.com/get-started/).
* Building a comprehensive [knowledge base](https://developer.ubuntu.com/resources/) on [developer.ubuntu.com](https://developer.ubuntu.com/) for getting started writing your first app, and performing common programming tasks.
* Integrating source control, bug tracking, and more from [Launchpad](https://launchpad.net/) into the SDK.
* Providing a safe and secure, sand-boxed environment to run apps in, and an automated process for reviewing how these apps come into Ubuntu and are exposed to Ubuntu users.

This is all part of an end-to-end process to make writing apps for Ubuntu fun, simple, and intuitive from the minute you load the SDK to the minute your app appears on a users phone, tablet, or desktop.

## Project Websites

One piece we haven’t looked into is how app developers can set up a website for their app.

App websites vary tremendously in size and complexity. Some people just want a single static web page with details of the app and how to get it. Some want a more complex site with integrated forums, bug tracking, and more.

As part of what we can offer with Ubuntu, we should be able to bundle all aspects of your infrastructure too. Need a website? Check. Need a forum? Check. Need a bug tracker? Check.

Fortunately we have a powerful cloud orchestration tool in [Juju](https://juju.ubuntu.com/) that can not only simplify the deployment, management, and scaling of the service, but could potentially take virtually all of the pain out of getting the site set up in the first place, and then scale up where needed.

## The Idea

Let’s assume I have just published my first version of my app in Ubuntu. I now need a simple website to get my app on the web and known to users. While I want to start simple, there is a possibility though that my project may become hugely popular making me a king among men and require a larger, more expansive web presence.

Let’s start simple though. Ideally, I want to be able to specify some configuration detail like this in a file:

app:
app-name: Read All About It
download-archive-name: readallaboutit
launchpad-project: readallaboutit
website:
website-strapline: All the headlines in your hand.
screenshots: [‘https://www.myscreenshotonline.com/screen1.jpg’,
‘https://www.myscreenshotonline.com/screen1.jpg’]
page-about: True
page-developers: True
page-screenshots: True
page-contact: False

…and then do this:

juju deploy –config myconfig.yaml ubuntu-app-website

The charm would read in the configuration file and generate a set of static web pages based on that configuration.

As an example, it would pre-populate chunks of the page, and generate developer information on the *Developer* page with details of the main branch, bug tracking, a form to submit a bug, and more (we can pull this from the Launchpad project).

It could look simple like this:

This would mean an app developer could spin-up a super light-weight app website with just a configuration file and Juju on whichever cloud service they prefer. This would be light-weight both in terms of getting up and running and resource usage; you could set this up on a tiny cloud instance. As ever, if my project was to get slashdotted I could scale up the service, as with any other Juju charm.

Now let’s assume I want to add more functionality to my website. This is where the real power of Juju could come in. Let’s assume I want a forum. I should be able to run:

juju deploy ubuntu-app-website-forum
juju relate ubuntu-app-website ubuntu-app-website-forum

This would then spin up a forum (or Discourse site) but the charm would integrate it into the existing website with a navigation link and shared theming. It could then look like this:

We could then conceivably have any number of supported additions (e.g. mailing lists, video streams, event organization, tutorial content, API docs etc) for the website that app maintainers can use to easily expand their service as they see fit.

## Next Steps

I shared this idea with Jorge who thought it was a neat idea. He then talked with Marco who has been putting together a first cut that we can experiment with. If anyone is interested in helping to build this, please let me know in the comments.

An invitation-only accelerator that develops industry-leading community engagement and growth via personalized training, coaching, and accountability...all tailored to your company's needs.

Want to read some more?

Happy Holidays

Happy Holidays

Just a quick note to wish all of you a happy, restful, and peaceful holidays, however and whoever you spend it with. Take care, folks, and I look forward to seeing you in 2015!

The Impact of One Person

The Impact of One Person

I am 35 years old and *people* never cease to surprise me. My trip home from Los Angeles today was a good example of this. It was a tortuous affair that should have been a quick hop from LA to Oakland, popping on BArt, and then getting home for a cup of tea and an...

Feedback Requested: Great Examples of Community

Feedback Requested: Great Examples of Community

Folks, I need to ask for some help. Like many, I have some go-to examples of great communities. This includes Wikipedia, OpenStreetmap, Ubuntu, Debian, Linux, and others. Many of these are software related, many of them are Open Source. I would like to ask your...

Ubuntu Governance Reboot: Five Proposals

Ubuntu Governance Reboot: Five Proposals

Sorry, this is *long*, but hang in there. A little while back I wrote [a blog post](https://archivedblog.jonobacon.com/2014/11/14/ubuntu-governance-reboot/) that seemed to inspire some people and ruffle the feathers of some others. It was designed as a...

Ubuntu Governance: Reboot?

Ubuntu Governance: Reboot?

For many years Ubuntu has had a comprehensive governance structure. At the top of the tree are the Community Council (community policy) and the Technical Board (technical policy). Below those boards are sub-councils such as the IRC, Forum, and LoCo councils, and...

Dealing With Disrespect: The Video

Dealing With Disrespect: The Video

A while back I wrote and released a free e-book called [Dealing With Disrespect](https://www.dealingwithdisrespect.com/). It is a book that provides a short, simple to read, free guide for handling personalized, mean-spirited, disrespectful, and in some cases,...