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:
- Define and support an SDK ABI
- Documentation
- 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
- Keep a copy of previous libraries in newer releases for apps to depend on
- 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.
- 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
- Per-App chroot
- e.g. via arkose
Related projects
AppInsulation (last edited 2011-11-21 23:14:28 by 74-220-xxx-116)