AppInsulation

App insulation

We want application developers to be able to develop for Ubuntu without spending all of their time dealing with the fast pace of change in the platform.

Contact: JonathanLange/JamesWestby
On Launchpad: ## Link to a blueprint, milestone or (best) a bug tag search across launchpad-project

Rationale

Application developers currently have to deal with the following things:

  • A new release of Ubuntu every six months
  • Arbitrary changes in the platform in every release with little communication.
  • No guarantee of consistency across releases.
  • Little support for pushing newer versions of libraries back in to stable releases.

This means that you can be expected to target four or more releases of Ubuntu to reach all users. The oldest release doesn't have the latest and greatest in it (perhaps obviously,) and there is little support for updating libraries to bring that to old releases. That means that you have a choice between providing the lowest common denominator, or providing a different experience on each release.

Even if you try and target the same code at each release, you find that there are differences in two releases that mean you can't even have source level compatibility without a lot of work (e.g. python-gtk vs. pyGI.) Further within six months there will be a new Ubuntu release, and it's hard to know what the changes will be in that release without tracking it closely for the whole six months.

The upshot of this is that some application developers have to treat each release of Ubuntu as a different platform, putting many off trying to target Ubuntu at all.

While we should work to find solutions to these root causes, we should also look to alleviate the problem by allowing developers to target an environment that is insulated from the base system, meaning that you can target that and it will work across several Ubuntu releases.

Stakeholders

Name

Interest

Last consulted

User stories

Controlling my dependencies

As an application developer
I want to be able to target a single environment that works across Ubuntu releases
so that I can develop just for that environment, rather than every Ubuntu release individually

Constraints and Requirements

Must

  • Provide a better environment for third party application developers to work in
  • Be something we can support over time

Nice to have

Must not

  • Significantly decrease the security of our users
  • Be fragile (e.g. breaking every time we do a security update in an LTS.)
  • Slow down our ability to innovate in the platform such that Ubuntu becomes obsolete in a few years time

Out of scope

Subfeatures

Measures of success

Thoughts?

The following ideas should be explored for doing this:

  1. Define and support an SDK ABI
    • Documentation
  2. Keep old libraries
    • Keep a copy of previous libraries in newer releases for apps to depend on
      • would also need work to support e.g. multiple versions of Python libraries
  3. Statically Link libraries
    • Only works naturally for compiled apps, but something analogous could be done for other things
    • Concerns about security, disk footprint, memory footprint.
  4. Keep LTS chroot
    • tell third party developers to target the latest LTS and have those apps run in that environment while Ubuntu updates every six months
  5. Per-App chroot
    • e.g. via arkose

AppInsulation (last edited 2011-11-21 23:14:28 by 74-220-xxx-116)