Simplifying App Websites With Juju

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.
  • Building a comprehensive knowledge base on developer.ubuntu.com for getting started writing your first app, and performing common programming tasks.
  • Integrating source control, bug tracking, and more from Launchpad 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 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: ['http://www.myscreenshotonline.com/screen1.jpg',
     'http://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.

  • http://caryhartline.com/ Cary Hartline

    The problem is the lack of creativity. Each application has its own personality and the website should reflect that. I like the idea of pre-populating fields with OpenID info, but you don’t want the template to take over the entire design of the website.

  • Chris

    Why not? Just because I can design and build great apps does not equate to me being able to build great websites, thats of course if I even have the time. If I can have something that can create a base layout for me, provide all the information that people would need so that I can get it out to the world surely that is a good thing. And if it is a standard layout that uses correct css then theming it by adding a reference to a style sheet should be a simple.

  • TheGhost

    Hi Jono,

    what speaks against the integration with Launchpad ? If a create an Ubuntu app, I want it to be hosted on Launchpad. There I can already have bugtracker, a QA part and also translations.

    Why not expanding launchpad to provide a project landing page and a optional forum ? Why reinventing the wheel or using another layer ?

    Make Launchpad more awesome, developers will thank you !

  • JPCarvalhinho

    Well from my point of view, and if you don’t have time/knowledge to make a good design for your website… you will be advertising a lack for skills to make good design for your app. If not you, you should get some one to do it for you!

  • Anonymous

    Even if you are capable of making good websites, not everybody wants to create it’s own website from scratch. That is why wordpress and blogger e.g. is still famous today. A lot of people don’t want to spend a lot time into design / programming they just want to deliver their content. For that they like to use templates.

    All those who want to make their own site from scratch can already do it.

  • http://www.jorgecastro.org/ Jorge Castro

    The idea for this is to get people up and running quickly when they create a new Ubuntu Touch app without having to care about infrastructure.

    Right now Ubuntu Touch apps are new and young, so app authors should have a way to get up and running fast so they can build interest around their applications. Getting people testing and using these apps as soon as possible is important.

    And this is just an example webpage, at some point app authors will need to fire up entire infrastructures in clouds to support mobile users; we have tools to help them, so by starting with the “splash page” it’ll give us a starting point that we can build up over time.

    Of course app websites should be great, but I’d like to give them something out of the gate so the app authors can concentrate on their application and not the plumbing gunk.

  • Kenneth

    Would the forums have to run on a separate instance to the main web site in this example?

    I like it though, it’s an interesting idea.

  • Pieter Engelbrecht

    Just to add to your idea, would it not be easier to create a small CMS that would allow developers to easily create the website and to add new programs’ pages/sections to it?

    A CMS would make it easier to change the headings, subheadings and the details on the program page/section as well as the other pages. And then making it as a charm to easily connect a forum and bug tracking charm to it.

    I just discovered Juju this morning (always thought that it was a commercial service offered by Ubuntu – but it still seems to simple/easy for what I understand it is doing) and saw that it has a node.js charm which can be used to install less. Theming can then be made easier with the use of twitter bootstrap and the likes and be easily costumed to watch the feel of the apps with the help of less.

    I would also like to help with this if it is still being worked on, but only have about an hour to spear some days since I am mostly busy with my studies.